Выпуск John the Ripper 1.9.0-jumbo-1 с поддержкой FPGA

Выпущeнa нoвaя вeрсия стaрeйшeй пoддeрживaeмoй прoгрaммы ради пoдбoрa пaрoлeй John the Ripper 1.9.0-jumbo-1 (прoeкт рaзвивaeтся с 1996 гoдa). C выxoдa прoшлoй вeрсии 1.8.0-jumbo-1 прoшлo 4.5 гoдa, зa кoтoрыe былo внeсeнo бoлee 6000 измeнeний (git commits) oт бoлee 80 рaзрaбoтчикoв. Блaгoдaря нeпрeрывнoй интeгрaции, включaющeй прeдвaритeльную прoвeрку кaждoгo измeнeния (pull request) нa мнoгиx плaтфoрмax, в тeчeниe этoгo срoкa рaзрaбoтчики рекомендовали пустить в ход текущую редакцию с GitHub, состояние которой поддерживалось стабильным вопреки на вносимые изменения. Особенностью новой версии является приход поддержки 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 в расчете на плату, в цену оборудования и на ватт. Как и поддерживаются кластеры из плат сего типа, что проверено вплоть прежде 16 плат (64 чипа FPGA), контролируемых с одного Raspberry Pi 2. Поддерживается обычная функциональность John the Ripper, в том числе и все режимы подбора паролей и одновременную загрузку большого количества хешей. Ради ускорения работы реализовано применение маски (производительность "--mask", в том числе в комбинации с другими режимами) и сличение вычисленных хешей с загруженными на стороне FPGA. Разработку этой функциональности вел Дионисий Бурыкин в координации с другими разработчиками jumbo. В общей сложности, добавлено 80 форматов возьми CPU и 47 на OpenCL. Общее обилие форматов теперь 407 на CPU (разве 262 не включая "dynamic" форматы, настраиваемые с файлов конфигурации) и 88 на OpenCL. Отрешение. Ant. принятие от поддержки языка CUDA в пользу OpenCL, отчего ничуть не мешает полноценному использованию GPU ото NVIDIA (и даже помогает, благодаря фокусированию разработки и оптимизаций в одну реализацию каждого формата подо GPU вместо двух реализаций ранее). Подсоба новых наборов инструкций SIMD - AVX2, AVX-512 (в часть числе для второго поколения Xeon Phi) и MIC (чтобы первого поколения) - а также сильнее универсальное и полное использование SIMD в реализациях многих форматов, начиная применение ранее поддерживаемых наборов инструкций вплоть до самого AVX и XOP на x86(-64) и NEON, ASIMD и AltiVec для ARM, Aarch64 и POWER, соответственно. Многочисленные оптимизации для того CPU и OpenCL, как для более эффективной работы с большим численностью хешей одновременно (например, проверялась погрузка 320 миллионов хешей SHA-1 на GPU), в такой мере и для повышения скорости вычисления хешей. Доля из этих оптимизаций универсальные, номер охватывает различные подмножества форматов, а многие специфичны во (избежание отдельных форматов. (Авто-)настройка оптимальной буферизации проверяемых паролей получи и распишись CPU ("--tune=auto --verbosity=5") и оптимальных размерностей задания получи и распишись OpenCL (включена по умолчанию), в томишко числе с учетом медленного выхода для полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Исчерпание реально загруженных хешей и реальной длины проверяемых паролей (идеже она известна заранее) для такого порядка авто-настройки. Добавление компилятора "динамических выражений", указываемых чистосерде на командной строке и реализующих новые гибридные типы хешей, во "--format=dynamic='sha1(md5($p).$s)'", вычисляемые в CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (ото распространенных вроде MD5 до умеренно экзотических в виде Whirlpool), объединение подстрок, кодирование и дешифрование, преобразование регистра символов, ссылки для пароль, соль, имя пользователя и строковые константы. Вычеркивание нежелательных отличий от hashcat, в томище числе поддержка ранее специфичных во (избежание hashcat правил (wordlist rule commands), прясло на нумерацию OpenCL устройств с 1-го, служба по умолчанию тех же длин паролей (привычно длина 7) при тестах производительности. Новые режимы генерирования проверяемых паролей (cracking modes), начиная PRINCE из hashcat (формирует "краснобайство", объединяя несколько слов в порядке возрастания суммарной длины), subsets (подбирает пароли с недостаточным счетом различных символов, даже если сии символы пришли из большого набора возможных) и hybrid external (позволяет внешним режимам, описываемым в файлах конфигурации бери Си-подобном языке, формировать целый ряд проверяемых паролей на основе каждого базового "словоизвержение", поступившего от другого режима). Равным образом добавлено несколько новых предопределенных внешних режимов. Дополнительные внутренние резервы по использованию нескольких режимов совместно (один поверх другого - stacking), а тоже по такому использованию наборов правил (wordlist rules stacking). Усовершенствования режимов mask (постепенное растягивание маски в указанном диапазоне длин, действие маски на стороне OpenCL-устройства неужто платы FPGA) и single crack (разумное манера держаться на устройствах, вычисляющих большое обилие хешей параллельно, на что раньше в этом режиме не хватало проверяемых паролей, а как и ограничения на расход памяти). (целый) короб улучшений, связанных с поддержкой Unicode и других кодировок в разных подсистемах. Целый ряд улучшений программ *2john (преобразующих файлы разных форматов во (избежание использования с john), в особенности wpapcap2john (обрабатывает WiFi пробка). Много новых опций командной строки, настроек в john.conf, опций configure-скрипта и соответствующие им новые внутренние резервы, далеко не все из которых посчастливилось упомянуть здесь. Повышение качества заключение благодаря встроенной поддержке отладочных сборок с AddressSanitizer (была перед этим) и UndefinedBehaviorSanitizer (добавлена), добавлению встроенного фаззера форматов (в рамках GSoC 2015), применению непрерывной интеграции (сборки почти десятки сочетаний операционной системы и компилятора и отладка в них корректной поддержки всех форматов). Ипокрена: http://www.opennet.ru/opennews/art.shtml?num=50702