# Argon2

> password-based key derivation function

**Wikidata**: [Q21995362](https://www.wikidata.org/wiki/Q21995362)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Argon2)  
**Source**: https://4ort.xyz/entity/argon2

## Summary
Argon2 is a password-based key derivation function designed to securely derive cryptographic keys from passwords. It is part of the Password Hashing Competition and includes three variants: Argon2d, Argon2i, and Argon2id. The function is standardized in RFC 9106 and is known for its resistance to brute-force and side-channel attacks.

## Key Facts
- **Instance of**: Key derivation function
- **Has parts**: Argon2d, Argon2i, Argon2id
- **Aliases**: Argon 2
- **Participant in**: Password Hashing Competition
- **Described by source**: RFC 9106
- **Different from**: Argon2 (likely a typographical variant)
- **Wikipedia title**: Argon2
- **Wikipedia languages**: Available in 10 languages (cs, de, en, es, fr, it, ja, ko, ru, tr)
- **Google Knowledge Graph ID**: /g/11bxfzv4zq
- **Source code repository**: [GitHub](https://github.com/p-h-c/phc-winner-argon2) (qualified as a software repository)

## FAQs
### Q: What is the difference between Argon2d, Argon2i, and Argon2id?
A: Argon2d is optimized for password hashing and side-channel resistance, Argon2i is optimized for resistance against GPU cracking, and Argon2id combines both approaches for a balanced solution.

### Q: Why was Argon2 created?
A: Argon2 was developed as part of the Password Hashing Competition to provide a secure, memory-hard key derivation function that resists brute-force attacks.

### Q: What makes Argon2 secure?
A: Argon2 is designed to be memory-hard, meaning it requires significant memory to compute, making brute-force attacks computationally expensive.

### Q: Where is Argon2 standardized?
A: Argon2 is standardized in RFC 9106, which defines its specifications for password hashing and proof-of-work applications.

### Q: How is Argon2 different from other key derivation functions?
A: Unlike some older functions, Argon2 is resistant to both time and memory trade-off attacks, making it more secure for password storage.

## Why It Matters
Argon2 addresses critical security gaps in password storage by being memory-hard, which makes brute-force attacks significantly more difficult. It was the winner of the Password Hashing Competition, replacing weaker functions like bcrypt and PBKDF2. The function's design ensures resistance to side-channel attacks, making it a reliable choice for securing passwords in modern systems. Its standardization in RFC 9106 ensures interoperability and widespread adoption. Argon2's variants (Argon2d, Argon2i, Argon2id) cater to different security needs, making it a versatile solution for password hashing.

## Notable For
- **Winner of the Password Hashing Competition**: Selected as the most secure password hashing algorithm in 2015.
- **Memory-hard design**: Resists brute-force attacks by requiring substantial memory.
- **Multiple variants**: Offers Argon2d, Argon2i, and Argon2id for different security trade-offs.
- **Standardized in RFC 9106**: Ensures broad compatibility and adoption.
- **Resistance to side-channel attacks**: Protects against timing and cache-based attacks.

## Body
### Overview
Argon2 is a key derivation function designed for password hashing, developed as part of the Password Hashing Competition. It includes three variants: Argon2d, Argon2i, and Argon2id, each optimized for different security needs.

### Variants
- **Argon2d**: Optimized for password hashing and side-channel resistance.
- **Argon2i**: Optimized for resistance against GPU cracking.
- **Argon2id**: A hybrid approach combining both Argon2d and Argon2i for balanced security.

### Security Features
- **Memory-hard**: Requires significant memory to compute, making brute-force attacks expensive.
- **Side-channel resistance**: Designed to prevent timing and cache-based attacks.
- **Resistance to trade-off attacks**: Prevents attackers from reducing memory usage to speed up cracking.

### Standardization
- **RFC 9106**: Defines Argon2's specifications for password hashing and proof-of-work applications.
- **GitHub repository**: Hosts the official implementation and documentation.

### Adoption
- **Widely available**: Implemented in various programming languages and security tools.
- **Used in systems**: Recommended for password storage in modern security practices.