John the Ripper 1.9.0-jumbo-1 izdan s podporo za FPGA

Izpuščen nova različica najstarejšega podprtega programa za ugibanje gesel Janez Razparač 1.9.0-jumbo-1 (projekt se razvija od leta 1996). Od izida prejšnje različice 1.8.0-jumbo-1 je minilo 4.5 leta, med katerimi je bilo narejenih več kot 6000 sprememb (git commit) s strani več kot 80 razvijalcev. Zahvale gredo stalno povezovanje, ki vključuje predhodno preverjanje vsake spremembe (pull request) na številnih platformah, v tem obdobju razvijalci priporočajo uporabo trenutna izdaja iz GitHub, katerega stanje se je kljub izvedenim spremembam ohranilo stabilno. Glavna koda projekta distributer pod licenco GPLv2+, koda nekaterih komponent pa pod licenco BSD.

Posebnost nove različice je pojav podpore FPGA (poleg CPE, GPU in Xeon Phi). Za deske ZTEX 1.15 let, ki vključuje 4 čipe FPGA in se je prvotno uporabljal predvsem za rudarjenje Bitcoinov, zdaj je implementiranih 7 vrst zgoščenih gesel: bcrypt, classic descrypt (vključno z bigcrypt), sha512crypt, sha256crypt, md5crypt (vključno z Apache apr1 in AIX smd5), Drupal7 in phpass (uporablja se , zlasti v WordPressu). Nekateri od njih so prvič implementirani na FPGA.

Za bcrypt dosežena zmogljivost ~119k c/s z 2^5 iteracijami (»$2b$05«) s porabo energije ~27 vatov znatno presega rezultate za najnovejše GPU-je na ploščo, na ceno strojne opreme in na vat . Tudi podprto grozdi plošč te vrste, ki je bila preizkušena na do 16 ploščah (64 čipov FPGA), ki jih krmili en sam Raspberry Pi 2. Podprta je običajna funkcionalnost Johna Razparača, vključno z vsemi načini ugibanja gesel in hkratnim prenosom velikega števila zgoščenih vrednosti .

Za pospešitev dela smo uvedli uporabo maske (način »—mask«, tudi v kombinaciji z drugimi načini) in primerjavo izračunanih zgoščenih vrednosti z naloženimi na strani FPGA. Z izvedbenega vidika je veliko modelov (npr. sha512crypt in Drupal7) uporabljajo se bloki, sestavljeni iz večnitnih procesorskih jeder (mehka CPU jedra), ki sodelujejo s kriptografskimi jedri. Razvoj te funkcionalnosti je vodil Denis Burykin v sodelovanju z drugimi jumbo razvijalci.

