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.