What is missing or needs to be updated?
Until quite recently with RFC 9106, the "best" or recommended parameter values for tuning Argon2 seemed to be arbitrarily chosen or change significantly over time. This OWASP cheatsheet is no different, and with many many places referring to it as the authority for using Argon2 over BCrypt, its imperative that the recommended parameter values within this doc adhere to the Argon2 authors' RFC 9106 that contain the recommended tuning values.
If there is still benefit to keeping the currently recommended values, explain their rationale and origin alongside the RFC recommended values.
How should this be resolved?
Recommend at least the two absolute recommended values in the RFC with the first being preferred:
- High memory usage:
t=1, p=4, m=2^21 (2 GiB)
- Low memory usage:
t=3, p=4, m=2^16 (64 MiB)
Then explain that, if the above two are unsuitable, how one should (must?) tune Argon2 to be sufficiently slow and memory intensive for their server or machine hardware. That is, select the highest t and m value that one can tolerate with p=4.
Outside of the RFC, it may be suitable to recommend what is "slow enough" for password hashing (500ms? 1000ms?).
What is missing or needs to be updated?
Until quite recently with RFC 9106, the "best" or recommended parameter values for tuning Argon2 seemed to be arbitrarily chosen or change significantly over time. This OWASP cheatsheet is no different, and with many many places referring to it as the authority for using Argon2 over BCrypt, its imperative that the recommended parameter values within this doc adhere to the Argon2 authors' RFC 9106 that contain the recommended tuning values.
If there is still benefit to keeping the currently recommended values, explain their rationale and origin alongside the RFC recommended values.
How should this be resolved?
Recommend at least the two absolute recommended values in the RFC with the first being preferred:
t=1,p=4,m=2^21(2 GiB)t=3,p=4,m=2^16(64 MiB)Then explain that, if the above two are unsuitable, how one should (must?) tune Argon2 to be sufficiently slow and memory intensive for their server or machine hardware. That is, select the highest
tandmvalue that one can tolerate withp=4.Outside of the RFC, it may be suitable to recommend what is "slow enough" for password hashing (500ms? 1000ms?).