Lansarea John the Ripper 1.9.0-jumbo-1 cu suport FPGA

Eliberată versiune nouă a celui mai vechi program acceptat de ghicire a parolelor Ioan Spintecătorul 1.9.0-jumbo-1 (proiectul se dezvoltă din 1996). Au trecut 1.8.0 ani de la lansarea versiunii anterioare 1-jumbo-4.5, timp în care au fost făcute peste 6000 de modificări (comite git) de la peste 80 de dezvoltatori. Mulțumită integrare continuă, care include o verificare preliminară a fiecărei modificări (pull request) pe multe platforme, în această perioadă dezvoltatorii au recomandat utilizarea ediția curentă din GitHub, a cărui stare a fost menținută stabilă în ciuda modificărilor efectuate. Codul principal al proiectului distribuit de sub licența GPLv2+, iar codul unor componente este sub licența BSD.

O caracteristică specială a noii versiuni este apariția suportului FPGA (pe lângă CPU, GPU și Xeon Phi). Pentru scânduri ZTEX 1.15y, incluzând 4 cipuri FPGA și utilizate inițial în principal pentru minerit Bitcoin, acum sunt implementate 7 tipuri de hash-uri de parole: bcrypt, classic decrypt (inclusiv bigcrypt), sha512crypt, sha256crypt, md5crypt (inclusiv Apache apr1 și AIX smd5), Drupal7 și phpass (folosit). , în special în WordPress). Unele dintre ele sunt implementate pe FPGA pentru prima dată.

Pentru bcrypt, performanța atinsă de ~119k c/s cu 2^5 iterații ("$2b$05") cu un consum de energie de ~27 wați depășește semnificativ rezultatele pentru cele mai recente GPU-uri pe placă, pe preț hardware și pe watt . De asemenea, susținut clustere de plăci de acest tip, care au fost testate până la 16 plăci (64 de cipuri FPGA) controlate de la un singur Raspberry Pi 2. Este acceptată funcționalitatea obișnuită John the Ripper, inclusiv toate modurile de ghicire a parolelor și descărcarea simultană a unui număr mare de hashe-uri .

Pentru a accelera munca, am implementat utilizarea unei măști (modul „—mask”, inclusiv în combinație cu alte moduri) și compararea hashurilor calculate cu cele încărcate pe partea FPGA. Din perspectiva implementării, multe dintre modele (de ex. sha512crypt și Drupal7) sunt utilizate blocuri formate din nuclee de procesor multi-threaded (nuclee soft CPU) care interacționează cu nuclee criptografice. Dezvoltarea acestei funcționalități a fost condusă de Denis Burykin în coordonare cu alți dezvoltatori jumbo.

