…
…
Argon2 is a password-hashing function that encapsulates state of the art in memory-hard function design. It can be used to hash passwords for credential storage, key derivation, and other purposes.
It has a straightforward design that aims for the highest memory fill rate and efficient utilization of numerous compute units while defending against tradeoff attacks (exploiting the recent processors' cache and memory organization).
Argon2 is divided into three types: Argon2i, Argon2d, and Argon2id. Argon2d is quicker and employs data-dependent memory access, making it highly resistant to GPU cracking attacks and appropriate for applications where side-channel timing assaults aren't a concern (e.g., cryptocurrencies). Instead, Argon2i employs data-independent memory access, preferable for password hashing and password-based key derivation. Still, it is slower because it makes more memory passes to guard against tradeoff attacks. Argon2id is a mixture of Argon2i and Argon2d that uses a mix of data-dependent, and data-independent memory accesses to provide some of Argon2i's side-channel cache timing resistance and much of Argon2d's GPU cracking resistance.
Argon2i, Argon2d, and Argon2id are parametrized by:
There are several well-known hash functions in use today:
Web Services are like teenage sex. Everyone is talking about doing it, and those who are actually doing it are doing it badly.
Michelle Bustamante
…
…