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

Vrygestel nuwe weergawe van die oudste ondersteunde wagwoordraaiprogram John the Ripper 1.9.0-jumbo-1 (die projek ontwikkel sedert 1996). 1.8.0 jaar het verloop sedert die vrystelling van die vorige weergawe 1-jumbo-4.5, waartydens meer as 6000 veranderinge (git commits) van meer as 80 ontwikkelaars gemaak is. Te danke aan deurlopende integrasie, wat 'n voorlopige kontrole van elke verandering (trekversoek) op baie platforms insluit, gedurende hierdie tydperk het die ontwikkelaars aanbeveel om huidige hersiening vanaf GitHub, waarvan die toestand stabiel gehandhaaf is ondanks die veranderinge wat aangebring is. Hoofprojekkode versprei deur onder die GPLv2+-lisensie, en die kode van sommige komponente is onder die BSD-lisensie.

'n Spesiale kenmerk van die nuwe weergawe is die voorkoms van FPGA-ondersteuning (bykomend tot SVE, GPU en Xeon Phi). Vir planke Ztex 1.15j, insluitend 4 FPGA-skyfies en oorspronklik hoofsaaklik vir Bitcoin-mynbou gebruik, word 7 tipes wagwoord-hashes nou geïmplementeer: bcrypt, classic descrypt (insluitend bigcrypt), sha512crypt, sha256crypt, md5crypt (insluitend Apache apr1 en AIX smd5), Drupal7 en phpass (gebruik , veral in WordPress). Sommige van hulle word vir die eerste keer op FPGA geïmplementeer.

Vir bcrypt oorskry die behaalde werkverrigting van ~119k c/s met 2^5 iterasies ("$2b$05") met 'n kragverbruik van ~27 watt die resultate vir die nuutste GPU's per bord, per hardewareprys en per watt aansienlik . Ook ondersteun trosse van planke van hierdie tipe, wat getoets is tot 16 borde (64 FPGA-skyfies) beheer vanaf 'n enkele Raspberry Pi 2. Die gewone John the Ripper-funksie word ondersteun, insluitend alle wagwoordraaimodusse en gelyktydige aflaai van 'n groot aantal hashes .

Om die werk te bespoedig, het ons die gebruik van 'n masker geïmplementeer (die "-masker"-modus, insluitend in kombinasie met ander modusse) en vergelyking van die berekende hashes met dié wat op die FPGA-kant gelaai is. Vanuit 'n implementeringsoogpunt, baie van die ontwerpe (bv. sha512crypt en Drupal7) gebruik blokke wat bestaan ​​uit multi-draad verwerker kerne (sagte CPU kerne) in wisselwerking met kriptografiese kerne. Die ontwikkeling van hierdie funksionaliteit is gelei deur Denis Burykin in samewerking met ander jumbo-ontwikkelaars.

