John the Ripper 1.9.0-jumbo-1 Verëffentlechung mat FPGA Ënnerstëtzung

Verëffentlecht новая версия старейшей поддерживаемой программы для подбора паролей John the Ripper 1.9.0-jumbo-1 (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря kontinuéierlech Integratioun, включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать aktuell Editioun vu GitHub, состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта verdeelt duerch под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.

Особенностью новой версии является появление поддержки FPGA (в дополнение к CPU, GPU и Xeon Phi). Для плат ZTEX 1.15y, включающих по 4 чипа FPGA и исходно использовавшихся в основном для майнинга Bitcoin, теперь реализованы 7 типов хешей паролей: bcrypt, классический descrypt (включая bigcrypt), sha512crypt, sha256crypt, md5crypt (включая Apache apr1 и AIX smd5), Drupal7 и phpass (используется, в частности, в WordPress). Некоторые из них реализованы на FPGA впервые.

Для bcrypt, достигнутая производительность в ~119k c/s при 2^5 итераций («$2b$05») с потребляемой мощностью около ~27 ватт существенно превосходит результаты для новейших GPU в расчете на плату, на цену оборудования и на ватт. Также поддерживаются Stärekéip из плат этого типа, что проверено вплоть до 16 плат (64 чипа FPGA), контролируемых с одного Raspberry Pi 2. Поддерживается обычная функциональность John the Ripper, включая все режимы подбора паролей и одновременную загрузку большого количества хешей.

Для ускорения работы реализовано применение маски (режим «—mask», в том числе в комбинации с другими режимами) и сравнение вычисленных хешей с загруженными на стороне FPGA. С точки зрения реализации, во многих из дизайнов (например, для sha512crypt an Drupal7) Blocks, déi aus Multi-threaded Prozessor Cores (mëll CPU Cores) besteet, déi mat kryptografesche Cores interagéieren, ginn benotzt. D'Entwécklung vun dëser Funktionalitéit gouf vum Denis Burykin a Koordinatioun mat anere Jumbo-Entwéckler gefouert.

Другие важные изменения:

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • Refus d'CUDA Sprooch zugonschte vun OpenCL z'ënnerstëtzen, déi op kee Fall mat der voller Notzung vun NVIDIA GPUs interferes (a souguer hëlleft, merci fir Schwéierpunkt Entwécklung an Optimisatioun op eng Ëmsetzung vun all Format fir d'GPU amplaz vun zwou Implementatioune virdrun).
  • Ënnerstëtzung fir nei SIMD Instruktiounssets - AVX2, AVX-512 (inklusiv fir déi zweet Generatioun Xeon Phi) a MIC (fir déi éischt Generatioun) - souwéi méi universell a komplett Notzung vun SIMD an Implementatioune vu ville Formater, dorënner d'Benotzung vun virdrun ënnerstëtzt Instruktioun setzt op AVX an XOP op x86 (-64) an
    NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно.

  • Vill Optimisatiounen fir CPU an OpenCL, souwuel fir méi effizient mat enger grousser Unzuel vun Hashes gläichzäiteg ze schaffen (zum Beispill, 320 Milliounen SHA-1 Hashes op der GPU lueden gouf getest), an d'Geschwindegkeet vun den Hash Berechnungen ze erhéijen. E puer vun dësen Optimisatiounen sinn universell, e puer decken verschidden Ënnerdeeler vu Formater, a vill si spezifesch fir eenzel Formater.
  • (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
  • Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • Eliminatioun vun ongewollten Differenzen aus hashcat, dorënner Ënnerstëtzung fir virdrun hashcat-spezifesch Regelen (wordlist Regel commandéiert), Iwwergank zu OpenCL Apparat Nummer vun 1, Standard Notzung vun der selwechter Passwuert Längt (normalerweis Längt 7) fir Leeschtung Tester.
  • Nei Modi fir verifizéierbar Passwierder ze generéieren (Knackenmodi), dorënner PRINCE aus hashcat (formt "Sätze" andeems Dir e puer Wierder an enger Erhéijung vun der Reiefolleg vun der Gesamtlängt kombinéiert), Ënnersätz (bréngt Passwierder mat enger net genuch Zuel vu verschiddene Charakteren op, och wann dës Zeechen kommen aus enger grousser Rei vu méiglechen) an Hybrid extern (erlaabt extern Modi, beschriwwen an Konfiguratiounsdateien an enger C-ähnlecher Sprooch, fir vill verifizéierbar Passwierder ze generéieren op Basis vun all Basis "Wuert" aus engem anere Modus kritt). Och e puer nei virdefinéiert extern Modi.
  • Zousätzlech Funktiounen fir e puer Modi gläichzäiteg ze benotzen (een op der anerer - Stacking), wéi och fir Sets vu Reegelen ze benotzen (Wordlist Reegele Stacking).
  • Verbesserunge fir d'Maskemodi (graduell Ausdehnung vun der Mask an engem spezifizéierte Gamme vu Längt, Uwendung vun enger Mask op der Säit vum OpenCL-Apparat oder FPGA-Board) an eenzege Rëss (raisonnabel Verhalen op Apparater déi eng grouss Unzuel vun Hashes parallel berechent , fir déi virdru net genuch verifizéierbar Passwierder an dësem Modus waren, an och Restriktiounen op Erënnerungsverbrauch).
  • Vill Verbesserunge fir Unicode an aner Kodéierungen a verschiddene Subsystemer z'ënnerstëtzen.
  • Vill Verbesserunge fir * 2john Programmer (déi Dateie vu verschiddene Formater konvertéieren fir
    benotzt mam John), besonnesch wpapcap2john (handhabt WiFi Traffic).

  • Et gi vill nei Kommandozeiloptiounen, Astellungen an john.conf, Skriptoptiounen konfiguréieren an entspriechend nei Fonctiounen, net all déi hei ernimmt goufen.
  • D'Verbesserung vun der Codequalitéit dank der agebauter Ënnerstëtzung fir Debug Builds mat AddressSanitizer (virdrun) an UndefinedBehaviorSanitizer (bäigefüügt), andeems en agebaute Format Fuzzer (als Deel vum GSoC 2015) benotzt, kontinuéierlech Integratioun benotzt (baut fir Dosende vu Betribssystem a Compiler Kombinatiounen a testen se fir korrekt Ënnerstëtzung fir all Formater).

Source: opennet.ru

Setzt e Commentaire