Նոր տարբերակի առանձնահատուկ առանձնահատկությունը FPGA-ի աջակցության տեսքն է (բացի պրոցեսորից, GPU-ից և Xeon Phi-ից): Տախտակների համար
bcrypt-ի համար ~119k c/s-ի ձեռք բերված կատարումը 2^5 կրկնություններով («$2b$05») ~27 Վտ էներգիայի սպառման դեպքում զգալիորեն գերազանցում է վերջին GPU-ների արդյունքները մեկ տախտակի, սարքաշարի գնի և մեկ վտ-ի համար: . Նաև աջակցվում է
Աշխատանքն արագացնելու համար մենք իրականացրել ենք դիմակի օգտագործումը («-դիմակ» ռեժիմը, այդ թվում՝ այլ ռեժիմների հետ համատեղ) և հաշվարկված հեշերի համեմատությունը FPGA-ի կողմում բեռնվածների հետ: Իրականացման տեսանկյունից, նախագծերից շատերը (օրինակ.
Այլ կարևոր փոփոխություններ.
- Աջակցություն մեծ թվով լրացուցիչ տեսակի հեշերի, ծածկագրերի և այլնի համար, ներառյալ դասական գաղտնաբառերի հեշերը (օրինակ՝ QNX-ի նոր տարբերակներից), ինչպես նաև կրիպտոարժույթների դրամապանակներ, կոդավորված արխիվներ և կոդավորված ֆայլային համակարգեր (օրինակ՝ Bitlocker և FreeBSD geli), ինչպես նաև նախկինում աջակցվող ձևաչափերի նոր տեսակների աջակցություն (օրինակ՝ ավելացված աջակցություն bcrypt-pbkdf-ին OpenBSD softraid-ի համար) և շատ ավելին: Ընդհանուր առմամբ, պրոցեսորի վրա ավելացվել է 80 ձևաչափ, իսկ OpenCL-ում՝ 47: Ձևաչափերի ընդհանուր թիվն այժմ 407 է պրոցեսորի վրա (կամ 262-ը՝ առանց կազմաձևման ֆայլերից կազմաձևված «դինամիկ» ձևաչափերի), իսկ OpenCL-ում՝ 88:
- Հրաժարվում է աջակցել CUDA լեզվին հօգուտ OpenCL-ի, որը ոչ մի կերպ չի խանգարում NVIDIA GPU-ների լիարժեք օգտագործմանը (և նույնիսկ օգնում է մշակման և օպտիմիզացման շնորհիվ յուրաքանչյուր ձևաչափի մեկ իրականացման վրա GPU-ի համար նախկինում երկու ներդրման փոխարեն):
- Աջակցություն նոր SIMD հրահանգների հավաքածուներին՝ AVX2, AVX-512 (ներառյալ երկրորդ սերնդի Xeon Phi) և MIC (առաջին սերնդի համար), ինչպես նաև SIMD-ի ավելի համընդհանուր և ամբողջական օգտագործումը բազմաթիվ ձևաչափերի իրագործման մեջ, ներառյալ՝ նախկինում աջակցվող հրահանգը սահմանում է մինչև AVX և XOP x86(-64) և
NEON-ը, ASIMD-ը և AltiVec-ը համապատասխանաբար ARM-ի, Aarch64-ի և POWER-ի վրա: - Բազմաթիվ օպտիմիզացումներ CPU-ի և OpenCL-ի համար՝ միաժամանակ մեծ թվով հեշերի հետ ավելի արդյունավետ աշխատելու համար (օրինակ, փորձարկվել է 320 միլիոն SHA-1 հեշեր GPU-ի վրա), և հեշ հաշվարկների արագությունը մեծացնելու համար: Այս օպտիմալացումներից մի քանիսը ունիվերսալ են, որոշներն ընդգրկում են ձևաչափերի տարբեր ենթախմբեր, և շատերը հատուկ են առանձին ձևաչափերին:
- (Ավտո-) CPU-ի վրա ստուգված գաղտնաբառերի օպտիմալ բուֆերացման («—tune=auto —verbosity=5») և OpenCL-ում աշխատանքի օպտիմալ չափերի կազմաձևում (միացված է լռելյայն), ներառյալ դանդաղ թեքությունը մինչև գործառնական ամբողջ հաճախականությունը: NVIDIA GTX սերիայի GPU 10xx և ավելի նոր: Օգտագործելով իրականում բեռնված հեշերը և ստուգվող գաղտնաբառերի իրական երկարությունը (երբ դա նախապես հայտնի է) նման ավտոմատ կարգաբերման համար:
- Անմիջապես հրամանի տողում նշված «դինամիկ արտահայտությունների» կոմպիլյատորի ավելացում և նոր հիբրիդ հեշ տեսակների ներդրում, օրինակ՝ «-format=dynamic='sha1(md5($p).$s)'», որը հաշվարկվում է պրոցեսորի վրա՝ օգտագործելով SIMD: . Որպես այդպիսի արտահայտությունների բաղադրամասեր, աջակցվում են տասնյակ արագ հեշեր (սովորականներից, ինչպիսիք են MD5-ը մինչև չափավոր էկզոտիկները, ինչպիսին է Whirlpool-ը), ենթալարերի միացում, կոդավորում և վերծանում, նիշերի փոխակերպում, հղումներ գաղտնաբառին, աղին, օգտվողի անունին և լարային հաստատուններին:
- Hashcat-ից անցանկալի տարբերությունների վերացում, ներառյալ նախկինում hashcat-ին հատուկ կանոնների աջակցություն (wordlist կանոնների հրամաններ), անցում OpenCL սարքի համարակալման 1-ից, նույն գաղտնաբառի երկարությունների լռելյայն օգտագործումը (սովորաբար երկարությունը 7) կատարողականի թեստերի համար:
- Ստուգման ենթակա գաղտնաբառերի ստեղծման նոր ռեժիմներ (ճեղքման ռեժիմներ), ներառյալ PRINCE-ը hashcat-ից (ձևավորում է «արտահայտություններ»՝ մի քանի բառեր համադրելով ընդհանուր երկարության մեծացման կարգով), ենթաբազմություններ (բերում է գաղտնաբառեր ոչ բավարար թվով տարբեր նիշերով, նույնիսկ եթե այդ նիշերը գալիս են։ հնարավորների մեծ շարքից) և հիբրիդային արտաքին (թույլ է տալիս արտաքին ռեժիմներին, որոնք նկարագրված են կազմաձևման ֆայլերում C-ի լեզվով, ստեղծել բազմաթիվ ստուգելի գաղտնաբառեր՝ հիմնվելով մեկ այլ ռեժիմից ստացված յուրաքանչյուր հիմնական «բառի» վրա): Նաև մի քանի նոր նախապես սահմանված արտաքին ռեժիմներ:
- Լրացուցիչ հնարավորություններ՝ միաժամանակ մի քանի ռեժիմների օգտագործման համար (մեկը մյուսի վրա՝ stacking), ինչպես նաև կանոնների հավաքածուներ օգտագործելու համար (wordlist rules stacking):
- Դիմակի ռեժիմների բարելավում (դիմակի աստիճանական ձգում որոշակի երկարությունների միջակայքում, դիմակի կիրառում OpenCL սարքի կամ FPGA տախտակի կողքին) և մեկ ճեղքվածքի (խելամիտ վարքագիծ սարքերում, որոնք զուգահեռաբար հաշվարկում են մեծ թվով հեշեր): , որի համար նախկինում այս ռեժիմում չկային բավարար ստուգվող գաղտնաբառեր, ինչպես նաև հիշողության սպառման սահմանափակումներ):
- Շատ բարելավումներ՝ տարբեր ենթահամակարգերում Unicode-ի և այլ կոդավորումների աջակցության համար:
- *2john ծրագրերի բազմաթիվ բարելավումներ (որոնք փոխակերպում են տարբեր ձևաչափերի ֆայլեր
օգտագործել john-ի հետ), հատկապես wpapcap2john (կարգավորում է WiFi-ի տրաֆիկը): - Կան բազմաթիվ նոր հրամանի տող տարբերակներ, կարգավորումներ john.conf-ում, կարգավորել սցենարի ընտրանքները և համապատասխան նոր հնարավորություններ, որոնցից ոչ բոլորն են նշված այստեղ:
- Կոդերի որակի բարելավում AddressSanitizer-ի (նախկինում) և UndefinedBehaviorSanitizer-ի (ավելացված) միջոցով վրիպազերծման կառուցումների ներկառուցված աջակցության շնորհիվ, ներկառուցված ձևաչափի fuzzer ավելացնելով (որպես GSoC 2015-ի մաս), օգտագործելով շարունակական ինտեգրում (կառուցումներ տասնյակ օպերացիոն համակարգերի և կոմպիլյատորների համար: համակցություններ և փորձարկել դրանք բոլոր ձևաչափերի համար ճիշտ աջակցության համար):
Source: opennet.ru