По состоянию на 2020 год наиболее надежный и гибкий алгоритм в использовании,
тот, который с наибольшей вероятностью оптимизирует свои возможности при использовании любого оборудования,
является Argon2id или Argon2i .
Он предоставляет необходимый инструмент калибровки для поиска оптимизированных параметров прочности с учетом целевого времени хеширования и используемого оборудования.
- Argon2i специализируется на жадном хешировании памяти
- Argon2d специализируется на жадном хешировании процессора
- Argon2id использует оба метода.
Жадное хеширование памяти поможет против использования GPU для взлома.
Внедрение Spring Security / Bouncy Castle не оптимизировано и относительно недолго, учитывая, что может использовать злоумышленник. cf: Spring документация
В настоящее время реализация использует Bouncy Castle, который не использует параллелизм / оптимизацию, как взломщики паролей, поэтому между злоумышленником и защитником существует ненужная асимметрия.
Наиболее вероятная реализация, используемая для Java, это mkammerer 's,
jar / библиотека-оболочка официальной нативной реализации, написанной на Rust.
Это хорошо написано и просто в использовании.
Встроенная версия предоставляет встроенные сборки для Linux, Windows и OSX.
В качестве примера, он используется JPMorganChase в тессера проекте безопасности , используемого для обеспечения кворума , его Эфириума реализации cryptocurency.
Вот пример кода от Тессера.
Калибровка может быть выполнена с использованием de.mkammerer.argon2.Argon2Helper # findIterations
Алгоритм SCRYPT и Pbkdf2 также можно откалибровать, написав несколько простых тестов, но для текущих минимальных безопасных значений итераций потребуется больше времени хеширования.