Voici des tests de performances avec john the ripper, j'ai testé sur plateforme x86_64 avec GCC ICC et OpenCL, donc CPU (intel core I5 sur un des 4 coeurs) et GPU (Nvidia GTX460)
Notez que john the ripper sur GPU ne supporte pas beaucoup de cyphers:
- Raw SHA-1
- Raw MD5
- Netscape LDAP SSHA
- NT MD4
Les différences, pour le CPU j'utilise pas MPICH donc je tire sur un seul coeur de mon i5, le compilateur GCC utilisé est 4.6.0 c'est le compilateur par défaut sur beaucoup de linux, le compilateur ICC est spécialisé pour les processeurs Intel (mais une compilation pour un proc amd devrait fonctionner), vous ne trouverez pas ICC dans vos dépôts à cause de la license cela dit il est gratuit. La version ICC utilisé est 12.0.4.
Pour le GPU, cela utilise opencl, si vous avez une carte graphique récente (supportant amd ati stream, ou nvidia cuda, c'est bon) la GTX460 n'est pas vraiment une bonne carte pour le cracking sur GPU comme n'importe quel nvidia (ATI à des performances de 8 à 10 fois supérieur pour une carte du même prix que chez nvidia).
Benchmark, la version de john pour le calcul sur CPU avec compilation GCC est 1.7.8
cela donne:
#########
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE
Many salts: 2889K c/s real, 2901K c/s virtual
Only one salt: 2393K c/s real, 2398K c/s virtual
Benchmarking: BSDI DES (x725) [128/128 BS SSE2-16]... DONE
Many salts: 88601 c/s real, 88779 c/s virtual
Only one salt: 86656 c/s real, 86656 c/s virtual
Benchmarking: FreeBSD MD5 [32/64 X2]... DONE
Raw: 12508 c/s real, 12533 c/s virtual
Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw: 766 c/s real, 766 c/s virtual
Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short: 391372 c/s real, 392157 c/s virtual
Long: 1182K c/s real, 1184K c/s virtual
Benchmarking: LM DES [128/128 BS SSE2-16]... DONE
Raw: 13799K c/s real, 13827K c/s virtual
############
La version john the ripper pour ICC est 1.7.7 jumbo 6, elle supporte bien plus de cyphers étant donné qu'elle dispose du jumbo patch.
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE
Many salts: 2744K c/s real, 2772K c/s virtual
Only one salt: 2302K c/s real, 2302K c/s virtual
Benchmarking: BSDI DES (x725) [128/128 BS SSE2-16]... DONE
Many salts: 83840 c/s real, 83840 c/s virtual
Only one salt: 82304 c/s real, 82304 c/s virtual
Benchmarking: FreeBSD MD5 [8x]... DONE
Raw: 26528 c/s real, 26795 c/s virtual
Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE
Raw: 758 c/s real, 758 c/s virtual
Benchmarking: Kerberos AFS DES [48/64 4K]... DONE
Short: 384512 c/s real, 384512 c/s virtual
Long: 1233K c/s real, 1233K c/s virtual
...
Benchmarking: Raw MD5 [gen]... Using raw-md5 mode, by linking to md5_gen(0) functions DONE
Raw: 17073K c/s real, 17073K c/s virtual
#########################
Observez que sur le binaire compilé avec ICC les performances ont plus que doublé sur MD5 freebsd.
#########################
La version de john utilisé pour le calcul GPU est 1.7.7 jumbo 1
Benchmarking: Raw SHA-1 OpenCL [SHA-1]...
Kernel path is : ./sha1_opencl_kernel.cl
OpenCL Platform: <<<NVIDIA CUDA>>> and device: <<<GeForce GTX 460>>>
DONE
Many salts: 23724K c/s real, 23489K c/s virtual
Only one salt: 23489K c/s real, 23489K c/s virtual
Benchmarking: Raw MD5 [raw-md5-opencl]...
Kernel path is : ./md5_opencl_kernel.cl
OpenCL Platform: <<<NVIDIA CUDA>>> and device: <<<GeForce GTX 460>>>
DONE
Raw: 72673K c/s real, 73400K c/s virtual
Benchmarking: Netscape LDAP SSHA OPENCL [salted SHA-1]...
Kernel path is : ./ssha_opencl_kernel.cl
OpenCL Platform: <<<NVIDIA CUDA>>> and device: <<<GeForce GTX 460>>>
DONE
Many salts: 44793K c/s real, 44793K c/s virtual
Only one salt: 25964K c/s real, 25964K c/s virtual
Benchmarking: NT MD4 [OpenCL 1.0]...
Kernel path is : ./nt_opencl_kernel.cl
OpenCL Platform: <<<NVIDIA CUDA>>> and device: <<<GeForce GTX 460>>>
DONE
Raw: 28550K c/s real, 28270K c/s virtual
##############
Notez que sur raw md5 le GPU est 4.25 fois plus rapide que via john compilé avec ICC.
Bilan:
GCC | ICC
Traditional DES
2889 | 2744
BSDI DES
88601 | 83840
FreeBSD MD5
12508 | 26528
OpenBSD Blowfish
766 | 758
Kerberos AFS DES
391372 | 384512
LM DES
13799 | 15180
generic crypt
216960 | 256992
ICC | Opencl
Raw SHA-1
8726 | 23724
Raw MD5
17073 | 72673
Netscape LDAP SSHA
3826 | 44793
NT MD4
27532 | 28550
Bilan, suivant le cypher une version peut être plus intéressante qu'une autre, mais n'oubliez pas que sur GPU c'est un des premiers patch disponible, et on constate que les performances sont pas vraiment au rendez vous , car bien qu'elles soient supérieurs je rappelle que sur CPU j'utilise un seul de mes 4 coeurs (2.8Ghz).
Comme indiqué: "Status: applies on top of the john-1.7.7-jumbo-1, currently relevant.
This patch is experimental and has lot of scope for improvement. If you are interested in hacking / extending JtR to work with GPUs this is the right place to begin ;)"
Pour l'installation de john classique:
wget http://www.openwall.com/john/g/john-1.7.8.tar.gz
tar zxvf john-1.7.8.tar.gz
cd john-1.7.8/src/
make linux-x86-64
Pour l'installation de la version ICC , téléchargez juste john jumbo et sélectionnez icc pour la compilation.
wget http://www.openwall.com/john/g/john-1.7.7-jumbo-6.tar.gz
tar zxvf john-1.7.7-jumbo-6.tar.gz
cd john-1.7.7-jumbo-6/src/
make linux-x86-64-icc
Pour la compilation de john the ripper support GPU:
wget http://www.openwall.com/john/g/john-1.7.7-jumbo-1.tar.gz
tar zxvf john-1.7.7-jumbo-1.tar.gz
cd john-1.7.7-jumbo-1
wget http://openwall.info/wiki/_media/john/john-1.7.7-jumbo-1-opencl-02.diff.gz
gzip -d john-1.7.7-jumbo-1-opencl-02.diff.gz
patch -Np1 -i john-1.7.7-jumbo-1-opencl-02.diff
cd src
make linux-x86-64-opencl
#La version GPU durant la compilation reste figé un moment (c'est normal)
J'ai réalisé le test après lecture de MISC HS 3 "Casser des mots de passe dans la vrai vie" histoire de vérifier les perfs ICC de john face à GCC, pour le GPU je suis tombé dessus par hasard en regardant la liste de patchs dispo sur openwall, il existe deux autres patchs mais pour Nvidia CUDA (sha256 et phpass)