построен из стандартных примитивов: он может использовать любую стандартную не-жесткую криптографическую хеш-функцию в качестве подалгоритма (например, SHA-3 , SHA-512 ),
устойчив к атакам по сторонним каналам : схема доступа к памяти не зависит от данных, которые необходимо хэшировать,
прост в реализации и соответствует производительности аналогичных алгоритмов.
Авторы сравнивают Balloon с Argon2 , алгоритмом с аналогичной производительностью. [1]
Алгоритм
Алгоритм состоит из трех шагов: [1]
Расширение, при котором начальный буфер заполняется псевдослучайной последовательностью байтов, полученной из пароля и соли, многократно хэшированных.
Перемешивание, при котором байты в буфере перемешиваются time_cost количество раз.
Вывод, где часть буфера берется как результат хеширования.
Ссылки
^ abc Boneh, Dan; Corrigan-Gibbs, Henry; Schechter, Stuart (2016-01-11). "Balloon Hashing: A Memory-Hard Function Provided Provible Protection Against Sequential Attacks" (Хеширование шаров: функция, требующая большой памяти, обеспечивающая доказуемую защиту от последовательных атак). ePrint . 2016 (27) . Получено 2019-09-03 .
^ "Balloon Hashing". Stanford Applied Crypto Group . Stanford University . Получено 2019-09-03 .
^ NIST SP800-63B Раздел 5.1.1.2
Внешние ссылки
Исследуйте код прототипа на Github
Реализация на Python
Реализация Rust
Alwen; Blocki (2016). «Эффективное вычисление независимых от данных функций, требующих большой памяти». ePrint . 2016 (115).
Alwen; Blocki (2016). «К практическим атакам на Argon2i и хеширование с помощью баллонов». ePrint . 2016 (759).