Cryptographic Vulnerability: Weak Hashing Algorithm
Vulnérabilité Cryptographique : Algorithme de Hachage Faible
Description
Une fonction de hachage est une fonction utilisée pour encoder des données et renvoyer une valeur de hachage de taille fixe, dans le but de minimiser les risques de collision (la probabilité que deux entrées différentes aient exactement la même valeur de hachage est extrêmement faible). Ces fonctions peuvent être utilisées pour vérifier l'intégrité d'un message ou de fichiers, identifier un fichier ou des données, ou vérifier un secret ou un mot de passe.
Algorithmes de hachage courants :
MD5: L'algorithme Message Digest (MD5) a été conçu en 1991 pour remplacer MD4. En mars 2005, deux fichiers différents avec le même hachage MD5 ont été présentés. Et un an plus tard, un algorithme capable de trouver des collisions en moins d'une minute a été publié. En ce qui concerne les algorithmes de hachage, trouver deux entrées distinctes avec le même hachage devrait être impossible sur le plan computationnel. MD5 échoue lamentablement à cette exigence ; en 2008, l'institut de génie logiciel a conclu que MD5 est "cryptographiquement cassé et inadapté à une utilisation ultérieure".SHA1: L'algorithme Secure Hash Algorithm 1 (SHA1) a été conçu par la NSA. Comme MD5, SHA1 est vulnérable aux attaques par collision. Dès 2005, SHA1 était considéré comme non sécurisé, et en 2011, le National Institute of Standards and Technology (NIST) l'a officiellement déconseillé.SHA2: Il s'agit d'un ensemble d'algorithmes de hachage également conçu par la NSA. SHA-2 est très différent de SHA1 et est considéré comme hautement sécurisé.SHA-256: C'est un membre de l'ensemble SHA-2. Le suffixe 256 représente les 256 bits, soit la longueur de la valeur de hachage produite. SHA-256 est une norme industrielle sécurisée et fiable, avec une probabilité de collision presque impossible (2^256).SHA3: SHA3 est le dernier membre de la famille de normes Secure Hash Algorithm, publié par le NIST en 2015. Bien qu'il fasse partie de la même série de normes, SHA3 est structurellement différent de la structure de type MD5 de SHA1 et SHA2, et est également considéré comme hautement sécurisé.Argon2: C'est le gagnant de la Password Hashing Competition de 2015. Il est désormais considéré comme l'un des algorithmes de hachage de mots de passe les plus sécurisés disponibles. Il a été adopté par un certain nombre de normes de sécurité et de cryptographie, notamment l'Internet Engineering Task Force (IETF), la Password Hashing Competition (PHC) et l'Open Worldwide Application Security Project (OWASP).Bcrypt: Introduit en 1999, Bcrypt est un algorithme adaptatif lent conçu pour être hautement résistant aux attaques par force brute. Son adaptabilité réside dans le fait qu'il donne à l'utilisateur le contrôle sur le coût de calcul, ce qui signifie qu'il peut être ajusté à mesure que le matériel évolue au fil du temps. Bcrypt est également adopté par de nombreuses normes de sécurité, dont l'Open Web Application Security Project (OWASP) et la norme de sécurité des données de l'industrie des cartes de paiement (PCI DSS).HMAC: Le code d'authentification de message basé sur le hachage n'est pas un algorithme de hachage mais plutôt une technique d'authentification cryptographique qui utilise un algorithme de hachage couplé à une clé secrète. La robustesse de HMAC dépend de l'algorithme de hachage sous-jacent et ne doit donc pas être utilisé avec des algorithmes de hachage obsolètes et faibles.
MD5 et SHA-1 ne sont pas sécurisés et ne doivent pas être utilisés, même avec HMAC.
Recommandation
Pour atténuer les risques liés à l'utilisation d'algorithmes de hachage faibles, tenez compte des éléments suivants :
-
Évitez MD5 et SHA-1 car ces algorithmes ne sont pas sécurisés et sont sujets aux collisions. Ils ne doivent être utilisés à aucune fin, y compris HMAC.
-
Pour le hachage et la vérification de signature, optez pour SHA-256 ou SHA-3. Ils offrent une sécurité élevée et sont des normes industrielles largement acceptées.
-
Pour le hachage de données sensibles (PII, PHI...), envisagez Argon2 ou Bcrypt. Ils sont conçus pour résister aux attaques par force brute et sont recommandés par les normes de sécurité.
-
Lors de l'utilisation de HMAC pour l'authentification des messages, assurez-vous qu'il est associé à des algorithmes de hachage sécurisés comme SHA-256 ou SHA-3 pour maintenir une sécurité robuste.
Liens
Normes
- OWASP_MASVS_L1:
- MSTG_CRYPTO_2
- MSTG_CRYPTO_3
- MSTG_CRYPTO_4
- OWASP_MASVS_L2:
- MSTG_CRYPTO_2
- MSTG_CRYPTO_3
- MSTG_CRYPTO_4
- PCI_STANDARDS:
- REQ_2_2
- REQ_3_6
- REQ_3_7
- REQ_6_2
- OWASP_MASVS_v2_1:
- MASVS_CRYPTO_1
- MASVS_CRYPTO_2
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_6_7
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5
- CNIL_FOR_DEVELOPERS:
- DEVELOPERS_4_1_4