John the Ripper 1.9.0-jumbo-1 dengan dukungan FPGA

Dilepaskan versi baru dari program tebak kata sandi tertua yang didukung John the Ripper 1.9.0-jumbo-1. (Proyek ini telah berkembang sejak tahun 1996.) Aktif halaman proyek Sumber tersedia untuk diunduh, serta rakitan siap pakai untuk Windows.

Tercatat bahwa 1.8.0 tahun telah berlalu sejak rilis versi 1-jumbo-4.5, di mana lebih dari 6000 perubahan (git commits) dilakukan oleh lebih dari 80 pengembang. Selama periode ini, pengembang merekomendasikan penggunaan edisi saat ini dari GitHub, yang keadaannya tetap stabil meskipun ada perubahan yang dilakukan berkat integrasi berkelanjutan, yang mencakup verifikasi awal setiap perubahan (pull request) di banyak platform. Keistimewaan versi baru ini adalah munculnya dukungan FPGA (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, kinerja yang dicapai ~119k c/s dengan 2^5 iterasi (β€œ$2b$05”) dengan konsumsi daya sekitar 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 FPGA) yang dikontrol 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 dikombinasikan dengan mode lain) dan membandingkan 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 besar 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 jenis format 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 (dan sejumlah kecil format lama telah dihapus karena terintegrasi ke dalam format baru dan usang). 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. (Sebagian sebagai bagian dari GSoC 2015.)
  • 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 dengan mempertimbangkan lambatnya peningkatan NVIDIA GTX GPU seri ke frekuensi operasi penuh 10xx dan 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: linux.org.ru

Tambah komentar