John the Ripper 1.9.0-jumbo-1 dirilis dengan dukungan FPGA

Dilepaskan versi baru dari program tebak kata sandi terlama yang didukung John the Ripper 1.9.0-jumbo-1 (proyek ini telah berkembang sejak tahun 1996). 1.8.0 tahun telah berlalu sejak rilis versi sebelumnya 1-jumbo-4.5, di mana lebih dari 6000 perubahan (git commit) dilakukan oleh lebih dari 80 pengembang. Terimakasih untuk integrasi berkelanjutan, yang mencakup pemeriksaan awal terhadap setiap perubahan (permintaan tarik) di banyak platform, selama periode ini pengembang merekomendasikan penggunaan edisi saat ini dari GitHub, yang keadaannya tetap stabil meskipun ada perubahan. Kode proyek utama didistribusikan oleh di bawah lisensi GPLv2+, dan kode beberapa komponen berada di bawah lisensi BSD.

Keistimewaan versi baru ini adalah munculnya dukungan FPGA (selain CPU, GPU, dan Xeon Phi). Untuk papan ZTEX 1.15 tahun, termasuk 4 chip FPGA dan awalnya digunakan terutama untuk penambangan Bitcoin, 7 jenis hash kata sandi kini diterapkan: bcrypt, descrypt klasik (termasuk bigcrypt), sha512crypt, sha256crypt, md5crypt (termasuk Apache apr1 dan AIX smd5), Drupal7 dan phpass (digunakan , khususnya di WordPress). Beberapa di antaranya diimplementasikan pada FPGA untuk pertama kalinya.

Untuk bcrypt, pencapaian kinerja ~119k c/s dengan 2^5 iterasi (“$2b$05”) dengan konsumsi daya ~27 watt secara signifikan melebihi hasil untuk GPU terbaru per board, per harga perangkat keras, dan per watt . Juga didukung cluster papan jenis ini, yang telah diuji hingga 16 papan (64 chip FPGA) yang dikendalikan dari satu Raspberry Pi 2. Fungsionalitas John the Ripper yang biasa didukung, termasuk semua mode menebak kata sandi dan mengunduh sejumlah besar hash secara bersamaan .

Untuk mempercepat pekerjaan, kami menerapkan penggunaan mask (mode “—mask”, termasuk dalam kombinasi dengan mode lain) dan perbandingan hash yang dihitung dengan yang dimuat di sisi FPGA. Dari perspektif implementasi, banyak desain (mis. sha512crypt dan Drupal7) blok yang terdiri dari inti prosesor multi-utas (inti CPU lunak) yang berinteraksi dengan inti kriptografi digunakan. Pengembangan fungsi ini dipimpin oleh Denis Burykin berkoordinasi dengan pengembang jumbo lainnya.

