FPGA dəstəyi ilə John the Ripper 1.9.0-jumbo-1 buraxılışı

Buraxıldı ən köhnə dəstəklənən parol krakerinin yeni versiyası John the Ripper 1.9.0-jumbo-1 (layihə 1996-cı ildən hazırlanır). Əvvəlki 1.8.0-jumbo-1 versiyasının buraxılışından 4.5 il keçdi, bu müddət ərzində 6000-dən çox tərtibatçıdan 80-dən çox dəyişiklik edildi (git commits). sayəsində davamlı inteqrasiya, bir çox platformada hər dəyişikliyin ilkin yoxlanmasını (çəkmə sorğusu) ehtiva edir, bu müddət ərzində tərtibatçılar istifadə etməyi tövsiyə edirlər. GitHub-dan cari versiya, edilən dəyişikliklərə baxmayaraq vəziyyəti stabil saxlanılıb. Əsas layihə kodu yayılır GPLv2+ lisenziyası və BSD lisenziyası altında bəzi komponentlərin kodu.

Yeni versiyanın xüsusiyyəti FPGA dəstəyinin görünüşüdür (CPU, GPU və Xeon Phi ilə yanaşı). Lövhələr üçün Ztex 1.15y4 FPGA çipini özündə birləşdirən və ilkin olaraq Bitcoin mədənçiliyi üçün istifadə edilən , indi 7 növ parol heşləri tətbiq olunur: bcrypt, klassik descrypt (bigcrypt daxil olmaqla), sha512crypt, sha256crypt, md5crypt (Apache apr1 və AIX smd5 daxil olmaqla), Drupal7 və phpass (xüsusilə WordPress-də istifadə olunur). Onlardan bəziləri ilk dəfə FPGA-da həyata keçirilir.

Bcrypt üçün, təxminən ~119 vatt enerji istehlakı ilə 2^5 iterasiyada ("$2b$05") əldə edilən ~27k c/s performans hər bir lövhəyə, hər bir avadanlıq qiymətinə və hər vatt başına ən son GPU-ları əhəmiyyətli dərəcədə üstələyir. Həmçinin dəstəklənir klasterlər bir Raspberry Pi 16-dən idarə olunan 64-a qədər lövhəni (2 FPGA çipi) sınaqdan keçirən bu tipli lövhələr. Adi John the Ripper funksionallığı, o cümlədən bütün parol təxmin etmə rejimləri və çoxlu sayda hashlərin eyni vaxtda endirilməsi dəstəklənir.

İşi sürətləndirmək üçün maskanın (“--maska” rejimi, o cümlədən digər rejimlərlə birlikdə) istifadəsini və hesablanmış hashlərin FPGA tərəfində yüklənmişlərlə müqayisəsini həyata keçirdik. Tətbiq baxımından bir çox dizaynda (məsələn, üçün sha512crypt və Drupal7) kriptoqrafik nüvələrlə qarşılıqlı əlaqədə olan çox yivli prosessor nüvələrindən (yumşaq CPU nüvələrindən) ibarət bloklardan istifadə edilmişdir. Bu funksionallığın inkişafına digər jumbo tərtibatçıları ilə koordinasiyada Denis Burykin rəhbərlik etmişdir.