Druge pomembne spremembe:

  • Podpora za veliko število dodatnih vrst zgoščenj, šifer itd., vključno s klasičnimi zgoščenimi vrednostmi gesel (na primer iz novih različic QNX), kot tudi denarnicami za kriptovalute, šifriranimi arhivi in ​​šifriranimi datotečnimi sistemi (na primer Bitlocker in FreeBSD geli), kot tudi podporo za nove vrste formatov, ki so bili prej podprti (na primer dodana podpora za bcrypt-pbkdf za OpenBSD softraid) in še veliko več. Skupno je bilo dodanih 80 formatov na CPE in 47 na OpenCL. Skupno število formatov je zdaj 407 na CPU (ali 262 brez "dinamičnih" formatov, konfiguriranih iz konfiguracijskih datotek) in 88 na OpenCL.
  • Zavrnitev podpore za jezik CUDA v korist OpenCL, ki nikakor ne ovira polne uporabe grafičnih procesorjev NVIDIA (in celo pomaga, zahvaljujoč osredotočanju razvoja in optimizacije na eno izvedbo vsakega formata za grafični procesor namesto na dve izvedbi prej).
  • Podpora za nove nabore ukazov SIMD - AVX2, AVX-512 (vključno z drugo generacijo Xeon Phi) in MIC (za prvo generacijo) - kot tudi bolj univerzalna in popolna uporaba SIMD v implementacijah številnih formatov, vključno z uporabo prej podprta navodila se nastavijo na AVX in XOP na x86(-64) in
    NEON, ASIMD in AltiVec na ARM, Aarch64 in POWER.

  • Številne optimizacije za CPE in OpenCL za učinkovitejše delo z velikim številom zgoščenih vrednosti hkrati (preizkušeno je bilo na primer nalaganje 320 milijonov zgoščenih vrednosti SHA-1 na GPE) in za povečanje hitrosti izračunov zgoščenih vrednosti. Nekatere od teh optimizacij so univerzalne, nekatere pokrivajo različne podnabore formatov, mnoge pa so specifične za posamezne formate.
  • (Samodejna) konfiguracija optimalnega medpomnjenja preverjenih gesel v CPE (»—tune=auto —verbosity=5«) in optimalne velikosti opravil v OpenCL (privzeto omogočeno), vključno z upoštevanjem počasnega naraščanja do polne delovne frekvence grafičnih procesorjev serije NVIDIA GTX 10xx in novejših. Uporaba dejansko naloženih zgoščenih vrednosti in dejanske dolžine gesel, ki se preverjajo (če je znana vnaprej) za takšno samodejno nastavljanje.
  • Dodajanje prevajalnika za "dinamične izraze", določene neposredno v ukazni vrstici, in implementacija novih hibridnih vrst zgoščevanja, na primer "-format=dynamic='sha1(md5($p).$s)'", izračunanih v CPE z uporabo SIMD . Kot komponente takšnih izrazov je podprtih na desetine hitrih zgoščenj (od običajnih, kot je MD5, do zmerno eksotičnih, kot je Whirlpool), veriženje podnizov, kodiranje in dekodiranje, pretvorba velikih in malih črk, sklicevanja na geslo, sol, uporabniško ime in konstante nizov.
  • Odprava neželenih razlik iz hashcat, vključno s podporo za pravila, ki so bila prej specifična za hashcat (ukazi pravil seznama besed), prehod na številčenje naprav OpenCL od 1, privzeta uporaba istih dolžin gesel (običajno dolžina 7) za preizkuse učinkovitosti.
  • Novi načini za generiranje preverljivih gesel (načini razbijanja), vključno s PRINCE iz hashcat (tvori "fraze" s kombiniranjem več besed v naraščajočem vrstnem redu skupne dolžine), podnabori (prikaže gesla z nezadostnim številom različnih znakov, tudi če ti znaki prihajajo iz velikega nabora možnih) in hibridno zunanje (omogoča zunanjim načinom, opisanim v konfiguracijskih datotekah v jeziku, podobnem C, ustvarjanje številnih preverljivih gesel na podlagi vsake osnovne »besede«, prejete iz drugega načina). Tudi več novih vnaprej določenih zunanjih načinov.
  • Dodatne funkcije za uporabo več načinov hkrati (eden na drugem - zlaganje), kot tudi za uporabo nizov pravil (zlaganje pravil seznama besed).
  • Izboljšave načinov maske (postopno raztezanje maske v določenem razponu dolžin, uporaba maske na strani naprave OpenCL ali plošče FPGA) in single crack (razumno vedenje na napravah, ki vzporedno izračunajo veliko število zgoščenih vrednosti , za katere prej v tem načinu ni bilo dovolj preverljivih gesel, in tudi omejitve porabe pomnilnika).
  • Številne izboljšave podpore za Unicode in druga kodiranja v različnih podsistemih.
  • Številne izboljšave programov *2john (ki pretvarjajo datoteke različnih formatov za
    uporaba z johnom), zlasti wpapcap2john (obravnava promet WiFi).

  • Obstaja veliko novih možnosti ukazne vrstice, nastavitev v john.conf, konfiguracijskih možnosti skripta in ustreznih novih funkcij, ki niso vse omenjene tukaj.
  • Izboljšanje kakovosti kode zahvaljujoč vgrajeni podpori za sestave za odpravljanje napak z AddressSanitizer (prej) in UndefinedBehaviorSanitizer (dodan), dodajanje vgrajenega fuzzerja formata (kot del GSoC 2015), uporaba stalne integracije (gradnje za desetine operacijskih sistemov in prevajalnik kombinacije in jih testirati glede pravilne podpore za vse formate).

Vir: opennet.ru

Dodaj komentar