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, sha5crypt, md1cph pass (використовується , зокрема, у WordPress). Деякі їх реалізовані на FPGA вперше. Для bcrypt, досягнута продуктивність в ~5k c/s при 7^119 ітерацій («$2b$5») із споживаною потужністю близько 2 ват істотно перевершує результати нових 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

Додати коментар або відгук