Digər mühüm dəyişikliklər:

  • Həm klassik parol heşləri (məsələn, QNX-in yeni versiyalarından), həm də kriptovalyuta pul kisələri, şifrələnmiş arxivlər və şifrələnmiş fayl sistemləri (məsələn, Bitlocker və FreeBSD geli) daxil olmaqla çoxlu sayda əlavə növ həşlər, şifrələr və s. üçün dəstək ), həmçinin əvvəllər dəstəklənən formatların yeni növləri üçün dəstək (məsələn, OpenBSD softraid üçün bcrypt-pbkdf dəstəyi əlavə edilmişdir) və daha çox. Ümumilikdə CPU-da 80, OpenCL-də isə 47 format əlavə edilib. İndi formatların ümumi sayı CPU-da 407-dir (və ya konfiqurasiya fayllarından konfiqurasiya edilmiş "dinamik" formatlar daxil deyil 262) və OpenCL-də 88-dir.
  • NVIDIA GPU-nun tam istifadəsinə ən azı mane olmayan (və hətta iki formatın əvəzinə GPU altında hər bir formatın bir tətbiqinə inkişaf və optimallaşdırmaların diqqəti sayəsində kömək edən OpenCL-in xeyrinə CUDA dil dəstəyinin aradan qaldırılması. əvvəl tətbiqlər).
  • Yeni SIMD təlimat dəstləri üçün dəstək - AVX2, AVX-512 (ikinci nəsil Xeon Phi üçün daxil olmaqla) və MIC (birinci nəsil üçün) - həmçinin istifadə daxil olmaqla bir çox formatın tətbiqində SIMD-nin daha universal və tam istifadəsi. x86(-64)-də AVX və XOP-a qədər əvvəllər dəstəklənən təlimat dəstlərinin və
    ARM, Aarch64 və POWER-də müvafiq olaraq NEON, ASIMD və AltiVec.

  • CPU və OpenCL üçün çoxsaylı optimallaşdırmalar, hər ikisi eyni vaxtda çoxlu sayda hashlərlə daha səmərəli işləmək (məsələn, GPU-ya 320 milyon SHA-1 hash yükləmək) və hash hesablama sürətini artırmaq üçün. Bu optimallaşdırmaların bəziləri universaldır, bəziləri müxtəlif format alt qruplarını əhatə edir və bir çoxu formata xasdır.
  • CPU-da yoxlanılmış parolların optimal buferləşdirilməsinin (avtomatik) tənzimlənməsi (“-tune=auto —verbosity=5”) və OpenCL-də optimal iş ölçüləri (defolt olaraq aktivdir), o cümlədən tam işləmə tezliyinə yavaş bərpa olunması nəzərə alınmaqla NVIDIA GTX seriyalı GPU-ların 10xx və daha yeniləri. Belə avtomatik tənzimləmə üçün real yüklənmiş heşlərdən və yoxlanılmış parolların real uzunluğundan (əvvəlcədən məlum olduqda) istifadə.
  • Birbaşa komanda xəttində təyin olunan və yeni hibrid hash növlərini həyata keçirən "dinamik ifadələr" kompilyatorunun əlavə edilməsi, məsələn, CPU-da hesablanmış "--format=dynamic='sha1(md5($p).$s)'", SIMD istifadə edərək. Belə ifadələrin komponentləri kimi onlarla sürətli hash (MD5 kimi ümumilərdən tutmuş, Whirlpool kimi yüngül ekzotiklərə qədər), alt sətir birləşməsi, kodlaşdırma və dekodlaşdırma, simvol rejissorunun çevrilməsi, parol istinadları, duz, istifadəçi adı və sətir sabitləri dəstəklənir.
  • Performans testləri üçün eyni standart parol uzunluqlarından (adətən uzunluq 1) istifadə edərək, əvvəllər hashcat-ə xas söz siyahısı qayda əmrlərinin dəstəklənməsi, 7-dən OpenCL cihaz nömrələnməsinə keçid daxil olmaqla, hashcat-dan arzuolunmaz fərqlərin aradan qaldırılması.
  • Yeni krekinq rejimləri, o cümlədən hashcat-dan PRINCE (ümumi uzunluğun artan ardıcıllığı ilə birdən çox sözləri birləşdirərək "ifadələr" yaradır), alt qruplar (həmin simvollar mümkün olanların böyük dəstindən gəlsə belə, kifayət qədər fərqli simvolları olmayan parollar gətirir) və hibrid xarici (C tipli dildə konfiqurasiya fayllarında təsvir edilən xarici rejimlərə başqa rejimdən alınan hər bir əsas "söz" əsasında çoxlu yoxlanıla bilən parollar yaratmağa imkan verir). Həmçinin, bir neçə yeni əvvəlcədən təyin edilmiş xarici rejimlər.
  • Eyni zamanda bir neçə rejimi istifadə etmək üçün əlavə funksiyalar (biri digərinin üstündə - yığma), həmçinin qayda dəstlərinin bu cür istifadəsi üçün (wordlist qaydalarının yığılması).
  • Maska rejimlərində təkmilləşdirmələr (müəyyən edilmiş uzunluq diapazonunda tədricən maskanın uzanması, maskanı OpenCL cihazının və ya FPGA lövhəsinin tərəfində tətbiq etmək) və tək çatlama (əvvəllər çoxlu sayda hashləri paralel olaraq hesablayan cihazlarda ağlabatan davranış) bu rejimdə yoxlanılacaq parollar, həmçinin yaddaş istehlakına məhdudiyyətlər yox idi).
  • Müxtəlif alt sistemlərdə Unicode və digər kodlaşdırmalar üçün dəstəkdə bir çox təkmilləşdirmələr.
  • *2john proqramlarında bir çox təkmilləşdirmələr (müxtəlif formatlı faylları
    john ilə istifadə edin), xüsusilə wpapcap2john (WiFi trafikini idarə edir).

  • Bir çox yeni komanda xətti variantları, john.conf parametrləri, skript seçimlərini konfiqurasiya etmək və onlara uyğun gələn yeni funksiyalar, bunların hamısı burada qeyd olunmayıb.
  • AddressSanitizer (əvvəllər) və UndefinedBehaviorSanitizer (əlavə edilib), davamlı inteqrasiyadan istifadə edərək (onlarca əməliyyat sistemi və kompilyator kombinasiyaları üçün qurur və) daxili format fuzzerinin əlavə edilməsi (GSoC 2015 daxilində) ilə sazlama quruluşlarına daxili dəstək sayəsində kod keyfiyyətinin yaxşılaşdırılması. bütün formatların düzgün dəstəklənməsi üçün onları sınaqdan keçirir).

Mənbə: opennet.ru

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