John the Ripper 1.9.0-jumbo-1 amb suport FPGA

Alliberat nova versió del programa d'endevinació de contrasenyes compatible més antic John the Ripper 1.9.0-jumbo-1. (El projecte es desenvolupa des de 1996.) On pàgina del projecte Les fonts estan disponibles per a la descàrrega, així com muntatges ja fets per a Windows.

Cal destacar que han passat 1.8.0 anys des del llançament de la versió 1-jumbo-4.5, durant la qual es van fer més de 6000 canvis (commits git) de més de 80 desenvolupadors. Durant aquest període, els desenvolupadors van recomanar l'ús edició actual de GitHub, l'estat del qual es va mantenir estable malgrat els canvis fets gràcies a integració contínua, que inclou la verificació preliminar de cada canvi (pull request) en moltes plataformes. Una característica especial de la nova versió és l'aparició de suport per a FPGA (FPGA) a més de CPU, GPU i Xeon Phi.


Per taulers ZTEX 1.15y, que inclouen 4 xips FPGA i originalment utilitzats principalment per a la mineria de Bitcoin, ara s'implementen 7 tipus de hash de contrasenyes: bcrypt, classic descrypt (incloent bigcrypt), sha512crypt, sha256crypt, md5crypt (incloent Apache apr1 i AIX smd5), Drupal7 i phpass (utilitzat). , en particular a WordPress). Alguns d'ells s'implementen a FPGA per primera vegada. Per a bcrypt, el rendiment assolit de ~ 119 k c/s amb 2 ^ 5 iteracions ("$ 2b$ 05") amb un consum d'energia d'uns 27 watts supera significativament els resultats de les últimes GPU per placa, preu de maquinari i per watt. També recolzat clústers de plaques d'aquest tipus, que s'han provat fins a 16 plaques (64 FPGA) controlades des d'un únic Raspberry Pi 2. S'admet la funcionalitat habitual de John the Ripper, que inclou tots els modes d'endevinació de contrasenyes i la descàrrega simultània d'un gran nombre de hashes. Per accelerar el treball, vam implementar l'ús d'una màscara (el mode "--mask", inclòs en combinació amb altres modes) i la comparació dels hashes calculats amb els carregats al costat FPGA. Des del punt de vista de la implementació, molts dels dissenys (p. sha512crypt i Drupal7) s'utilitzen blocs formats per nuclis de processadors multifils (nuclis de CPU suaus) que interactuen amb nuclis criptogràfics. El desenvolupament d'aquesta funcionalitat va ser liderat per Denis Burykin en coordinació amb altres desenvolupadors jumbo.

