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

Выпушчана новая версія найстарэйшай падтрымоўванай праграмы для падбору пароляў John the Ripper 1.9.0-jumbo-1. (Праект развіваецца з 1996 года.) На старонцы праекта даступныя для спампоўкі зыходнікі, а таксама гатовыя зборкі пад Windows.

Адзначаецца, што з выхаду версіі 1.8.0-jumbo-1 прайшло 4.5 гады, за якія было ўнесена больш за 6000 змен (git commits) ад больш за 80 распрацоўшчыкаў. На працягу гэтага тэрміна распрацоўшчыкі рэкамендавалі выкарыстоўваць бягучую рэдакцыю з GitHub, стан якой падтрымлівалася стабільным нягледзячы на ​​змены, якія ўносяцца дзякуючы бесперапыннай інтэграцыі, улучальнай папярэднюю праверку кожнай змены (pull request) на шматлікіх платформах. Асаблівасцю новай версіі з'яўляецца з'яўленне падтрымкі FPGA (ПЛІС) у дадатак да CPU, GPU і Xeon Phi.


Для плат ZTEX 1.15y, якія ўключаюць па 4 мікрасхемы FPGA і зыходна выкарыстоўваліся ў асноўным для майнінгу Bitcoin, зараз рэалізаваны 7 тыпаў хэшаў пароляў: bcrypt, класічны descrypt (уключаючы bigcrypt), sha512crypt, sha256crypt, md5cph pass (выкарыстоўваецца , у прыватнасці, у WordPress). Некаторыя з іх рэалізаваны на FPGA ўпершыню. Для bcrypt, дасягнутая прадукцыйнасць у ~1k c/s пры 5^7 ітэрацый («$119b$2») з спажыванай магутнасцю каля 5 ват істотна пераўзыходзіць вынікі для найновых 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, адпаведна. (Часткова ў рамках GSoC 2015.)
  • Шматлікія аптымізацыі для 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), прымяненню бесперапыннай інтэграцыі (зборкі пад дзесяткі спалучэнняў аперацыйнай фарматаў).

Крыніца: linux.org.ru

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