Jon Ripper 1.9.0-jumbo-1, FPGA qo'llab-quvvatlashi bilan

Chiqarilgan eng qadimgi qo'llab-quvvatlanadigan parolni taxmin qilish dasturining yangi versiyasi Jon Ripper 1.9.0-jumbo-1. (Loyiha 1996 yildan beri ishlab chiqilmoqda.) Yon loyiha sahifasi Yuklab olish uchun manbalar, shuningdek, Windows uchun tayyor yig'ilishlar mavjud.

Qayd etilishicha, 1.8.0-jumbo-1 versiyasi chiqqanidan beri 4.5 yil o‘tdi, bu vaqt mobaynida 6000 dan ortiq dasturchilar tomonidan 80 dan ortiq o‘zgartirishlar (git commits) amalga oshirildi. Ushbu davrda ishlab chiquvchilar foydalanishni tavsiya qildilar GitHub-dan joriy versiya, tufayli qilingan o'zgarishlarga qaramay, holati barqaror saqlanib qoldi uzluksiz integratsiya, bu ko'plab platformalarda har bir o'zgarishni dastlabki tekshirishni (so'rovni tortib olish) o'z ichiga oladi. Yangi versiyaning o'ziga xos xususiyati CPU, GPU va Xeon Phi-dan tashqari FPGA (FPGA) ni qo'llab-quvvatlashning paydo bo'lishidir.


Plitalar uchun Ztex 1.15y, shu jumladan 4 ta FPGA chiplari va dastlab asosan Bitcoin qazib olish uchun ishlatilgan, hozirda 7 turdagi parol xeshlari joriy qilingan: bcrypt, klassik descrypt (jumladan, bigcrypt), sha512crypt, sha256crypt, md5crypt (jumladan, Apache apr1 va AIX smd5), Drupal7 va phpass (ishlatilgan). , xususan WordPressda). Ulardan ba'zilari FPGA da birinchi marta amalga oshirilgan. Bcrypt uchun, taxminan 119 vatt quvvat iste'moli bilan 2^5 iteratsiya bilan ("$2b$05") ~27k c/s erishilgan unumdorlik har bir plataga, har bir apparat narxiga va vattga eng so'nggi GPU natijalaridan sezilarli darajada oshadi. Shuningdek, qo'llab-quvvatlanadi klasterlar bitta Raspberry Pi 16 dan boshqariladigan 64 ta platagacha (2 FPGA) sinovdan o'tgan ushbu turdagi platalar soni. Odatiy Jon Ripper funksiyasi qo'llab-quvvatlanadi, jumladan parolni taxmin qilishning barcha rejimlari va bir vaqtning o'zida ko'p sonli xeshlarni yuklab olish. Ishni tezlashtirish uchun biz niqobdan ("--mask" rejimi, shu jumladan boshqa rejimlar bilan birgalikda) foydalanishni va hisoblangan xeshlarni FPGA tomonida yuklanganlar bilan taqqoslashni amalga oshirdik. Amalga oshirish nuqtai nazaridan ko'pgina dizaynlar (masalan, sha512crypt va Drupal7) kriptografik yadrolar bilan oʻzaro taʼsir qiluvchi koʻp tarmoqli protsessor yadrolaridan (yumshoq protsessor yadrolaridan) iborat bloklardan foydalanilgan. Ushbu funktsiyani ishlab chiqishni boshqa jumbo ishlab chiquvchilari bilan kelishilgan holda Denis Burykin boshqargan.

