John the Ripper 1.9.0-jumbo-1 թողարկվել է FPGA աջակցությամբ

Ազատ է արձակվել գաղտնաբառերի գուշակման ամենահին աջակցվող ծրագրի նոր տարբերակը John the Ripper 1.9.0-jumbo-1 (նախագիծը զարգանում է 1996 թվականից)։ Նախորդ՝ 1.8.0-jumbo-1 տարբերակի թողարկումից անցել է 4.5 տարի, որի ընթացքում ավելի քան 6000 ծրագրավորողներից կատարվել է ավելի քան 80 փոփոխություն (git commits)։ Շնորհիվ շարունակական ինտեգրում, որը ներառում է յուրաքանչյուր փոփոխության (ձգման հարցում) նախնական ստուգում բազմաթիվ հարթակներում, այս ժամանակահատվածում մշակողները խորհուրդ են տվել օգտագործել ընթացիկ հրատարակությունը GitHub-ից, որի վիճակը չնայած կատարված փոփոխություններին պահպանվել է կայուն։ Ծրագրի հիմնական կոդը տարածվում է GPLv2+ լիցենզիայի ներքո, իսկ որոշ բաղադրիչների կոդը գտնվում է BSD լիցենզիայի ներքո:

Նոր տարբերակի առանձնահատուկ առանձնահատկությունը FPGA-ի աջակցության տեսքն է (բացի պրոցեսորից, GPU-ից և Xeon Phi-ից): Տախտակների համար ZTEX 1.15y, ներառյալ 4 FPGA չիպեր և ի սկզբանե օգտագործվում էին հիմնականում բիթքոյն մայնինգի համար, այժմ ներդրվել են գաղտնաբառերի 7 տեսակ՝ bcrypt, դասական գաղտնազերծում (ներառյալ bigcrypt), sha512crypt, sha256crypt, md5crypt (ներառյալ Apache apr1 և AIX smd5), Drupal7 և phpass (օգտագործված): , մասնավորապես WordPress-ում): Դրանցից մի քանիսն առաջին անգամ են իրականացվում FPGA-ում:

bcrypt-ի համար ~119k c/s-ի ձեռք բերված կատարումը 2^5 կրկնություններով («$2b$05») ~27 Վտ էներգիայի սպառման դեպքում զգալիորեն գերազանցում է վերջին GPU-ների արդյունքները մեկ տախտակի, սարքաշարի գնի և մեկ վտ-ի համար: . Նաև աջակցվում է կլաստերներ այս տեսակի տախտակներ, որոնք փորձարկվել են մինչև 16 տախտակներ (64 FPGA չիպեր), որոնք կառավարվում են մեկ Raspberry Pi 2-ից: Աջակցվում է John the Ripper-ի սովորական գործառույթը՝ ներառյալ գաղտնաբառի գուշակման բոլոր ռեժիմները և մեծ թվով հեշերի միաժամանակյա ներբեռնումը: .

Աշխատանքն արագացնելու համար մենք իրականացրել ենք դիմակի օգտագործումը («-դիմակ» ռեժիմը, այդ թվում՝ այլ ռեժիմների հետ համատեղ) և հաշվարկված հեշերի համեմատությունը FPGA-ի կողմում բեռնվածների հետ: Իրականացման տեսանկյունից, նախագծերից շատերը (օրինակ. sha512crypt և Drupal7) օգտագործվում են կրիպտոգրաֆիկ միջուկների հետ փոխազդող բազմաթելային պրոցեսորային միջուկներից (փափուկ պրոցեսորային միջուկներից) բաղկացած բլոկներ։ Այս ֆունկցիոնալության զարգացումը ղեկավարել է Դենիս Բուրիկինը` համակարգելով այլ jumbo մշակողների հետ:

Այլ կարևոր փոփոխություններ.

  • Աջակցություն մեծ թվով լրացուցիչ տեսակի հեշերի, ծածկագրերի և այլնի համար, ներառյալ դասական գաղտնաբառերի հեշերը (օրինակ՝ 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

Добавить комментарий