John the Ripper 1.9.0-jumbo-1 s FPGA podrškom

Pušten na slobodu nova verzija najstarijeg podržanog programa za pogađanje lozinki John the Ripper 1.9.0-jumbo-1. (Projekt se razvija od 1996.) Na stranica projekta Izvori su dostupni za preuzimanje, kao i gotovi sklopovi za Windows.

Napominje se da je od izlaska verzije 1.8.0-jumbo-1 prošlo 4.5 godine, tijekom kojih je napravljeno više od 6000 promjena (git commit) od više od 80 programera. Tijekom tog razdoblja programeri su preporučili korištenje trenutno izdanje s GitHuba, čije se stanje održalo stabilnim unatoč promjenama zahvaljujući kontinuirana integracija, što uključuje preliminarnu provjeru svake promjene (pull request) na mnogim platformama. Posebna značajka nove verzije je pojava podrške za FPGA (FPGA) uz CPU, GPU i Xeon Phi.


Za daske ZTEX 1.15g, uključujući 4 FPGA čipa i koji se izvorno koristio uglavnom za rudarenje Bitcoina, sada je implementirano 7 vrsta hashiranja zaporki: bcrypt, classic descrypt (uključujući bigcrypt), sha512crypt, sha256crypt, md5crypt (uključujući Apache apr1 i AIX smd5), Drupal7 i phpass (koristi se , posebno u WordPressu). Neki od njih su po prvi put implementirani na FPGA. Za bcrypt, postignuta izvedba od ~119k c/s s 2^5 iteracija ("$2b$05") uz potrošnju energije od oko 27 vata značajno premašuje rezultate za najnovije GPU-ove po ploči, po cijeni hardvera i po vatu. Također podržano klasteri ploča ove vrste, koja je testirana na do 16 ploča (64 FPGA) kojima se upravlja s jednog Raspberry Pi 2. Podržana je uobičajena funkcionalnost Johna Trbosjeka, uključujući sve načine pogađanja zaporki i istovremeno preuzimanje velikog broja hashova. Kako bismo ubrzali rad, implementirali smo korištenje maske (mod "--mask", uključujući u kombinaciji s drugim modovima) i usporedbu izračunatih hashova s ​​onima učitanim na strani FPGA. Iz perspektive implementacije, mnogi dizajni (npr. sha512crypt i Drupal7) koriste se blokovi koji se sastoje od procesorskih jezgri s više niti (meke CPU jezgre) u interakciji s kriptografskim jezgrama. Razvoj ove funkcionalnosti vodio je Denis Burykin u suradnji s drugim jumbo programerima.

