John the Ripper 1.9.0-jumbo-1 FPGA euskarria duena

Askatuta Onartutako pasahitzak asmatzeko programa zaharrenaren bertsio berria John the Ripper 1.9.0-jumbo-1. (1996tik garatzen ari da proiektua.) On proiektuaren orria Iturriak deskargatzeko eskuragarri daude, baita Windows-erako prest egindako muntaiak ere.

Kontuan izan da 1.8.0 urte igaro direla 1-jumbo-4.5 bertsioa kaleratu zenetik, eta 6000 garatzaile baino gehiagoren 80 aldaketa baino gehiago (git commits) egin ziren. Epe horretan, garatzaileek erabiltzea gomendatu zuten GitHub-en oraingo edizioa, zeinaren egoera egonkor mantendu zen eskerrak egindako aldaketak gorabehera etengabeko integrazioa, plataforma askotan aldaketa bakoitzaren aurretiazko egiaztapena (pull request) barne. Bertsio berriaren ezaugarri berezi bat FPGA (FPGA) euskarria agertzea da, CPU, GPU eta Xeon Phi-z gain.


Tauletarako ZTEX 1.15y, 4 FPGA txip barne eta hasieran batez ere Bitcoin meatzaritzarako erabiltzen zen, 7 pasahitz hash mota inplementatzen dira orain: bcrypt, deszifratze klasikoa (bigcrypt barne), sha512crypt, sha256crypt, md5crypt (Apache apr1 eta AIX smd5 barne), Drupal7 eta phpass (erabilitako) , bereziki WordPress-en). Horietako batzuk FPGAn inplementatzen dira lehen aldiz. bcrypt-erako, ~ 119k c/s-ko errendimenduak 2 ^ 5 iteraziorekin ("$ 2b$ 05") 27 watt inguruko energia-kontsumoarekin nabarmen gainditzen ditu azken GPUen emaitzak plaka bakoitzeko, hardware prezio bakoitzeko eta watt bakoitzeko. Baita onartzen klusterrak mota honetako plaken, Raspberry Pi 16 bakarretik kontrolatutako 64 plaka arte (2 FPGA) probatu dena. Ohiko John the Ripper funtzionaltasuna onartzen da, pasahitzak asmatzeko modu guztiak eta hash kopuru handi baten aldi berean deskargatzea barne. Lana bizkortzeko, maskara baten erabilera inplementatu dugu ("--mask" modua, beste modu batzuekin konbinatuta barne) eta kalkulatutako hashak FPGA aldean kargatutakoekin alderatu ditugu. Ezarpenaren ikuspegitik, diseinu asko (adibidez. sha512crypt eta Drupal7) Nukleo kriptografikoekin elkarreragina duten hari anitzeko prozesadore-nukleoez osatutako blokeak erabiltzen dira. Funtzionalitate honen garapena Denis Burykinek zuzendu zuen beste jumbo garatzaile batzuekin koordinatuta.

