John the Ripper 1.9.0-jumbo-1 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.) Pada halaman projek Sumber tersedia untuk dimuat turun, serta pemasangan siap sedia untuk Windows.

Adalah diperhatikan bahawa 1.8.0 tahun telah berlalu sejak keluaran versi 1-jumbo-4.5, di mana lebih daripada 6000 perubahan (git commit) telah dibuat daripada lebih daripada 80 pembangun. Dalam tempoh ini, pembangun mengesyorkan menggunakan edisi semasa daripada GitHub, yang keadaannya dikekalkan stabil walaupun perubahan dibuat terima kasih kepada integrasi berterusan, yang merangkumi pengesahan awal setiap perubahan (permintaan tarik) pada banyak platform. Ciri khas versi baharu ini ialah penampilan sokongan untuk FPGA (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 kira-kira 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 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 "--mask", termasuk dalam kombinasi dengan mod lain) dan perbandingan cincang yang dikira dengan yang dimuatkan pada bahagian FPGA. Dari sudut 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 besar 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 (dan sebilangan kecil format lama telah dialih keluar sebagai disepadukan ke dalam yang baharu dan usang). 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. (Sebahagiannya sebagai sebahagian daripada GSoC 2015.)
  • 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 peningkatan perlahan NVIDIA GTX GPU siri kepada frekuensi operasi penuh 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: linux.org.ru

Tambah komen