John the Ripper 1.9.0-jumbo-1 kun FPGA-subteno

Liberigita nova versio de la plej malnova subtenata pasvorta divenprogramo John the Ripper 1.9.0-jumbo-1. (La projekto disvolviĝas ekde 1996.) On projekto paĝo Fontoj estas disponeblaj por elŝuto, same kiel pretaj asembleoj por Vindozo.

Oni rimarkas, ke 1.8.0 jaroj pasis ekde la ĵeto de versio 1-jumbo-4.5, dum kiu pli ol 6000 80 ŝanĝoj (git-komisioj) estis faritaj de pli ol XNUMX programistoj. Dum ĉi tiu periodo, la programistoj rekomendis uzi aktuala eldono de GitHub, kies stato estis konservita stabila malgraŭ la ŝanĝoj faritaj danke al kontinua integriĝo, kiu inkluzivas antaŭan konfirmon de ĉiu ŝanĝo (tira peto) sur multaj platformoj. Speciala trajto de la nova versio estas la aspekto de subteno por FPGA (FPGA) krom CPU, GPU kaj Xeon Phi.


Por tabuloj ZTEX 1.15y, inkluzive de 4 FPGA-fritoj kaj origine uzataj ĉefe por Bitcoin-minado, 7 specoj de pasvortaj haŝoj nun estas efektivigitaj: bcrypt, klasika deĉifri (inkluzive de bigcrypt), sha512crypt, sha256crypt, md5crypt (inkluzive de Apache apr1 kaj AIX smd5), Drupal7 kaj phpass (uzata). , precipe en WordPress). Kelkaj el ili estas efektivigitaj sur FPGA por la unua fojo. Por bcrypt, la atingita rendimento de ~119k c/s kun 2^5 ripetoj ("$ 2b$ 05") kun elektrokonsumo de proksimume 27 vatoj signife superas la rezultojn por la plej novaj GPU-oj per tabulo, per aparatara prezo kaj per vato. Ankaŭ subtenata aretoj de tabuloj de ĉi tiu tipo, kiu estis provita ĝis 16 tabuloj (64 FPGAs) kontrolitaj de ununura Raspberry Pi 2. La kutima funkcieco de John the Ripper estas subtenata, inkluzive de ĉiuj pasvortdiveni reĝimoj kaj samtempa elŝuto de granda nombro da hashoj. Por akceli la laboron, ni efektivigis la uzon de masko (la "--mask" reĝimo, inkluzive en kombinaĵo kun aliaj reĝimoj) kaj komparo de la kalkulitaj hashoj kun tiuj ŝarĝitaj sur la FPGA-flanko. De efektivigperspektivo, multaj el la dezajnoj (ekz. sha512crypt kaj Drupalo7) blokoj konsistantaj el plurfadenaj procesorkernoj (molaj CPU-kernoj) interagaj kun kriptografaj kernoj estas uzitaj. La evoluo de ĉi tiu funkcio estis gvidita de Denis Burykin en kunordigo kun aliaj jumbo-programistoj.

