Vydání John the Ripper 1.9.0-jumbo-1 s podporou FPGA

Vydáno nová verze nejstaršího podporovaného programu na hádání hesel John the Ripper 1.9.0-jumbo-1 (projekt se vyvíjí od roku 1996). Od vydání předchozí verze 1.8.0-jumbo-1 uplynulo 4.5 roku, během kterého bylo provedeno více než 6000 změn (git commitů) od více než 80 vývojářů. Díky kontinuální integrace, který zahrnuje předběžnou kontrolu každé změny (pull request) na mnoha platformách, během tohoto období vývojáři doporučili používat aktuální vydání z GitHubu, jehož stav byl i přes provedené změny stabilní. Hlavní kód projektu distribuovány pod licencí GPLv2+ a kód některých komponent je pod licencí BSD.

Zvláštností nové verze je vzhled podpory FPGA (kromě CPU, GPU a Xeon Phi). Pro desky ZTEX 1.15y, včetně 4 čipů FPGA a původně používaných hlavně pro těžbu bitcoinů, je nyní implementováno 7 typů hash hesel: bcrypt, classic descrypt (včetně bigcrypt), sha512crypt, sha256crypt, md5crypt (včetně Apache apr1 a AIX smd5), Drupal7 a phpass (používá se , zejména ve WordPressu). Některé z nich jsou na FPGA implementovány vůbec poprvé.

U bcrypt dosažený výkon ~119k c/s s 2^5 iteracemi (“$2b$05”) se spotřebou ~27 wattů výrazně převyšuje výsledky pro nejnovější GPU na desku, cenu hardwaru a watt. Také podporováno shluky desek tohoto typu, na kterém bylo testováno až 16 desek (64 FPGA čipů) ovládaných z jednoho Raspberry Pi 2. Podporována je obvyklá funkcionalita John the Ripper, včetně všech režimů hádání hesel a současného stahování velkého množství hashů .

Pro urychlení práce jsme implementovali použití masky (režim „—maska“, včetně v kombinaci s jinými režimy) a porovnání vypočítaných hashů s těmi, které jsou načteny na straně FPGA. Z hlediska implementace mnoho návrhů (např. sha512crypt a Drupal7) jsou použity bloky sestávající z vícevláknových procesorových jader (měkká CPU jádra) interagujících s kryptografickými jádry. Vývoj této funkce vedl Denis Burykin v koordinaci s dalšími jumbo vývojáři.

Další důležité změny:

  • Podpora velkého množství dalších typů hashů, šifer atd., včetně jak klasických hesel hesel (například z nových verzí QNX), tak i kryptoměnových peněženek, šifrovaných archivů a šifrovaných souborových systémů (například Bitlocker a FreeBSD geli), stejně jako podpora nových typů dříve podporovaných formátů (například přidána podpora pro bcrypt-pbkdf pro OpenBSD softraid) a mnoho dalšího. Celkem bylo přidáno 80 formátů na CPU a 47 na OpenCL. Celkový počet formátů je nyní 407 na CPU (nebo 262 bez "dynamických" formátů nakonfigurovaných z konfiguračních souborů) a 88 na OpenCL.
  • Odmítnutí podpory jazyka CUDA ve prospěch OpenCL, což v žádném případě nezasahuje do plného využití GPU NVIDIA (a dokonce pomáhá díky zaměření vývoje a optimalizace na jednu implementaci každého formátu pro GPU namísto dvou implementací dříve).
  • Podpora nových instrukčních sad SIMD - AVX2, AVX-512 (včetně pro druhou generaci Xeon Phi) a MIC (pro první generaci) - a také univerzálnější a kompletní použití SIMD v implementacích mnoha formátů, včetně použití dříve podporované instrukční sady až do AVX a XOP na x86(-64) a
    NEON, ASIMD a AltiVec na ARM, Aarch64 a POWER.

  • Četné optimalizace pro CPU a OpenCL, jak pro efektivnější práci s velkým počtem hashů současně (testováno bylo například načítání 320 milionů SHA-1 hash na GPU), tak pro zvýšení rychlosti výpočtů hash. Některé z těchto optimalizací jsou univerzální, některé pokrývají různé podmnožiny formátů a mnohé jsou specifické pro jednotlivé formáty.
  • (Automatická) konfigurace optimálního ukládání kontrolovaných hesel na CPU (“—tune=auto —verbosity=5”) a optimální velikosti úloh na OpenCL (ve výchozím nastavení povoleno), včetně zohlednění pomalého náběhu na plnou provozní frekvenci GPU řady NVIDIA GTX 10xx a novější. Použití skutečně načtených hashů a skutečné délky kontrolovaných hesel (pokud je předem známa) pro takové automatické ladění.
  • Přidání kompilátoru pro "dynamické výrazy" specifikované přímo na příkazovém řádku a implementace nových hybridních typů hash, například "-format=dynamic='sha1(md5($p).$s)'", vypočítané na CPU pomocí SIMD . Jako součásti takových výrazů jsou podporovány desítky rychlých hashů (od běžných jako MD5 až po mírně exotické jako Whirlpool), zřetězení podřetězců, kódování a dekódování, konverze velkých a malých písmen, odkazy na heslo, sůl, uživatelské jméno a řetězcové konstanty.
  • Odstranění nežádoucích odlišností od hashcatu, včetně podpory dříve specifických pravidel pro hashcat (příkazy pravidel seznamu slov), přechod na číslování zařízení OpenCL od 1, výchozí použití stejných délek hesel (obvykle délka 7) pro testy výkonu.
  • Nové režimy pro generování ověřitelných hesel (módy prolomení), včetně PRINCE z hashcatu (tvoří „frázi“ kombinací několika slov v rostoucím pořadí celkové délky), podmnožiny (vyvolá hesla s nedostatečným počtem různých znaků, i když tyto znaky přicházejí z velké sady možných) a hybridní externí (umožňuje externím režimům, popsaným v konfiguračních souborech v jazyce podobném C, generovat mnoho ověřitelných hesel na základě každého základního „slova“ přijatého z jiného režimu). Také několik nových předdefinovaných externích režimů.
  • Další funkce pro použití několika režimů současně (jeden na druhém - skládání), stejně jako pro použití sad pravidel (skládání pravidel seznamu slov).
  • Vylepšení režimů masky (postupné natahování masky v určeném rozsahu délek, aplikace masky na straně zařízení OpenCL nebo desky FPGA) a single crack (rozumné chování na zařízeních, která paralelně počítají velké množství hashů). , pro které dříve v tomto režimu nebyl dostatek ověřitelných hesel a také omezení spotřeby paměti).
  • Mnoho vylepšení pro podporu Unicode a dalších kódování v různých subsystémech.
  • Mnoho vylepšení programů *2john (které převádějí soubory různých formátů pro
    použití s ​​john), zejména wpapcap2john (zvládá provoz WiFi).

  • Existuje mnoho nových možností příkazového řádku, nastavení v john.conf, možnosti konfigurace skriptů a odpovídajících nových funkcí, z nichž ne všechny zde byly zmíněny.
  • Zlepšení kvality kódu díky vestavěné podpoře pro sestavení ladění pomocí AddressSanitizer (dříve) a UndefinedBehaviorSanitizer (přidáno), přidání vestavěného fuzzeru formátu (jako součást GSoC 2015), použití nepřetržité integrace (sestavení pro desítky operačních systémů a kompilátorů kombinace a testování jejich správné podpory pro všechny formáty).

Zdroj: opennet.ru

Přidat komentář