PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) är en kryptografisk funktion som används för att härleda säkra nycklar från lösenord. Den är en del av standarden PKCS#5 v2.0 och definieras i RFC 8018.
Historia
PBKDF2 utvecklades för att förbättra säkerheten i lösenordsbaserade system genom att göra det svårare för angripare att knäcka lösenord via brute-force- eller ordboksattacker. Genom att introducera flera iterationer och användning av saltvärden höjs beräkningskostnaden för varje gissning.
Funktionalitet
PBKDF2 fungerar genom att applicera en pseudorandom-funktion, såsom HMAC kombinerad med en hashfunktion (t.ex. SHA-256), på ett lösenord tillsammans med ett saltvärde. Processen upprepas ett antal gånger (iterationer) för att öka beräkningstiden:
K = PBKDF2(P, S, c, dkLen)
där:
- K är den härledda nyckeln
- P är lösenordet
- S är saltet
- c är antalet iterationer
- dkLen är önskad längd på nyckeln
Användningsområden
- Lösenordslagring: Skyddar lagrade lösenord genom att göra det svårt att invertera hashvärdena.
- Nyckelgenerering: Skapar kryptografiska nycklar från lösenord för användning i krypteringsalgoritmer.
- Skydd mot attacker: Förhindrar användning av rainbow tables och minskar effektiviteten av brute-force-attacker.
Säkerhetsöverväganden
- **Saltvärden**: Varje lösenord bör kombineras med ett unikt salt för att förhindra att samma lösenord genererar samma hashvärde.
- **Iterationer**: Ett högre antal iterationer ökar säkerheten men påverkar prestandan. Rekommendationen är att använda så många iterationer som systemet kan hantera utan att påverka användarupplevelsen negativt.
- **Val av hashfunktion**: Använd en säker och modern hashfunktion för att undvika svagheter i äldre algoritmer.
Referenser
- RFC 8018 - PKCS #5: Password-Based Cryptography Specification Version 2.1
- NIST SP 800-132 - Recommendation for Password-Based Key Derivation