==== Select the correct Argon2 parameters In general, the default values of the Argon2 library are considered safe. If you need to change the parameters, you should note the following: First, Argon2 comes in three forms: Argon2i, Argon2d and Argon2id. Argon2i is optimized for hashing passwords and uses data-independent memory access. Argon2d is faster and uses data-dependent memory access, making it suitable for applications where there is no risk of side-channel attacks. + Argon2id is a mixture of Argon2i and Argon2d and is recommended for most applications. Argon2id has three different parameters that can be configured: the basic minimum memory size (m), the minimum number of iterations (t) and the degree of parallelism (p). + The higher the values of m, t and p result in safer hashes, but come at the cost of higher resource usage. There exist general recommendations that balance security and speed in an optimal way. Hashes should be at least 32 bytes long and salts should be at least 16 bytes long. Next, the recommended parameters for Argon2id are: [options="header",cols="a,a,a,a"] |=== |Recommendation type |Time Cost |Memory Cost |Parallelism |Argon2 Creators |1 |2097152 (2 GiB) |4 |Argon2 Creators |3 |65536 (64 MiB) |4 |OWASP |1 |47104 (46 MiB) |1 |OWASP |2 |19456 (19 MiB) |1 |OWASP |3 |12288 (12 MiB) |1 |OWASP |4 |9216 (9 MiB) |1 |OWASP |5 |7168 (7 MiB) |1 |===