John the Ripper 1.9.0-jumbo-1 me mbështetje FPGA

Liruar versioni i ri i programit më të vjetër të suportuar për gjetjen e fjalëkalimeve John the Ripper 1.9.0-jumbo-1. (Projekti është duke u zhvilluar që nga viti 1996.) Më tej faqe projekti Burimet janë të disponueshme për shkarkim, si dhe asambletë e gatshme për Windows.

Vihet re se kanë kaluar 1.8.0 vjet nga lëshimi i versionit 1-jumbo-4.5, gjatë të cilit janë bërë më shumë se 6000 ndryshime (git commits) nga më shumë se 80 zhvillues. Gjatë kësaj periudhe, zhvilluesit rekomanduan përdorimin rishikimi aktual nga GitHub, gjendja e së cilës u ruajt e qëndrueshme pavarësisht ndryshimeve të bëra falë integrim të vazhdueshëm, i cili përfshin verifikimin paraprak të çdo ndryshimi (kërkesë tërheqjeje) në shumë platforma. Një veçori e veçantë e versionit të ri është shfaqja e mbështetjes për FPGA (FPGA) përveç CPU, GPU dhe Xeon Phi.


Për dërrasat Ztex 1.15v, duke përfshirë 4 çipa FPGA dhe fillimisht të përdorura kryesisht për minierat e Bitcoin, tani janë implementuar 7 lloje të hash-eve të fjalëkalimeve: bcrypt, descrypt klasik (përfshirë bigcrypt), sha512crypt, sha256crypt, md5crypt (duke përfshirë Apache apr1 dhe AIX smd5), Drupal7 dhe phpass (të përdorura , veçanërisht në WordPress). Disa prej tyre zbatohen për herë të parë në FPGA. Për bcrypt, performanca e arritur prej ~ 119 mijë c/s me 2^5 përsëritje (“2b$05”) me një konsum energjie prej rreth 27 watts tejkalon ndjeshëm rezultatet për GPU-të më të fundit për bord, për çmimin e harduerit dhe për vat. Mbështetur gjithashtu grupime të bordeve të këtij lloji, i cili është testuar deri në 16 borde (64 FPGA) të kontrolluara nga një Raspberry Pi 2 i vetëm. Mbështetet funksionaliteti i zakonshëm John the Ripper, duke përfshirë të gjitha mënyrat e gjetjes së fjalëkalimeve dhe shkarkimin e njëkohshëm të një numri të madh hasesh. Për të përshpejtuar punën, ne zbatuam përdorimin e një maskë (modaliteti "--mask", duke përfshirë në kombinim me mënyrat e tjera) dhe krahasimin e hasheve të llogaritura me ato të ngarkuara në anën FPGA. Nga këndvështrimi i zbatimit, shumë prej modeleve (p.sh. sha512crypt dhe Drupal7) blloqe të përdorura të përbëra nga bërthama procesori me shumë fije (bërthamat e buta CPU) që ndërveprojnë me bërthamat kriptografike. Zhvillimi i këtij funksionaliteti u drejtua nga Denis Burykin në koordinim me zhvilluesit e tjerë jumbo.

