John the Ripper 1.9.0-jumbo-1 on välja antud FPGA toega

Välja antud vanima toetatud parooli arvamise programmi uus versioon Rippija Johannes 1.9.0-jumbo-1 (projekt on arenenud alates 1996. aastast). Eelmise versiooni 1.8.0-jumbo-1 ilmumisest on möödunud 4.5 aastat, mille jooksul tehti üle 6000 muudatuse (git commits) enam kui 80 arendajalt. Tänu pidev integratsioon, mis sisaldab paljudel platvormidel iga muudatuse (tõmbetaotluse) eelkontrolli, soovitasid arendajad sel perioodil kasutada GitHubi praegune versioon, mille seisund suudeti vaatamata tehtud muudatustele stabiilsena. Põhiprojekti kood jaotatud GPLv2+ litsentsi all ja mõne komponendi kood on BSD litsentsi all.

Uue versiooni eripäraks on FPGA toe ilmumine (lisaks CPU, GPU ja Xeon Phi). Laudadele Ztex 1.15 a, sealhulgas 4 FPGA kiipi ja mida algselt kasutati peamiselt Bitcoini kaevandamiseks, nüüd on juurutatud 7 tüüpi parooliräsi: bcrypt, klassikaline descrypt (sh bigcrypt), sha512crypt, sha256crypt, md5crypt (sh Apache apr1 ja AIX smd5), Drupal7 ja phpass (kasutatakse , eriti WordPressis). Mõnda neist rakendatakse FPGA-s esimest korda.

Bcrypti puhul ületab saavutatud jõudlus ~119 2 c/s 5^2 iteratsiooniga ("05b $27") ja energiatarbimisega ~XNUMX vatti oluliselt uusimate GPU-de tulemusi plaadi, riistvarahinna ja vati kohta. . Samuti toetatud klastrid seda tüüpi plaate, mida on testitud kuni 16 tahvliga (64 FPGA-kiipi), mida juhitakse ühest Raspberry Pi 2-st. Toetatud on tavaline John the Ripper funktsionaalsus, sealhulgas kõik parooli arvamise režiimid ja suure hulga räside samaaegne allalaadimine .

Töö kiirendamiseks rakendasime maski (“—mask” režiim, sh koos teiste režiimidega) ja arvutatud räsi võrdlemist FPGA poolelt laaditutega. Rakenduse seisukohast on paljud kujundused (nt. sha512crypt ja Drupal7) kasutasid plokke, mis koosnevad mitme keermega protsessorituumadest (pehmed CPU tuumad), mis interakteeruvad krüptograafiliste tuumadega. Selle funktsionaalsuse väljatöötamist juhtis koostöös teiste jumbo arendajatega Denis Burykin.

