een nieuwe versie van het oudste ondersteunde wachtwoordherstelprogramma (het project is sinds 1996 in ontwikkeling). Sinds de release van de vorige versie 1.8.0-jumbo-1 zijn er 4,5 jaar verstreken, waarin meer dan 6000 wijzigingen (git commits) zijn aangebracht door meer dan 80 ontwikkelaars. Dankzij , inclusief een voorafgaande controle van elke wijziging (pull request) op vele platforms, hebben ontwikkelaars gedurende deze periode aangeraden om , waarvan de toestand stabiel is gebleven ondanks de aangebrachte wijzigingen. De hoofdcode van het project valt onder de GPLv2+-licentie, terwijl de code van sommige componenten onder de BSD-licentie valt.
Een kenmerk van de nieuwe versie is de ondersteuning voor FPGA's (naast CPU, GPU en Xeon Phi). Voor de , die vier FPGA-chips bevatten en oorspronkelijk voornamelijk zijn 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 (gebruikte onder andere in WordPress). Sommige daarvan zijn voor het eerst op FPGA's geïmplementeerd.
Voor bcrypt is een prestatie van ~119k c/s bereikt bij 2^5 iteraties (‘$2b$05’) met een stroomverbruik van ongeveer ~27 watt, wat de resultaten van de nieuwste GPU's overtreft op basis van kosten, prijs van de apparatuur en wattage. Ook worden ondersteund van dit type plankjes, wat is getest tot 16 platen (64 FPGA-chips), beheerd vanaf één Raspberry Pi 2. De gebruikelijke functionaliteit van John the Ripper wordt ondersteund, inclusief alle wachtwoordherstelmodi en gelijktijdige verwerking van een groot aantal hashes.
Om de prestaties te versnellen is een maskermodus (mode ‘—mask’, ook in combinatie met andere modi) geïmplementeerd en worden berekende hashes vergeleken met die aan de FPGA-zijde zijn geladen. Wat betreft de implementatie, zijn in veel van de ontwerpen (bijvoorbeeld voor ) blokken toegepast die uit multi-threaded processorkernen (soft CPU cores) bestaan, die samenwerken met cryptografische kernen. De ontwikkeling van deze functionaliteit is geleid door Denis Burykin in samenwerking met andere jumbo-ontwikkelaars.
Andere belangrijke wijzigingen:
- Ondersteuning voor een groot aantal extra hashing-algoritmen, encrypties, enz., waaronder zowel klassieke wachtwoord-hashes (zoals van de nieuwste versies van QNX) als cryptocurrency-portemonnees, versleutelde archieven en versleutelde bestandssystemen (zoals Bitlocker en FreeBSD geli), evenals ondersteuning voor nieuwe varianten van eerder ondersteunde formaten (zoals de toevoeging van ondersteuning voor bcrypt-pbkdf voor OpenBSD softraid) en nog veel meer. In totaal zijn er 80 formaten toegevoegd voor CPU en 47 voor OpenCL. Het totale aantal formaten is nu 407 voor CPU (of 262, exclusief 'dynamische' formats, configureerbaar uit configuratiebestanden) en 88 voor OpenCL.
- Afzien van ondersteuning voor de CUDA-taal ten gunste van OpenCL, wat het volledige gebruik van NVIDIA GPU's niet belemmerd (en zelfs helpt, dankzij de focus op ontwikkeling en optimalisatie op één implementatie van elk formaat voor GPU in plaats van twee implementaties zoals voorheen).
- Ondersteuning voor nieuwe SIMD-instructiesets — AVX2, AVX-512 (inclusief voor de tweede generatie Xeon Phi) en MIC (voor de eerste generatie) — evenals een meer algemene en complete toepassing van SIMD in implementaties van veel formaten, inclusief de toepassing van eerder ondersteunde instructiesets tot AVX en XOP op x86(-64) en
NEON, ASIMD en AltiVec op ARM, Aarch64 en POWER, respectievelijk. - Talrijke optimalisaties voor CPU en OpenCL, zowel voor een efficiëntere verwerking van een groot aantal hashes tegelijkertijd (bijvoorbeeld werden 320 miljoen SHA-1 hashes op GPU getest) als voor het verhogen van de hashesnelheid. Een deel van deze optimalisaties is algemeen, een deel bestrijkt verschillende subsets van formaten, en veel zijn specifiek voor afzonderlijke formaten.
- (Auto-)afstemming van de optimale buffering van te controleren wachtwoorden op CPU ('—tune=auto —verbosity=5') en optimale taaiheidsformaten op OpenCL (standaard ingeschakeld), ook rekening houdend met de langzame opschaling naar de volle kloksnelheid van NVIDIA GTX 10xx-series en nieuwer. Het gebruik van daadwerkelijk geladen hashes en de werkelijke lengte van te controleren wachtwoorden (wanneer deze van tevoren bekend is) voor een dergelijke auto-afstemming.
- Toevoegen van een compiler voor 'dynamische expressies', direct opgegeven op de commandoregel, die nieuwe hybride hash-types implementeert, zoals '—format=dynamic=’sha1(md5($p).$s)'', berekend op de CPU met behulp van SIMD. De componenten van dergelijke expressies ondersteunen tientallen snelle hashes (van gangbare zoals MD5 tot gematigd exotische zoals Whirlpool), substring-samenvoeging, codering en decodering, hoofdletterwisseling, verwijzingen naar wachtwoorden, zout, gebruikersnamen en stringconstanten.
- Eliminatie van ongewenste afwijkingen van hashcat, waaronder ondersteuning voor eerder specifieke hashcat-regels (wordlist rule commands), overschakeling naar nummering van OpenCL-apparaten vanaf 1, en standaard hetzelfde wachtwoordlengte gebruiken (meestal lengte 7) tijdens prestatietests.
- Nieuwe generatiemodi van te testen wachtwoorden (cracking modes), waaronder PRINCE van hashcat (vormt 'zinnen' door meerdere woorden samen te voegen op basis van toenemende totale lengte), subsets (zoekt naar wachtwoorden met een onvoldoende aantal verschillende symbolen, zelfs als deze symbolen uit een grote set mogelijke komen) en hybride externe (staat externe modi, beschreven in configuratiebestanden in een C-achtige taal, toe om veel te testen wachtwoorden te vormen op basis van elk basaal 'woord' dat van een andere modus komt). Daarnaast, verschillende nieuwe gedefinieerde externe modi.
- Aanvullende mogelijkheden voor het gelijktijdig gebruiken van meerdere modi (één bovenop de ander - stacking), evenals voor het gebruik van regelsets (wordlist rules stacking).
- Verbeteringen in de maskermodi (geleidelijke uitbreiding van de masker binnen gespecificeerde lengtes, toepassing van de masker aan de kant van het OpenCL-apparaat of FPGA-bord) en single crack (redelijk gedrag op apparaten die een groot aantal hashes parallel berekenen, waar eerder in deze modus niet genoeg te testen wachtwoorden beschikbaar waren, evenals een beperking op geheugengebruik).
- Veel verbeteringen in de ondersteuning van Unicode en andere coderingen in verschillende subsystemen.
- Veel verbeteringen in de programma's *2john (die bestanden van verschillende formaten omzetten voor
gebruik met john), in het bijzonder wpapcap2john (verwerkt WiFi-verkeer). - Veel nieuwe opties voor de commandoregel, instellingen in john.conf, configure-scriptopties en de bijbehorende nieuwe mogelijkheden, waarvan lang niet allemaal hier zijn genoemd.
- Verbetering van de codekwaliteit door de ingebouwde ondersteuning voor debug-builds met AddressSanitizer (voorheen) en UndefinedBehaviorSanitizer (toegevoegd), de toevoeging van een ingebouwde fuzz-test voor formats (in het kader van GSoC 2015), en het toepassen van continue integratie (builds voor tientallen combinaties van besturingssystemen en compilers en het testen van de correcte ondersteuning van alle formats).
Bron: opennet.ru
