John the Ripper 1.9.0-jumbo-1 met FPGA-ondersteuning

Vrijgelaten nieuwe versie van het oudste ondersteunde wachtwoordgokprogramma John the Ripper 1.9.0-jumbo-1. (Het project is in ontwikkeling sinds 1996.) Aan projectpagina Bronnen zijn beschikbaar om te downloaden, evenals kant-en-klare assemblages voor Windows.

Opgemerkt wordt dat er 1.8.0 jaar zijn verstreken sinds de release van versie 1-jumbo-4.5, waarin meer dan 6000 wijzigingen (git commits) zijn aangebracht door meer dan 80 ontwikkelaars. Gedurende deze periode raden de ontwikkelaars aan om huidige editie van GitHub, waarvan de toestand stabiel bleef ondanks de dankzij aangebrachte wijzigingen continue integratie, inclusief een voorafgaande verificatie van elke wijziging (pull-aanvraag) op veel platforms. Bijzonder aan de nieuwe versie is het verschijnen van ondersteuning voor FPGA (FPGA) naast CPU, GPU en Xeon Phi.


Voor planken ZTEX 1.15j, inclusief 4 FPGA-chips en oorspronkelijk voornamelijk gebruikt voor Bitcoin-mining, zijn nu 7 soorten wachtwoord-hashes geïmplementeerd: bcrypt, klassieke descrypt (inclusief bigcrypt), sha512crypt, sha256crypt, md5crypt (inclusief Apache apr1 en AIX smd5), Drupal7 en phpass (gebruikt , vooral in WordPress). Sommigen van hen zijn voor het eerst op FPGA geïmplementeerd. Voor bcrypt overtreft de behaalde prestatie van ~119k c/s met 2^5 iteraties (“$2b$05”) met een stroomverbruik van ongeveer 27 watt aanzienlijk de resultaten voor de nieuwste GPU’s per bord, per hardwareprijs en per watt. Ook ondersteund clusters van borden van dit type, dat is getest tot 16 borden (64 FPGA's) bestuurd vanaf een enkele Raspberry Pi 2. De gebruikelijke John the Ripper-functionaliteit wordt ondersteund, inclusief alle wachtwoord-raadmodi en het gelijktijdig downloaden van een groot aantal hashes. Om het werk te versnellen, hebben we het gebruik van een masker geïmplementeerd (de "--mask" -modus, ook in combinatie met andere modi) en vergelijking van de berekende hashes met die geladen aan de FPGA-kant. Vanuit een implementatieperspectief zijn veel van de ontwerpen (bijv. sha512crypt en Drupal7Er worden blokken gebruikt die bestaan ​​uit multi-threaded processorkernen (zachte CPU-kernen) die interageren met cryptografische kernen. De ontwikkeling van deze functionaliteit werd geleid door Denis Burykin in coördinatie met andere jumbo-ontwikkelaars.

Andere grote veranderingen:

  • Ondersteuning voor een groot aantal extra soorten hashes, cijfers, enz., inclusief zowel klassieke wachtwoord-hashes (bijvoorbeeld uit nieuwe versies van QNX), als cryptocurrency-wallets, gecodeerde archieven en gecodeerde bestandssystemen (bijvoorbeeld Bitlocker en FreeBSD geli), evenals ondersteuning voor nieuwe soorten formaten die eerder werden ondersteund (bijvoorbeeld toegevoegde ondersteuning voor bcrypt-pbkdf voor OpenBSD softraid) en nog veel meer. In totaal zijn er 80 formaten toegevoegd op de CPU en 47 op OpenCL (en een klein aantal oude is verwijderd omdat ze zijn geïntegreerd in nieuwe en verouderde formaten). Het totale aantal formaten is nu 407 op de CPU (of 262 exclusief "dynamische" formaten geconfigureerd vanuit configuratiebestanden) en 88 op OpenCL.
  • Weigering om de CUDA-taal te ondersteunen ten gunste van OpenCL, wat op geen enkele manier het volledige gebruik van NVIDIA GPU's hindert (en zelfs helpt, dankzij het concentreren van de ontwikkeling en optimalisatie op één implementatie van elk formaat voor de GPU in plaats van twee eerdere implementaties).
  • Ondersteuning voor nieuwe SIMD-instructiesets - AVX2, AVX-512 (inclusief voor de tweede generatie Xeon Phi) en MIC (voor de eerste generatie) - evenals een universeler en vollediger gebruik van SIMD in implementaties van vele formaten, inclusief het gebruik van eerder ondersteunde instructiesets tot AVX en XOP op x86(-64) en
    NEON, ASIMD en AltiVec op respectievelijk ARM, Aarch64 en POWER. (Gedeeltelijk als onderdeel van GSoC 2015.)
  • Talrijke optimalisaties voor CPU en OpenCL, zowel om efficiënter met een groot aantal hashes tegelijk te kunnen werken (het laden van 320 miljoen SHA-1-hashes op de GPU werd bijvoorbeeld getest), als om de snelheid van hash-berekeningen te verhogen. Sommige van deze optimalisaties zijn universeel, andere bestrijken verschillende subsets van formaten en vele zijn specifiek voor individuele formaten.
  • (Auto-)configuratie van optimale buffering van gecontroleerde wachtwoorden op de CPU (“—tune=auto —verbosity=5”) en optimale taakgroottes op OpenCL (standaard ingeschakeld), inclusief rekening houdend met de langzame opstart van NVIDIA GTX serie GPU's tot volledige werkfrequentie 10xx en nieuwer. Voor dergelijke automatische afstemming wordt gebruik gemaakt van feitelijk geladen hashes en de werkelijke lengte van de wachtwoorden die worden gecontroleerd (als dit van tevoren bekend is).
  • Het toevoegen van een compiler voor "dynamische expressies" die rechtstreeks op de opdrachtregel zijn gespecificeerd en het implementeren van nieuwe hybride hash-typen, bijvoorbeeld "-format=dynamic='sha1(md5($p).$s)'", berekend op de CPU met behulp van SIMD . Als componenten van dergelijke expressies worden tientallen snelle hashes ondersteund (van gewone zoals MD5 tot redelijk exotische zoals Whirlpool), aaneenschakeling van substrings, codering en decodering, conversie van hoofdletters, verwijzingen naar wachtwoord, salt, gebruikersnaam en stringconstanten.
  • Eliminatie van ongewenste verschillen met hashcat, inclusief ondersteuning voor voorheen hashcat-specifieke regels (woordenlijstregelopdrachten), overgang naar OpenCL-apparaatnummering van 1, standaardgebruik van dezelfde wachtwoordlengtes (meestal lengte 7) voor prestatietests.
  • Nieuwe modi voor het genereren van verifieerbare wachtwoorden (cracking-modi), waaronder PRINCE van hashcat (vormt “zinnen” door verschillende woorden te combineren in oplopende volgorde van totale lengte), subsets (brengt wachtwoorden naar voren met een onvoldoende aantal verschillende tekens, zelfs als deze tekens voorkomen uit een groot aantal mogelijke wachtwoorden) en hybride extern (laat externe modi toe, beschreven in configuratiebestanden in een C-achtige taal, om veel verifieerbare wachtwoorden te genereren op basis van elk basiswoord dat wordt ontvangen van een andere modus). Ook verschillende nieuwe, vooraf gedefinieerde externe modi.
  • Extra functies voor het gelijktijdig gebruiken van meerdere modi (de een boven op de ander - stapelen), evenals voor het gebruik van sets regels (stapelen van woordenlijstregels).
  • Verbeteringen aan de maskermodi (geleidelijk uitrekken van het masker in een bepaald lengtebereik, toepassing van een masker aan de zijkant van het OpenCL-apparaat of FPGA-bord) en single crack (redelijk gedrag op apparaten die parallel een groot aantal hashes berekenen , waarvoor voorheen niet genoeg verifieerbare wachtwoorden waren in deze modus, en ook beperkingen op het geheugengebruik).
  • Veel verbeteringen ter ondersteuning van Unicode en andere coderingen in verschillende subsystemen.
  • Veel verbeteringen aan *2john-programma's (die bestanden van verschillende formaten converteren voor
    gebruik met john), vooral wpapcap2john (verwerkt WiFi-verkeer).
  • Er zijn veel nieuwe opdrachtregelopties, instellingen in john.conf, scriptopties configureren en bijbehorende nieuwe functies, die hier niet allemaal worden genoemd.
  • Verbetering van de codekwaliteit dankzij ingebouwde ondersteuning voor debug-builds met AddressSanitizer (voorheen) en UndefinedBehaviorSanitizer (toegevoegd), toevoeging van een ingebouwde formaatfuzzer (als onderdeel van GSoC 2015), met behulp van continue integratie (builds voor tientallen besturingssystemen en compiler combinaties en testen op correcte ondersteuning voor alle formaten).

Bron: linux.org.ru

Voeg een reactie