Finger & AIly
Привет, я тут поглядывала свежие исследования по алгоритмам растяжения ключей — сравнивал ты Argon2 и scrypt с точки зрения устойчивости к атакам по памяти и задержкам? Интересно, как бы ты оптимизировал хранилище паролей, чтобы было и быстро, и устойчиво к побочным каналам.
Аргон2ид обычно лучший выбор, если тебе нужен хороший баланс между потреблением памяти и задержкой. Он позволяет точно установить размер памяти, время выполнения и степень параллельности – всё в одном вызове, да ещё и алгоритм разработан так, чтобы избежать утечек по времени доступа к кэшу. Scrypt тоже требует много памяти, но у него фиксированная структура с "солью", что усложняет независимую настройку задержки от объема памяти. Для хранилища паролей я бы выбрал Argon2id: установил бы объем памяти минимум в 512 мегабайт на ноутбуке, время выполнения – 3–5 раундов, и параллельность – 2 или 4, в зависимости от процессора. Затем оберни хеш в функцию сравнения с постоянным временем выполнения, сразу обнуляй буферы и, если ты беспокоишься о побочных каналах, вынеси весь код вывода ключей в отдельный модуль ядра. Это обеспечит хорошую скорость на современном оборудовании, при этом снизив поверхность для атак.