John the Ripper 1.9.0-jumbo-1 dileupaskeun kalayan dukungan FPGA

Dileupaskeun versi anyar tina program guessing sandi pangkolotna dirojong John Ripper 1.9.0-jumbo-1 (proyék geus ngembang saprak 1996). 1.8.0 taun geus kaliwat ti sékrési versi saméméhna 1-jumbo-4.5, salila leuwih ti 6000 parobahan (git commits) dijieun tina leuwih ti 80 pamekar. Hatur nuhun ka integrasi kontinyu, anu kalebet pamariksaan awal unggal parobihan (permintaan tarik) dina seueur platform, salami periode ieu pamekar nyarankeun ngagunakeun édisi ayeuna ti GitHub, kaayaan anu dijaga stabil sanajan parobahan dijieun. Kode proyék utama disebarkeun ku handapeun lisénsi GPLv2 +, jeung kode sababaraha komponén dina lisénsi BSD.

Fitur khusus tina versi énggal nyaéta penampilan dukungan FPGA (sajaba CPU, GPU sareng Xeon Phi). Pikeun papan ZTEX 1.15y, kaasup 4 chip FPGA sarta asalna dipaké utamana pikeun pertambangan Bitcoin, 7 jenis hashes sandi ayeuna dilaksanakeun: bcrypt, descrypt Palasik (kaasup bigcrypt), sha512crypt, sha256crypt, md5crypt (kaasup Apache apr1 na AIX smd5), Drupal7 na phpass (dipaké). , hususna dina WordPress). Sababaraha di antarana dilaksanakeun dina FPGA pikeun kahiji kalina.

Pikeun bcrypt, prestasi kahontal ~119k c/s kalawan 2^5 iterasi ("$2b$05") kalayan konsumsi kakuatan ~27 watt nyata ngaleuwihan hasil pikeun GPUs panganyarna per dewan, per harga hardware, sarta per watt. . Ogé dirojong klaster tina dewan tipe ieu, nu geus diuji nepi ka 16 dewan (64 chip FPGA) dikawasa tina hiji buah prambus Pi tunggal 2. The dawam John nu Ripper fungsionalitas dirojong, kaasup sakabeh modus guessing sandi jeung simultaneous ngundeur sajumlah badag hashes. .

Pikeun nyepetkeun pagawéan, kami ngalaksanakeun pamakean masker (mode "-mask", kalebet dina kombinasi sareng modeu sanés) sareng ngabandingkeun hashes anu diitung sareng anu dimuat dina sisi FPGA. Tina sudut pandang palaksanaan, seueur desain (contona. sha512crypt sareng Drupal7) blok diwangun ku cores processor multi-threaded (cores CPU lemes) interacting jeung cores cryptographic dipaké. Pangembangan fungsionalitas ieu dipingpin ku Denis Burykin dina koordinasi sareng pamekar jumbo anu sanés.

