John the Ripper 1.9.0-jumbo-1 kumasulidwa ndi chithandizo cha FPGA

Zatulutsidwa mtundu watsopano wa pulogalamu yakale kwambiri yolozera mawu achinsinsi John the Ripper 1.9.0-jumbo-1 (ntchitoyi yakhala ikukula kuyambira 1996). Zaka 1.8.0 zapita kuchokera kutulutsidwa kwa mtundu wakale wa 1-jumbo-4.5, pomwe zosintha zopitilira 6000 (git commits) zidapangidwa kuchokera kwa opanga oposa 80. Zikomo ku kuphatikiza mosalekeza, zomwe zimaphatikizapo kuwunika koyambirira kwa kusintha kulikonse (koka pempho) pamapulatifomu ambiri, panthawiyi omwe opanga adalimbikitsa kugwiritsa ntchito kusindikiza kwaposachedwa kuchokera ku GitHub, zomwe zinakhalabe zokhazikika ngakhale kusintha komwe kunapangidwa. Main polojekiti kodi wogawidwa ndi pansi pa layisensi ya GPLv2+, ndipo code ya zigawo zina ili pansi pa layisensi ya BSD.

Mbali yapadera ya mtundu watsopano ndi mawonekedwe a chithandizo cha FPGA (kuphatikiza CPU, GPU ndi Xeon Phi). Za matabwa ZTEX 1.15y, kuphatikiza tchipisi 4 za FPGA ndipo zomwe zidagwiritsidwa ntchito makamaka pamigodi ya Bitcoin, mitundu 7 ya mawu achinsinsi akugwiritsidwa ntchito: bcrypt, classic descrypt (kuphatikiza bigcrypt), sha512crypt, sha256crypt, md5crypt (kuphatikiza Apache apr1 ndi AIX smd5), Drupal7 ndi phpass (yogwiritsidwa ntchito , makamaka mu WordPress). Zina mwazo zimayikidwa pa FPGA koyamba.

Kwa bcrypt, magwiridwe antchito a ~ 119k c/s ndi 2 ^ 5 iterations ("$ 2b $ 05") ndi mphamvu ya ~ 27 watts amaposa zotsatira za GPUs zaposachedwa pa bolodi, pamtengo wa hardware, ndi pa watt. . Amathandizidwanso masango a matabwa amtundu uwu, omwe ayesedwa mpaka matabwa a 16 (64 FPGA tchipisi) olamulidwa kuchokera ku Raspberry Pi 2 imodzi. Magwiridwe anthawi zonse a John the Ripper amathandizidwa, kuphatikiza mitundu yonse yolozera mawu achinsinsi ndikutsitsa munthawi yomweyo ma hashes ambiri. .

Kuti tifulumizitse ntchitoyi, tidagwiritsa ntchito chigoba (mawonekedwe a "-mask", kuphatikiza ndi mitundu ina) ndikuyerekeza ma hashes owerengeka ndi omwe adapakidwa mbali ya FPGA. Kutengera momwe mungakhazikitsire, zambiri zamapangidwe (mwachitsanzo. sha512crypt ndi Drupal7) midadada yokhala ndi ma processor cores amitundu yambiri (soft CPU cores) yolumikizana ndi ma cryptographic cores amagwiritsidwa ntchito. Kukula kwa magwiridwe antchito awa adatsogozedwa ndi Denis Burykin mogwirizana ndi opanga ma jumbo ena.

