en ny version af det ældste understøttede program til at knække adgangskoder (projektet har været under udvikling siden 1996). Siden den tidligere version 1.8.0-jumbo-1 er der gået 4,5 år, hvor der er indført over 6000 ændringer (git commits) fra mere end 80 udviklere. Takket være , der inkluderer forudgående kontrol af hver ændring (pull request) på mange platforme, har udviklerne anbefalet at bruge , hvis tilstand er blevet opretholdt stabil trods de indførte ændringer. Hovedkoden til projektet er under GPLv2+ licens, mens koden til nogle komponenter er under BSD-licens.
Et særpræg ved den nye version er introduktionen af FPGA-support (udover CPU, GPU og Xeon Phi). For kort , der inkluderer 4 FPGA-chips og oprindeligt blev brugt primært til Bitcoin-mining, er der nu implementeret 7 typer adgangskode-hash: bcrypt, klassisk descrypt (inklusive bigcrypt), sha512crypt, sha256crypt, md5crypt (inklusive Apache apr1 og AIX smd5), Drupal7 og phpass (bruges især i WordPress). Nogle af dem er blevet implementeret på FPGA for første gang.
For bcrypt er den opnåede ydeevne på ~119k c/s ved 2^5 iterationer ("$2b$05") med et strømforbrug på omkring ~27 watt, hvilket væsentligt overgår resultaterne for de nyeste GPU'er pr. kort, hvad angår prisen på udstyret og wattforbruget. Derudover understøttes af denne type kort, hvilket er blevet testet op til 16 kort (64 FPGA-chips), styret fra en enkelt Raspberry Pi 2. Den almindelige funktionalitet i John the Ripper understøttes, inklusive alle adgangskodeterminaler og samtidig indlæsning af et stort antal hasher.
For at fremskynde arbejdet er der implementeret anvendelsen af masker ("--mask" tilstand, herunder i kombination med andre tilstande) og sammenligning af de beregnede hasher med dem, der er indlæst på FPGA-siden. Fra et implementeringssynspunkt er der i mange af designs (for eksempel for ) anvendt blokke bestående af multitrådede kerner (soft CPU cores), der interagerer med kryptografiske kerner. Udviklingen af denne funktionalitet blev udført af Denis Burykin i coordination med andre jumbo-udviklere.
Andre vigtige ændringer:
- Understøttelse af mange forskellige typer hasher, krypteringer osv., herunder både klassiske adgangskode-hasher (f.eks. fra nye versioner af QNX) samt kryptovaluta-tegnebøger, krypterede archiver og krypterede filsystemer (f.eks. Bitlocker og FreeBSD geli), og støtte for nye varianter af formater, der tidligere var understøttet (f.eks. tilføjet support for bcrypt-pbkdf til OpenBSD softraid) og meget mere. I alt er der tilføjet 80 formater på CPU og 47 på OpenCL. Det samlede antal formater er nu 407 på CPU (eller 262 uden at medregne "dynamic" formater, tilpasset fra konfigurationsfiler) og 88 på OpenCL.
- Opgiver understøttelsen af CUDA-sproget til fordel for OpenCL, hvilket ikke hindrer den fulde brug af NVIDIA's GPU (og endda hjælper, takket være fokuseringen på udvikling og optimeringer på én implementering af hvert format til GPU i stedet for to implementeringer tidligere).
- Understøttelse af nye SIMD-instruktionssæt - AVX2, AVX-512 (inklusive for den anden generation Xeon Phi) og MIC (for den første generation) - samt mere universel og omfattende brug af SIMD i implementeringer af mange formater, herunder anvendelse af tidligere understøttede instruktionssæt op til AVX og XOP på x86(-64) og
NEON, ASIMD og AltiVec på ARM, Aarch64 og POWER, henholdsvis. - Talrige optimeringer for CPU og OpenCL, både for mere effektivt at arbejde med mange hasher samtidigt (f.eks. blev belastningen af 320 millioner SHA-1 hasher på GPU testet) såvel som for at øge hastigheden af hash-beregnede. Nogle af disse optimeringer er universelle, nogle dækker forskellige delmængder af formater, mens mange er specifikke for enkelte formater.
- (Auto-)tilpasning af optimal bufferstørrelse for de kontrollerede adgangskoder på CPU ("—tune=auto —verbosity=5") og optimale opgave-størrelser på OpenCL (inkluderet som standard), dog med hensyntagen til den langsomme opnåelse af fuld driftshastighed for NVIDIA GTX 10xx-serien og nyere. Brug af reelt belastede hasher og reelle længder af de kontrollerede adgangskoder (når den er kendt på forhånd) til en sådan auto-justering.
- Tilføjelse af en 'dynamiske udtryks'-kompilator, der angives direkte på kommandolinjen og implementerer nye hybride hash-typer, såsom '—format=dynamic=’sha1(md5($p).$s)'', der beregnes på CPU ved hjælp af SIMD. Som komponenter i sådanne udtryk understøttes adskillige hurtige hashes (fra almindelige som MD5 til moderat eksotiske som Whirlpool), sammenkædning af delstrenge, kodning og dekodning, ændring af tegnsættets register, referencer til adgangskoder, salt, brugernavne og strængkonstanter.
- Fjernelse af uønskede forskelle fra hashcat, herunder understøttelse af tidligere hashcat-specifikke regler (wordlist rule commands), overgang til numerering af OpenCL-enheder fra 1, anvendelse af de samme standard længder på adgangskoder (normalt længde 7) ved ydeevnetests.
- Nye tilstande for generering af kontrollerede adgangskoder (cracking modes), herunder PRINCE fra hashcat (danner 'sætninger' ved at samle flere ord i rækkefølge efter stigende samlet længde), subsets (vælger adgangskoder med utilstrækkeligt antal forskellige tegn, selvom disse tegn kommer fra et stort sæt af muligheder) og hybrid external (gør det muligt for eksterne tilstande, der er beskrevet i konfigurationsfiler på C-lignende sprog, at danne mange kontrollerede adgangskoder baseret på hvert grundlæggende 'ord' fra en anden tilstand). Desuden flere nye foruddefinerede eksterne tilstande.
- Yderligere muligheder for at bruge flere tilstande samtidigt (en oven på den anden — stacking), såvel som for at bruge sæt af regler (wordlist rules stacking) på samme måde.
- Forbedringer af masketilstande (gradvis udvidelse af masken inden for et angivet længdeområde, anvendelse af masken på OpenCL-enheden eller FPGA-kortet) og single crack (fornuftig adfærd på enheder, der beregner et stort antal hashes parallelt, hvilket før i denne tilstand ikke havde tilstrækkelige kontrollerede adgangskoder, såvel som begrænsninger på hukommelsesforbrug).
- Mange forbedringer af understøttelse af Unicode og andre kodninger i forskellige undersystemer.
- Mange forbedringer af programmerne *2john (der konverterer filer fra forskellige formater til
brug med john), især wpapcap2john (behandler WiFi-trafik). - Mange nye kommandolinjeindstillinger, indstillinger i john.conf, konfigurationsscriptindstillinger og de dertilhørende nye funktioner, ikke alt er blevet nævnt her.
- Forbedring af kodekvalitet takket være indbygget support til fejlsøgningsbuilds med AddressSanitizer (tidligere) og UndefinedBehaviorSanitizer (tilføjet), tilføjelse af indbygget fuzzere for formater (i forbindelse med GSoC 2015), anvendelse af kontinuerlig integration (builds på mange kombinationer af operativsystemer og compilere og testning i dem korrekt support af alle formater).
Kilde: opennet.ru