Ostale velike promjene:

  • Podrška za velik broj dodatnih vrsta hashova, šifara itd., uključujući klasične hashove zaporki (na primjer, iz novih verzija QNX-a), kao i novčanike za kriptovalute, šifrirane arhive i šifrirane datotečne sustave (na primjer, Bitlocker i FreeBSD geli), kao i podrška za nove vrste formata koji su prethodno bili podržani (na primjer, dodana podrška za bcrypt-pbkdf za OpenBSD softraid) i još mnogo toga. Ukupno je dodano 80 formata na CPU i 47 na OpenCL (a mali broj starih je uklonjen kao integriran u nove i zastarjele). Ukupan broj formata sada je 407 na CPU-u (ili 262 ne uključujući "dinamičke" formate konfigurirane iz konfiguracijskih datoteka) i 88 na OpenCL-u.
  • Odbijanje podrške za CUDA jezik u korist OpenCL-a, koji ni na koji način ne ometa potpunu upotrebu NVIDIA GPU-a (i čak pomaže, zahvaljujući fokusiranju razvoja i optimizacije na jednu implementaciju svakog formata za GPU umjesto dvije implementacije ranije).
  • Podrška za nove SIMD skupove instrukcija - AVX2, AVX-512 (uključujući za drugu generaciju Xeon Phi) i MIC (za prvu generaciju) - kao i univerzalniju i potpuniju upotrebu SIMD-a u implementacijama mnogih formata, uključujući upotrebu prethodno podržane instrukcije postavljaju se na AVX i XOP na x86(-64) i
    NEON, ASIMD i AltiVec na ARM-u, Aarch64 i POWER-u. (Djelomično u sklopu GSoC 2015.)
  • Brojne optimizacije za CPU i OpenCL, kako za učinkovitiji rad s velikim brojem hash-ova istovremeno (na primjer, testirano je učitavanje 320 milijuna SHA-1 hash-ova na GPU), tako i za povećanje brzine hash izračuna. Neke od tih optimizacija su univerzalne, neke pokrivaju različite podskupove formata, a mnoge su specifične za pojedinačne formate.
  • (Automatska) konfiguracija optimalnog međuspremnika provjerenih zaporki na CPU (“—tune=auto —verbosity=5”) i optimalne veličine poslova na OpenCL-u (omogućeno prema zadanim postavkama), uključujući uzimanje u obzir sporog povećanja NVIDIA GTX GPU serije do pune radne frekvencije 10xx i novije. Korištenje stvarno učitanih hashova i stvarne duljine zaporki koje se provjeravaju (kada je unaprijed poznata) za takvo automatsko podešavanje.
  • Dodavanje kompajlera za "dinamičke izraze" navedene izravno u naredbenom retku i implementacija novih hibridnih hash vrsta, na primjer "-format=dynamic='sha1(md5($p).$s)'", izračunato na CPU-u pomoću SIMD-a . Kao komponente takvih izraza podržani su deseci brzih hashova (od uobičajenih kao što je MD5 do umjereno egzotičnih kao što je Whirlpool), ulančavanje podnizova, kodiranje i dekodiranje, pretvorba velikih i malih slova, reference na lozinku, sol, korisničko ime i konstante niza.
  • Uklanjanje neželjenih razlika iz hashcat-a, uključujući podršku za prethodno specifična pravila hashcat-a (naredbe pravila popisa riječi), prijelaz na OpenCL numeriranje uređaja od 1, zadana upotreba istih duljina lozinki (obično duljina 7) za testove performansi.
  • Novi načini za generiranje provjerljivih lozinki (načini krekiranja), uključujući PRINCE iz hashcata (formira "fraze" kombiniranjem nekoliko riječi u rastućem redoslijedu ukupne duljine), podskupove (donosi lozinke s nedovoljnim brojem različitih znakova, čak i ako ovi znakovi dolaze iz velikog skupa mogućih) i hibridni vanjski (omogućuje vanjskim načinima rada, opisanim u konfiguracijskim datotekama u jeziku sličnom C-u, generiranje mnogih provjerljivih lozinki na temelju svake osnovne "riječi" primljene iz drugog načina). Također, nekoliko novih unaprijed definiranih vanjskih načina rada.
  • Dodatne mogućnosti za korištenje nekoliko modova istovremeno (jedan na drugom - slaganje), kao i za korištenje skupova pravila (slaganje pravila liste riječi).
  • Poboljšanja načina rada maske (postupno rastezanje maske u određenom rasponu duljina, primjena maske na bočnoj strani OpenCL uređaja ili FPGA ploče) i single crack (razumno ponašanje na uređajima koji paralelno izračunavaju veliki broj hashova , za koje prije nije bilo dovoljno provjerljivih lozinki u ovom načinu rada, a također i ograničenja u potrošnji memorije).
  • Mnoga poboljšanja podrške za Unicode i druga kodiranja u raznim podsustavima.
  • Mnoga poboljšanja *2john programa (koji pretvaraju datoteke različitih formata u
    koristiti s johnom), posebno wpapcap2john (rukuje WiFi promet).
  • Postoje mnoge nove opcije naredbenog retka, postavke u john.conf, opcije konfiguracije skripte i odgovarajuće nove značajke, a nisu sve ovdje spomenute.
  • Poboljšanje kvalitete koda zahvaljujući ugrađenoj podršci za debug builds s AddressSanitizer (prethodno) i UndefinedBehaviorSanitizer (dodan), dodavanjem ugrađenog fuzzera formata (kao dio GSoC 2015), korištenjem kontinuirane integracije (builds za desetke operativnih sustava i kompajlera kombinacije i njihovo testiranje radi ispravne podrške za sve formate).

Izvor: linux.org.ru

Dodajte komentar