While there is no public cryptanalysis applicable to Argon2d, there are two published attacks on the Argon2i function. The first attack is applicable only to the old version of Argon2i, while the second has been extended to the latest version (1.3).5
The first attack shows that it is possible to compute a single-pass Argon2i function using between a quarter and a fifth of the desired space with no time penalty, and compute a multiple-pass Argon2i using only N/e (≈ N/2.72) space with no time penalty.6 According to the Argon2 authors, this attack vector was fixed in version 1.3.7
The second attack shows that Argon2i can be computed by an algorithm which has complexity O(n7/4 log(n)) for all choices of parameters σ (space cost), τ (time cost), and thread-count such that n=σ∗τ.8 The Argon2 authors claim that this attack is not efficient if Argon2i is used with three or more passes.9 However, Joël Alwen and Jeremiah Blocki improved the attack and showed that in order for the attack to fail, Argon2i v1.3 needs more than 10 passes over memory.10
To address these concerns, RFC9106 recommends using Argon2id to largely mitigate such attacks. 11
Source:12
Argon2 makes use of a hash function capable of producing digests up to 232 bytes long. This hash function is internally built upon Blake2.
As of May 2023, OWASP's Password Storage Cheat Sheet recommends that people "use Argon2id with a minimum configuration of 19 MiB of memory, an iteration count of 2, and 1 degree of parallelism."13
OWASP recommends that Argon2id should be preferred over Argon2d and Argon2i because it provides a balanced resistance to both GPU-based attacks and side-channel attacks.14
OWASP further notes that the following Argon2id options provide equivalent cryptographic strength and simply trade off memory usage for compute workload:15
"Password Hashing Competition" https://password-hashing.net/ ↩
Jos Wetzels (2016-02-08). "Open Sesame: The Password Hashing Competition and Argon2". arXiv:1602.03097 [cs.CR]. /wiki/ArXiv_(identifier) ↩
Argon2: the memory-hard function for password hashing and other applications, Alex Biryukov, et al, October 1, 2015 https://password-hashing.net/argon2-specs.pdf ↩
Biryukov, Alex; Dinu, Daniel; Khovratovich, Dmitry; Josefsson, Simon (September 2021). "Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications". Retrieved September 9, 2021. https://www.rfc-editor.org/rfc/rfc9106.html ↩
Joël Alwen; Jeremiah Blocki (2016-08-05). Towards Practical Attacks on Argon2i and Balloon Hashing (PDF) (Report). https://eprint.iacr.org/2016/759.pdf ↩
Henry; Corrigan-Gibbs; Dan Boneh; Stuart Schechter (2016-01-14). Balloon Hashing: Provably Space-Hard Hash Functions with Data-Independent Access Patterns (PDF) (Report). https://eprint.iacr.org/2016/027.pdf ↩
"[Cfrg] Argon2 v.1.3". www.ietf.org. Retrieved 2016-10-30. https://www.ietf.org/mail-archive/web/cfrg/current/msg07948.html ↩
Joël Alwen; Jeremiah Blocki (2016-02-19). Efficiently Computing Data-Independent Memory-Hard Functions (PDF) (Report). https://eprint.iacr.org/2016/115.pdf ↩
"Recommendations". Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications. IETF. September 2021. sec. 7.4. doi:10.17487/RFC9106. RFC 9106. Retrieved 12 July 2023. https://datatracker.ietf.org/doc/html/rfc9106#section-7.4 ↩
"Password Storage Cheat Sheet". OWASP Cheat Sheet Series. OWASP. Retrieved 2023-05-17. https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html ↩