Ander belangrike veranderinge:

  • Ondersteuning vir 'n groot aantal bykomende tipes hashes, syfers, ens., insluitend beide klassieke wagwoord-hashes (byvoorbeeld van nuwe weergawes van QNX), sowel as cryptocurrency-beursies, geënkripteerde argiewe en geënkripteerde lêerstelsels (byvoorbeeld Bitlocker en FreeBSD geli), sowel as ondersteuning vir nuwe tipes formate wat voorheen ondersteun is (byvoorbeeld bygevoegde ondersteuning vir bcrypt-pbkdf vir OpenBSD softraid) en nog baie meer. In totaal is 80 formate bygevoeg op CPU en 47 op OpenCL. Die totale aantal formate is nou 407 op die SVE (of 262 sonder "dinamiese" formate wat vanaf konfigurasielêers gekonfigureer is) en 88 op OpenCL.
  • Verwydering van CUDA-taalondersteuning ten gunste van OpenCL, wat nie in die minste inmeng met die volle gebruik van die NVIDIA GPU nie (en selfs help, danksy die fokus van ontwikkeling en optimalisering op een implementering van elke formaat onder die GPU in plaas van twee implementerings voorheen).
  • Ondersteuning vir nuwe SIMD-instruksiestelle - AVX2, AVX-512 (insluitend vir die tweede generasie Xeon Phi) en MIC (vir die eerste generasie) - sowel as meer universele en volledige gebruik van SIMD in implementering van baie formate, insluitend die gebruik van voorheen ondersteunde instruksiestelle tot AVX en XOP op x86(-64) en
    NEON, ASIMD en AltiVec op onderskeidelik ARM, Aarch64 en POWER.

  • Talle optimaliserings vir CPU en OpenCL, beide om meer doeltreffend te werk met 'n groot aantal hashes op dieselfde tyd (byvoorbeeld om 320 miljoen SHA-1 hashes op die GPU te laai) en om die spoed van hash-berekening te verhoog. Sommige van hierdie optimaliserings is universeel, sommige dek verskeie substelle formate, en baie is formaatspesifiek.
  • (Outo-)konfigurasie van optimale buffering van gekontroleerde wagwoorde op die SVE (“—tune=auto —verbosity=5”) en optimale werkgroottes op OpenCL (by verstek geaktiveer), insluitend die inagneming van die stadige oprit na volle bedryfsfrekwensie van NVIDIA GTX-reeks GPU's 10xx en nuwer. Gebruik werklik gelaaide hashes en die werklike lengte van die wagwoorde wat nagegaan word (wanneer dit vooraf bekend is) vir sulke outo-instelling.
  • Die byvoeging van 'n samesteller vir "dinamiese uitdrukkings" wat direk op die opdragreël gespesifiseer word en die implementering van nuwe hibriede hash-tipes, byvoorbeeld "-format=dynamic='sha1(md5($p).$s)'", bereken op die SVE met SIMD . As komponente van sulke uitdrukkings word dosyne vinnige hashes ondersteun (van gewones soos MD5 tot matig eksotiese soos Whirlpool), substring aaneenskakeling, enkodering en dekodering, karakterkas-omskakeling, verwysings na wagwoord, sout, gebruikernaam en stringkonstantes.
  • Uitskakeling van ongewenste verskille van hashcat, insluitend ondersteuning vir voorheen hashcat-spesifieke woordlysreëlopdragte, oorskakeling na OpenCL-toestelnommering vanaf 1, met dieselfde verstekwagwoordlengtes (gewoonlik lengte 7) vir prestasietoetse.
  • Nuwe kraakmodusse, insluitend PRINCE van hashcat (genereer "frases" deur veelvuldige woorde in stygende volgorde van totale lengte aaneen te koppel), subversamelings (bring wagwoorde met nie genoeg verskillende karakters nie, selfs al kom daardie karakters uit 'n groot stel moontlikes) en hibriede eksterne (laat eksterne modusse, beskryf in konfigurasielêers in C-agtige taal, baie verifieerbare wagwoorde genereer gebaseer op elke basis "woord" wat van 'n ander modus ontvang word). Ook verskeie nuwe voorafbepaalde eksterne modusse.
  • Bykomende kenmerke vir die gebruik van verskeie modusse op dieselfde tyd (een bo-op die ander - stapeling), sowel as vir sulke gebruik van reëlstelle (woordlysreëls stapel).
  • Verbeterings aan die maskermodusse (geleidelike maskerstrek in die gespesifiseerde reeks lengtes, die toepassing van die masker aan die kant van 'n OpenCL-toestel of FPGA-bord) en enkele kraak (redelike gedrag op toestelle wat 'n groot aantal hashes in parallel bereken, wat voorheen in hierdie modus ontbreek wagwoorde om na te gaan, en ook beperkings op geheueverbruik).
  • Baie verbeterings in ondersteuning vir Unicode en ander enkoderings in verskeie substelsels.
  • Baie verbeterings aan *2john-programme (omskakeling van lêers van verskillende formate na
    gebruik saam met john), veral wpapcap2john (hanteer WiFi-verkeer).

  • Baie nuwe opdragreëlopsies, john.conf-instellings, konfigurasie van skripopsies en hul ooreenstemmende nuwe kenmerke, wat nie almal hier genoem is nie.
  • Verbetering van kodekwaliteit as gevolg van ingeboude ondersteuning vir ontfoutbou met AddressSanitizer (voorheen) en UndefinedBehaviorSanitizer (bygevoeg), voeg 'n ingeboude formaat fuzzer by (binne GSoC 2015), deur gebruik te maak van deurlopende integrasie (bou vir dosyne bedryfstelsel- en samestellerkombinasies en toets hulle vir korrekte ondersteuning van alle formate).

Bron: opennet.ru

Voeg 'n opmerking