La
recherche autour du reversing de l'algorithme de hashage MD5 est
toujours active, tout comme ses applications directes en tant que
vulnérabilité comme le montrent les toutes recentes inquiétudes autour
des certificats SSL.
Les
techniques les plus récentes en terme de force brute à l'encontre de
ces hashes exploitent aujourd'hui la puissance de calcul des
processeurs graphiques, les GPUs, depuis que Nvidia à ouvert largement
leur accessibilité aux programmeurs au travers de son environnement de
développement CUDA.
Cependant
comme tous les codes, tous les programmes actuellement disponibles ne
sont pas tous aussi rapides qu'ils est possible. Question
d'optimisation du code, de stratégies adoptées, d'exploitation correcte
de l'environement sur lequel ils sont deployés...FutureZone vous
propose un petit tour d'horizon de ce qui se fait aujourd'hui.
L'ensemble des tests est effectué sur la même base : le hash est celui d'un mot de 7 caractères alphabétiques minuscules : hashcra.
Il s'agit a chaque fois de la même machine, un quad core QX6700 (2.66Ghz) supporté par 4Go de RAM DDR2, une carte graphique Nvidia 8800GTX le tout sur carte mère basée sur un chipset Intel P45.
Cela
dit, ces information ont peu d'importance et ne sont données qu'à titre
indicatif pour le lecteur curieux de comparer les performances avec son
propre système.
Ce qui est important dans ces résultats n'est pas les chiffres, mais bien leur comparaison les uns avec les autres.
De
même, il ne sera pas fait mention du temps necessaire pour retrouver un
texte clair à partir d'un hash. En effet, la stratégie de recherche
varie selon les programmes : certains sont incrémentiels, d'autres
testent les occurences au hasard (aa, azert, aze, azertyu...). Ces
derniers peuvent donc sur la même machine mettre quelques
secondes ou plusieurs minutes pour le même hash. Question de chance.
Ainsi
pour commencer en ayant comme base de reflexion un calcul de force
brute lambda, considérons les performances d'un ancien programme de
2004 : MDCrack. L'opération exploite ici un CPU sur un seul coeur, les occurences de chaines étant incrémentielles (aa, ab, ac, ad...) :

Ainsi, on constate qu'en empoyant le CPU seul sur un coeur on obtient une vitesse d'à peu près 13 million et demie de hashes par seconde.
Le même test, à présent sur le nombre maximum de coeurs que détecte MDCrack :

On constate cette fois une augmentation prévisible : 53 millions et demie de hashes par seconde. Notons que l'ensemble des coeurs est exploité correctement et à 100% de leur capacité.
Il est temps à présent de "lacher les chiens" : les programmes suivants exploitent la puissance de calcul de la carte graphique.
MD5 GPU Crack ( Benjamin Vernoux, aka Titan. L'un des premier à avoir release un code exploitant les GPU Nvidia) :

On constate ici une vitesse de 166 millions de hashes par seconde. Le CPU est peu sollicité, entre 25 et 50% de ses capacités.
Extreme GPU Bruteforcer. Un programme en lignes de commande:

Le programme atteint ici une vitesse de 230 millions de hashes par seconde. Là encore, le CPU est assez peu exploité.
Distributed Password Recovery, un programme en interface graphique de ElcomSoft :

EDPR se montre un peu moins rapide avec 200 millions de hashes par seconde.
En revanche l'exploitation du CPU et de ses coeurs est cette fois plus
correcte sans toutefois atteindre un niveau optimal. En réalité la
vitesse donnée ici est moyenne et varie en fait entre 180 et 250
millions.
BarsWF MD5 Bruteforcer, de Svarychevski Michail Aleksandrovich :

Cette fois on est au maximum, avec une vitesse moyenne de 430 millions de hashes par seconde.
Non seulement le GPU est exploité au maximum, mais il en est de même
pour les coeurs du CPU qui tournent tous à 100% comme on le voit.
Pour terminer, voici un comparatif global des résultats :

Pour être vraiment complets et justes, il faut ici attirer l'attention du lecteur sur la réalité des performances de ces programmes. Dans cet articles on a mesuré que les performances brutes de chaque logiciel, sans prendre en compte leurs différentes options qui parfois peuvent complètement changer leurs vraies performances pratiques.
Par exemple, on peut voir que BarsWF est de loin le plus rapide. D'une facon générale d'ailleurs, les programmes en ligne de commande sont plus rapides
que les interfaces graphiques : ces dernières réservent à chaque
fois du temps de calcul de la machine pour rafraichir l'affichage de la
fenètre, gourmand en ressources.
Cependant en réalité, le Distributed Password Recovery de ElcomSoft est quant à lui capable de fonctionner en mode distribué
: dans ce mode, plusieurs machines peuvent travailler simultanément
très facilement (il fonctionne sur un principe de serveur/clients)
aussi bien en LAN qu'au travers d'Internet. Ainsi, rien qu'avec deux
machines en réseau on obtiendrait déjà la même vitesse que BarsWF
avec l'avantage de la gestion des résultats, du travail sur des groupes
de hashes etc... La license de base étant prévue pour 20 machines en
réseau, on comprend dès lors que dans le cadre d'une application
professionnelle du reversing ce programme qui semblait plus lent serait
en fait un meilleur choix.
Gutek pour FutureZone, 2009