John the Ripper 1.9.0-jumbo-1 dikeluarkan dengan sokongan FPGA

Dikeluarkan versi baharu program meneka kata laluan tertua yang disokong John the Ripper 1.9.0-jumbo-1 (projek ini telah dibangunkan sejak 1996). 1.8.0 tahun telah berlalu sejak keluaran versi sebelumnya 1-jumbo-4.5, di mana lebih daripada 6000 perubahan (git commit) telah dibuat daripada lebih daripada 80 pembangun. Terima kasih kepada integrasi berterusan, yang termasuk semakan awal setiap perubahan (permintaan tarik) pada banyak platform, dalam tempoh ini pembangun mengesyorkan menggunakan edisi semasa daripada GitHub, yang keadaannya dikekalkan stabil walaupun terdapat perubahan yang dibuat. Kod projek utama diedarkan oleh di bawah lesen GPLv2+, dan kod beberapa komponen adalah di bawah lesen BSD.

Ciri khas versi baharu ini ialah kemunculan sokongan FPGA (selain CPU, GPU dan Xeon Phi). Untuk papan ZTEX 1.15y, termasuk 4 cip FPGA dan pada asalnya digunakan terutamanya untuk perlombongan Bitcoin, 7 jenis cincang kata laluan kini dilaksanakan: bcrypt, nyahsulit klasik (termasuk bigcrypt), sha512crypt, sha256crypt, md5crypt (termasuk Apache apr1 dan AIX smd5), Drupal7 dan phpass (digunakan , khususnya dalam WordPress). Sebahagian daripadanya dilaksanakan pada FPGA buat kali pertama.

Untuk bcrypt, prestasi yang dicapai sebanyak ~119k c/s dengan 2^5 lelaran (β€œ$2b$05”) dengan penggunaan kuasa ~27 watt dengan ketara melebihi keputusan untuk GPU terkini setiap papan, setiap harga perkakasan dan setiap watt . Juga disokong kelompok daripada papan jenis ini, yang telah diuji sehingga 16 papan (64 cip FPGA) dikawal daripada satu Raspberry Pi 2. Fungsi biasa John the Ripper disokong, termasuk semua mod meneka kata laluan dan muat turun serentak sejumlah besar cincang .

Untuk mempercepatkan kerja, kami melaksanakan penggunaan topeng (mod "β€”topeng", termasuk dalam kombinasi dengan mod lain) dan perbandingan cincang yang dikira dengan yang dimuatkan pada bahagian FPGA. Dari perspektif pelaksanaan, banyak reka bentuk (cth. sha512crypt dan Drupal7) blok yang terdiri daripada teras pemproses berbilang benang (teras CPU lembut) yang berinteraksi dengan teras kriptografi digunakan. Pembangunan fungsi ini diketuai oleh Denis Burykin dengan kerjasama pembangun jumbo lain.

