John the Ripper 1.9.0-jumbo-1 s podporou FPGA

Vydané nová verzia najstaršieho podporovaného programu na hádanie hesiel John the Ripper 1.9.0-jumbo-1. (Projekt sa rozvíja od roku 1996.) On stránka projektu Zdroje sú k dispozícii na stiahnutie, ako aj hotové zostavy pre Windows.

Je potrebné poznamenať, že od vydania verzie 1.8.0-jumbo-1 uplynulo 4.5 roka, počas ktorého bolo vykonaných viac ako 6000 zmien (git commits) od viac ako 80 vývojárov. Počas tohto obdobia vývojári odporučili používať aktuálne vydanie z GitHubu, ktorej stav sa podarilo udržať stabilný aj napriek vykonaným zmenám vďaka kontinuálna integrácia, ktorý zahŕňa predbežné overenie každej zmeny (pull request) na mnohých platformách. Zvláštnosťou novej verzie je vzhľad podpory FPGA (FPGA) okrem CPU, GPU a Xeon Phi.


Pre dosky ZTEX 1.15r, vrátane 4 čipov FPGA a pôvodne používaných hlavne na ťažbu bitcoínov, je teraz implementovaných 7 typov hash hesiel: bcrypt, classic descrypt (vrátane bigcrypt), sha512crypt, sha256crypt, md5crypt (vrátane Apache apr1 a AIX smd5), Drupal7 a phpass (používané , najmä vo WordPress). Niektoré z nich sú na FPGA implementované po prvýkrát. Pre bcrypt dosiahnutý výkon ~119k c/s s 2^5 iteráciami (“$2b$05”) so spotrebou energie približne 27 wattov výrazne prevyšuje výsledky pre najnovšie GPU na dosku, cenu hardvéru a watt. Tiež podporované klastre dosiek tohto typu, na ktorom bolo testovaných až 16 dosiek (64 FPGA) ovládaných z jedného Raspberry Pi 2. Podporovaná je bežná funkcionalita John the Ripper, vrátane všetkých režimov hádania hesiel a súčasného sťahovania veľkého množstva hashov. Na urýchlenie práce sme implementovali použitie masky (režim "--mask" aj v kombinácii s inými režimami) a porovnanie vypočítaných hashov s tými, ktoré sú načítané na strane FPGA. Z hľadiska implementácie mnohé návrhy (napr. sha512crypt a Drupal7) používajú sa bloky pozostávajúce z viacvláknových procesorových jadier (mäkkých jadier CPU) interagujúcich s kryptografickými jadrami. Vývoj tejto funkcionality viedol Denis Burykin v koordinácii s ďalšími jumbo vývojármi.

