Jon Ripper 1.9.0-jumbo-1 versiyasi FPGA qo'llab-quvvatlanadi

Chiqarilgan eng qadimgi qo'llab-quvvatlanadigan parol krakerining yangi versiyasi Jon Ripper 1.9.0-jumbo-1 (loyiha 1996 yildan beri ishlab chiqilmoqda). Oldingi 1.8.0-jumbo-1 versiyasi chiqarilganidan beri 4.5 yil o'tdi, bu vaqt ichida 6000 dan ortiq ishlab chiquvchilar tomonidan 80 dan ortiq o'zgarishlar (git commits) amalga oshirildi. Rahmat uzluksiz integratsiya, bu ko'plab platformalarda har bir o'zgarishni dastlabki tekshirishni (so'rovni olish) o'z ichiga oladi, bu davrda ishlab chiquvchilar foydalanishni tavsiya qiladilar. GitHub-dan joriy versiya, uning holati kiritilgan o'zgarishlarga qaramay barqaror saqlanib qoldi. Asosiy loyiha kodi tarqaladi GPLv2+ litsenziyasi va BSD litsenziyasi ostidagi ba'zi komponentlarning kodi.

Yangi versiyaning o'ziga xos xususiyati - FPGA-ni qo'llab-quvvatlashning ko'rinishi (CPU, GPU va Xeon Phi-dan tashqari). Plitalar uchun Ztex 1.15y, 4 ta FPGA chiplarini o'z ichiga olgan va dastlab asosan Bitcoin qazib olish uchun ishlatilgan, hozirda 7 turdagi parol xeshlari amalga oshirilmoqda: bcrypt, klassik descrypt (jumladan, bigcrypt), sha512crypt, sha256crypt, md5crypt (shu jumladan Apache apr1 va AIX smd5), Drupal7 va phpass (ayniqsa WordPressda ishlatiladi). Ulardan ba'zilari FPGA da birinchi marta amalga oshirilgan.

Bcrypt uchun 119^2 iteratsiyada ("$5b$2") erishilgan ~05k c/s quvvat sarfi taxminan ~27 vatt bo'lgan eng so'nggi GPU-larni har bir plataga, har bir apparat narxiga va vattga sezilarli darajada oshiradi. Shuningdek, qo'llab-quvvatlanadi klasterlar bitta Raspberry Pi 16 dan boshqariladigan 64 tagacha platalar (2 FPGA chiplari) sinovdan o'tkazilgan 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 niqob ("-mask" rejimi, shu jumladan boshqa rejimlar bilan birgalikda) va hisoblangan xeshlarni FPGA tomonida yuklanganlar bilan taqqoslashni amalga oshirdik. Amalga oshirish nuqtai nazaridan, ko'pgina dizaynlarda (masalan, uchun 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:

  • Klassik parol xeshlarini (masalan, QNX ning yangi versiyalaridan) va kriptovalyuta hamyonlarini, shifrlangan arxivlarni va shifrlangan fayl tizimlarini (masalan, Bitlocker va FreeBSD geli) o'z ichiga olgan ko'plab qo'shimcha turdagi xeshlar, shifrlar va boshqalarni qo'llab-quvvatlash. ), shuningdek, ilgari qo'llab-quvvatlangan formatlarning yangi navlarini qo'llab-quvvatlash (masalan, OpenBSD dasturiy ta'minoti uchun bcrypt-pbkdf qo'llab-quvvatlashi qo'shilgan) va boshqalar. Hammasi bo'lib CPU-ga 80 ta format va OpenCL-ga 47 ta format qo'shilgan. 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.

  • 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 parollarning optimal buferlanishini sozlash (“-tune=auto —verbosity=5”) va OpenCL da optimal ish o‘lchamlari (sukut bo‘yicha yoqilgan), shu jumladan to‘liq ish chastotasiga sekin tiklanishni hisobga olgan holda NVIDIA GTX seriyali GPU 10xx va undan yangiroq. Bunday avtomatik sozlash uchun haqiqiy yuklangan xeshlardan va tekshirilgan parollarning haqiqiy uzunligidan foydalanish (oldindan ma'lum bo'lganda).
  • To'g'ridan-to'g'ri buyruq satrida ko'rsatilgan va yangi gibrid xesh turlarini amalga oshiradigan "dinamik ifodalar" kompilyatorini qo'shish, masalan, protsessorda hisoblangan "--format=dynamic='sha1(md5($p).$s)'", SIMD yordamida. Bunday iboralarning komponentlari sifatida o'nlab tezkor xeshlar (MD5 kabi oddiylaridan tortib, Whirlpool kabi engil ekzotiklargacha), pastki qatorlarni birlashtirish, kodlash va dekodlash, belgilar registrini konvertatsiya qilish, parol havolalari, tuz, foydalanuvchi nomi va satr konstantalari qo'llab-quvvatlanadi.
  • 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: opennet.ru

a Izoh qo'shish