MD5 - SHA1

Créer des empreintes cryptographiques (hash codes) MD5 et SHA1

   
En savoir plus :  Retourner à la page précédente   Imprimer cette page   

FAQ Microsoft Windows
 
 
MD5 (Message Digest 5) et SHA-1 (Secure Hash Algorithm - prononcez "chaouane") sont des fonctions de hachage cryptographique à sens unique. Le résultat de l'application de cette fonction sur un ensemble de données de longueur quelconque (par exemple un fichier) est un ensemble beaucoup plus petit et de longueur fixe, caractéristique de l'objet de départ, appelé diversement :
  • somme de contrôle
  • chiffre clé
  • condensat
  • condensé
  • empreinte cryptographique
  • hash code
  • fingerprint
  • ...
MD5 et SHA-1 sont donc des "chiffres-clé" (ou "condensats") (de 128 bits ou 32 caractères pour MD5, 160 bits ou 40 caractères pour SHA-1) obtenus après application d'un "calcul" sur un contenu (un contenu exclusivement - si 3 copies du même fichier s'appellent pierre, paul, jacques, les MD5 ou le SHA-1 seront identiques - le contenant (ou "l'enveloppe") n'est pas pris en compte).
Historique
1990 : Ron Rivest invente la fonction de hashage appelée MD4
1992 : Ron Rivest renforce MD4 et développe une nouvelle fonction de hashage appekée MD5
1993 : La NSA (National Security Agency) développe une fonction de hashage similaire à MD5 et appelée SHA (Secure Hash Algorithm)
1995 : La NSA réagit à une faiblesse découverte dans SHA et met au point SHA-1
De nos jours, la fonction la plus populaire est SHA-1, MD-5 étant considéré comme ancien et n'étant plus sûr. L'administration américaine est entièrement en chiffrement SHA-1 en remplacement de MD5. SHA est dans SSL, ou encore PGP et son clone libre GPG.

Les deux caractéristiques d'un condensat sont :
  • Unicité
    Cet ensemble caractéristique de l'objet initial permet de "signer" un objet de manière unique (voir la réserve à propos des collisions) d'où :
    • 2 objets différents n'auront jamais la même signature
    • 2 signatures différentes ne peuvent que signer (désigner) 2 objets différents.
    Cette particularité est très employée en informatique et est utilisée pour produire des signatures numériques qui seront exploitées afin de s'assurer de l'intégrité d'un contenu (authentification). Ainsi :
    • La base de signatures d'un antivirus ou d'un anti-trojans/anti-spywares est en partie faite d'empruntes cryptographiques
    • Un système de contrôle d'intégrité repose sur les empruntes cryptographiques (les pare-feu comme les contrôleurs d'intégrités se reposent sur ces fonctions)
    • Windows Update utilise une fonction de "hashage"
    • RunScanner utilise une fonction de hashage pour vérifier l'authenticité des fichiers
    • etc. ...
  • Irréversibilité
    Une autre caractéristique des empreintes cryptographiques est que l'application algorithmique est à sens unique : on peut calculer l'empreinte à partir de l'objet initial mais il est totalement impossible de reconstruire l'objet initial à partir de l'empreinte. Les mots de passe sont donc également stockés sous forme d'empreintes cryptographiques afin de bénéficier de cette irréversibilité de l'emprunte. (Attention au sens donné à "irréversible" : il faut entendre par là que l'irréversibilité n'est pas possible dans un temps raisonnable mais elle peut être atteinte après un certain temps de calcul (des mois ou des années), temps sufisemment long pour qu'à son terme la donnée protégée n'ai plus aucune valeur. Attention aux mots de passe très courts (moins de 12 caractères) dont l'empreinte peut être attaquée en force brute (par dictionnaire) ou par "rainbow tables" (compromis temps/mémoire) et retrouvés en quelques minutes.
Casser un condensat (breaking hash code)
On appelle "casser" un condensat, la démonstration que l'une ou l'autre des deux caractéristiques, ou les deux (Unicité - Irréversibilité) d'un condensat est fausse
Il est désormais possible, grâce à diverses techniques dont celles des compromis temps/mémoire - les "rainbow tables" (et, bien sûr, les attaques en force brute) de casser des MD5 - c'est-à-dire remonter à la source (à condition qu'elle soit courte - trouver un mot de passe, par exemple).

