Јохн тхе Риппер 1.9.0-јумбо-1 објављен са ФПГА подршком

Ослобођен новая версия старейшей поддерживаемой программы для подбора паролей John the Ripper 1.9.0-jumbo-1 (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря континуирано интеграција, включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать тренутну ревизију са ГитХуб-а, состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта дистрибуира под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.

Особенностью новой версии является появление поддержки FPGA (в дополнение к CPU, GPU и Xeon Phi). Для плат Зтек 1.15и, включающих по 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. С точки зрения реализации, во многих из дизайнов (например, для сха512црипт и Друпал7) коришћени блокови који се састоје од вишенитних процесорских језгара (меких ЦПУ језгара) у интеракцији са криптографским језграма. Развој ове функционалности водио је Денис Бурикин у сарадњи са другим јумбо програмерима.

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

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • Уклањање ЦУДА језичке подршке у корист ОпенЦЛ-а, што ни најмање не омета пуно коришћење НВИДИА ГПУ-а (а чак и помаже, захваљујући фокусу развоја и оптимизације на једној имплементацији сваког формата под ГПУ-ом уместо два имплементације пре).
  • Подршка за нове СИМД скупове инструкција - АВКС2, АВКС-512 (укључујући другу генерацију Ксеон Пхи) и МИЦ (за прву генерацију) - као и универзалнију и потпунију употребу СИМД-а у имплементацијама многих формата, укључујући употребу претходно подржаних скупова инструкција до АВКС и КСОП на к86(-64) и
    NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно.

  • Бројне оптимизације за ЦПУ и ОпенЦЛ, за ефикаснији рад са великим бројем хешова у исто време (на пример, учитавање 320 милиона СХА-1 хеша на ГПУ) и за повећање брзине израчунавања хеша. Неке од ових оптимизација су универзалне, неке покривају различите подскупове формата, а многе су специфичне за формат.
  • (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
  • Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • Елиминација непожељних разлика у односу на хасхцат, укључујући подршку за претходно специфичне команде правила листе речи за хасхцат, прелазак на нумерисање ОпенЦЛ уређаја са 1, коришћење истих подразумеваних дужина лозинки (обично дужине 7) за тестове перформанси.
  • Нови режими разбијања, укључујући ПРИНЦЕ из хасхцат-а (генерише „фразе“ спајањем више речи у растућем редоследу укупне дужине), подскупове (доноси лозинке са недовољно различитих знакова чак и ако ти карактери потичу из великог скупа могућих) и хибридне екстерне (омогућава спољним режимима, описаним у конфигурационим датотекама на језику сличном Ц, да генеришу многе проверљиве лозинке на основу сваке основне „речи“ примљене из другог режима). Такође, неколико нових унапред дефинисаних екстерних режима.
  • Додатне могућности за истовремено коришћење неколико режима (један на другом - слагање), као и за такву употребу скупова правила (слагање правила листе речи).
  • Побољшања у режимима маске (постепено истезање маске у одређеном опсегу дужина, примена маске на страну ОпенЦЛ уређаја или ФПГА плоче) и једнострука пукотина (разумно понашање на уређајима који паралелно рачунају велики број хешова, што је претходно у овом режиму недостајале су лозинке за проверу, као и ограничења потрошње меморије).
  • Многа побољшања у подршци за Уницоде и друга кодирања у различитим подсистемима.
  • Многа побољшања *2јохн програма (конвертовање датотека различитих формата у
    користите са јохн-ом), посебно впапцап2јохн (управља ВиФи саобраћајем).

  • Многе нове опције командне линије, подешавања јохн.цонф, опције конфигурисања скрипте и њихове одговарајуће нове функције, од којих нису све поменуте овде.
  • Побољшање квалитета кода захваљујући уграђеној подршци за дебуг буилдове са АддрессСанитизер (претходно) и УндефинедБехавиорСанитизер (додато), додавањем уграђеног фуззер формата (унутар ГСоЦ 2015), коришћењем континуиране интеграције (градње за десетине комбинација оперативног система и компајлера и тестирајући их за исправну подршку свих формата).

Извор: опеннет.ру

Додај коментар