Altres canvis importants:

  • Suport per a un gran nombre de tipus addicionals de hash, xifrats, etc., inclosos tant els hash clàssics de contrasenyes (per exemple, de noves versions de QNX), com les carteres de criptomoneda, els arxius xifrats i els sistemes de fitxers xifrats (per exemple, Bitlocker i FreeBSD geli), així com suport per a nous tipus de formats suportats anteriorment (per exemple, suport afegit per a bcrypt-pbkdf per a OpenBSD softraid) i molt més. En total, s'han afegit 80 formats a la CPU i 47 a l'OpenCL (i un petit nombre d'antics s'han eliminat ja que s'han integrat en nous i obsolets). El nombre total de formats és ara 407 a la CPU (o 262 sense incloure els formats "dinàmics" configurats a partir dels fitxers de configuració) i 88 a OpenCL.
  • Negativa a donar suport al llenguatge CUDA a favor d'OpenCL, que de cap manera interfereix amb l'ús complet de les GPU NVIDIA (i fins i tot ajuda, gràcies a centrar el desenvolupament i l'optimització en una implementació de cada format per a la GPU en comptes de dues implementacions anteriors).
  • Suport per a nous conjunts d'instruccions SIMD: AVX2, AVX-512 (inclòs per a la segona generació Xeon Phi) i MIC (per a la primera generació), així com un ús més universal i complet de SIMD en implementacions de molts formats, inclòs l'ús de configuracions d'instruccions suportades anteriorment fins a AVX i XOP a x86(-64) i
    NEON, ASIMD i AltiVec a ARM, Aarch64 i POWER, respectivament. (En part com a part de GSoC 2015.)
  • Nombroses optimitzacions per a CPU i OpenCL, tant per treballar de manera més eficient amb un gran nombre de hash simultàniament (per exemple, es va provar la càrrega de 320 milions de hash SHA-1 a la GPU), com per augmentar la velocitat dels càlculs hash. Algunes d'aquestes optimitzacions són universals, algunes cobreixen diferents subconjunts de formats i moltes són específiques per a formats individuals.
  • Configuració (automàtica) de l'emmagatzematge òptim de les contrasenyes verificades a la CPU ("—tune=auto —verbosity=5") i mides de treball òptimes a OpenCL (habilitat per defecte), inclòs tenint en compte la lenta acceleració de NVIDIA GTX GPU de la sèrie a la freqüència de funcionament completa 10xx i més recents. Utilitzant hashs carregats realment i la longitud real de les contrasenyes que s'estan comprovant (quan es conegui per endavant) per a aquest ajustament automàtic.
  • Afegir un compilador per a "expressions dinàmiques" especificades directament a la línia d'ordres i implementar nous tipus hash híbrids, per exemple "-format=dynamic='sha1(md5($p).$s)'", calculat a la CPU mitjançant SIMD . Com a components d'aquestes expressions, s'admeten desenes de hashes ràpids (des de comuns com MD5 fins a moderadament exòtics com Whirlpool), concatenació de subcadenes, codificació i descodificació, conversió de majúscules i minúscules, referències a contrasenya, sal, nom d'usuari i constants de cadena.
  • Eliminació de diferències no desitjades amb hashcat, inclòs suport per a regles anteriorment específiques de hashcat (ordres de regles de llista de paraules), transició a la numeració de dispositius OpenCL des de l'1, ús predeterminat de les mateixes longituds de contrasenya (normalment longitud 7) per a proves de rendiment.
  • Nous modes per generar contrasenyes verificables (modes de cracking), inclòs PRINCE a partir de hashcat (forma “frases” combinant diverses paraules en ordre creixent de longitud total), subconjunts (ofereix contrasenyes amb un nombre insuficient de caràcters diferents, encara que aquests caràcters arribin). d'un gran conjunt de possibles) i híbrid extern (permet que els modes externs, descrits en fitxers de configuració en un llenguatge semblant a C, generin moltes contrasenyes verificables en funció de cada "paraula" bàsica rebuda d'un altre mode). A més, diversos nous modes externs predefinits.
  • Funcions addicionals per utilitzar diversos modes simultàniament (un sobre l'altre - apilament), així com per utilitzar conjunts de regles (apilament de regles de llista de paraules).
  • Millores en els modes de màscara (estirament gradual de la màscara en un rang especificat de longituds, aplicació d'una màscara al costat del dispositiu OpenCL o de la placa FPGA) i un crack únic (comportament raonable en dispositius que calculen un gran nombre de hashes en paral·lel). , per als quals anteriorment no hi havia prou contrasenyes verificables en aquest mode, i també restriccions en el consum de memòria).
  • Moltes millores per donar suport a Unicode i altres codificacions en diferents subsistemes.
  • Moltes millores als programes *2john (que converteixen fitxers de diferents formats per a
    utilitzar amb john), especialment wpapcap2john (gestiona el trànsit WiFi).
  • Hi ha moltes opcions noves de línia d'ordres, paràmetres a john.conf, opcions de configuració d'scripts i funcions noves corresponents, que no s'han esmentat totes aquí.
  • Millora de la qualitat del codi gràcies al suport integrat per a les compilacions de depuració amb AddressSanitizer (anteriorment) i UndefinedBehaviorSanitizer (afegit), afegint un fuzzer de format integrat (com a part de GSoC 2015), utilitzant la integració contínua (builds per a desenes de sistemes operatius i compiladors). combinacions i provar-les per a un suport correcte per a tots els formats).

Font: linux.org.ru

Afegeix comentari