Aliaj gravaj ŝanĝoj:

  • Subteno por granda nombro da aldonaj specoj de haŝiŝoj, ĉifroj, ktp., inkluzive de kaj klasikaj pasvortaj haŝoj (ekzemple, de novaj versioj de QNX), same kiel kriptaj monujoj, ĉifritaj arkivoj kaj ĉifritaj dosiersistemoj (ekzemple, Bitlocker kaj FreeBSD geli), same kiel subtenon por novaj specoj de formatoj antaŭe subtenataj (ekzemple, aldonita subteno por bcrypt-pbkdf por OpenBSD softraid) kaj multe pli. Entute, 80 formatoj estis aldonitaj sur CPU kaj 47 sur OpenCL (kaj malgranda nombro da malnovaj estis forigitaj kiel integritaj al novaj kaj malnoviĝintaj). La totala nombro da formatoj nun estas 407 sur la CPU (aŭ 262 ne inkluzivante "dinamikajn" formatojn agorditajn de agordaj dosieroj) kaj 88 ĉe OpenCL.
  • Rifuzo subteni la CUDA-lingvon favore al OpenCL, kiu neniel malhelpas la plenan uzadon de NVIDIA GPU-oj (kaj eĉ helpas, danke al fokusado de disvolviĝo kaj optimumigo al unu efektivigo de ĉiu formato por la GPU anstataŭ du efektivigoj antaŭe).
  • Subteno por novaj SIMD-instrukcioj - AVX2, AVX-512 (inkluzive por la dua generacio Xeon Phi) kaj MIC (por la unua generacio) - same kiel pli universala kaj kompleta uzo de SIMD en efektivigoj de multaj formatoj, inkluzive de la uzo de antaŭe subtenataj instrukcioj ĝis AVX kaj XOP sur x86(-64) kaj
    NEON, ASIMD kaj AltiVec sur ARM, Aarch64 kaj POWER, respektive. (Parte kiel parto de GSoC 2015.)
  • Multaj optimumigoj por CPU kaj OpenCL, ambaŭ por pli efike labori kun granda nombro da hashoj samtempe (ekzemple, ŝarĝo de 320 milionoj SHA-1 hashes sur la GPU), kaj por pliigi la rapidecon de hash-kalkuloj. Iuj el ĉi tiuj optimumigoj estas universalaj, iuj kovras malsamajn subarojn de formatoj, kaj multaj estas specifaj por individuaj formatoj.
  • (Aŭtomata) agordo de optimuma bufro de kontrolitaj pasvortoj sur la CPU ("—tune=auto —verbosity=5") kaj optimumaj laborgrandoj sur OpenCL (ebligita defaŭlte), inkluzive de konsidero de la malrapida pliiĝo de NVIDIA GTX serioj GPU-oj al plena funkcia frekvenco 10xx kaj pli nova. Uzante efektive ŝarĝitajn haŝojn kaj la realan longon de la pasvortoj kontrolitaj (kiam ĝi estas konata anticipe) por tia aŭtomata agordiĝo.
  • Aldonante kompililon por "dinamikaj esprimoj" specifitaj rekte sur la komandlinio kaj efektivigante novajn hibridajn haŝtipojn, ekzemple "-format=dynamic='sha1(md5($p).$s)'", kalkulita sur la CPU uzante SIMD . Kiel komponentoj de tiaj esprimoj, dekduoj da rapidaj haŝiŝoj estas subtenataj (de oftaj kiel MD5 ĝis modere ekzotikaj kiel Whirlpool), subŝnuro kunkatenado, kodigado kaj malkodado, signo-majuskla konvertiĝo, referencoj al pasvorto, salo, uzantnomo kaj ĉenkonstantoj.
  • Forigo de nedezirataj diferencoj de hashcat, inkluzive de subteno por antaŭe hashcat-specifaj reguloj (vortlistaj regulkomandoj), transiro al OpenCL-aparato numerado de 1, defaŭlta uzo de la samaj pasvortlongoj (kutime longeco 7) por agadotestoj.
  • Novaj reĝimoj por generi kontroleblajn pasvortojn (krakaj reĝimoj), inkluzive de PRINCE de hashcat (formas "frazojn" kombinante plurajn vortojn en kreskanta ordo de totala longo), subaroj (alportas pasvortojn kun nesufiĉa nombro da malsamaj signoj, eĉ se tiuj signoj venas. el granda aro da eblaj) kaj hibrida ekstera (ebligas eksterajn reĝimojn, priskribitajn en agordaj dosieroj en C-simila lingvo, generi multajn kontroleblajn pasvortojn surbaze de ĉiu baza "vorto" ricevita de alia reĝimo). Ankaŭ, pluraj novaj antaŭdifinitaj eksteraj reĝimoj.
  • Kromaj funkcioj por uzi plurajn reĝimojn samtempe (unu super la alia - stakiĝo), same kiel por uzi regulojn (vortlista reguloj stakado).
  • Pliboniĝoj al la maskaj reĝimoj (laŭgrada streĉado de la masko en difinita gamo da longoj, aplikado de masko flanke de la OpenCL-aparato aŭ FPGA-tabulo) kaj ununura fendo (racia konduto ĉe aparatoj, kiuj kalkulas grandan nombron da hashoj paralele). , por kiuj antaŭe ne estis sufiĉe da kontroleblaj pasvortoj en ĉi tiu reĝimo, kaj ankaŭ limigoj pri memorkonsumo).
  • Multaj plibonigoj por subteni Unikodon kaj aliajn kodigojn en malsamaj subsistemoj.
  • Multaj plibonigoj al *2john-programoj (kiuj konvertas dosierojn de malsamaj formatoj por
    uzi kun john), precipe wpapcap2john (traktas WiFi-trafikon).
  • Estas multaj novaj komandliniaj opcioj, agordoj en john.conf, agordi skriptoopciojn kaj respondajn novajn funkciojn, ne ĉiuj el kiuj estis menciitaj ĉi tie.
  • Plibonigante kodkvaliton danke al enkonstruita subteno por sencimigaj konstruoj kun AddressSanitizer (antaŭe) kaj UndefinedBehaviorSanitizer (aldonita), aldonante enkonstruitan formaton fuzzer (kiel parto de GSoC 2015), uzante kontinuan integriĝon (konstruaĵoj por dekoj da operaciumo kaj kompililo). kombinaĵoj kaj testi ilin por ĝusta subteno por ĉiuj formatoj).

fonto: linux.org.ru

Aldoni komenton