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

Izpuščen nova različica najstarejšega podprtega programa za ugibanje gesel John the Ripper 1.9.0-jumbo-1. (Projekt se razvija od leta 1996.) Na stran projekta Viri so na voljo za prenos, pa tudi že pripravljeni sklopi za Windows.

Opozoriti je treba, da je od izdaje različice 1.8.0-jumbo-1 minilo 4.5 leta, med katerimi je bilo izvedenih več kot 6000 sprememb (git commits) s strani več kot 80 razvijalcev. V tem obdobju razvijalci priporočajo uporabo trenutna izdaja iz GitHub, katerega stanje se je ohranilo stabilno kljub spremembam zahvaljujoč stalno povezovanje, ki vključuje predhodno preverjanje vsake spremembe (pull request) na številnih platformah. Posebnost nove različice je pojav podpore za FPGA (FPGA) poleg CPU, 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 približno 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 FPGA), nadzorovanih iz enega samega 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 implementirali 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 večje 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č. Skupaj je bilo dodanih 80 formatov na CPE in 47 na OpenCL (in majhno število starih je bilo odstranjenih kot integriranih v nove in zastarele). 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. (Delno kot del GSoC 2015.)
  • Š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 NVIDIA GTX serije GPE do polne delovne frekvence 10xx in novejše. Uporaba dejansko naloženih zgoščenih vrednosti in dejanske dolžine gesel, ki se preverjajo (če je znana vnaprej) za takšno samodejno uravnavanje.
  • 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: linux.org.ru

Dodaj komentar