Vydanie John the Ripper 1.9.0-jumbo-1 s podporou FPGA

Vydané новая версия старейшей поддерживаемой программы для подбора паролей John the Ripper 1.9.0-jumbo-1 (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря kontinuálna integrácia, включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать aktuálne vydanie z GitHubu, состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта distribuovaný под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.

Особенностью новой версии является появление поддержки FPGA (в дополнение к CPU, GPU и Xeon Phi). Для плат ZTEX 1.15r, включающих по 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 в расчете на плату, на цену оборудования и на ватт. Также поддерживаются klastre из плат этого типа, что проверено вплоть до 16 плат (64 чипа FPGA), контролируемых с одного Raspberry Pi 2. Поддерживается обычная функциональность John the Ripper, включая все режимы подбора паролей и одновременную загрузку большого количества хешей.

Для ускорения работы реализовано применение маски (режим «—mask», в том числе в комбинации с другими режимами) и сравнение вычисленных хешей с загруженными на стороне FPGA. С точки зрения реализации, во многих из дизайнов (например, для sha512crypt a Drupal7) používajú sa bloky pozostávajúce z viacvláknových procesorových jadier (mäkkých jadier CPU) interagujúcich s kryptografickými jadrami. Vývoj tejto funkcionality viedol Denis Burykin v koordinácii s ďalšími jumbo vývojármi.

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

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • Odmietnutie podpory jazyka CUDA v prospech OpenCL, čo v žiadnom prípade nezasahuje do plného využitia GPU NVIDIA (a dokonca pomáha vďaka zameraniu vývoja a optimalizácie na jednu implementáciu každého formátu pre GPU namiesto dvoch implementácií predtým).
  • Podpora nových inštrukčných sád SIMD - AVX2, AVX-512 (vrátane pre druhú generáciu Xeon Phi) a MIC (pre prvú generáciu) - ako aj univerzálnejšie a kompletnejšie využitie SIMD v implementáciách mnohých formátov, vrátane použitia predtým podporované inštrukčné sady až po AVX a XOP na x86(-64) a
    NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно.

  • Početné optimalizácie pre CPU a OpenCL, a to na efektívnejšiu prácu s veľkým počtom hashov súčasne (testovalo sa napríklad načítanie 320 miliónov hashov SHA-1 na GPU), ako aj na zvýšenie rýchlosti výpočtov hash. Niektoré z týchto optimalizácií sú univerzálne, niektoré pokrývajú rôzne podmnožiny formátov a mnohé sú špecifické pre jednotlivé formáty.
  • (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
  • Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • Odstránenie nežiaducich rozdielov od hashcatu, vrátane podpory predtým špecifických pravidiel pre hashcat (príkazy pravidiel pre zoznam slov), prechod na číslovanie zariadení OpenCL od 1, predvolené používanie rovnakých dĺžok hesiel (zvyčajne dĺžky 7) pre testy výkonu.
  • Nové režimy na generovanie overiteľných hesiel (režimy prelomenia) vrátane PRINCE z hashcat (tvorí „frázy“ kombináciou niekoľkých slov v rastúcom poradí podľa celkovej dĺžky), podmnožín (vyvoláva heslá s nedostatočným počtom rôznych znakov, aj keď tieto znaky prichádzajú z veľkej množiny možných) a hybridné externé (umožňuje externým režimom, popísaným v konfiguračných súboroch v jazyku podobnom C, generovať veľa overiteľných hesiel na základe každého základného „slova“ prijatého z iného režimu). Tiež niekoľko nových preddefinovaných externých režimov.
  • Ďalšie funkcie na súčasné používanie niekoľkých režimov (jeden na druhom - skladanie), ako aj na používanie sád pravidiel (skladanie pravidiel zoznamu slov).
  • Vylepšenia režimov masky (postupné naťahovanie masky v určenom rozsahu dĺžok, aplikácia masky na stranu OpenCL zariadenia alebo dosky FPGA) a single crack (rozumné správanie na zariadeniach, ktoré paralelne počítajú veľké množstvo hashov). , pre ktoré predtým nebolo v tomto režime dostatok overiteľných hesiel a tiež obmedzenia spotreby pamäte).
  • Mnoho vylepšení pre podporu Unicode a iných kódovaní v rôznych podsystémoch.
  • Mnoho vylepšení programov *2john (ktoré konvertujú súbory rôznych formátov pre
    použitie s johnom), najmä wpapcap2john (zaobchádza s prevádzkou WiFi).

  • Existuje mnoho nových možností príkazového riadka, nastavení v john.conf, možností konfigurácie skriptov a zodpovedajúcich nových funkcií, z ktorých nie všetky tu boli spomenuté.
  • Zlepšenie kvality kódu vďaka vstavanej podpore pre zostavy ladenia s AddressSanitizer (predtým) a UndefinedBehaviorSanitizer (pridané), pridanie vstavaného fuzzera formátu (ako súčasť GSoC 2015), pomocou nepretržitej integrácie (zostavy pre desiatky operačných systémov a kompilátorov kombinácie a ich testovanie na správnu podporu všetkých formátov).

Zdroj: opennet.ru

Pridať komentár