Alte modificari importante:

  • Suport pentru un număr mare de tipuri suplimentare de hashuri, cifruri etc., inclusiv atât hash-uri clasice de parole (de exemplu, din noile versiuni de QNX), cât și portofele de criptomonede, arhive criptate și sisteme de fișiere criptate (de exemplu, Bitlocker și FreeBSD geli), precum și suport pentru noile tipuri de formate acceptate anterior (de exemplu, suport adăugat pentru bcrypt-pbkdf pentru OpenBSD softraid) și multe altele. În total, 80 de formate au fost adăugate pe CPU și 47 pe OpenCL. Numărul total de formate este acum 407 pe CPU (sau 262 fără a include formatele „dinamice” configurate din fișierele de configurare) și 88 pe OpenCL.
  • Refuzul de a sprijini limbajul CUDA în favoarea OpenCL, care în niciun caz nu interferează cu utilizarea deplină a GPU-urilor NVIDIA (și chiar ajută, datorită concentrării dezvoltării și optimizării pe o implementare a fiecărui format pentru GPU în loc de două implementări anterior).
  • Suport pentru noile seturi de instrucțiuni SIMD - AVX2, AVX-512 (inclusiv pentru a doua generație Xeon Phi) și MIC (pentru prima generație) - precum și utilizarea mai universală și mai completă a SIMD în implementări de mai multe formate, inclusiv utilizarea de setările de instrucțiuni acceptate anterior până la AVX și XOP pe x86(-64) și
    NEON, ASIMD și AltiVec pe ARM, Aarch64 și, respectiv, POWER.

  • Numeroase optimizări pentru CPU și OpenCL, atât pentru a lucra mai eficient cu un număr mare de hashuri simultan (de exemplu, a fost testată încărcarea a 320 de milioane de hash-uri SHA-1 pe GPU), cât și pentru a crește viteza calculelor hash. Unele dintre aceste optimizări sunt universale, unele acoperă diferite subseturi de formate și multe sunt specifice formatelor individuale.
  • Configurarea (automată) a tamponării optime a parolelor verificate pe CPU („—tune=auto —verbosity=5”) și a dimensiunilor optime ale jobului pe OpenCL (activat implicit), inclusiv luând în considerare accelerarea lentă până la frecvența maximă de operare a GPU-urilor din seria NVIDIA GTX 10xx și mai noi. Utilizarea hashurilor încărcate efectiv și a lungimii reale a parolelor care sunt verificate (când este cunoscută dinainte) pentru o astfel de reglare automată.
  • Adăugarea unui compilator pentru „expresii dinamice” specificate direct pe linia de comandă și implementarea unor noi tipuri de hash hibride, de exemplu „-format=dynamic='sha1(md5($p).$s)'”, calculat pe CPU folosind SIMD . Ca componente ale unor astfel de expresii, sunt acceptate zeci de hashe-uri rapide (de la cele obișnuite precum MD5 până la cele moderat exotice precum Whirlpool), concatenarea subșirurilor, codificarea și decodarea, conversia majusculelor, referințe la parolă, sare, nume de utilizator și constante de șir.
  • Eliminarea diferențelor nedorite față de hashcat, inclusiv suport pentru regulile specifice hashcat-ului anterior (comenzi pentru regulile listei de cuvinte), tranziția la numerotarea dispozitivelor OpenCL de la 1, utilizarea implicită a acelorași lungimi de parole (de obicei lungimea 7) pentru testele de performanță.
  • Noi moduri de generare a parolelor verificabile (moduri de cracare), inclusiv PRINCE din hashcat (formează „fraze” prin combinarea mai multor cuvinte în ordinea crescătoare a lungimii totale), subseturi (afișează parole cu un număr insuficient de caractere diferite, chiar dacă aceste caractere vin dintr-un set mare de posibile) și hibrid extern (permite modurilor externe, descrise în fișierele de configurare într-un limbaj asemănător C, să genereze multe parole verificabile pe baza fiecărui „cuvânt” de bază primit dintr-un alt mod). De asemenea, câteva moduri externe noi predefinite.
  • Capacități suplimentare pentru utilizarea mai multor moduri simultan (unul peste celălalt - stivuire), precum și pentru utilizarea seturi de reguli (stivuirea regulilor listei de cuvinte).
  • Îmbunătățiri ale modurilor măști (întinderea treptată a măștii într-o gamă specificată de lungimi, aplicarea unei măști pe partea laterală a dispozitivului OpenCL sau a plăcii FPGA) și crack unic (comportament rezonabil pe dispozitivele care calculează un număr mare de hashe-uri în paralel). , pentru care anterior nu existau suficiente parole verificabile în acest mod și, de asemenea, restricții privind consumul de memorie).
  • Multe îmbunătățiri ale suportului pentru Unicode și alte codificări în diferite subsisteme.
  • Multe îmbunătățiri ale programelor *2john (care convertesc fișiere de diferite formate pentru
    utilizați cu john), în special wpapcap2john (se ocupă de traficul WiFi).

  • Există multe opțiuni noi de linie de comandă, setări în john.conf, opțiuni de configurare a scriptului și funcții noi corespunzătoare, care nu au fost toate menționate aici.
  • Îmbunătățirea calității codului datorită suportului încorporat pentru versiunile de depanare cu AddressSanitizer (anterior) și UndefinedBehaviorSanitizer (adăugat), adăugarea unui format fuzzer încorporat (ca parte a GSoC 2015), folosind integrarea continuă (build-uri pentru zeci de sisteme de operare și compilator combinații și testarea lor pentru suport corect pentru toate formatele).

Sursa: opennet.ru

Adauga un comentariu