Zosintha zina zofunika:

  • Kuthandizira mitundu yambiri yowonjezera ya ma hashes, ma ciphers, ndi zina zambiri, kuphatikiza ma hashes achinsinsi (mwachitsanzo, kuchokera kumitundu yatsopano ya QNX), komanso ma wallet a cryptocurrency, zolemba zakale ndi mafayilo osungidwa (mwachitsanzo, Bitlocker ndi FreeBSD geli), komanso kuthandizira mitundu yatsopano yamitundu yomwe idathandizidwa kale (mwachitsanzo, thandizo lowonjezera la bcrypt-pbkdf la OpenBSD softraid) ndi zina zambiri. Pazonse, mawonekedwe 80 awonjezedwa pa CPU ndi 47 pa OpenCL. Chiwerengero chonse cha mafomu tsopano ndi 407 pa CPU (kapena 262 osaphatikiza ma "dynamic" opangidwa kuchokera kumafayilo osintha) ndi 88 pa OpenCL.
  • Kukana kuthandizira chilankhulo cha CUDA mokomera OpenCL, zomwe sizimasokoneza kugwiritsa ntchito kwathunthu kwa NVIDIA GPU (ndipo zimathandiza, chifukwa choyang'ana chitukuko ndi kukhathamiritsa pa kukhazikitsa kumodzi kwa mtundu uliwonse wa GPU m'malo mwa kukhazikitsa kuwiri koyambirira).
  • Kuthandizira kwa ma seti atsopano a malangizo a SIMD - AVX2, AVX-512 (kuphatikiza m'badwo wachiwiri Xeon Phi) ndi MIC (m'badwo woyamba) - komanso kugwiritsa ntchito konsekonse komanso kwathunthu kwa SIMD pakukhazikitsa mitundu yambiri, kuphatikiza kugwiritsa ntchito malangizo omwe adathandizidwa kale amakhazikitsa AVX ndi XOP pa x86 (-64) ndi
    NEON, ASID ndi AltiVec pa ARM, Aarch64 ndi POWER, motsatana.

  • Kukhathamiritsa kochulukirapo kwa CPU ndi OpenCL, zonse kuti zigwire ntchito bwino ndi kuchuluka kwa ma hashi nthawi imodzi (mwachitsanzo, kutsitsa ma hashi 320 miliyoni a SHA-1 pa GPU kudayesedwa), ndikuwonjezera kuthamanga kwa mawerengedwe a hashi. Zina mwazinthu izi ndi zapadziko lonse lapansi, zina zimakhala ndi magawo osiyanasiyana amitundu, ndipo zambiri zimakhala zamtundu uliwonse.
  • (Auto-) kasinthidwe ka kusungika koyenera kwa mawu achinsinsi osungidwa pa CPU (β€œβ€”tune=auto β€”verbosity=5”) ndi makulidwe oyenera a ntchito pa OpenCL (yosinthidwa mwachisawawa), kuphatikizapo kutengera njira yoyenda pang'onopang'ono mpaka kumagwira ntchito pafupipafupi. ya NVIDIA GTX ma GPU 10xx ndi atsopano. Kugwiritsa ntchito ma hashes odzaza ndi kutalika kwenikweni kwa mawu achinsinsi omwe akufufuzidwa (pamene amadziwika pasadakhale) pakukonzekera kotere.
  • Kuwonjezera chojambulira cha "mawu amphamvu" otchulidwa mwachindunji pamzere wolamula ndikukhazikitsa mitundu yatsopano ya hashi yosakanizidwa, mwachitsanzo "-format=dynamic='sha1(md5($p).$s)'", yowerengedwa pa CPU pogwiritsa ntchito SIMD . Monga zigawo za mawu oterowo, ma hashes othamanga ambiri amathandizidwa (kuchokera ku wamba ngati MD5 kupita kuzinthu zachilendo monga Whirlpool), kulumikizana kwa substring, encoding ndi decoding, kutembenuka kwa mawonekedwe, mawu achinsinsi, mchere, dzina lolowera ndi zingwe zokhazikika.
  • Kuchotsa kusiyana kosafunika kuchokera ku hashcat, kuphatikizapo kuthandizira malamulo enieni a hashcat (malamulo a malamulo a mawu), kusintha kupita ku OpenCL chiwerengero cha chipangizo kuchokera ku 1, kugwiritsa ntchito kosasintha kwa kutalika kwa mawu achinsinsi omwewo (nthawi zambiri kutalika kwa 7) kwa mayesero a ntchito.
  • Mitundu yatsopano yopangira mawu achinsinsi otsimikizika (machitidwe osweka), kuphatikiza PRINCE kuchokera ku hashcat (mawonekedwe "mawu" pophatikiza mawu angapo pakuchulukira kwa utali wonse), magawo ang'onoang'ono (amabweretsa mawu achinsinsi okhala ndi zilembo zosakwanira, ngakhale zilembo izi zibwera. kuchokera kumagulu akuluakulu omwe angatheke) ndi hybrid kunja (amalola mitundu yakunja, yofotokozedwa m'mafayilo osinthika m'chinenero chofanana ndi C, kuti apange mawu achinsinsi ambiri ovomerezeka kutengera "mawu" oyambirira omwe alandiridwa kuchokera kumtundu wina). Komanso, zingapo zatsopano predefined kunja modes.
  • Zowonjezerapo zogwiritsira ntchito mitundu ingapo nthawi imodzi (imodzi pamwamba pa inzake - stacking), komanso kugwiritsa ntchito malamulo (mawu a mawu a stacking).
  • Kusintha kwa mitundu ya chigoba (kutambasula pang'onopang'ono kwa chigoba muutali wodziwika, kugwiritsa ntchito chigoba kumbali ya chipangizo cha OpenCL kapena bolodi la FPGA) ndi kuthyola kamodzi (makhalidwe oyenera pazida zomwe zimawerengera kuchuluka kwa ma hashes mofananira. , zomwe m'mbuyomu zinalibe mawu achinsinsi otsimikizirika munjira iyi, komanso zoletsa kugwiritsa ntchito kukumbukira).
  • Zosintha zambiri zothandizira Unicode ndi ma encoding ena m'magawo osiyanasiyana.
  • Zosintha zambiri pamapulogalamu a * 2john (omwe amasintha mafayilo amitundu yosiyanasiyana
    gwiritsani ntchito ndi john), makamaka wpapcap2john (imagwira ntchito za WiFi).

  • Pali zosankha zambiri zatsopano za mzere wamalamulo, zoikamo mu john.conf, sinthani script zosankha ndi zofananira zatsopano, osati zonse zomwe zatchulidwa pano.
  • Kupititsa patsogolo kachidindo chifukwa chothandizira kukonza zolakwika ndi AddressSanitizer (kale) ndi UndefinedBehaviorSanitizer (yowonjezedwa), ndikuwonjezera fuzzer yomangidwa (monga gawo la GSoC 2015), pogwiritsa ntchito kuphatikiza kosalekeza (kumanga makina ambiri ogwiritsira ntchito ndi compilers. kuphatikiza ndikuwayesa kuti athandizidwe bwino pamawonekedwe onse).

Source: opennet.ru

Kuwonjezera ndemanga