Objectifs du module :

  • Comprendre les différences entre le chiffrement des données au repos et en transit.
  • Apprendre à implémenter des mécanismes de chiffrement efficaces dans les bases de données et systèmes de stockage.
  • Savoir configurer des protocoles de chiffrement sécurisés pour les transferts de données (SSL/TLS).

1. Différence entre le chiffrement au repos et en transit

En savoir plus : Les pratiques de chiffrement dans l'informatique en nuage (cloud) public

a. Chiffrement des données au repos

Définition :
Le chiffrement des données au repos concerne les données qui sont stockées dans des bases de données, des systèmes de fichiers, ou des disques. Ces données sont "inactives" et non en cours de transfert.

Pourquoi est-ce important ? :
Le chiffrement des données au repos protège les données contre l'accès non autorisé en cas de violation physique ou d'intrusion dans les systèmes de stockage (par exemple, vol de disques durs, intrusion sur les serveurs).

En savoir plus : Que sont les données au repos ?

b. Chiffrement des données en transit

Définition :
Les données en transit désignent celles qui circulent sur des réseaux (internes ou externes) entre des systèmes ou des utilisateurs, telles que les transferts entre un client et un serveur, ou entre des services d'applications distribuées.

Pourquoi est-ce important ? :
Les données en transit sont vulnérables aux interceptions (attaque de l'homme du milieu ou écoute clandestine). Le chiffrement en transit assure que même si les données sont interceptées, elles ne pourront pas être lues par un attaquant.

En savoir plus : Chiffrement en transit

c. Scénarios d’attaques potentielles :

Attaque de type "Man-in-the-Middle" interceptant des données non chiffrées sur le réseau.

Vidéo de Alphorm:

Extraction de données sensibles à partir de disques ou fichiers volés dans un centre de données non sécurisé.

2. Implémenter le chiffrement dans les bases de données (chiffrement des fichiers, disques)

a. Techniques de chiffrement des données au repos

Chiffrement des fichiers :
Cette méthode chiffre les fichiers de données individuels. Par exemple, dans une base de données relationnelle, vous pouvez chiffrer certains fichiers contenant des tables ou des colonnes spécifiques.

Chiffrement au niveau des disques (Full Disk Encryption, FDE) :
Le chiffrement au niveau du disque protège toutes les données d’un disque dur ou SSD, y compris les données d’applications et les fichiers temporaires. Il est souvent implémenté à l'aide de systèmes comme BitLocker ou LUKS.

Vidéo de ESET France:

Chiffrement au niveau de la base de données (Transparent Data Encryption, TDE) :
TDE est une solution souvent proposée par les systèmes de gestion de bases de données tels que SQL Server, Oracle, ou MySQL. Elle chiffre automatiquement les données lors de l’écriture sur le disque, rendant les fichiers de données illisibles sans les clés de chiffrement appropriées.

Vidéo de AFUP PHP:

b. Gestion des clés de chiffrement

Stockage sécurisé des clés :
Utilisation de HSM (Hardware Security Modules) ou de services de gestion de clés basés sur le cloud comme AWS KMS ou Azure Key Vault pour stocker et gérer de manière sécurisée les clés de chiffrement.

Rotation des clés :
Mettre en œuvre une politique de rotation des clés de chiffrement pour minimiser les risques en cas de compromission. Cela signifie que les clés doivent être changées à intervalles réguliers sans perturber l'accès aux données chiffrées.

Vidéo de GlobalSign France:

c. Cas pratiques d’implémentation

Exemple de chiffrement dans PostgreSQL via pgcrypto pour chiffrer certaines colonnes contenant des données sensibles comme des numéros de carte bancaire.

En savoir plus : Chiffrement sous PostgreSQL : mais sous quelles conditions ?

Implémentation de TDE dans MySQL ou SQL Server pour chiffrer l'intégralité des fichiers de la base de données sans affecter les performances des applications.

En savoir plus : Le chiffrement et SQL Server – Episode 2 : Mise en oeuvre de TDE

3. Mise en place du chiffrement pour les transferts de données (SSL/TLS)

a. Comprendre SSL/TLS

SSL (Secure Sockets Layer) et TLS (Transport Layer Security) :
Ces protocoles assurent le chiffrement des données qui circulent entre deux systèmes (par exemple, un client et un serveur web). TLS est la version moderne et plus sécurisée du protocole SSL, et est recommandé pour toutes les communications sur réseau.

Vidéo de Cookie connecté:

b. Configuration du chiffrement pour les transferts de données

Utilisation d’HTTPS :
Toujours utiliser HTTPS pour les transferts de données sensibles sur des sites web ou entre des services web. HTTPS utilise TLS pour protéger la confidentialité et l’intégrité des données en transit.

Chiffrement des connexions aux bases de données :
Configurer des connexions sécurisées à la base de données via SSL/TLS pour chiffrer les requêtes et les résultats envoyés à travers le réseau. Par exemple, configurer MySQL, PostgreSQL ou MongoDB pour exiger des connexions sécurisées.

Sécurisation des API :
Implémenter des protocoles de chiffrement via TLS pour les API REST et GraphQL, en s’assurant que les données échangées entre les applications sont protégées contre l'interception.

c. Meilleures pratiques pour la mise en œuvre du chiffrement TLS

Certificats TLS valides et à jour :
Utiliser des certificats signés par des autorités de certification (CA) reconnues. Les certificats auto-signés ne doivent être utilisés que dans des environnements de test.

Désactivation des protocoles obsolètes :
TLS 1.0 et 1.1 sont désormais considérés comme obsolètes et vulnérables. Il est recommandé d'utiliser au moins TLS 1.2, avec une préférence pour TLS 1.3 qui offre une sécurité accrue et de meilleures performances.

Ciphers forts :
Configurer les serveurs pour utiliser uniquement des suites de chiffrement robustes (AES-256, ChaCha20, etc.) et désactiver les ciphers plus faibles ou vulnérables (RC4, MD5, etc.).

d. Exemples d’implémentation

Configurer Nginx ou Apache pour supporter uniquement TLS 1.2+ avec des certificats signés par une autorité de certification pour protéger les communications avec des applications web.

En savoir plus : Recommandations de sécurité relatives à TLS

Sécurisation d’une connexion PostgreSQL ou MongoDB avec SSL/TLS pour protéger les données échangées entre le serveur et le client.

Vidéo de Frits Stegmann:

Vidéo de Jacob Bills:

Conclusion du module :

Le chiffrement est un élément essentiel de la protection des données, tant au repos que pendant leur transfert. Les Data Engineers doivent mettre en place des mécanismes robustes de chiffrement pour assurer la confidentialité et l’intégrité des données dans les bases de données et les pipelines. En maîtrisant les techniques et les meilleures pratiques de chiffrement, ils peuvent réduire considérablement les risques de fuites de données et d'attaques.

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee