John the Ripper 1.9.0-jumbo-1 išleistas su FPGA palaikymu

Išleistas nauja seniausios palaikomos slaptažodžio atspėjimo programos versija Jonas Skerdikas 1.9.0-jumbo-1 (projektas vystomas nuo 1996 m.). Praėjo 1.8.0 metų nuo ankstesnės versijos 1-jumbo-4.5 išleidimo, per kurią buvo atlikta daugiau nei 6000 pakeitimų (git commits) iš daugiau nei 80 kūrėjų. Ačiū nuolatinė integracija, kuri apima preliminarų kiekvieno pakeitimo (ištraukimo užklausos) patikrinimą daugelyje platformų, šiuo laikotarpiu kūrėjai rekomendavo naudoti dabartinis leidimas iš GitHub, kurios būklė išliko stabili nepaisant atliktų pakeitimų. Pagrindinis projekto kodas išplatino pagal GPLv2+ licenciją, o kai kurių komponentų kodas yra pagal BSD licenciją.

Ypatinga naujosios versijos ypatybė yra FPGA palaikymo atsiradimas (be procesoriaus, GPU ir Xeon Phi). Dėl lentų ZTEX 1.15m, įskaitant 4 FPGA lustus ir iš pradžių daugiausia naudotus Bitcoin kasimui, dabar įdiegtos 7 slaptažodžių maišos rūšys: bcrypt, klasikinis dešifravimas (įskaitant bigcrypt), sha512crypt, sha256crypt, md5crypt (įskaitant Apache apr1 ir AIX smd5), Drupal7 ir phpass (naudojamas). , ypač „WordPress“). Kai kurie iš jų pirmą kartą įdiegti FPGA.

Naudojant „bcrypt“, pasiektas ~119 2 c/s našumas su 5^2 iteracijomis („$05b$27“) su ~XNUMX vatų energijos sąnaudomis gerokai viršija naujausių GPU už plokštę, aparatinės įrangos kainą ir už vatą rezultatus. . Taip pat palaikoma klasteriai tokio tipo plokščių, kuri buvo išbandyta iki 16 plokščių (64 FPGA lustai), valdomų iš vieno Raspberry Pi 2. Palaikoma įprasta John the Ripper funkcija, įskaitant visus slaptažodžio atspėjimo režimus ir vienu metu atsisiunčiant daug maišų .

Norėdami pagreitinti darbą, įdiegėme kaukės („—mask“ režimą, taip pat kartu su kitais režimais) ir apskaičiuotų maišų palyginimą su įkeltomis FPGA pusėje. Įgyvendinimo požiūriu daugelis dizainų (pvz., sha512crypt ir Drupal7) naudojami blokai, susidedantys iš kelių gijų procesoriaus branduolių (minkštųjų procesoriaus branduolių), sąveikaujančių su kriptografinėmis šerdimis. Šios funkcijos kūrimui vadovavo Denisas Burykinas, derindamas su kitais „Jumbo“ kūrėjais.