Parobahan penting séjén:

  • Rojongan pikeun sajumlah ageung jinis tambahan hashes, ciphers, sareng sajabana, kalebet hashes sandi klasik (contona, tina versi QNX énggal), ogé dompet cryptocurrency, arsip énkripsi sareng sistem file énkripsi (contona, Bitlocker sareng FreeBSD geli), kitu ogé rojongan pikeun tipe anyar format saméméhna dirojong (contona, ditambahkeun rojongan pikeun bcrypt-pbkdf pikeun OpenBSD softraid) jeung leuwih. Dina total, 80 format geus ditambahkeun kana CPU jeung 47 on OpenCL. Jumlah total format ayeuna aya 407 dina CPU (atanapi 262 henteu kalebet format "dinamis" anu dikonpigurasi tina file konfigurasi) sareng 88 dina OpenCL.
  • Panolakan pikeun ngarojong basa CUDA dina ni'mat OpenCL, nu di no way interferes jeung pamakéan pinuh NVIDIA GPUs (komo mantuan, hatur nuhun kana fokus ngembangkeun sarta optimasi dina hiji palaksanaan unggal format pikeun GPU tinimbang dua palaksanaan saméméhna).
  • Rojongan pikeun susunan instruksi SIMD anyar - AVX2, AVX-512 (kaasup pikeun generasi kadua Xeon Phi) jeung MIC (pikeun generasi kahiji) - kitu ogé pamakéan leuwih universal tur lengkep SIMD dina palaksanaan loba format, kaasup pamakéan instruksi saméméhna dirojong susunan nepi ka AVX na XOP on x86 (-64) jeung
    NEON, ASIMD sareng AltiVec dina ARM, Aarch64 sareng POWER, masing-masing.

  • Seueur optimasi pikeun CPU sareng OpenCL, duanana langkung éfisién damel sareng sajumlah ageung hashes sakaligus (contona, ngamuat 320 juta hashes SHA-1 dina GPU diuji), sareng ningkatkeun laju itungan hash. Sababaraha optimasi ieu universal, sababaraha nutupan subset format béda, sarta loba anu husus pikeun format individu.
  • (Otomatis-) Konfigurasi panyangga optimal tina kecap akses anu dipariksa dina CPU ("—tune=auto —verbosity=5") sareng ukuran padamelan anu optimal dina OpenCL (diaktipkeun sacara standar), kalebet nganggap tanjakan anu laun dugi ka frékuénsi operasi pinuh. tina NVIDIA GTX runtuyan GPUs 10xx tur leuwih anyar. Ngagunakeun hashes sabenerna dimuat jeung panjang sabenerna kecap akses keur dipariksa (lamun geus dipikawanoh sateuacanna) pikeun auto-tuning misalna.
  • Nambahkeun hiji kompiler pikeun "ekspresi dinamis" dieusian langsung dina garis paréntah sarta ngalaksanakeun tipe hash hibrid anyar, contona "-format = dinamis = 'sha1 (md5 ($ p). $ s)'", diitung dina CPU ngagunakeun SIMD. . Salaku komponén tina éksprési sapertos kitu, puluhan hash gancang dirojong (tina anu biasa sapertos MD5 dugi ka anu aheng sapertos Whirlpool), concatenation substring, encoding sareng decoding, konversi kasus karakter, rujukan kana kecap akses, uyah, nami pangguna sareng konstanta string.
  • Ngaleungitkeun béda nu teu dihoyongkeun tina hashcat, kaasup rojongan pikeun aturan hashcat-spésifik saméméhna (paréntah aturan wordlist), transisi ka OpenCL alat panomeran ti 1, pamakéan standar tina panjang sandi sarua (biasana panjangna 7) pikeun tés kinerja.
  • Modeu anyar pikeun ngahasilkeun kecap akses anu tiasa diverifikasi (modus cracking), kalebet PRINCE tina hashcat (ngawangun "frasa" ku ngagabungkeun sababaraha kecap dina ningkatkeun total panjangna), subsets (nyangking kecap konci kalayan jumlah karakter anu henteu cekap, sanaos karakter ieu sumping. ti set badag tina mungkin) jeung hibrid éksternal (ngamungkinkeun mode éksternal, digambarkeun dina file konfigurasi dina basa C-kawas, pikeun ngahasilkeun loba kecap akses verifiable dumasar kana unggal dasar "kecap" narima ti modeu sejen). Ogé, sababaraha modeu éksternal anu tos siapkeun anyar.
  • Fitur tambahan pikeun ngagunakeun sababaraha modus sakaligus (hiji dina luhureun séjén - stacking), kitu ogé pikeun ngagunakeun susunan aturan (wordlist aturan stacking).
  • Perbaikan mode topéng (laun manjang tina topéng dina rentang panjang anu ditangtukeun, aplikasi topéng di sisi alat OpenCL atanapi papan FPGA) sareng retakan tunggal (kalakuan anu wajar dina alat anu ngitung sajumlah ageung hashes paralel. , nu saméméhna teu cukup kecap akses verifiable dina modeu ieu, sarta ogé larangan dina konsumsi memori).
  • Seueur perbaikan pikeun ngadukung Unicode sareng panyandian sanésna dina sababaraha subsistem.
  • Seueur perbaikan kana program *2john (anu ngarobih file tina format anu béda pikeun
    make jeung john), utamana wpapcap2john (handles lalulintas WiFi).

  • Aya loba pilihan garis paréntah anyar, setélan dina john.conf, ngonpigurasikeun pilihan Aksara jeung fitur anyar pakait, teu sakabéh nu disebutkeun di dieu.
  • Ningkatkeun kualitas kode berkat dukungan anu diwangun pikeun debug ngawangun sareng AddressSanitizer (saméméhna) sareng UndefinedBehaviorSanitizer (ditambahkeun), nambihan fuzzer format anu diwangun (salaku bagian tina GSoC 2015), ngagunakeun integrasi kontinyu (diwangun pikeun puluhan sistem operasi sareng kompiler. kombinasi jeung nguji aranjeunna pikeun rojongan bener pikeun sakabéh format).

sumber: opennet.ru

Tambahkeun komentar