Perubahan penting lainnya:

  • Dukungan untuk sejumlah besar jenis hash, sandi, dll. tambahan, termasuk hash kata sandi klasik (misalnya, dari QNX versi baru), serta dompet mata uang kripto, arsip terenkripsi, dan sistem file terenkripsi (misalnya, Bitlocker dan FreeBSD geli), serta dukungan untuk format jenis baru yang didukung sebelumnya (misalnya, menambahkan dukungan untuk bcrypt-pbkdf untuk softraid OpenBSD) dan banyak lagi. Secara total, 80 format telah ditambahkan pada CPU dan 47 pada OpenCL. Jumlah total format sekarang adalah 407 pada CPU (atau 262 tidak termasuk format "dinamis" yang dikonfigurasi dari file konfigurasi) dan 88 pada OpenCL.
  • Penolakan untuk mendukung bahasa CUDA demi OpenCL, yang sama sekali tidak mengganggu penggunaan penuh GPU NVIDIA (dan bahkan membantu, berkat memfokuskan pengembangan dan pengoptimalan pada satu implementasi dari setiap format untuk GPU, bukan dua implementasi sebelumnya).
  • Dukungan untuk set instruksi SIMD baru - AVX2, AVX-512 (termasuk Xeon Phi generasi kedua) dan MIC (untuk generasi pertama) - serta penggunaan SIMD yang lebih universal dan lengkap dalam implementasi banyak format, termasuk penggunaan instruksi yang didukung sebelumnya diatur ke AVX dan XOP pada x86(-64) dan
    NEON, ASIMD dan AltiVec masing-masing pada ARM, Aarch64 dan POWER.

  • Banyak pengoptimalan untuk CPU dan OpenCL, keduanya agar lebih efisien bekerja dengan sejumlah besar hash secara bersamaan (misalnya, memuat 320 juta hash SHA-1 pada GPU telah diuji), dan untuk meningkatkan kecepatan penghitungan hash. Beberapa optimasi ini bersifat universal, beberapa mencakup subkumpulan format yang berbeda, dan banyak lagi yang spesifik untuk masing-masing format.
  • (Otomatis)konfigurasi buffering optimal dari kata sandi yang diperiksa pada CPU (“—tune=auto —verbosity=5”) dan ukuran pekerjaan optimal pada OpenCL (diaktifkan secara default), termasuk memperhitungkan jalur lambat hingga frekuensi pengoperasian penuh GPU seri NVIDIA GTX 10xx dan yang lebih baru. Menggunakan hash yang sebenarnya dimuat dan panjang kata sandi sebenarnya yang diperiksa (bila diketahui sebelumnya) untuk penyetelan otomatis tersebut.
  • Menambahkan kompiler untuk "ekspresi dinamis" yang ditentukan langsung pada baris perintah dan mengimplementasikan tipe hash hibrid baru, misalnya "-format=dynamic='sha1(md5($p).$s)'", yang dihitung pada CPU menggunakan SIMD . Sebagai komponen ekspresi tersebut, lusinan hash cepat didukung (dari yang umum seperti MD5 hingga yang cukup eksotis seperti Whirlpool), penggabungan substring, penyandian dan penguraian kode, konversi huruf besar-kecil, referensi ke kata sandi, garam, nama pengguna, dan konstanta string.
  • Penghapusan perbedaan yang tidak diinginkan dari hashcat, termasuk dukungan untuk aturan khusus hashcat sebelumnya (perintah aturan daftar kata), transisi ke perangkat OpenCL yang diberi nomor dari 1, penggunaan default panjang kata sandi yang sama (biasanya panjang 7) untuk pengujian kinerja.
  • Mode baru untuk menghasilkan kata sandi yang dapat diverifikasi (mode cracking), termasuk PRINCE dari hashcat (membentuk “frasa” dengan menggabungkan beberapa kata dalam urutan panjang total), subset (memunculkan kata sandi dengan jumlah karakter berbeda yang tidak mencukupi, bahkan jika karakter ini berasal dari sejumlah besar kemungkinan) dan hybrid eksternal (memungkinkan mode eksternal, dijelaskan dalam file konfigurasi dalam bahasa mirip C, untuk menghasilkan banyak kata sandi yang dapat diverifikasi berdasarkan setiap “kata” dasar yang diterima dari mode lain). Juga, beberapa mode eksternal baru yang telah ditentukan sebelumnya.
  • Fitur tambahan untuk menggunakan beberapa mode secara bersamaan (satu di atas yang lain - menumpuk), serta untuk menggunakan kumpulan aturan (penumpukan aturan daftar kata).
  • Perbaikan pada mode mask (peregangan masker secara bertahap dalam rentang panjang tertentu, penerapan masker di sisi perangkat OpenCL atau papan FPGA) dan retakan tunggal (perilaku wajar pada perangkat yang menghitung hash dalam jumlah besar secara paralel , yang sebelumnya tidak memiliki cukup kata sandi yang dapat diverifikasi dalam mode ini, dan juga pembatasan konsumsi memori).
  • Banyak perbaikan pada dukungan Unicode dan pengkodean lainnya di berbagai subsistem.
  • Banyak perbaikan pada program *2john (yang mengonversi file dengan format berbeda
    gunakan dengan john), terutama wpapcap2john (menangani lalu lintas WiFi).

  • Ada banyak opsi baris perintah baru, pengaturan di john.conf, opsi konfigurasi skrip, dan fitur baru terkait, tidak semuanya disebutkan di sini.
  • Meningkatkan kualitas kode berkat dukungan bawaan untuk build debug dengan AddressSanitizer (sebelumnya) dan UndefinisiBehaviorSanitizer (ditambahkan), menambahkan fuzzer format bawaan (sebagai bagian dari GSoC 2015), menggunakan integrasi berkelanjutan (dibuat untuk lusinan sistem operasi dan compiler kombinasi dan mengujinya untuk dukungan yang benar untuk semua format).

Sumber: opennet.ru

Tambah komentar