Argon2 по своей природе требователен к памяти. В полуофициальной реализации Go при использовании IDKey
рекомендуются следующие параметры:
key := argon2.IDKey([]byte("some password"), salt, 1, 64*1024, 4, 32)
где 1
— параметр времени, а 64*1024
— параметр памяти. Это означает, что библиотека создаст буфер размером 64 МБ при хешировании значения. В сценариях, когда одновременно может выполняться множество процедур хеширования, это создает большую нагрузку на память хоста.
В тех случаях, когда потребление памяти слишком велико, рекомендуется уменьшить параметр памяти и увеличить фактор времени:
Черновик RFC рекомендует[2] time=1, а memory=64*1024 — разумное число. Если использование такого объема памяти (64 МБ) в некоторых контекстах невозможно, для компенсации можно увеличить параметр времени.
Итак, предполагая, что я хотел бы ограничить потребление памяти до 16 МБ (1/4 рекомендуемых 64 МБ), мне все еще неясно, как мне настроить параметр time
: должно ли это быть < strong>умножить на 4, чтобы произведение памяти и времени не изменилось? Или есть какая-то другая логика за корреляцией времени и памяти в игре?
6.4 User-controlled parameters
:NumberTof passes over the memory. The running time depends linearly on this parameter. We expectthat the user chooses this number according to the time constraints on the application. Again, there isno ”insecure value” forT.
T определяет силу хеширования. Увеличение M улучшает защиту от en.wikipedia.org/wiki/Side-channel_attack. - person mh-cbon   schedule 13.07.2020