web-dev-qa-db-fra.com

Combien de temps faut-il pour déchiffrer les mots de passe volés dans le hack Yahoo annoncé le 14 décembre 2016?

Apparemment, Yahoo a encore été piraté avec jusqu'à un milliard de comptes d'utilisateurs compromis. L'article indique que Yahoo utilise MD5 pour le hachage de mot de passe.

Les pirates sont-ils également susceptibles de déchiffrer les mots de passe? Combien de temps faut-il pour déchiffrer 1 mot de passe? Est-il temps de casser 1 milliard, juste 1B * t?

77
soadyp

Oui, ils ont probablement réussi à déchiffrer de nombreux mots de passe en peu de temps.

De la déclaration officielle de Yahoo :

Pour les comptes potentiellement affectés, les informations de compte d'utilisateur volées peuvent avoir inclus des noms, des adresses e-mail, des numéros de téléphone, des dates de naissance, des mots de passe hachés (en utilisant MD5) et , dans certains cas, des questions et réponses de sécurité chiffrées ou non chiffrées.

MD5 est un contestablechoix pour le hachage de mot de passe car sa vitesse rend le cracking des mots de passe hachés MD5 très rapide . De plus, ils ne sont probablement pas salés, car Yahoo nous aurait certainement fait savoir. (Un sel aurait aidé à empêcher l'utilisation des tables Rainbow pendant le craquage.)

Vous pouvez voir les inconvénients du hachage MD5 simple lorsque vous le comparez à la violation d'Ashley Madison en 2015, qui a divulgué 36 millions de comptes. Dans ce cas, ils ont utilisé bcrypt avec 212 des tours d'expansion clés par opposition au simple MD5 de Yahoo, c'est pourquoi à l'époque les chercheurs ne pouvaient déchiffrer que 4 000 mots de passe dans un premier temps.

De l'article:

Dans le cas de Pierce, bcrypt a limité la vitesse de sa plate-forme de craquage à quatre GPU à 156 dérisoires par seconde. [...] Contrairement à bcrypt, extrêmement lent et exigeant en termes de calcul, MD5, SHA1 et une multitude d'autres algorithmes de hachage ont été conçus pour exercer une pression minimale sur le matériel léger. C'est bon pour les fabricants de routeurs, par exemple, et c'est encore mieux pour les crackers. Si Ashley Madison avait utilisé MD5, par exemple, le serveur de Pierce aurait pu compléter 11 millions1 suppositions par seconde , une vitesse qui lui aurait permis de tester les 36 millions de hachages de mot de passe en 3,7 ans s'ils étaient salés et en seulement trois secondes s'ils n'étaient pas salés (de nombreux sites ne font toujours pas saler les hachages ).

Ainsi, le craquage d'une grande partie des mots de passe Yahoo est une question de secondes (tandis que certains mots de passe plus forts resteront intacts). Une réponse exacte dépendrait de la puissance de calcul disponible et de la sensibilisation à la sécurité des mots de passe des clients Yahoo.


1Comme l'a noté @grc, 11 millions de hachages par seconde semblent plutôt lents. @ Morgoroth's linked 8x Nvidia GTX 1080 Hashcat benchmark (200,3 GH/s for MD5 total) est une bonne ressource pour des mesures plus à jour.

67
Arminius

(Le résumé se trouve dans le dernier paragraphe.)

Combien de temps faut-il pour déchiffrer 1 mot de passe? Est-il temps de casser 1 milliard, juste 1e9 * t?

Imaginez que j'ai cet algorithme de hachage:

function hash(password):
    hash = 0
    foreach character in password:
        hash = hash + toNumber(character)
    return hash

Si vous appelez hash("ab"), il pourrait retourner 3, car la valeur numérique du premier caractère pourrait être 1 et le second pourrait être 2, et il les additionne, résultant en 3.

Maintenant, si vous avez une base de données pleine de chiffres, comme 583, 140, 8582, etc., combien de temps cela prendrait-il pour se fissurer?

Dans cet exemple, hash("ab") entraînerait 3 ainsi que hash("ba"), ce qui est appelé une collision (deux entrées mappant sur la même sortie). Dans md5, cela ne se produit pas si facilement. L'ordre est important et vous ne pouvez pas dériver d'informations sur l'entrée en fonction de la sortie. Pas même la longueur.

Vous devez donc recourir à simplement essayer toutes les possibilités jusqu'à ce que vous en trouviez une qui vous donne la bonne sortie. Si quelqu'un a un mot de passe fort et aléatoire de 20 caractères, cela peut prendre des siècles. Mais la plupart des gens utilisent des mots de passe comme "horselover49", "letmein" ou "penis" (bien que ce dernier soit trop court), qui sont beaucoup plus faciles à déchiffrer.

La raison pour laquelle tout le monde se plaint d'utiliser md5 est qu'il est rapide. Mais les algorithmes de hachage sont faits pour être rapides. MD5 peut être cassé à d'autres fins, mais ce n'est pas pour le hachage de mot de passe. Vous ne devriez pas utiliser un seul passage de l'algorithme de hachage any, que ce soit md5 ou sha1 ou sha512.

De meilleurs algorithmes, comme bcrypt/scrypt/pbkdf2/etc. utiliser un algorithme de hachage un million de fois (entre autres). Maintenant, au lieu de pouvoir exécuter l'algorithme une fois pour chaque supposition, vous devez l'exécuter un million de fois pour chaque supposition. Cela prend beaucoup plus de temps, vous permettant d'essayer moins de mots de passe, ce qui protège mieux les mots de passe faibles.

Alors oui, la même chose va se produire qu'avec les autres violations utilisant MD5: beaucoup de mots de passe seront fissurés. Mais ils ne seront pas tous fissurés et certainement pas en temps linéaire. Les plus forts prendront exponentiellement plus de temps.

21
Luc

N'oubliez pas que le temps de commencer à obtenir des mots de passe utilisables du système est beaucoup moins long que le temps de trouver le mot de passe d'un utilisateur particulier. Choisissez un mot de passe, hachez-le, trouvez tous les utilisateurs dont le mot de passe hache à cette valeur (extrêmement rapide si vous avez déjà stocké les utilisateurs dans une table de hachage saisie par le hachage de mot de passe), répétez. Dans cette grande pile d'utilisateurs, presque n'importe quel mot de passe est susceptible d'avoir quelqu'un qui l'utilise, et les mots de passe communs/bâclés auront beaucoup de gens qui les utilisent.

5
keshlam

Nous ne savons pas sans informations supplémentaires.

Tout d'abord, il a été dit "qu'ils utilisaient le MD5". Prendre un mot de passe et le hacher avec MD5 est très, très rapide. Comme cela a été dit, il existe des machines capables de calculer 28 milliards de mots de passe et de calculer les codes de hachage MD5 par seconde. Ce serait mauvais. Cependant, ils pourraient avoir utilisé plusieurs tours de hachage avec MD5. Ils ont peut-être haché le mot de passe, puis haché le résultat de millions de fois. Maintenant, le nombre de mots de passe qui peuvent être devinés et le hachage calculé n'est "que" de 28 000 par seconde.

Deuxièmement, nous devons savoir si les mots de passe étaient "salés". Le mot de passe "salé" signifie que pour chaque utilisateur, un "sel" différent est ajouté au mot de passe. Par exemple, si j'ai utilisé bêtement le mot de passe 1234 et que vous avez bêtement utilisé le même mot de passe, nos "vrais" mots de passe pourraient être k39fja0eflaei-1234 et oe0vnda9afnlad-1234. Donc, même si mon mot de passe est fissuré, cela n'aide pas à déchiffrer votre mot de passe. Chaque mot de passe doit être craqué individuellement.

Avec des mots de passe non salés, chacune des 28 000 suppositions de mots de passe réussira si n'importe lequel du milliard d'utilisateurs a utilisé ce mot de passe. Ainsi, avec quelques milliards de suppositions, tous les mots de passe les plus faciles seront fissurés. Avec des mots de passe salés, il faut quelques milliards de suppositions pour obtenir seulement quelques mots de passe faciles. Mais s'ils utilisaient du MD5 ordinaire, 28 milliards de tentatives de mots de passe par seconde casseraient les choses assez rapidement, même avec le salage.

3
gnasher729