John the Ripper 1.9.0-jumbo-1 tika izlaists ar FPGA atbalstu

Atbrīvots новая версия старейшей поддерживаемой программы для подбора паролей John the Ripper 1.9.0-jumbo-1 (проект развивается с 1996 года). C выхода прошлой версии 1.8.0-jumbo-1 прошло 4.5 года, за которые было внесено более 6000 изменений (git commits) от более 80 разработчиков. Благодаря nepārtraukta integrācija, включающей предварительную проверку каждого изменения (pull request) на многих платформах, в течение этого срока разработчики рекомендовали использовать pašreizējais izdevums no GitHub, состояние которой поддерживалось стабильным несмотря на вносимые изменения. Основной код проекта izplata под лицензией GPLv2+, а код некоторых компонентов под лицензией BSD.

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

Для ускорения работы реализовано применение маски (режим «—mask», в том числе в комбинации с другими режимами) и сравнение вычисленных хешей с загруженными на стороне FPGA. С точки зрения реализации, во многих из дизайнов (например, для sha512crypt un Drupal7) tiek izmantoti bloki, kas sastāv no vairāku vītņu procesoru kodoliem (mīkstajiem CPU kodoliem), kas mijiedarbojas ar kriptogrāfiskajiem kodoliem. Šīs funkcionalitātes izstrādi vadīja Deniss Burikins sadarbībā ar citiem jumbo izstrādātājiem.

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

  • Поддержка большого количества дополнительных типов хешей, шифров и т.п., включая как классические хеши паролей (например, от новых версий QNX), так и кошельки криптовалют, шифрованные архивы и шифрованные файловые системы (например, Bitlocker и FreeBSD geli), а также поддержку новых разновидностей форматов, поддерживаемых ранее (например, добавлена поддержка bcrypt-pbkdf для OpenBSD softraid) и многое другое. В общей сложности, добавлено 80 форматов на CPU и 47 на OpenCL. Общее количество форматов теперь 407 на CPU (или 262 не включая «dynamic» форматы, настраиваемые из файлов конфигурации) и 88 на OpenCL.
  • Atteikums atbalstīt CUDA valodu par labu OpenCL, kas nekādā veidā netraucē pilnvērtīgi izmantot NVIDIA GPU (un pat palīdz, pateicoties tam, ka izstrāde un optimizācija tiek koncentrēta uz vienu katra formāta ieviešanu GPU, nevis uz divām ieviešanām iepriekš).
  • Atbalsts jaunām SIMD instrukciju komplektiem - AVX2, AVX-512 (tostarp otrajai paaudzei Xeon Phi) un MIC (pirmai paaudzei) -, kā arī universālāka un pilnīgāka SIMD izmantošana daudzu formātu ieviešanā, ieskaitot iepriekš atbalstītās instrukciju kopas līdz AVX un XOP uz x86(-64) un
    NEON, ASIMD и AltiVec на ARM, Aarch64 и POWER, соответственно.

  • Daudzas optimizācijas CPU un OpenCL, lai efektīvāk strādātu ar lielu skaitu jaucēju vienlaicīgi (piemēram, tika pārbaudīta 320 miljonu SHA-1 jaucēju ielāde uz GPU), gan lai palielinātu jaucējvārdu aprēķinu ātrumu. Dažas no šīm optimizācijām ir universālas, dažas aptver dažādas formātu apakškopas, un daudzas ir raksturīgas atsevišķiem formātiem.
  • (Авто-)настройка оптимальной буферизации проверяемых паролей на CPU («—tune=auto —verbosity=5») и оптимальных размерностей задания на OpenCL (включена по умолчанию), в том числе с учетом медленного выхода на полную рабочую частоту GPU серии NVIDIA GTX 10xx и новее. Использование реально загруженных хешей и реальной длины проверяемых паролей (когда она известна заранее) для такой авто-настройки.
  • Добавление компилятора «динамических выражений», указываемых прямо на командной строке и реализующих новые гибридные типы хешей, например «—format=dynamic=’sha1(md5($p).$s)'», вычисляемые на CPU с использованием SIMD. В качестве компонентов таких выражений поддерживаются десятки быстрых хешей (от распространенных вроде MD5 до умеренно экзотических вроде Whirlpool), объединение подстрок, кодирование и декодирование, преобразование регистра символов, ссылки на пароль, соль, имя пользователя и строковые константы.
  • Nevēlamu atšķirību novēršana no hashcat, tostarp atbalsts iepriekš hashcat specifiskiem noteikumiem (vārdu saraksta kārtulu komandas), pāreja uz OpenCL ierīču numerāciju no 1, viena un tā paša paroles garuma (parasti garums 7) izmantošana veiktspējas pārbaudēm pēc noklusējuma.
  • Jauni režīmi pārbaudāmu paroļu ģenerēšanai (uzlaušanas režīmi), tostarp PRINCE no hashcat (veido “frāzes”, apvienojot vairākus vārdus kopējā garuma pieaugošā secībā), apakškopas (izceļ paroles ar nepietiekamu dažādu rakstzīmju skaitu, pat ja šīs rakstzīmes nāk no liela iespējamo paroļu kopuma) un hibrīdiem ārējiem (ļauj ārējiem režīmiem, kas aprakstīti konfigurācijas failos C veida valodā, lai ģenerētu daudzas pārbaudāmas paroles, pamatojoties uz katru pamata “vārdu”, kas saņemts no cita režīma). Arī vairāki jauni iepriekš noteikti ārējie režīmi.
  • Papildu iespējas vairāku režīmu vienlaicīgai lietošanai (viens virs otra – sakraušana), kā arī noteikumu kopu izmantošanai (vārdu saraksta noteikumu sakraušana).
  • Maskas režīmu uzlabojumi (pakāpeniska maskas izstiepšana noteiktā garuma diapazonā, maskas uzlikšana OpenCL ierīces vai FPGA plates sānos) un viena plaisa (saprātīga rīcība ierīcēs, kas paralēli aprēķina lielu jaucēju skaitu , kurām iepriekš šajā režīmā nebija pietiekami daudz pārbaudāmu paroļu, kā arī atmiņas patēriņa ierobežojumi).
  • Daudzi uzlabojumi, lai atbalstītu Unicode un citus kodējumus dažādās apakšsistēmās.
  • Daudzi *2john programmu uzlabojumi (kas pārvērš dažādu formātu failus, lai
    izmantot kopā ar john), īpaši wpapcap2john (apstrādā WiFi trafiku).

  • Ir daudz jaunu komandrindas opciju, iestatījumu john.conf, konfigurēt skripta opcijas un atbilstošus jaunus līdzekļus, no kuriem visi šeit netika minēti.
  • Koda kvalitātes uzlabošana, pateicoties iebūvētajam atbalstam atkļūdošanas būvējumiem ar AddressSanitizer (iepriekš) un UndefinedBehaviorSanitizer (pievienots), pievienojot iebūvētu formāta fuzer (kā daļa no GSoC 2015), izmantojot nepārtrauktu integrāciju (būvējumi desmitiem operētājsistēmu un kompilatoru kombinācijas un to testēšana, lai nodrošinātu pareizu atbalstu visiem formātiem).

Avots: opennet.ru

Pievieno komentāru