John the Ripper 1.9.0-jumbo-1 FPGA laguntzarekin kaleratu zen

Askatuta Onartutako pasahitzak asmatzeko programa zaharrenaren bertsio berria John the Ripper 1.9.0-jumbo-1 (1996tik garatzen ari da proiektua). 1.8.0 urte igaro dira aurreko 1-jumbo-4.5 bertsioa kaleratu zenetik, eta 6000 garatzaile baino gehiagoren 80 aldaketa (git commits) baino gehiago egin ziren. Eskerrak etengabeko integrazioa, plataforma askotan aldaketa bakoitzaren aurretiazko egiaztapena (pull request) barne hartzen duena, aldi honetan garatzaileek erabiltzea gomendatu zuten GitHub-en oraingo edizioa, zeinaren egoera egonkor mantendu zen aldaketak egin arren. Proiektuaren kode nagusia arabera banatuta GPLv2+ lizentziapean, eta osagai batzuen kodea BSD lizentziapean dago.

Bertsio berriaren ezaugarri berezi bat FPGA euskarriaren agerpena da (PUZaz, GPUaz eta Xeon Phiz 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-eko 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 batetik kontrolatutako 64 plaka (2 FPGA txip) probatu dena. Ohiko John the Ripper funtzionaltasuna onartzen da, pasahitzak asmatzeko modu guztiak eta hash kopuru handi bat 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 OpenCLn. 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.

  • 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) konfiguratzea ("β€”tune=auto β€”verbosity=5") eta OpenCL-en lan-tamaina optimoak (lehenespenez gaituta), funtzionamendu-maiztasun osorako igoera motela kontuan hartuta barne. NVIDIA GTX serieko GPU 10xx eta berriagoak. 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: opennet.ru

Gehitu iruzkin berria