Beste aldaketa garrantzitsu batzuk:

  • Hash, zifratu eta abar mota gehigarri asko onartzen ditu, bai pasahitz hash klasikoak (adibidez, QNX-en bertsio berrietakoak), bai kriptomoneta-zorroak, enkriptatutako artxiboak eta enkriptatutako fitxategi-sistemak (adibidez, Bitlocker eta FreeBSD geli), baita aurretik onartzen ziren formatu mota berrientzako laguntza ere (adibidez, OpenBSD softraid-erako bcrypt-pbkdf laguntza gehitu) eta askoz gehiago. Guztira, 80 formatu gehitu dira CPUan eta 47 OpenCL-en (eta zahar kopuru txiki bat kendu da berri eta zaharkituetan integratuta). Formatu kopurua guztira 407 da CPUan (edo 262 konfigurazio fitxategietatik konfiguratutako formatu "dinamikoak" barne) eta 88 OpenCL-en.
  • CUDA lengoaia onartzeari uko egitea OpenCL-en alde, eta horrek ez du inola ere oztopatzen NVIDIA GPUen erabilera osoa (eta are gehiago laguntzen du, garapena eta optimizazioa GPUrako formatu bakoitzaren inplementazio batean bideratzeari esker, lehenago bi inplementazioren ordez).
  • SIMD instrukzio-multzo berrietarako laguntza - AVX2, AVX-512 (bigarren belaunaldiko Xeon Phi barne) eta MIC (lehen belaunaldirako) - eta SIMD erabilera unibertsalagoa eta osoa formatu askotako inplementazioetan, besteak beste. aurretik onartzen ziren instrukzioak AVX eta XOP-en x86(-64) eta
    NEON, ASIMD eta AltiVec ARM, Aarch64 eta POWER-en, hurrenez hurren. (Neurri batean, GSoC 2015-en parte gisa).
  • CPU eta OpenCL-rako optimizazio ugari, bai hash-kopuru handi batekin aldi berean modu eraginkorragoan lan egiteko (adibidez, 320 milioi SHA-1 hash kargatzea GPUan probatu zen), bai hash-kalkuluen abiadura handitzeko. Optimizazio horietako batzuk unibertsalak dira, beste batzuk formatu azpimultzo desberdinak hartzen dituzte eta asko formatu indibidualetarako espezifikoak dira.
  • PUZan egiaztatutako pasahitzen buffer optimoaren (automatikoki) konfigurazioa ("β€”tune=auto β€”verbosity=5") eta OpenCL-en lan-tamaina optimoak (lehenespenez gaituta), NVIDIA GTX-ren igoera motela kontuan hartuta barne. serieko GPUak 10xx eta berriagoak diren funtzionamendu-maiztasun osora. Benetan kargatutako hash-ak eta egiaztatzen ari diren pasahitzen benetako luzera (aldez aurretik ezagutzen denean) erabiltzea automatikoki sintonizatzeko.
  • Zuzenean komando-lerroan zehaztutako "adierazpen dinamikoen" konpiladore bat gehitzea eta hash mota hibrido berriak inplementatzea, adibidez "-format=dynamic='sha1(md5($p).$s)'", SIMD erabiliz CPUan kalkulatua. . Adierazpen horien osagai gisa, dozenaka hash bizkor onartzen dira (MD5 bezalako ohikoetatik hasi eta nahiko exotikoetaraino, Whirlpool bezalakoetara), azpikateen kateamendua, kodeketa eta deskodeketa, karaktereen maiuskulak bihurtzea, pasahitz, gatz, erabiltzaile-izen eta kate konstanteen erreferentziak.
  • Hashcat-en nahi ez diren desberdintasunak ezabatzea, lehenago hashcat-en arau espezifikoak (wordlist arauen komandoak), OpenCL gailuen zenbakitze 1etik igarotzea, pasahitz luzera berberen erabilera lehenetsia (normalean 7 luzera) errendimendu probetarako.
  • Pasahitz egiaztagarriak sortzeko modu berriak (cracking moduak), besteak beste, PRINCE hashcat-etik (hainbat hitz β€œesaldi” eratzen ditu luzera osoaren ordena gero eta handiagoan konbinatuz), azpimultzoak (karaktere ezberdinen kopuru nahikoa ez duten pasahitzak ekartzen ditu, karaktere horiek etorri arren). posibleen multzo handi batetik) eta kanpoko hibridoa (kanpoko moduak, konfigurazio-fitxategietan deskribatuta, C antzeko hizkuntzan deskribatuta, pasahitz egiaztagarri asko sortzeko beste modu batetik jasotako oinarrizko "hitz" bakoitzean oinarrituta). Gainera, aurrez zehaztutako kanpoko hainbat modu berri.
  • Hainbat modu aldi berean erabiltzeko (bata bestearen gainean - pilatzea), baita arau multzoak erabiltzeko ere (hitzen zerrendako arauak pilatzea).
  • Maskara moduen hobekuntzak (maskara pixkanaka luzatzea luzera zehatz batean, maskara OpenCL gailuaren edo FPGA plakaren alboan aplikatzea) eta pitzadura bakarra (arrazoizko portaera paraleloan hash kopuru handia kalkulatzen duten gailuetan). , aurretik ez zegoen modu honetan pasahitz egiaztagarri nahikorik, eta memoria-kontsumoaren murrizketak ere bai).
  • Hobekuntza asko Unicode eta beste kodeketa batzuk onartzen dituzte azpisistema desberdinetan.
  • Hobekuntza asko *2john programetan (formatu ezberdinetako fitxategiak bihurtzen dituztenak
    johnekin erabili), batez ere wpapcap2john (WiFi trafikoa kudeatzen du).
  • Komando-lerroko aukera berri asko daude, john.conf-en ezarpenak, script-en aukerak konfiguratu eta dagozkien ezaugarri berriak, eta ez dira denak hemen aipatu.
  • Kodearen kalitatea hobetzea AddressSanitizer-ekin (aurretik) eta UndefinedBehaviorSanitizer-ekin (gehituta) arazte-eraiketetarako integratutako euskarriari esker, integratutako formatu fuzzer bat gehituz (GSoC 2015-en barruan), etengabeko integrazioa erabiliz (dozenaka sistema eragile eta konpiladoreentzako eraikigarriak). konbinazioak eta formatu guztientzako euskarri zuzena probatzea).

Iturria: linux.org.ru

Gehitu iruzkin berria