Ndryshime të tjera të mëdha:

  • Mbështetje për një numër të madh llojesh shtesë të hasheve, shifrave, etj., duke përfshirë të dy haset klasike të fjalëkalimeve (për shembull, nga versionet e reja të QNX), si dhe kuletat e kriptomonedhave, arkivat e koduar dhe sistemet e skedarëve të koduar (për shembull, Bitlocker dhe FreeBSD geli), si dhe mbështetje për lloje të reja të formateve të mbështetura më parë (për shembull, mbështetje e shtuar për bcrypt-pbkdf për OpenBSD softraid) dhe shumë më tepër. Në total, 80 formate janë shtuar në CPU dhe 47 në OpenCL (dhe një numër i vogël i të vjetrave janë hequr si të integruara në të reja dhe të vjetruara). Numri i përgjithshëm i formateve tani është 407 në CPU (ose 262 pa përfshirë formatet "dinamike" të konfiguruara nga skedarët e konfigurimit) dhe 88 në OpenCL.
  • Heqja e mbështetjes së gjuhës CUDA në favor të OpenCL, e cila nuk ndërhyn aspak në përdorimin e plotë të GPU-së NVIDIA (dhe madje ndihmon, falë fokusit të zhvillimit dhe optimizimeve në një implementim të secilit format nën GPU në vend të dy implementimet më parë).
  • Mbështetje për grupet e reja të udhëzimeve SIMD - AVX2, AVX-512 (përfshirë gjeneratën e dytë të Xeon Phi) dhe MIC (për gjeneratën e parë) - si dhe përdorim më universal dhe më të plotë të SIMD në zbatime të shumë formateve, duke përfshirë përdorimin i konfigurimeve të udhëzimeve të mbështetura më parë në AVX dhe XOP në x86(-64) dhe
    NEON, ASIMD dhe AltiVec në ARM, Aarch64 dhe POWER, përkatësisht. (Pjesërisht si pjesë e GSoC 2015.)
  • Optimizime të shumta për CPU dhe OpenCL, të dyja për të punuar në mënyrë më efikase me një numër të madh hasesh në të njëjtën kohë (për shembull, ngarkimi i 320 milionë hasheve SHA-1 në GPU) dhe për të rritur shpejtësinë e llogaritjes së hash-it. Disa nga këto optimizime janë universale, disa mbulojnë nëngrupe të ndryshme formatesh dhe shumë janë specifike për format.
  • (Auto-)konfigurimi i buferimit optimal të fjalëkalimeve të kontrolluara në CPU (“—tune=auto —verbosity=5”) dhe madhësive optimale të punës në OpenCL (aktivizuar si parazgjedhje), duke përfshirë marrjen parasysh të rritjes së ngadaltë të NVIDIA GTX seri GPU me frekuencë të plotë funksionimi 10xx dhe më të reja. Përdorimi i hash-eve të ngarkuara në të vërtetë dhe gjatësia aktuale e fjalëkalimeve që kontrollohen (kur dihet paraprakisht) për një akordim automatik të tillë.
  • Shtimi i një përpiluesi për "shprehjet dinamike" të specifikuara drejtpërdrejt në vijën e komandës dhe zbatimi i llojeve të reja hibride hash, për shembull "-format=dynamic='sha1(md5($p).$s)'", i llogaritur në CPU duke përdorur SIMD . Si përbërës të shprehjeve të tilla, mbështeten dhjetëra hash të shpejtë (nga ato të zakonshme si MD5 deri tek ato mesatarisht ekzotike si Whirlpool), bashkimi i nënstringjeve, kodimi dhe dekodimi, konvertimi i rasteve të karaktereve, referenca për fjalëkalimin, kripën, emrin e përdoruesit dhe konstantet e vargut.
  • Eliminimi i dallimeve të padëshiruara nga hashcat, duke përfshirë mbështetjen për komandat e rregullave të listave të fjalëve specifike të hashcat-it, kalimi në numërimin e pajisjes OpenCL nga 1, duke përdorur të njëjtat gjatësi të fjalëkalimeve të paracaktuar (zakonisht gjatësinë 7) për testet e performancës.
  • Mënyra të reja për gjenerimin e fjalëkalimeve të thyera (modalitetet e thyerjes), duke përfshirë PRINCE nga hashcat (gjeneron "fraza" duke bashkuar disa fjalë në rend rritës të gjatësisë totale), nëngrupe (sjell fjalëkalime me një numër të pamjaftueshëm karakteresh të ndryshëm, edhe nëse këto karaktere vijnë nga një grup i madh i atyre të mundshme) dhe hibride të jashtme (lejon mënyrat e jashtme, të përshkruara në skedarët e konfigurimit në gjuhën e ngjashme me C-në, të gjenerojnë shumë fjalëkalime të verifikueshme bazuar në çdo "fjalë" bazë të marrë nga një modalitet tjetër). Gjithashtu, disa mënyra të reja të paracaktuara të jashtme.
  • Karakteristika shtesë për përdorimin e disa mënyrave në të njëjtën kohë (njëra mbi tjetrën - grumbullimi), si dhe për një përdorim të tillë të grupeve të rregullave (vendosja e rregullave të listës së fjalëve).
  • Përmirësime në mënyrat e maskës (shtrirja graduale e maskës në intervalin e caktuar të gjatësive, aplikimi i maskës në anën e një pajisjeje OpenCL ose bordit FPGA) dhe çarje e vetme (sjellje e arsyeshme në pajisjet që llogarisin një numër të madh hasesh paralelisht, të cilat më parë në këtë modalitet mungonin fjalëkalimet për t'u kontrolluar, si dhe kufizimet në konsumin e memories).
  • Shumë përmirësime në mbështetje për Unicode dhe kodime të tjera në nënsisteme të ndryshme.
  • Shumë përmirësime në programet *2john (konvertimi i skedarëve të formateve të ndryshme në
    përdorni me john), veçanërisht wpapcap2john (trajton trafikun WiFi).
  • Shumë opsione të reja të linjës së komandës, cilësimet john.conf, opsionet e konfigurimit të skriptit dhe veçoritë e reja përkatëse të tyre, jo të gjitha janë përmendur këtu.
  • Përmirësimi i cilësisë së kodit për shkak të mbështetjes së integruar për ndërtimet e korrigjimit me AddressSanitizer (më parë) dhe UndefinedBehaviorSanitizer (shtuar), duke shtuar një fuzzer të formatit të integruar (brenda GSoC 2015), duke përdorur integrimin e vazhdueshëm (ndërtimet për dhjetëra kombinime të sistemit operativ dhe kompilatorëve dhe testimi i tyre për mbështetjen e saktë të të gjitha formateve).

Burimi: linux.org.ru

Shto një koment