pt
Moulé à la louche depuis 1999
Les trucs qui m'énervent... et je vais pas prendre de pincettes
Internet, informatique, logiciel libre, économie, politique, vie courante et tout le reste...

VizHash GD, un hash visuel

Mardi 31 mai 2011

J'avais parlé des hashs visuels l'année dernière, comme solution possible au tabjacking.


Qu'est-ce qu'un hash ? C'est une sorte d'empreinte digitale numérique. Typiquement, le hash MD5 du mot "bonjour" est f02368945726d5fc2a14eb576f7276c0.

Les hashs ont quelques propriétés intéressantes:

  • Un hash est unique et caractéristique des données en entrée. Les mêmes données en entrée donneront toujours le même hash.
  • Le moindre bit différent en entrée produit un hash totalement différent.
  • Un hash est à sens unique: On ne peut pas retrouver le mot "bonjour" à partir de son hash (sauf à hasher toutes les combinaisons de lettres possibles pour retrouver le même hash).
  • On ne peut pas "forger" un hash, c'est à dire qu'il est impossible de créer des données pour obtenir un hash précis (Ces hashs ont un aspect aléatoire.)

Ils sont utiles pour de nombreuses choses, par exemple pour vérifier qu'un fichier qu'on a téléchargé n'est pas endommagé. Ils sont également utilisés dans SSL/HTTPS, dans le chiffrement des emails (pgp/gnupg et autres), pour stocker et vérifier des mots de passe, pour vérifier si un fichier a été modifié sans avoir à en stocker une copie et bien d'autres choses.


Un hash visuel est très similaire: Il prend aussi en entrée des données, mais produit une image. Tout comme MD5 ou SHA1, l'image est unique et caractéristique des données en entrée. Le moindre bit différent en entrée produit une image totalement différente. Et il est impossible de retrouver les données en entrée à partir de l'image.

À quoi ça peut bien servir ? Par exemple comme avatar dans les forums ou les commentaires de blogs: Mettez en entrée le hash de l'adresse IP de vos visiteurs, et voilà un avatar instantané et unique pour chaque visiteur de votre site. Ou encore: Plutôt que d'avoir une MD5 à comparer à la main, avec le hash visuel un simple coup d’œil suffirait pour savoir si le fichier que vous avez téléchargé est endommagé ou non (pour peu qu'une extension soit développée pour votre explorateur de fichiers).

On peut bien sûr imaginer bien d'autres utilisations.


Je ne suis pas l'inventeur des hashs visuels, mais j'ai voulu en faire ma version en php: VizHash GD. Elle est opensource, légère et peut produire des hashs visuels qui peuvent être étirés tout en restant reconnaissables. Le code est libre (sous licence zlib/libpng). VizHash GD ne nécessite que php 4 ou 5 et GD (disponible chez la plupart des hébergeurs).

Pour être franc, le résultat n'est pas très beau, mais le but était surtout de produire des images faciles à différencier.

Vous trouverez des exemples et le code source sur le wiki. Vous pouvez faire mumuse à hasher différents textes dans cette page.