Kiti svarbūs pakeitimai:

  • Daugelio papildomų maišos tipų, šifrų ir kt. palaikymas, įskaitant klasikines slaptažodžių maišas (pavyzdžiui, iš naujų QNX versijų), taip pat kriptovaliutų pinigines, šifruotus archyvus ir šifruotas failų sistemas (pvz., Bitlocker ir FreeBSD geli), taip pat naujų tipų anksčiau palaikomų formatų palaikymas (pavyzdžiui, pridėtas palaikymas bcrypt-pbkdf, skirtas OpenBSD softraid) ir daug daugiau. Iš viso CPU buvo pridėta 80 formatų, o OpenCL - 47. Bendras formatų skaičius dabar yra 407 CPU (arba 262, neįskaitant "dinaminių" formatų, sukonfigūruotų iš konfigūracijos failų) ir 88 "OpenCL".
  • Atsisakymas palaikyti CUDA kalbą „OpenCL“ naudai, kuri jokiu būdu netrukdo visapusiškai naudoti NVIDIA GPU (ir netgi padeda, nes kūrimas ir optimizavimas sutelkiamas į vieną kiekvieno GPU formato diegimą, o ne du anksčiau).
  • Naujų SIMD instrukcijų rinkinių - AVX2, AVX-512 (įskaitant antros kartos Xeon Phi) ir MIC (pirmosios kartos) - palaikymas, taip pat universalesnis ir išsamesnis SIMD naudojimas įgyvendinant daugelį formatų, įskaitant anksčiau palaikomi instrukcijų nustatymai iki AVX ir XOP x86(-64) ir
    NEON, ASIMD ir AltiVec atitinkamai ARM, Aarch64 ir POWER.

  • Daugybė procesoriaus ir OpenCL optimizacijų, skirtų efektyvesniam darbui su dideliu maišos skaičiumi vienu metu (pvz., buvo išbandyta 320 mln. SHA-1 maišos įkėlimas į GPU), ir siekiant padidinti maišos skaičiavimo greitį. Kai kurie iš šių optimizavimų yra universalūs, kai kurie apima skirtingus formatų pogrupius, o daugelis yra būdingi atskiriems formatams.
  • Optimalaus patikrintų slaptažodžių buferio procesoriaus (“—tune=auto —verbosity=5“) ir optimalių užduočių dydžių OpenCL (įjungta pagal numatytuosius nustatymus) konfigūracija, įskaitant lėtą greitį iki viso veikimo dažnio. NVIDIA GTX serijos 10xx ir naujesnių GPU. Tokiam automatiniam derinimui naudojant faktiškai įkeltas maišas ir tikrąjį tikrinamų slaptažodžių ilgį (kai jis žinomas iš anksto).
  • Tiesiogiai komandinėje eilutėje nurodytų „dinaminių išraiškų“ kompiliatoriaus pridėjimas ir naujų mišrių maišos tipų įdiegimas, pvz., „-format=dynamic='sha1(md5($p).$s)'“, apskaičiuotas CPU naudojant SIMD . Kaip tokių išraiškų komponentai palaikomos dešimtys greitų maišų (nuo įprastų, tokių kaip MD5, iki vidutiniškai egzotiškų, tokių kaip Whirlpool), eilučių sujungimas, kodavimas ir dekodavimas, simbolių didžiųjų ir mažųjų raidžių konvertavimas, nuorodos į slaptažodį, druskos, vartotojo vardo ir eilučių konstantos.
  • Nepageidaujamų „hashcat“ skirtumų pašalinimas, įskaitant anksčiau „hashcat“ būdingų taisyklių (žodžių sąrašo taisyklių komandų) palaikymą, perėjimą prie OpenCL įrenginių numeravimo nuo 1, numatytąjį tų pačių slaptažodžių ilgių (paprastai 7 ilgio) naudojimą našumo testams.
  • Nauji tikrinamų slaptažodžių generavimo režimai (nulaužimo režimai), įskaitant PRINCE iš hashcat (sudaro „frazes“ derindama kelis žodžius didėjančia bendro ilgio tvarka), poaibius (atkuria slaptažodžius su nepakankamu skirtingų simbolių skaičiumi, net jei šie simboliai atsiranda iš daugybės galimų) ir hibridinių išorinių (leidžia išoriniams režimams, aprašytiems konfigūracijos failuose C tipo kalba, sugeneruoti daug patikrinamų slaptažodžių pagal kiekvieną pagrindinį „žodį“, gautą iš kito režimo). Taip pat keletas naujų iš anksto nustatytų išorinių režimų.
  • Papildomos funkcijos, skirtos kelių režimų naudojimui vienu metu (vienas ant kito – krovimas), taip pat taisyklių rinkinių naudojimui (žodžių sąrašo taisyklių krovimas).
  • Kaukės režimų patobulinimai (laipsniškas kaukės tempimas tam tikru ilgiu, kaukės uždėjimas OpenCL įrenginio arba FPGA plokštės šone) ir vienas įtrūkimas (protingas elgesys įrenginiuose, kurie lygiagrečiai apskaičiuoja didelį maišos skaičių). , kuriems anksčiau nebuvo pakankamai patikrinamų slaptažodžių šiuo režimu, taip pat atminties sunaudojimo apribojimų).
  • Daug patobulinimų, skirtų Unicode ir kitoms koduotėms skirtinguose posistemiuose.
  • Daug *2john programų patobulinimų (kurios konvertuoja įvairių formatų failus, skirtus
    naudoti su john), ypač wpapcap2john (tvarko WiFi srautą).

  • Yra daug naujų komandinės eilutės parinkčių, nustatymų john.conf, konfigūravimo scenarijaus parinkčių ir atitinkamų naujų funkcijų, iš kurių ne visos čia buvo paminėtos.
  • Geresnė kodo kokybė dėl integruoto derinimo versijų palaikymo su AddressSanitizer (anksčiau) ir UndefinedBehaviorSanitizer (pridėta), pridedant įtaisytąjį formato žymeklį (kaip GSoC 2015 dalį), naudojant nuolatinį integravimą (kompiliatorių kūrimas dešimčiai operacinių sistemų ir kompiliatoriaus). derinius ir jų testavimą, ar jie tinkamai palaiko visus formatus).

Šaltinis: opennet.ru

Добавить комментарий