Le hash en péril?
Pas de blagues sur la drogue svp, ce serait trop facile.
Les fonctions de hash font partie de la cryptographie utilisée couramment pour tout type d'applications informatique. L'authentification d'un mail, la vérification de mot de passe, la vérification d'intégrité, etc. sont autant d'applications dont la sécurité repose sur la sécurité des fonctions de hash.
Seulement cette confiance absolue dans le hachage commence à se fissurer. MD5 est depuis quelques temps un algorithme de hachage auquel on ne peut plus se fier. Pourtant il est encore utilisé pour des taches courantes dans nos OS. SHA-1, considéré comme le standard des fonctions de hash actuellement, est en passe de se retrouver dans la même situation.
MD5 est par exemple utilisé pour vérifier la validité des packages téléchargés. Depuis qu'on a trouvé des collisions dans MD5, on a pu créer des pages web différentes avec la même somme MD5 (regardez ça et ça, puis faites en la somme MD5 pour rire... plus de détails dans cette présentation[en]). Cette astuce a été modifiée pour s'appliquer à deux applications différentes qui ont la même somme MD5 (article[en]). Cette menace est à tempérer cependant : si on a deux applications au comportement différent (une normale, et une maligne) et qui ont la même somme, il n'en reste pas moins que ces deux applications doivent contenir à la fois le code normal et le code malin (lisez la présentation ou l'article, vous comprendrez ^^). Pour exploiter vraiment cette faille, il faudrait qu'une personne mal intentionnée publie un programme A (normal), gagne la confiance des utilisateurs, puis le change en un programme B (avec md5sum(A)==md5sum(B)) qui lui, serait un programme malin. Gageons qu'un programme répandu et sensible au niveau sécurité serait analysé et audité, et que la supercherie ne tiendrait pas longtemps (le programme A, censé être correct, contient le code malin, rappelons-le).
Quant à SHA-1, qui est déjà couramment utilisé pour l'authentification et la vérification d'intégrité des communications (la plupart des VPNs récents l'utilisent), sa robustesse aux attaques s'est vue considérablement réduite grâce à la recherche de cryptographes acharnés (article[compliqué]).
Enfin, des initiatives de base de données de hash des mots de passes les plus courants apparaissent pour exhiber la faiblesse de la protection habituelle par mot de passe (article[en]).
Les fonctions de hash font partie de la cryptographie utilisée couramment pour tout type d'applications informatique. L'authentification d'un mail, la vérification de mot de passe, la vérification d'intégrité, etc. sont autant d'applications dont la sécurité repose sur la sécurité des fonctions de hash.
Seulement cette confiance absolue dans le hachage commence à se fissurer. MD5 est depuis quelques temps un algorithme de hachage auquel on ne peut plus se fier. Pourtant il est encore utilisé pour des taches courantes dans nos OS. SHA-1, considéré comme le standard des fonctions de hash actuellement, est en passe de se retrouver dans la même situation.
MD5 est par exemple utilisé pour vérifier la validité des packages téléchargés. Depuis qu'on a trouvé des collisions dans MD5, on a pu créer des pages web différentes avec la même somme MD5 (regardez ça et ça, puis faites en la somme MD5 pour rire... plus de détails dans cette présentation[en]). Cette astuce a été modifiée pour s'appliquer à deux applications différentes qui ont la même somme MD5 (article[en]). Cette menace est à tempérer cependant : si on a deux applications au comportement différent (une normale, et une maligne) et qui ont la même somme, il n'en reste pas moins que ces deux applications doivent contenir à la fois le code normal et le code malin (lisez la présentation ou l'article, vous comprendrez ^^). Pour exploiter vraiment cette faille, il faudrait qu'une personne mal intentionnée publie un programme A (normal), gagne la confiance des utilisateurs, puis le change en un programme B (avec md5sum(A)==md5sum(B)) qui lui, serait un programme malin. Gageons qu'un programme répandu et sensible au niveau sécurité serait analysé et audité, et que la supercherie ne tiendrait pas longtemps (le programme A, censé être correct, contient le code malin, rappelons-le).
Quant à SHA-1, qui est déjà couramment utilisé pour l'authentification et la vérification d'intégrité des communications (la plupart des VPNs récents l'utilisent), sa robustesse aux attaques s'est vue considérablement réduite grâce à la recherche de cryptographes acharnés (article[compliqué]).
Enfin, des initiatives de base de données de hash des mots de passes les plus courants apparaissent pour exhiber la faiblesse de la protection habituelle par mot de passe (article[en]).

9 Comments:
At 12:13 PM,
Anonymous said…
Oui enfin tu sais, le MD5 est aussi utilisé pour les mots de passe UNIX, et pourtant, on ne s'en inquiète pas plus que ça. Pourquoi ? Parce qu'en ajoutant un grain de sel (salt), on arrive à avoir un excellent résultat pour pas un rond.
Faut donc arrêter de paniquer, le MD5 a encore un bel avenir (si on l'utilise correctement)
At 1:28 PM,
Hadrien Hamel said…
Certes, d'ailleurs le créateur de RainbowCrack-online le mentionne dans l'article de SecurityFocus : “Remember that rainbow tables only work for inferior functions that use no salt or initialization vector. If programmers were more careful, there would be no market for a rainbow Google.”. Cela protège donc (pour le moment) les mdp unix contre de telles tables. Mais pas contre un john par exemple. Ni contre une future initiative de Rainbow Cracking orientée exclusivement contre unix (pourquoi pas dans quelques années?).
On est d'accord que les algorithmes de hash actuels ont encore quelques années devant eux. Que lorsque les programmes sont fait correctement, il n'y a pas (encore trop) de dangers. D'ailleurs je souligne bien le fait que l'exploitation qui est faite des collisions MD5 est pour l'instant fort peu applicable.
Globalement, passer de la découverte d'une seule collision à l'exploitation systèmatique d'une faiblesse dans un algo de hash prend du temps. Mais faire migrer les systèmes d'information de nos chères entreprises prend, aussi, du temps. Or à ma connaissance il n'est pas encore envisagé de passer de MD5 à SHA-256 (par exemple) pour le hash de mots de passe sous Linux. Peut-être existe-t-il déjà la possibilité d'utiliser SHA-1?
At 12:24 PM,
Anonymous said…
Mais pas contre un john par exemple. Ni contre une future initiative de Rainbow Cracking orientée exclusivement contre unix (pourquoi pas dans quelques années?).
Non, parce que le salt, sur RainbowCracking, ils ne peuvent pas le deviner. Ce genre d'initiative n'est alors pas applicable dans une application comme Rainbow.
Et tu cites john, mais personne ne peut actuellement y résister (modulo le temps d'investigation). Le bruteforce n'est pas une technique de crackage par collisions de hash, juste, on teste tout ce qui existe jusqu'à trouver un mot de passe qui marche. Et le crackage ici réside dans deux éléments :
* le temps d'encodage d'un mot de passe pour faire le checkup
* le nombre d'éléments sous forme cryptée disponible (dans le cas d'un MD5, il est représenté par un nombre fixe de caractère, ça limite le nombre de combinaisons à (beaucoup certes mais) un nombre non infini de résultats.
Dans le cas du mot de passe UNIX, il tient parce que :
* les initiatives de type rainbow ne pourront pas fonctionner de manière raisonnable (tous les mots de passe pour tous les salt possible)
* les combinaisons restent *grandes*
Et au pire, si on se fait pourrir le MD5, il reste le SHA, qui est meilleur.
Mais faire migrer les systèmes d'information de nos chères entreprises prend, aussi, du temps
Pas tant que ça. Si on découvre que le MD5 ne suffit plus, changer le mode d'encodage d'un mot de passe, disons pour un site Internet (le MD5 est souvent utilisé sans salt) prend, allez... 10 minutes par site. Pas la mort quoi.
Peut-être existe-t-il déjà la possibilité d'utiliser SHA-1?
Bien sûr que c'est possible. Regarde dans les services de PAM, tu verras des trucs intéressants. Par exemple, tu peux avoir envie de centraliser tes mots de passe, sur un serveur LDAP par exemple. La fonction d'authentification peut prendre la forme que tu veux. Et tu n'es pas obligé de passer par LDAP pour ce genre de pirouette hein :D
--
PS : au fait, si tu te demandes qui je suis, demande à networms :)
At 3:30 PM,
Hadrien Hamel said…
Je n'ai pas été très clair :p, en fait, quand je parlais d'une future initiative de Rainbow Cracking orientée exclusivement contre unix (pourquoi pas dans quelques années?) je pensais à des tables incluant le salt. Pour l'instant le salt md5 utilisé pour les mots de passe permet (si je ne m'abuse) 4096 possibilités, ce n'est pas énormissime à calculer si on a la puissance et le temps nécessaires (ouais, quelques années devraient suffire).
Tu as raison de dire que l'attaque exhaustive sur le mot de passe est difficile à faire (espace des clés gigantesque p.ex.), mais il n'en reste pas moins que les marges s'amenuisent. De plus, les attaques contre les algos de hash se multiplient, et (même si ce sont des techniques différentes) fragilisent les fondements de la vérification par mot de passe.
Encore une fois, ce n'est pas pour aujourd'hui, ni pour demain ^^ mais ça mérite qu'on y fasse gaffe quand même (enfin surtout les entreprises, nous sommes certainement moins touchés par des attaques nécessitant de gros moyens, en tant que simples utilisateurs lambada [dsl]).
Pour ce qui est du temps de migration informatique dans les entreprises, on va dire que ça dépend... mais quand on voit le nombre d'entre elles qui sont toujours sous win9x, on se dit qu'il peut également y en avoir qui vont trainer des pieds pour migrer la totalité de leurs mots de passe d'un algo de hash à l'autre. Effectivement, augmenter la sécurité d'un site perso se fait vite (il faut regénérer la liste de hash des mdp néanmoins, ce qui nécessite une intervention de chaque user). Mais le SI d'une entreprise ne se résume pas à un site web.
Enfin bon, c'est vrai que pour celles qui ont l'intelligence et le bon goût d'être sous LDAP, ça facilite un peu les choses ^^. Et merci de ton éclairage sur PAM, c'est un système que je n'ai pas encore trop exploré (oui oui, honte sur moi et ma descendance jusqu'à la 7ème génération).
ps : t'inquiète j'avais reconnu ton pseudo ^^
pps : merci pour tes réactions ça fait plaisir de voir qu'on est lu!
At 4:02 PM,
Anonymous said…
pps : merci pour tes réactions ça fait plaisir de voir qu'on est lu!
Nous aussi on t'aime HH...
Même si c'est vrai que c'est un peu par solidarité qu'on est là...
(Oui je suis un vrai connard quand je veux)
At 11:39 AM,
Anonymous said…
Ah, j'ai réussi a retrouver ton blog Had, c'est cool :)
Sinon, 10min par site pas la mort? heu.... oui quand tu en a un nombre raisonable, j'aime gine pas dire à France Telecom qui a un nombre plus qu'important de serveur: bon 10min par serveur ca va? -> ils vont rire :)
(et te muter à strasbourg par la même occasion....)
At 2:27 PM,
Anonymous said…
Bonjour/Bonsoir,
D'ailleur, j'ai créer un petit projet personnel à titre éducatif qui a pour but de créer une énorme base de données de mots pour ainsi retrouver votre ou vos mots de passe dans le cas d'un oubli ou autre.
Online MD5 Reverser:
http://ice.breaker.free.fr/
Excellente journée/soirée à tous et bonne continuation.
At 2:12 AM,
Anonymous said…
Si vous voulez décrypter un MD5, il existe une solution.
Ce site internet permet de décrypter des MD5, avec surement la plus grosse base de données sur internet.
L'adresse est : http://decrypt.vanvan.cc
At 9:27 AM,
Anonymous said…
Lire le blog en entier, pretty good
Post a Comment
<< Home