Boshqa muhim o'zgarishlar:

  • Ko'p sonli qo'shimcha turdagi xeshlar, shifrlar va boshqalarni qo'llab-quvvatlash, shu jumladan klassik parol xeshlari (masalan, QNXning yangi versiyalaridan), shuningdek kriptovalyuta hamyonlari, shifrlangan arxivlar va shifrlangan fayl tizimlari (masalan, Bitlocker va FreeBSD geli), shuningdek, ilgari qo'llab-quvvatlangan formatlarning yangi turlarini qo'llab-quvvatlash (masalan, OpenBSD dasturiy ta'minoti uchun bcrypt-pbkdf uchun qo'shimcha qo'llab-quvvatlash) va boshqalar. Hammasi bo'lib CPU-ga 80 ta format va OpenCL-ga 47 format qo'shilgan (va yangi va eskirganlarga integratsiyalashgan holda oz sonli eskilari o'chirilgan). Hozirda protsessorda formatlarning umumiy soni 407 ta (yoki konfiguratsiya fayllaridan tuzilgan “dinamik” formatlarni hisobga olmaganda 262 ta) va OpenCL da 88 ta.
  • OpenCL foydasiga CUDA tilini qo'llab-quvvatlashni olib tashlash, bu NVIDIA GPU-dan to'liq foydalanishga hech qanday xalaqit bermaydi (va hatto ikkita format o'rniga GPU ostida har bir formatni bitta amalga oshirishga ishlab chiqish va optimallashtirishga e'tibor qaratish tufayli yordam beradi) oldin amalga oshirilgan).
  • Yangi SIMD ko'rsatmalar to'plamlarini qo'llab-quvvatlash - AVX2, AVX-512 (shu jumladan Xeon Phi ikkinchi avlodi uchun) va MIC (birinchi avlod uchun) - shuningdek, SIMD-dan ko'plab formatlarni amalga oshirishda, shu jumladan foydalanishda universal va to'liq foydalanish. x86(-64) da AVX va XOP uchun ilgari qo'llab-quvvatlangan ko'rsatmalar to'plami va
    NEON, ASIMD va AltiVec mos ravishda ARM, Aarch64 va POWER da. (Qisman GSoC 2015ning bir qismi sifatida.)
  • Bir vaqtning o'zida ko'p sonli xeshlar bilan samaraliroq ishlash (masalan, GPUga 320 million SHA-1 xeshini yuklash) va xeshni hisoblash tezligini oshirish uchun CPU va OpenCL uchun ko'plab optimallashtirishlar. Ushbu optimallashtirishlarning ba'zilari universaldir, ba'zilari turli xil formatlarni qamrab oladi va ko'plari formatga xosdir.
  • (Avtomatik) protsessorda tekshirilgan parollarni optimal buferlash konfiguratsiyasi (“—tune=auto —verbosity=5”) va OpenCL’da optimal ish o‘lchamlari (sukut bo‘yicha yoqilgan), shu jumladan NVIDIA GTX sekin o‘sishini hisobga olgan holda seriyali GPU'lar to'liq ish chastotasi 10xx va undan yangiroq. Bunday avtomatik sozlash uchun haqiqiy yuklangan xeshlardan va tekshirilayotgan parollarning haqiqiy uzunligidan (oldindan ma'lum bo'lganda) foydalanish.
  • To'g'ridan-to'g'ri buyruq satrida ko'rsatilgan "dinamik ifodalar" uchun kompilyator qo'shish va yangi gibrid xesh turlarini amalga oshirish, masalan, SIMD yordamida CPUda hisoblangan "-format=dynamic='sha1(md5($p).$s)" . Bunday iboralarning komponentlari sifatida o'nlab tezkor xeshlar qo'llab-quvvatlanadi (MD5 kabi keng tarqalganlaridan Whirlpool kabi o'rtacha ekzotiklarga qadar), pastki qatorlarni birlashtirish, kodlash va dekodlash, belgilar registrini o'zgartirish, parol, tuz, foydalanuvchi nomi va satr konstantalariga havolalar.
  • Hashcat-dan nomaqbul farqlarni yo'q qilish, shu jumladan, ilgari hashcat-ga xos so'zlar ro'yxati qoida buyruqlarini qo'llab-quvvatlash, ishlash testlari uchun bir xil standart parol uzunligidan (odatda uzunligi 1) foydalanish, 7 dan OpenCL qurilmasini raqamlashga o'tish.
  • Buzilgan parollarni yaratish uchun yangi rejimlar (kreking rejimlari), shu jumladan hashcat dan PRINCE (umumiy uzunlik boʻyicha oʻsish tartibida bir nechta soʻzlarni birlashtirish orqali “iboralar” hosil qiladi), kichik toʻplamlar (har xil belgilar yetarli boʻlmagan parollarni olib keladi, garchi bu belgilar quyidagidan kelgan boʻlsa ham. mumkin bo'lganlarning katta to'plami) va gibrid tashqi (C-ga o'xshash tilda konfiguratsiya fayllarida tasvirlangan tashqi rejimlarga boshqa rejimdan olingan har bir asosiy "so'z" asosida ko'plab tekshiriladigan parollarni yaratishga imkon beradi). Bundan tashqari, bir nechta yangi oldindan belgilangan tashqi rejimlar.
  • Bir vaqtning o'zida bir nechta rejimlardan foydalanish uchun qo'shimcha funktsiyalar (birining ustiga - stacking), shuningdek, qoidalar to'plamidan bunday foydalanish uchun (so'z ro'yxati qoidalarini stacking).
  • Niqob rejimlarini takomillashtirish (niqobni belgilangan uzunlik oralig'ida bosqichma-bosqich cho'zish, niqobni OpenCL qurilmasi yoki FPGA platasining yon tomoniga qo'llash) va bitta yoriq (ko'p sonli xeshlarni parallel ravishda hisoblaydigan qurilmalarda oqilona xatti-harakatlar, ilgari ular ushbu rejimda tekshiriladigan parollar yo'q, shuningdek, xotirani sarflash cheklovlari mavjud emas).
  • Turli quyi tizimlarda Unicode va boshqa kodlashlarni qo'llab-quvvatlash bo'yicha ko'plab yaxshilanishlar.
  • *2john dasturlarida ko'plab yaxshilanishlar (turli formatdagi fayllarni
    john bilan foydalaning), ayniqsa wpapcap2john (WiFi trafigini boshqaradi).
  • Ko'pgina yangi buyruq qatori opsiyalari, john.conf sozlamalari, skript parametrlarini sozlash va ularga mos keladigan yangi xususiyatlar, bu erda hammasi ham aytib o'tilmagan.
  • AddressSanitizer (ilgari) va UndefinedBehaviorSanitizer (qo‘shilgan) yordamida disk raskadrovka tuzilmalarini o‘rnatilgan qo‘llab-quvvatlash, uzluksiz integratsiyani qo‘llash (GSoC 2015 ichida) yordamida kod sifatini yaxshilash (o‘nlab operatsion tizim va kompilyator birikmalari va barcha formatlarni to'g'ri qo'llab-quvvatlash uchun ularni sinovdan o'tkazish).

Manba: linux.org.ru

a Izoh qo'shish