Perubahan penting lain:

  • Sokongan untuk sejumlah besar jenis cincang tambahan, sifir, dsb., termasuk cincang kata laluan klasik (contohnya, daripada versi baharu QNX), serta dompet mata wang kripto, arkib yang disulitkan dan sistem fail yang disulitkan (contohnya, Bitlocker dan FreeBSD geli), serta sokongan untuk jenis format baharu yang disokong sebelum ini (contohnya, sokongan tambahan untuk bcrypt-pbkdf untuk softraid OpenBSD) dan banyak lagi. Secara keseluruhan, 80 format telah ditambahkan pada CPU dan 47 pada OpenCL. Jumlah bilangan format kini ialah 407 pada CPU (atau 262 tidak termasuk format "dinamik" yang dikonfigurasikan daripada fail konfigurasi) dan 88 pada OpenCL.
  • Keengganan untuk menyokong bahasa CUDA yang memihak kepada OpenCL, yang sama sekali tidak mengganggu penggunaan penuh GPU NVIDIA (malah membantu, berkat memfokuskan pembangunan dan pengoptimuman pada satu pelaksanaan setiap format untuk GPU dan bukannya dua pelaksanaan sebelumnya).
  • Sokongan untuk set arahan SIMD baharu - AVX2, AVX-512 (termasuk untuk generasi kedua Xeon Phi) dan MIC (untuk generasi pertama) - serta penggunaan SIMD yang lebih universal dan lengkap dalam pelaksanaan pelbagai format, termasuk penggunaan arahan yang disokong sebelum ini ditetapkan sehingga AVX dan XOP pada x86(-64) dan
    NEON, ASIMD dan AltiVec pada ARM, Aarch64 dan POWER, masing-masing.

  • Banyak pengoptimuman untuk CPU dan OpenCL, kedua-duanya untuk berfungsi dengan lebih cekap dengan sejumlah besar cincang secara serentak (contohnya, memuatkan 320 juta cincang SHA-1 pada GPU telah diuji), dan untuk meningkatkan kelajuan pengiraan cincang. Sebahagian daripada pengoptimuman ini adalah universal, sesetengahnya meliputi subset format yang berbeza, dan kebanyakannya khusus untuk format individu.
  • (Auto-)konfigurasi penimbalan optimum kata laluan yang disemak pada CPU (β€œβ€”tune=auto β€”verbosity=5”) dan saiz kerja optimum pada OpenCL (didayakan secara lalai), termasuk mengambil kira tanjakan perlahan sehingga kekerapan operasi penuh daripada GPU siri NVIDIA GTX 10xx dan lebih baharu. Menggunakan cincang yang sebenarnya dimuatkan dan panjang sebenar kata laluan yang disemak (apabila diketahui lebih awal) untuk penalaan automatik tersebut.
  • Menambah pengkompil untuk "ungkapan dinamik" yang dinyatakan secara langsung pada baris arahan dan melaksanakan jenis cincang hibrid baharu, contohnya "-format=dynamic='sha1(md5($p).$s)'", dikira pada CPU menggunakan SIMD . Sebagai komponen ungkapan sedemikian, berpuluh-puluh cincang pantas disokong (daripada yang biasa seperti MD5 kepada yang sederhana eksotik seperti Whirlpool), penggabungan subrentetan, pengekodan dan penyahkodan, penukaran huruf besar kecil, rujukan kepada kata laluan, garam, nama pengguna dan pemalar rentetan.
  • Penghapusan perbezaan yang tidak diingini daripada hashcat, termasuk sokongan untuk peraturan khusus hashcat sebelum ini (perintah peraturan senarai perkataan), peralihan kepada peranti OpenCL yang menomborkan daripada 1, penggunaan lalai bagi panjang kata laluan yang sama (biasanya panjang 7) untuk ujian prestasi.
  • Mod baharu untuk menjana kata laluan yang boleh disahkan (mod retak), termasuk PRINCE daripada hashcat (membentuk "frasa" dengan menggabungkan beberapa perkataan dalam susunan jumlah panjang yang bertambah), subset (memunculkan kata laluan dengan bilangan aksara berbeza yang tidak mencukupi, walaupun aksara ini datang daripada set besar kemungkinan) dan luaran hibrid (membolehkan mod luaran, diterangkan dalam fail konfigurasi dalam bahasa seperti C, untuk menjana banyak kata laluan yang boleh disahkan berdasarkan setiap "perkataan" asas yang diterima daripada mod lain). Selain itu, beberapa mod luaran pratakrif baharu.
  • Ciri tambahan untuk menggunakan beberapa mod secara serentak (satu di atas yang lain - menyusun), serta untuk menggunakan set peraturan (menyusun peraturan senarai perkataan).
  • Penambahbaikan pada mod topeng (regangan topeng secara beransur-ansur dalam julat panjang tertentu, penggunaan topeng pada sisi peranti OpenCL atau papan FPGA) dan retak tunggal (tingkah laku munasabah pada peranti yang mengira sejumlah besar cincang secara selari , yang sebelum ini tidak terdapat kata laluan yang boleh disahkan yang mencukupi dalam mod ini, dan juga sekatan ke atas penggunaan memori).
  • Banyak penambahbaikan untuk menyokong Unicode dan pengekodan lain dalam pelbagai subsistem.
  • Banyak penambahbaikan kepada program *2john (yang menukar fail daripada format yang berbeza untuk
    gunakan dengan john), terutamanya wpapcap2john (mengendalikan trafik WiFi).

  • Terdapat banyak pilihan baris arahan baharu, tetapan dalam john.conf, konfigurasikan pilihan skrip dan ciri baharu yang sepadan, tidak semuanya disebut di sini.
  • Meningkatkan kualiti kod terima kasih kepada sokongan terbina dalam untuk binaan nyahpepijat dengan AddressSanitizer (sebelum ini) dan UndefinedBehaviorSanitizer (ditambah), menambah format fuzzer terbina dalam (sebagai sebahagian daripada GSoC 2015), menggunakan penyepaduan berterusan (dibina untuk berdozen sistem pengendalian dan pengkompil gabungan dan mengujinya untuk sokongan yang betul untuk semua format).

Sumber: opennet.ru

Tambah komen