Comment ça marche ?

La technique des compromis temps-mémoire sépare le travail en deux phases :

  • La phase offline
  • La phase online

La phase offline

C'est une phase de pré-calculs qui génère des tables, ici des rainbow tables, les optimise et enfin les exporte. Cette application est éxécutable et distribuable sur GPU.
Une rainbow table est une structure de données qui permet de retrouver un mot de passe à partir de son hash. Une rainbow table est créée en générant des chaînes. Pour créer une chaîne, on part d’un mot de passe que l’on va hacher puis ce hash sera réduit avec une fonction de réduction. On continue la construction de la chaîne en refaisant tour à tour un hachage et une réduction sur le nouveau mot de passe. A la fin, la table gardera seulement la liste de couples (point de départ, point de fin) des chaînes, où les points de départ et les points de fin sont des mots de passe en clair.

L’application de la phase offline s’utilise en ligne de commande et est paramétrable, afin de gérer le nombre de chaînes d'une table et le nombre de tables que l'on souhaite. Cette application a pour but d’être exécuté sur un cluster comme Grid’5000, Grid’5000 étant un réseau de machines dédié au calcul distribué et aux expérimentations.

./generateTable c mt (startpath) (endpath)
  • c est la longueur d'un mot de passe (en caractères)
  • mt est le nombre de points de fin dans la table (50 000 000 par exemple)
  • (optionnel) startpath est le chemin d'accès au fichier de points de départ à créer
  • (optionnel) endpath est le chemin d'accès au fichier de points de fin à créer

Cela créera deux fichiers distincts aux chemins spécifiés. Ces fichiers contiennent les points de départ et les points de fin filtrés, c'est à dire sans doublons.

La phase online

C'est la phase d’attaque qui permet le chargement des rainbow tables en mémoire afin de rechercher le mot de passe correspondant à un hash donné. Cette application associée avec une interface graphique permet à l'utilisateur de rechercher un mot de passe à partir d'un hash de façon ludique mais également d'avoir accès à des rapports d'analyse sur, par exemple, la mémoire utilisée par les tables, le temps de génération de celles-ci ou le temps de recherche du mot de passe.

La phase online étant accompagnée d'une interface graphique, l'utilisateur doit entrer un ou un fichier de plusieurs hash de mots de passe dans la barre de recherche, et l'interface va exécuter le logiciel phase online dans le but de retrouver le mot de passe qui correspond au hash donné.
Voici un aperçu possible de l'interface graphique :


La phase offline est réalisée une seule fois et prends un temps considérable alors que la phase online permet le cassage de mots de passe en masse en un temps très court.