Muud olulised muudatused:

  • Suure hulga täiendavate räsitüüpide, šifrite jms tugi, sealhulgas nii klassikalised parooliräsid (näiteks QNX uutest versioonidest), kui ka krüptovaluuta rahakotid, krüptitud arhiivid ja krüptitud failisüsteemid (näiteks Bitlocker ja FreeBSD geli), aga ka varem toetatud uut tüüpi vormingute tugi (näiteks lisatud OpenBSD softraidi jaoks bcrypt-pbkdf tugi) ja palju muud. Kokku on CPU-le lisatud 80 ja OpenCL-ile 47 vormingut. Vormingute koguarv on nüüd protsessoris 407 (või 262 ilma konfiguratsioonifailidest konfigureeritud "dünaamiliste" vorminguteta) ja 88 OpenCL-is.
  • CUDA keeletoe eemaldamine OpenCL-i kasuks, mis ei sega NVIDIA GPU täielikku kasutamist vähimalgi määral (ja isegi aitab tänu arendusele ja optimeerimisele keskenduda iga vormingu ühele teostusele GPU all kahe asemel varasemad rakendused).
  • Uute SIMD juhiste komplektide tugi - AVX2, AVX-512 (sealhulgas teise põlvkonna Xeon Phi jaoks) ja MIC (esimese põlvkonna jaoks) -, samuti SIMD universaalsem ja täielikum kasutamine paljude vormingute rakendustes, sealhulgas varem toetatud käsukomplektidest kuni AVX ja XOP x86(-64) ja
    NEON, ASIMD ja AltiVec vastavalt ARM-il, Aarch64-l ja POWERil.

  • Arvukad optimeerimised CPU ja OpenCL jaoks, nii tõhusamaks töötamiseks suure hulga räsidega samaaegselt (näiteks 320 miljoni SHA-1 räsi laadimine GPU-le) ja räsi arvutamise kiiruse suurendamiseks. Mõned neist optimeerimistest on universaalsed, mõned hõlmavad erinevaid vormingute alamhulka ja paljud on vorminguspetsiifilised.
  • Kontrollitud paroolide optimaalse puhverdamise (automaatne) konfigureerimine protsessoris (“—tune=auto —verbosity=5”) ja optimaalsed töömahud OpenCL-is (vaikimisi lubatud), sealhulgas aeglase tõusu arvessevõtmine kuni täieliku töösageduseni NVIDIA GTX-seeria GPU-dest 10xx ja uuemad. Kasutades selliseks automaatseks häälestamiseks tegelikult laetud räsi ja kontrollitavate paroolide tegelikku pikkust (kui see on ette teada).
  • Kompilaatori lisamine otse käsureal määratud "dünaamiliste avaldiste" jaoks ja uute hübriidräsitüüpide juurutamine, näiteks "-format=dynamic='sha1(md5($p).$s)'", mis arvutatakse protsessoris SIMD abil . Selliste avaldiste komponentidena toetatakse kümneid kiireid räsi (alates tavalistest nagu MD5 kuni mõõdukalt eksootilisteni nagu Whirlpool), alamstringide ühendamist, kodeerimist ja dekodeerimist, tähesuuruste teisendamist, viiteid paroolile, soolale, kasutajanimele ja stringikonstantidele.
  • Soovimatute erinevuste kõrvaldamine hashcatist, sealhulgas varem hashcat-spetsiifiliste sõnaloendireeglite käskude tugi, üleminek OpenCL-i seadmete nummerdamisele 1-lt, samade vaikeparoolide pikkuste (tavaliselt pikkus 7) kasutamine jõudlustestide jaoks.
  • Uued režiimid murtud paroolide genereerimiseks (krakkimisrežiimid), sealhulgas PRINCE hashcatist (genereerib "fraase" mitu sõna kogupikkuse kasvavas järjekorras), alamhulgad (toob ebapiisava arvu erinevate tähemärkidega paroolid, isegi kui need märgid pärinevad suur hulk võimalikke paroole) ja hübriidne väline (võimaldab välistel režiimidel, mida on kirjeldatud konfiguratsioonifailides C-sarnases keeles, genereerida palju kontrollitavaid paroole iga teisest režiimist saadud põhisõna põhjal). Samuti mitu uut eelmääratletud välist režiimi.
  • Lisafunktsioonid mitme režiimi samaaegseks kasutamiseks (üks teise peale – virnastamine), samuti reeglikomplektide selliseks kasutamiseks (sõnaloendireeglite virnastamine).
  • Maskirežiimide täiustused (maski järkjärguline venitamine määratud pikkusvahemikus, maski kandmine OpenCL-seadme või FPGA-plaadi küljele) ja üksik mõrandus (mõistlik käitumine seadmetes, mis arvutavad paralleelselt suurt hulka räsi, mis varem selles režiimis puudusid kontrollitavad paroolid ja ka mälutarbimise piirangud).
  • Paljud täiustused Unicode'i ja muude kodeeringute toel erinevates alamsüsteemides.
  • *2john programmide palju täiustusi (erineva vormingu failide teisendamine
    kasutada koos johniga), eriti wpapcap2john (käsitseb WiFi-liiklust).

  • Paljud uued käsurea valikud, john.conf sätted, skripti suvandite konfigureerimine ja neile vastavad uued funktsioonid, millest kõiki pole siin mainitud.
  • Koodi kvaliteedi parandamine tänu AddressSanitizeri (varem) ja UndefinedBehaviorSanitizeriga (lisatud) silumisjärkude sisseehitatud toele, sisseehitatud vormingufuzzeri lisamisele (GSoC 2015 raames), pideva integreerimise kasutamisel (järgud kümnete operatsioonisüsteemide ja kompilaatorite kombinatsioonide jaoks ja nende testimine kõigi vormingute õigeks toetamiseks).

Allikas: opennet.ru

Lisa kommentaar