Sécurité - Hash et chiffrement Difficulté : Intermédiaire Notions : Cybersécurité, Hashing, chiffrement. I. Introduction Afin de protéger les données sensibles et garantir la sécurité des échanges, les mécaniques cryptographiques jouent un rôle clé dans la cybersécurité. Elles permettent entre autres choses : De chiffrer des données sensibles (mots de passes, contenu protégé, données confidentielles, etc...) De chiffrer des communications (web, email, protocoles, ...) D'authentifier un système ou un utilisateur (signature numérique, empreinte, certificat, etc...) Il existe pléthore d'algorithmes et de méthodes pour cacher ou protéger de la donnée. On retiendra ici deux concepts majeurs : Le hachage. Le chiffrement. Il sera également possible d'aborder la notion de stéganographie. Trivia : Dû à l'évolution des puissances de calcul et des menaces croissantes, il est nécessaire de constamment adapter les algorithmes de chiffrements afin de les renforcer voire de les abandonner si une méthode a été trouvée pour les 'casser'. II. Le Hash 2.1 Définition Le Hash (ou hashing, hachage) est une fonction mathématique qui vise à transformer une donnée de taille variable en une empreinte de taille fixe. Cette empreinte disposera de propriétés intrinsèques. En effet, par nature  Non réversible : Il est donc impossible de retrouver le message d'origine Déterministe : Une même entrée donnera toujours la même empreinte. Non falsifiable : La moindre altération de la donnée d'entrée donnera un hash complètement différent. De par sa nature, cela rend cette méthode idéale pour le stockage sécurisé de mots de passe, la vérification d'intégrité des téléchargements, les signatures numériques et l'indexation rapide. La vérification se fera par comparaison. exemples : Dans le cas d'un téléchargement, le fournisseur du téléchargement fournit le hash ou somme de contrôle du téléchargement. Après téléchargement, il est possible de calculer à son tour le hash / checksum et de les comparer à celui fourni par l'éditeur sur la page de téléchargement. Cela permet de s'assurer de l'intégrité des données et de leur non-altération. Dans le cas de l'authentification, l'utilisateur entre son mot de passe. Celui-ci est Haché et envoyé au serveur d'authentification, celui-ci compare alors le hash reçu et le hash présent en base de donnée pour confirmer que le mot de passe fourni est le bon. 2.2 Algorithmes courants Algorithme Statut Usage recommandé MD5 Obsolète Aucun (présence de failles majeures) SHA-1 Obsolète Aucun (collisions d'entrées) SHA-256 Sûr  Intégrité des données, signatures SHA-3 Sûr Applications bcrypt / scrypt / Argon2 Très sûr Stockage de mots de passe Le statut des algorithmes se base sur les données de 2025 Attention : Lors du stockage de mots de passe avec sha-256, il faudra utiliser en complément un KDF (Key Derivation Function) comme vu ci-dessus (bcrypt, scrypt, pbkdf2, argon2). III. Le Chiffrement 3.1 Définition Le chiffrement (Cypher / Encryption), à l'inverse du hash, a pour vocation à être déchiffré et pas seulement comparé. Celui-ci sert essentiellement dans les échanges. Pour chiffrer ou déchiffrer de la donnée, il faudra utiliser une ou plusieurs clés. Il existe deux types de chiffrement, le chiffrement Symétrique et le chiffrement Asymétrique. Info : Plus la clé de chiffrement est longue, plus le chiffrement sera fort. 3.2 Le chiffrement symétrique Le principe du chiffrement symétrique est d'utiliser une seule clé qui permettra à la fois de chiffrer et de déchiffrer la donnée. L'avantage de ce type d'algorithme est qu'il est rapide à mettre en oeuvre. Cela le rend donc idéal pour le chiffrement de gros volumes comme des disques dur ou des bases de données. L'inconvénient réside dans le fait que si la clé fuite, l'ensemble des données sera simple. Ce qui rend cette clé difficilement partageable. Les algorithmes les plus courants sont : Algorithme Type Statut Usage recommandé DES Bloc Obsolète aucun 3DES Bloc Déprécié Transition uniquement AES (128,192,256) Bloc Standard moderne VPN, TLS, Chiffrement de disque ChaCha20 Flux Très sûr réseau mobile, environnements connectés. A noter que AES s'accompagne également de différentes méthodes pour chiffrer des blocs successifs. Algorithme Statut Sécurité Remarques ECB Osolète Mauvais Révèle les motifs (patterns) de la donnée chiffrée. CBC Sûr Bon Nécessite un IV (Initial Vector) aléatoire CFB / OFB Sûr Bon Flux pseudo-aléatoire GCM Très sûr Excellent Authentifié (AEAD), rapide 3.3 Le chiffrement asymétrique Le principe du chiffrement asymétrique est qu'il dépends de deux clé. La première sert à chiffrer la donnée, la seconde à la déchiffrer. Il s'agit du fameux couple Clé privée / Clé publique que l'on retrouve dans l'architecture PKI. L'on s'en sert pour échanger des clé de chiffrement de manière sécurisée, pour vérifier les certificats et signatures numériques ainsi que pour de l'authentification par certificats. Les algorithmes les plus courants sont : Algorithme Type Usage recommandé DSA Signature Aucun (déprécié) ECDSA Curve (courbes elliptiques) Signatures RSA (2048, 3072,4096) Facteurs premiers Chiffrement, signature Ed25519 Curve (courbes elliptiques) multiple (rapide et sûr) DH (Diffie-Hellman) / ECDH Echange de clés TLS, VPN IV. Les signatures numériques 4.1 Définition Le principe de la signature numérique est de garantir authenticité (qui), l'intégrité (non altération) et la non-répudiation. Le processus de signature et de validation se déroule comme suit : V. Limitations et bonnes pratiques 5.1 Considérations générales Lors de l'application des concepts ci-dessus, il conviendra de respecter quelques principes élémentaires : Ne pas utiliser d'algorithmes obsolètes, dépréciés ou compromis. Préférer des clés fortes dans la mesure du possible. Conserver les secrets et clés publiques de manière sécurisée. 5.2 Considérations particulières 5.2.1 Pour le hachage Toujours utiliser un KDF (Key Derivation Function) pour les mots de passes. Ajouter un salt (sel) unique par utilisateur Un Salt est un élément aléatoire introduit dans le processus de hachage des mots de passes pour éviter que si plusieurs utilisateurs utilisent le même mot de passe, le hash soit exactement le même. Exemple sans salt : Username String to be hashed Hashed value = SHA256 user1 password123 EF92B778BAFE771E89245B89ECBC08A44A4E166C06659911881F383D4473E94F user2 password123 EF92B778BAFE771E89245B89ECBC08A44A4E166C06659911881F383D4473E94F Exemple avec salt : Username Salt value String to be hashed Hashed value = SHA256 (Password + Salt value) user1 D;%yL9TS:5PalS/d password123D;%yL9TS:5PalS/d 9C9B913EB1B6254F4737CE947EFD16F16E916F9D6EE5C1102A2002E48D4C88BD user2 )<,-* password123)<,-* 6058B4EB46BD6487298B59440EC8E70EAE482239FF2B4E7CA69950DFBD5532F2 5.2.2 Pour le chiffrement symétrique Ne jamais réutiliser un IV (vecteur d'initialisation) Le vecteur d'initialisation (IV) est un bloc de bits utilisé dans le chiffrement pour initialiser le processus de chiffrement. Il est généralement généré aléatoirement ou pseudo-aléatoirement et est utilisé pour initialiser le premier bloc de donnée lors d'une opération de chiffrement. Cela garantit que lors du chiffrement, deux blocs identiques en entrée donne des résultats différents en sortie. Trivia : Cela rend plus difficile les attaques par cryptanalyse en évitant les pattern récurrents. 5.2.3 Pour le chiffrement asymétrique Le standard actuel (2025) est d'utiliser des clés supérieures ou égales à 2048 bits. 5.2.4 Autres recommandations Utilisation de TLSv1.3 pour les protocoles sécurisés Utilisation de clés ed25519 pour le SSH Préférer WireGuard pour le VPN client (utilisation de ChaCha20). Conclusion En conclusion, dans le monde d'aujourd'hui, la cryptographie n'est pas seulement un moyen technique permettant d'assurer la confidentialité des échanges. C'est un pilier essentiel de la confiance numérique garantissant également l'intégrité et l'authenticité des échanges, d'autant plus primordiale dans une logique d'architecture Zero Trust. Les méthodes utilisées vont dépendre grandement du besoin à adresser : Objectif Technique Algorithmes à privilégier Intégrité des données Hash SHA-256, SHA-3 Stockage de mots de passe KDF bcrypt, Argon2 Confidentialité Chiffrement symétrique AES‑GCM, ChaCha20 Echange de clé Asymétrique Diffie‑Hellman, ECDH Signature Asymétrique + Hash RSA, Ed25519 Trivia : Bitlocker utilise un chiffrement asymétrique AES256 en mode XTS et s'appuie sur un chiffrement matériel grâce à la puce TPM si disponible.