Переможець Password Hashing Competition Argon2 або ще раз про повільному хэшировании

Привіт, %username%!

Раніше ми вже зачіпали тему уповільнення хешування. Це було ще до введення моди на швидкі хэшедробилки aka майнеры. Як виявилося, тема набагато серйозніше, ніж «прокрутити хеш 100500 раз і підмішувати до нього всяке сміття», тому що GPU і спец девайси драматично прискорюють перебір, з яким складно боротися навіть з допомогою таких речей як bcrypt.
І ось, люди запилили змагання, результатом якого повинен був стати алгоритм, який складно прискорити спец чіпах і GPU, при цьому він повинен бути настроюється залежно від побажань розробника. Таким алгоритмом став Argon2.



Argon2 дозволяє налаштувати наступні параметри хешування:

  1. Кількість ітерацій
  2. Бажаний обсяг займаної пам'яті
  3. Ступінь паралелізму
  4. Розмір результату, в байтах
  5. Секретний ключ
  6. Додаткові дані


Так само, Argon2 доступний у двох варіантах: Argon2i і Argon2d. Перший робить більше проходів по пам'яті і більш повільне, другий швидше, але у нього відсутня захист від timing атак, а так само його складніше підбирати на GPU. Якщо не впевнені — вибирайте Argon2i.

Перший рекомендується для хешування паролів, другий — для криптовалют, там timing атаки не страшні.
Алгоритм оптимізований саме для архітектури x86/x64, тому його вкрай складно прискорювати ASIC/GPU та інших залізних штуках. Використовується багаторазовий прохід по пам'яті, всередині формується величезна страшна матриця хешей, які залежать один від одного і складним чином обробляються.

Якщо хочеться зовсім технічних подробиць, тобто офіційна дока з матаном та іншими викладками.

Так само доступні биндинги для багатьох популярних мов і платформ: Go, Haskell, JavaScript, JVM, Lua, OCaml, Perl, Python, Ruby, Rust і C#.
Розробники рекомендують підібрати параметри алгоритму таким чином, щоб хешування займало приблизно 0.5 секунди при витраті 2-4 гб пам'яті.

Загалом, штука крута, я вважаю її потрібно впроваджувати скрізь і всюди. Наприклад, вже коін, засновані на Argon2. Поки що без GPU і asic.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.