Ďalšie zásadné zmeny:

  • Podpora veľkého množstva dodatočných typov hashov, šifier atď., vrátane klasických hashov hesiel (napríklad z nových verzií QNX), ako aj kryptomenových peňaženiek, šifrovaných archívov a šifrovaných súborových systémov (napríklad Bitlocker a FreeBSD geli), ako aj podporu pre nové typy formátov, ktoré boli predtým podporované (napríklad pridaná podpora pre bcrypt-pbkdf pre OpenBSD softraid) a oveľa viac. Celkovo bolo pridaných 80 formátov na CPU a 47 na OpenCL (a malý počet starých bol odstránený ako integrovaný do nových a zastaraných). Celkový počet formátov je teraz 407 na CPU (alebo 262 bez "dynamických" formátov nakonfigurovaných z konfiguračných súborov) a 88 na OpenCL.
  • Odmietnutie podpory jazyka CUDA v prospech OpenCL, čo v žiadnom prípade nezasahuje do plného využitia GPU NVIDIA (a dokonca pomáha vďaka zameraniu vývoja a optimalizácie na jednu implementáciu každého formátu pre GPU namiesto dvoch implementácií predtým).
  • Podpora nových inštrukčných sád SIMD - AVX2, AVX-512 (vrátane pre druhú generáciu Xeon Phi) a MIC (pre prvú generáciu) - ako aj univerzálnejšie a kompletnejšie využitie SIMD v implementáciách mnohých formátov, vrátane použitia predtým podporované inštrukčné sady až po AVX a XOP na x86(-64) a
    NEON, ASIMD a AltiVec na ARM, Aarch64 a POWER. (Čiastočne ako súčasť GSoC 2015.)
  • Početné optimalizácie pre CPU a OpenCL, a to na efektívnejšiu prácu s veľkým počtom hashov súčasne (testovalo sa napríklad načítanie 320 miliónov hashov SHA-1 na GPU), ako aj na zvýšenie rýchlosti výpočtov hash. Niektoré z týchto optimalizácií sú univerzálne, niektoré pokrývajú rôzne podmnožiny formátov a mnohé sú špecifické pre jednotlivé formáty.
  • (Automatická) konfigurácia optimálneho ukladania kontrolovaných hesiel na CPU (“—tune=auto —verbosity=5”) a optimálne veľkosti úloh na OpenCL (v predvolenom nastavení povolené), vrátane zohľadnenia pomalého nábehu NVIDIA GTX série GPU na plnú prevádzkovú frekvenciu 10xx a novšiu. Použitie skutočne načítaných hashov a skutočnej dĺžky kontrolovaných hesiel (ak je vopred známa) pre takéto automatické ladenie.
  • Pridanie kompilátora pre „dynamické výrazy“ špecifikované priamo v príkazovom riadku a implementácia nových hybridných typov hash, napríklad „-format=dynamic='sha1(md5($p).$s)'“, vypočítané na CPU pomocou SIMD . Ako súčasti takýchto výrazov sú podporované desiatky rýchlych hashov (od bežných ako MD5 až po stredne exotické ako Whirlpool), zreťazenie podreťazcov, kódovanie a dekódovanie, konverzia malých a veľkých písmen, odkazy na heslo, soľ, užívateľské meno a reťazcové konštanty.
  • Odstránenie nežiaducich rozdielov od hashcatu, vrátane podpory predtým špecifických pravidiel pre hashcat (príkazy pravidiel pre zoznam slov), prechod na číslovanie zariadení OpenCL od 1, predvolené používanie rovnakých dĺžok hesiel (zvyčajne dĺžky 7) pre testy výkonu.
  • Nové režimy na generovanie overiteľných hesiel (režimy prelomenia) vrátane PRINCE z hashcat (tvorí „frázy“ kombináciou niekoľkých slov v rastúcom poradí podľa celkovej dĺžky), podmnožín (vyvoláva heslá s nedostatočným počtom rôznych znakov, aj keď tieto znaky prichádzajú z veľkej množiny možných) a hybridné externé (umožňuje externým režimom, popísaným v konfiguračných súboroch v jazyku podobnom C, generovať veľa overiteľných hesiel na základe každého základného „slova“ prijatého z iného režimu). Tiež niekoľko nových preddefinovaných externých režimov.
  • Ďalšie funkcie na súčasné používanie niekoľkých režimov (jeden na druhom - skladanie), ako aj na používanie sád pravidiel (skladanie pravidiel zoznamu slov).
  • Vylepšenia režimov masky (postupné naťahovanie masky v určenom rozsahu dĺžok, aplikácia masky na stranu OpenCL zariadenia alebo dosky FPGA) a single crack (rozumné správanie na zariadeniach, ktoré paralelne počítajú veľké množstvo hashov). , pre ktoré predtým nebolo v tomto režime dostatok overiteľných hesiel a tiež obmedzenia spotreby pamäte).
  • Mnoho vylepšení pre podporu Unicode a iných kódovaní v rôznych podsystémoch.
  • Mnoho vylepšení programov *2john (ktoré konvertujú súbory rôznych formátov pre
    použitie s johnom), najmä wpapcap2john (zaobchádza s prevádzkou WiFi).
  • Existuje mnoho nových možností príkazového riadka, nastavení v john.conf, možností konfigurácie skriptov a zodpovedajúcich nových funkcií, z ktorých nie všetky tu boli spomenuté.
  • Zlepšenie kvality kódu vďaka vstavanej podpore pre zostavy ladenia s AddressSanitizer (predtým) a UndefinedBehaviorSanitizer (pridané), pridanie vstavaného fuzzera formátu (ako súčasť GSoC 2015), pomocou nepretržitej integrácie (zostavy pre desiatky operačných systémov a kompilátorov kombinácie a ich testovanie na správnu podporu všetkých formátov).

Zdroj: linux.org.ru

Pridať komentár