Calcul d'un MD5 ou d'un SHA-1 sous Windows
Pour le calcul des 2 empreintes sur un seul objet, le plus simple et confortable est SummerProperties.
Pour le calcul des 2 empreintes sur une collection d'objets (tous les fichiers d'un répertoire), utiliser Hash

Utilisation d'un MD5 ou SHA-1 en contrôle d'intégrité
Il s'agit de vérifier, à partir d'un MD5 ou SHA-1 réputé fiable (celui donné par l'éditeur lui-même d'un logiciel) si l'empreinte de nos propres fichiers est conforme. Si ce n'est pas le cas, cela peut provenir d'une version différente (autre langue, mise à jour...) mais cela peut également provenir de la corruption d'un fichier
  • soit par accident comme l'érosion de la rémanence magnétique sur le support ou vous avez passé un aimant près de votre disque
  • soit par injection d'un parasite - c'est le cas qui nous interesse
Runscanner for Windows, un produit gratuit, permet de calculer les MD5 des fichiers Windows d'un système et vérifie que ces MD5 correspondent bien à des fichiers connus et sains de Windows, sur le site de Microsoft qui maintiend une base de données de ces empreintes.

MD5, SHA-1 et Collision contre Unicité
Annoncé par Bruce Schneier (le père de Blowfish-Twofish) en février 2005, les universitaires chinois Xiaoyun Wang, Yiqun Lisa Yin et Hongbo Yu seraient parvenus à des collisions SHA-1 (ces mêmes chinois avaient déjà "optimisé" les méthodes de recherche de collisions dans les hash MD4, MD5, Haval et RipeMD.
Voir également les travaux de Eli Biham et Rafi Chen ainsi que Antoine Joux.

Une collision consiste à obtenir le même chiffre clé à partir de 2 fichiers différents - par exemple un fichier sain et le même fichier avec un parasite embarqué. Toutefois ceci n'est pas à la portée du premier venu : les travaux de Joux, Carribault et Lemuet ont mobilisé le supercalculateur du Tera Nova CEA et ses 256 Itanium2 pendant 80 000 heures-processeur.

Il n'existe cependant pas encore (semble t'il) d'applicatifs permettant de soumettre un fichier afin qu'il lui soit ajouté ce qu'il faut pour que son MD5 soit égal à un MD5 de référence (forger un MD5). Cette démarche n'existe pas encore :
  1. Je calcule le MD5 d'un fichier sain
  2. Je modifie ce fichier sain en lui injectant un adware ou un spyware ou un backdoor et un dropper etc. ...
  3. Je le soumet à un applicatif qui va ajouter quelques modifications (bourrage dans des espaces inutilisés du code du programme) afin que le nouveau MD5 soit identique au premier.
Quoi qu'il en soit, les hash-code MD5 ne sont plus sûrs.

L'usage de SHA-1 (même principe que MD5 mais sur 160 bits et avec un algorithme de hachage cryptographique conçu par la NSA (National Security Agency)) se répend dans les signatures de fichiers mais connaît des insuffisances de même nature que MD5 (collisions). Il n'est toutefois toujours pas possible, comme pour MD5, de forger un condensat SHA-1. Les recommandations vont vers les SHA-256 et SHA-512 mais là on se heurte au temps de calcul.

Lorsque l'on combine l'usage de MD5 et de SHA1 on limite grandement les risques de collisions. Ainsi Assiste.com vous donne, dans la Logithèque, les MD5 et SHA-1 des programmes à télécharger.

PGP et SHA-1
La signature PGP est un hash SHA-1 d'un fichier, chiffré avec la clé privée du signataire. C'est pourquoi elle est nettement plus longue et contient bien plus de caractères différents que le SHA-1 qui lui n'est composé que des caractères 0 à 9 et A à F (alphabet hexadécimal).

Empreintes CRC16 et CRC32
Ce sont des empreintes sur 16 ou 32 bits, totalement dépassées.


Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com

Nouvelle adresse du site Assiste.com depuis le 22 octobre 2012 : http://assiste.com






Historique des révisions de ce document :

Historique
 
   
Rédigé en écoutant :
Music