SHAttered, comment cela peut fonctionner ? Analyse des fichiers

SHAttered, comment cela peut fonctionner ? Analyse des fichiers

La semaine dernière, une équipe du CWI et de Google Research a publié le site shattered.io. Ils montrent la première collision SHA1 réelle. Il s'agit de générer deux fichiers différents présentant le même hash, SHA1 dans ce cas. L'objet de cet article est l'analyse en profondeur de ces deux fichiers afin de déterminer comment cela peut fonctionner.

On trouve les PDF ici et .

Tout d'abord, ils présentent bien un SHA1 identique, mais un MD5 différent :

shattered_md5_sha1

Les MD5 montrent que les fichiers sont bien différents.

Il s'agit de PDF ne contenant qu'une page. Visuellement, on les différencie par la couleur de fond de la partie haute. Sur le premier fichier, elle est bleue et sur le second, elle est rouge.

2shattered

Les deux fichiers font exactement la même taille. Lorsqu'on les compare, on constate que 99,97 % de leur contenu sont strictement identiques. Seuls 62 octets entre les offset 0xC0 et 0x130 sont différents :

shatteredvs

On remarque également que les fichiers PDF contiennent chacun la signature d'un fichier JPG à l'offset 0x95. Ces images occupent, à elles seules, plus de 99 % des PDF. A l'aide de PDF Stream Dumper, on peut visualiser les différents flux des PDF. On constate qu'il n'y en a que 13 et qu'ils sont structurés très simplement. Ce logiciel permet également d'extraire les fichiers JPG :

shattered_pdfstream

Les deux fichiers JPG contiennent les mêmes différences que les fichiers PDF.

shattered_jpgvs

En s'intéressant à la structure les fichiers JPG, on remarque qu'ils contiennent des commentaires de tailles différentes :

shattered_jpgvs_color

En reproduisant, sur l'intégralité des deux images, le même processus que sur l'image précédente, on obtient quelque chose comme cela :

shattered_jps_comm

On en conclut qu'en réalité, les fichiers contiennent tous les deux les deux images.
De plus, seul l'octet à l'offset 0x2B (0x73 pour la première image et 0x7F pour la deuxième), c'est à dire le deuxième octet de la taille du deuxième commentaire, permet de passer d'une image à l'autre. Ainsi, le logiciel en charge d'afficher les images ne lit pas les mêmes zones de données en fonction de l'octet à l'offset 0x2B. Dans le cas de l'image du premier fichier, seule la seconde moitié est réellement utile, et pour l'image du second fichier, seule la première moitié est réellement utile.

Au final, une fois que les JPG et les PDF ont été générés, les chercheurs disposaient de 369 octets pour générer leur collision. Ils n'en ont utilisé que 127, dont seulement 61 modifiés.

Pour conclure, déterminer comment cela peut fonctionner est assez simple. Mais générer la collision, c'est là qu'est la difficulté, surtout en terme de puissance de calcul.

Pourquoi les géants du Web et du numérique dominent l'intelligence artificielle

Pourquoi les géants du Web et du numérique dominent l'intelligence artificielle

Ce billet conclut ma série de trois articles sur le machine learning.

Dans les précédents articles, nous avons vu qu'avec un minimum de connaissances informatiques, il était assez facilement possible de mettre en place des algorithmes d'apprentissage automatique, permettant, entre autres, de classifier des espèces de plantes à partir de caractéristiques, des images en fonction de leur contenu ou encore des visages.

selfie-reconnu

Mais surtout je concluais le deuxième article en disant que la principale difficulté était de trouver les images d'entraînement.

En effet, on comprend assez aisément que pour avoir des résultats pertinents, il faut avoir la plus grande quantité de données d'entrainement possible. Dans le domaine du machine learning, on dit souvent que les données sont plus importantes que les algorithmes. Ainsi, déjà en 2011, Peter Norvig, directeur de recherche chez Google, déclarait :

We don’t have better algorithms. We just have more data.

Google propose son assistant personnel intelligent gratuitement sur tous les smartphone Android, Apple fait de même avec Siri sur toute sa gamme, et Amazon vend ses Echo Dot à moins de $50. Tout ce que l'on dit à ces assistants est enregistré pour toujours. Ils disposent donc régulièrement de nouvelles centaines de milliers d'heures d'enregistrements, qui leur permettent d'améliorer la qualité des résultats de leur reconnaissance vocale et des réponses apportées.

Google offre d'autres services gratuitement, notamment son système reCAPTCHA qui permet de vérifier que les visiteurs d'un site sont bien humain. Pour cela, la plupart du temps, il s'agit d'une simple case à cocher mais parfois il faut reconnaitre des éléments sur une photographie. Cela permet à Google de valider les prédictions de ses algorithmes et de les nourrir pour accroitre la justesse des résultats.

Je pourrais encore citer d'autres exemples avec lesquels les géants du web alimentent sans cesse leurs bases de données dans le but d'améliorer les prédictions des algorithmes d'apprentissage automatique, mais, je pense que vous avez saisi l'idée.

Et donc, voilà pourquoi les géants du Web et du numérique sont les champions l'intelligence artificielle. Parce qu'ils ont accès aux données nécessaires à l'entrainement des algorithmes. Nous les leur fournissons gratuitement en échange des services qu'ils nous apportent. Ils n'hésitent pas à s'en nourrir constamment.

Si vous voulez créer quelque chose qui se base sur l’intelligence artificielle, il faudra avant tout trouver un moyen d’obtenir, si possible gratuitement, les données pertinentes et en quantité suffisante. Au final, ces données ou même la manière de les collecter pourraient-être un produit à elles seules.

Pour conclure, en entreprise, conservez soigneusement vos données commerciales et techniques, elles pourront peut-être valoir de l'or et servir un jour.