web-dev-qa-db-fra.com

Qu'est-ce qu'une attaque Rainbow exactement?

Je lisais quelques articles sur les sels et les hachages de mot de passe et quelques personnes mentionnaient les attaques Rainbow. Qu'est-ce qu'une attaque arc-en-ciel et quelles sont les meilleures méthodes pour la prévenir?

52
Dusty

L'article wikipedia est un peu difficile à comprendre. En un mot, vous pouvez considérer une table arc-en-ciel comme un grand dictionnaire avec des hachages pré-calculés et les mots de passe à partir desquels ils ont été calculés.

La différence entre Rainbow Tables et d'autres dictionnaires réside simplement dans la méthode de stockage des entrées. La table Rainbow est optimisée pour les hachages et les mots de passe, et permet ainsi une excellente optimisation de l'espace tout en conservant une bonne vitesse de recherche. Mais en substance, ce n'est qu'un dictionnaire.

Lorsqu'un attaquant vous vole une longue liste de hachages de mots de passe, il peut rapidement vérifier si l'un d'eux se trouve dans la table arc-en-ciel. Pour ceux qui le sont, la table arc-en-ciel contiendra également la chaîne à partir de laquelle ils ont été hachés.

Bien sûr, il y a tout simplement trop de hachages pour les stocker tous dans une table arc-en-ciel. Donc, si un hachage n'est pas dans la table particulière, le pirate n'a pas de chance. Mais si vos utilisateurs utilisent des mots anglais simples et que vous ne les avez hachés qu'une seule fois, il y a une grande possibilité qu'un bon Rainbow Table contienne le mot de passe.

63
Vilx-

C'est quand quelqu'un utilise un Rainbow table pour casser les mots de passe.

Si cela vous inquiète, vous devez utiliser Salt . Il y a aussi une Stack Overlow question qui pourrait vous aider à mieux comprendre le sel que Wikipedia ...

15
Zifre

Ceci est un article utile sur Rainbow Tables pour le profane. (Cela ne veut pas dire que vous êtes un profane, mais c'est bien écrit et concis.)

9
Kieran Hall

Tard dans la soirée, mais je savais également que Rainbow Tables était une méthode d'attaque contre les mots de passe hachés/non salés. Cependant, sur Twitter récemment http://codahale.com/how-to-safely-store-a-password/ a été partagé et selon vos besoins et préoccupations .. vous ne pourrez peut-être pas saler votre moyen de stockage sécurisé des mots de passe.

J'espère que cela vous informera.

2
fergjo
1
Dana Holt

D'une manière générale, vous cryptez un grand nombre de chaînes de texte court possibles (c'est-à-dire pour les mots de passe) et stockez les valeurs chiffrées à côté du texte en clair. Cela rend (relativement) simple de rechercher simplement le texte en clair lorsque vous avez la valeur chiffrée.

Ceci est très utile pour les hachages de mot de passe faibles et/ou non salés. Un exemple populaire est le hachage LAN Manager , utilisé par les versions de Windows jusqu'à XP pour stocker les mots de passe des utilisateurs).

Notez qu'une table Rainbow pré-calculée même pour quelque chose d'aussi simple que le hachage LM prend beaucoup de temps CPU à générer et occupe une bonne quantité d'espace (de l'ordre de 10s de gigaoctets IIRC).

1
Colin Pickard

Les tables arc-en-ciel permettent essentiellement à quelqu'un de stocker un grand nombre de hachages précalculés de manière réalisable.

Cela facilite le déchiffrement de vos mots de passe hachés, car au lieu d'effectuer un tas de fonctions de hachage, le travail a déjà été fait et ils n'ont pratiquement qu'à effectuer une recherche dans la base de données.

La meilleure protection contre ce type d'attaque est d'utiliser un sel (caractères aléatoires) dans votre mot de passe. c'est-à-dire qu'au lieu de stocker md5 (mot de passe), stocker md5 (mot de passe + sel), ou encore mieux md5 (sel + md5 (mot de passe)).

Étant donné que même avec les tables Rainbow, il sera presque impossible de stocker tous les hachages salés possibles.

BTW, évidemment, vous devez stocker votre sel avec votre hachage afin de pouvoir authentifier l'utilisateur.

1
Jonathan Maddison