Выпуск John the Ripper 1.9.0-jumbo-1 з падтрымкай FPGA

Выпушчана новая версія найстарэйшай падтрымліваецца праграмы для падбору пароляў John the Ripper 1.9.0-jumbo-1 (Праект развіваецца з 1996 года). З выхаду мінулай версіі 1.8.0-jumbo-1 прайшло 4.5 года, за якія было ўнесена больш за 6000 змен (git commits) ад больш за 80 распрацоўшчыкаў. Дзякуючы бесперапыннай інтэграцыі, улучальнай папярэднюю праверку кожнай змены (pull request) на шматлікіх платформах, на працягу гэтага тэрміна распрацоўнікі рэкамендавалі выкарыстоўваць бягучую рэдакцыю з GitHub, стан якой падтрымлівалася стабільным нягледзячы на ​​якія ўносяцца змены. Асноўны код праекта распаўсюджваецца пад ліцэнзіяй GPLv2+, а код некаторых кампанентаў пад ліцэнзіяй BSD.

Асаблівасцю новай версіі з'яўляецца з'яўленне падтрымкі FPGA (у дадатак да CPU, GPU і Xeon Phi). Для плат ZTEX 1.15y, якія ўключаюць па 4 чыпа FPGA і зыходна выкарыстоўваліся ў асноўным для майнінгу Bitcoin, зараз рэалізаваны 7 тыпаў хэшаў пароляў: bcrypt, класічны descrypt (уключаючы bigcrypt), sha512crypt, sha256crypt, md5cpht (выкарыстоўваецца , у прыватнасці, у WordPress). Некаторыя з іх рэалізаваны на FPGA ўпершыню.

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

Для паскарэння працы рэалізавана ўжыванне маскі (рэжым "-mask", у тым ліку ў камбінацыі з іншымі рэжымамі) і параўнанне вылічаных хэшаў з загружанымі на баку FPGA. З пункту гледжання рэалізацыі, у многіх з дызайнаў (напрыклад, для sha512crypt і Drupal7) ужытыя блокі якія складаюцца з шматструменных працэсарных ядраў (soft CPU cores), якія ўзаемадзейнічаюць з крыптаграфічнымі ядрамі. Распрацоўку гэтай функцыянальнасці вёў Дзяніс Бурыкін у каардынацыі з іншымі распрацоўшчыкамі jumbo.

Іншыя важныя змены:

  • Падтрымка вялікай колькасці дадатковых тыпаў хэшаў, шыфраў і да т.п., уключаючы як класічныя хэшы пароляў (напрыклад, ад новых версій QNX), так і кашалькі криптовалют, шыфраваныя архівы і шыфраваныя файлавыя сістэмы (напрыклад, Bitlocker і FreeBSD geli), а таксама падтрымку новых разнавіднасцяў фарматаў, якія падтрымліваюцца раней (напрыклад, дададзеная падтрымка bcrypt-pbkdf для OpenBSD softraid) і шматлікае іншае. У агульнай складанасці, дададзена 80 фарматаў на CPU і 47 на OpenCL. Агульная колькасць фарматаў зараз 407 на CPU (ці 262 не ўключаючы «dynamic» фарматы, якія наладжваюцца з файлаў канфігурацыі) і 88 на OpenCL.
  • Адмова ад падтрымкі мовы 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) пры тэстах прадукцыйнасці.
  • Новыя рэжымы генеравання правяраных пароляў (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), прымяненню бесперапыннай інтэграцыі (зборкі пад дзесяткі спалучэнняў аперацыйнай фарматаў).

Крыніца: opennet.ru

Дадаць каментар