
Collisions de hachage et exploitations
Par Ange Albertini et Marc Stevens.
Q : Est-il possible de faire en sorte qu'un fichier obtienne un MD2/MD4/MD5/MD6/SHA1/SHA2/SHA3 arbitraire, ou le même hachage qu'un autre fichier ?
R : Non.
Q : Peut-on créer 2 fichiers différents avec le même hachage ?
R : Avec MD5, en quelques secondes sur un ordinateur standard. Avec SHA1, c'est possible mais pas pratique pour les utilisateurs finaux (Complexité : 2^61.2 Prix : 11 k$).
Q : Peut-on faire en sorte que 2 fichiers différents obtiennent le même hachage en ajoutant des données ?
R : Avec MD5, en quelques heures sur un ordinateur standard. Avec SHA1, c'est possible mais pas pratique pour les utilisateurs finaux (Complexité : 2^63.4 Prix : 45 k$).
Q : Les 2 fichiers resteront-ils valides ?
R : En général, oui, car la plupart des formats de fichiers tolèrent l'ajout de données. En revanche, les signatures de fichiers seront probablement cassées.
Q : Peut-on créer 2 fichiers différents avec des contenus arbitraires et le même hachage ?
R : Oui, cela peut être instantané en s'appuyant sur des structures de fichiers spéciales :
Q : Pour quels formats puis-je obtenir instantanément une paire de fichiers en collision MD5 ?
R : JPG, PNG, GIF, GZIP, Portable Executable, MP4, JPEG2000, PDF, DOCX/PPTX/XSLX, EPUB, 3MF, XPS. Il suffit d'exécuter le script spécifique.
Q : Qu'en est-il pour SHA1 ?
R : Pour SHA1, JPG dans un PDF est calculé et implémenté.
Q : Qu'en est-il des formats déjà pris en charge pour MD5 (JPG, PNG...), mais pour SHA1 à la place ?
R : Ils sont très probablement pris en charge avec SHA1 aussi, mais leurs collisions n'ont pas été calculées.
Q : Les calculs sont-ils plus rapides pour des contenus similaires (mais différents) ?
R : Non. La moindre petite différence exige un calcul complet.
Q : Quels formats n'ont pas ce raccourci ?
R : ELF, Mach-O, Java Class, TAR, ZIP (entre autres...)
Q : Les collisions classiques (en quelques heures) sont-elles toujours possibles avec ces formats ?
R : Oui, tant qu'une quantité quelconque de données ajoutées est tolérée (c.-à-d. probablement pas ZIP ou Class).
Q : Fournissez-vous des exemples de collisions ?
R : Oui.
L'objectif est d'explorer en profondeur les attaques existantes - et de montrer au passage à quel point MD5 est faible (collisions instantanées de n'importe quel JPG, PNG, PDF, MP4, PE...) - et aussi d'explorer en détail les formats de fichiers courants pour déterminer comment ils peuvent être exploités avec des attaques présentes ou futures.
En effet, la même astuce de format de fichier peut être utilisée sur plusieurs hachages (les mêmes astuces JPG ont été utilisées pour MD5, malicious SHA-1 et SHA1), tant que les collisions suivent les mêmes motifs d'octets.
Ce document ne traite pas de nouvelles attaques (la plus récente a été documentée en 2012), mais de nouvelles formes d'exploitation d'attaques existantes.
État actuel des attaques connues :
faire en sorte qu'un fichier obtienne le hachage d'un autre fichier ou un hachage donné : impossible
obtenir deux fichiers différents avec le même MD5 : instantané
faire en sorte que deux fichiers arbitraires obtiennent le même MD5 : quelques heures (72 heures.core)
faire en sorte que deux fichiers arbitraires de formats de fichiers spécifiques (PNG, JPG, PE...) obtiennent le même MD5 : instantané
obtenir deux fichiers différents avec le même SHA1 : 6500 ans.core