John the Ripper 1.9.0-jumbo-1 objavljen sa FPGA podrškom

Oslobođen nova verzija najstarijeg podržanog programa za pogađanje lozinke John the Ripper 1.9.0-jumbo-1 (projekat se razvija od 1996. godine). Prošlo je 1.8.0 godine od izdavanja prethodne verzije 1-jumbo-4.5, tokom kojih je napravljeno više od 6000 izmjena (git urezivanja) od više od 80 programera. Hvala za kontinuirana integracija, koji uključuje preliminarnu provjeru svake promjene (pull request) na mnogim platformama, tokom ovog perioda programeri su preporučili korištenje trenutna revizija sa GitHub-a, čije je stanje održano stabilnim uprkos izvršenim promjenama. Glavni kod projekta distribuira pod GPLv2+ licencom, a kod nekih komponenti je pod BSD licencom.

Posebnost nove verzije je pojava FPGA podrške (pored CPU, GPU i Xeon Phi). Za daske Ztex 1.15y, uključujući 4 FPGA čipa i prvobitno korišteni uglavnom za rudarenje Bitcoina, sada je implementirano 7 tipova hashova lozinki: 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, postignute performanse od ~119k c/s sa 2^5 iteracija (“$2b$05”) uz potrošnju energije od ~27 vati značajno premašuju rezultate za najnovije GPU-ove po ploči, po cijeni hardvera i po vatu . Također podržano klasteri ploča ovog tipa, koji je testiran do 16 ploča (64 FPGA čipa) kontroliranih iz jednog Raspberry Pi 2. Podržana je uobičajena funkcionalnost Johna Trbosjeka, uključujući sve načine pogađanja lozinki i istovremeno preuzimanje velikog broja hashova .

Da bismo ubrzali rad, implementirali smo upotrebu maske (režim „—maske“, uključujući u kombinaciji sa drugim režimima) i poređenje izračunatih hešova sa onima učitanim na FPGA strani. Iz perspektive implementacije, mnogi dizajni (npr. sha512crypt i Drupal7) korišteni blokovi koji se sastoje od višenitnih procesorskih jezgara (mekih CPU jezgara) u interakciji sa kriptografskim jezgrama. Razvoj ove funkcionalnosti vodio je Denis Burykin u koordinaciji s drugim jumbo programerima.

Ostale važne promjene:

  • Podrška za veliki broj dodatnih tipova hashova, šifri itd., uključujući i klasične hešove lozinki (na primjer, iz novih verzija QNX-a), kao i novčanike kriptovaluta, šifrirane arhive i šifrirane sisteme datoteka (na primjer, Bitlocker i FreeBSD geli), kao i podrška za nove tipove 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. Ukupan broj formata je sada 407 na CPU-u (ili 262 ne uključujući "dinamičke" formate konfigurisane iz konfiguracionih datoteka) i 88 na OpenCL-u.
  • Uklanjanje CUDA jezičke podrške u korist OpenCL-a, što ni najmanje ne ometa potpunu upotrebu NVIDIA GPU-a (a čak i pomaže, zahvaljujući fokusu razvoja i optimizacije na jednoj implementaciji svakog formata pod GPU-om umjesto dva 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žanih skupova instrukcija do AVX i XOP na x86(-64) i
    NEON, ASIMD i AltiVec na ARM-u, Aarch64 i POWER-u, respektivno.

  • Brojne optimizacije za CPU i OpenCL, za efikasniji rad sa velikim brojem hešova u isto vreme (na primer, učitavanje 320 miliona SHA-1 heša na GPU) i za povećanje brzine izračunavanja heša. Neke od ovih optimizacija su univerzalne, neke pokrivaju različite podskupove formata, a mnoge su specifične za format.
  • (Auto-)konfiguracija optimalnog baferovanja provjerenih lozinki na CPU-u (“—tune=auto —verbosity=5”) i optimalne veličine poslova na OpenCL-u (omogućeno prema zadanim postavkama), uključujući uzimanje u obzir sporog porasta do pune radne frekvencije grafičkih procesora NVIDIA GTX serije 10xx i novijih. Korištenje stvarno učitanih hashova i stvarne dužine lozinki koje se provjeravaju (kada je to unaprijed poznato) za takvo automatsko podešavanje.
  • Dodavanje kompajlera za "dinamičke izraze" specificirane direktno u komandnoj liniji i implementacija novih hibridnih tipova hash-a, na primjer "-format=dynamic='sha1(md5($p).$s)'", izračunatih na CPU-u koristeći SIMD . Kao komponente takvih izraza, podržani su deseci brzih hashova (od uobičajenih poput MD5 do umjereno egzotičnih poput Whirlpool), konkatenacija podnizova, kodiranje i dekodiranje, konverzija velikih i malih slova, reference na lozinku, sol, korisničko ime i string konstante.
  • Eliminacija nepoželjnih razlika u odnosu na hashcat, uključujući podršku za ranije naredbe pravila liste riječi specifičnih za hashcat, prelazak na numeriranje OpenCL uređaja sa 1, korištenje istih zadanih dužina lozinki (obično dužine 7) za testove performansi.
  • Novi načini razbijanja, uključujući PRINCE iz hashcat-a (generira "fraze" spajanjem više riječi u rastućem redoslijedu ukupne dužine), podskupove (donosi lozinke s nedovoljno različitih znakova čak i ako ti znakovi dolaze iz velikog skupa mogućih) i hibridne eksterne (omogućava eksternim režimima, opisanim u konfiguracionim datotekama na jeziku sličnom C, da generišu mnoge proverljive lozinke na osnovu svake osnovne „reči“ primljene iz drugog režima). Takođe, nekoliko novih unapred definisanih eksternih režima.
  • Dodatne mogućnosti za korištenje nekoliko načina istovremeno (jedan na drugom - slaganje), kao i za takvu upotrebu skupova pravila (slaganje pravila liste riječi).
  • Poboljšanja režima maske (postupno rastezanje maske u određenom rasponu dužina, nanošenje maske na stranu OpenCL uređaja ili FPGA ploče) i single crack (razumno ponašanje na uređajima koji paralelno računaju veliki broj hashova, što je prethodno u ovom režimu nedostajale su lozinke za proveru, kao i ograničenja potrošnje memorije).
  • Mnoga poboljšanja u podršci za Unicode i druga kodiranja u različitim podsistemima.
  • Mnoga poboljšanja *2john programa (konvertovanje datoteka različitih formata u
    koristiti sa john), posebno wpapcap2john (obavlja WiFi saobraćaj).

  • Mnoge nove opcije komandne linije, postavke john.conf, opcije konfigurisanja skripte i njihove odgovarajuće nove funkcije, od kojih nisu sve pomenute ovde.
  • Poboljšanje kvaliteta koda zbog ugrađene podrške za debug buildove sa AddressSanitizer (prethodno) i UndefinedBehaviorSanitizer (dodat), dodavanjem ugrađenog fuzzer formata (unutar GSoC 2015), korištenjem kontinuirane integracije (gradnje za desetine kombinacija operativnih sistema i kompajlera i testirajući ih za ispravnu podršku za sve formate).

izvor: opennet.ru

Dodajte komentar