Aller au contenu
uencoder

Comment en Derive Clés avec PBKDF2

Derive un cryptographic clé de un mot de passe utilisant PBKDF2 avec un high iteration compte et salt.

问题

You besoin en derive un symmetric clé de un utilisateur mot de passe, mais passwords sont low-entropy et besoin stretching.

Prérequis

  • Understanding of key derivation
  • Knowledge of salt and iteration count

Étapes

  1. 1. Generate a random salt

    Generate a cryptographically random salt of at least 16 bytes. The salt ensures that the same password produces different keys for different users or sessions. Store the salt alongside the derived key; it is not secret.

    entrée
    16 random bytes
    输出
    salt: a1b2c3...
  2. 2. Choose an iteration count

    Select an iteration count high enough to make brute force expensive. OWASP recommends at least 600,000 iterations for PBKDF2-HMAC-SHA256. Higher is more secure but slower. Tune based on your server's capacity.

    entrée
    iterations: 600000
    输出
    ~500ms per derivation
  3. 3. Derive the key

    Run PBKDF2 with the password, salt, iteration count, and a PRF (HMAC-SHA256). The output is a deterministic key of the requested length. The same password and salt always produce the same key, but an attacker must repeat all iterations for each guess.

    entrée
    password + salt + 600000 iters
    输出
    32-byte derived key

Résultat attendu

Un derived clé ce est computationally expensive en brute force, suitable pour encrypting données ou verifying passwords.

Erreurs courantes

Iteration count too low
Anything below 100,000 is too fast for modern GPUs. Use at least 600,000 for SHA-256 per OWASP 2023 guidance.
Reusing the salt across users
Generate a unique random salt per password. A shared salt enables multi-target attacks.

Dépannage指引

  • If derivation is too slow, reduce iterations or switch to a faster KDF like scrypt or Argon2 which are memory-hard.
  • If you need to verify passwords, store the salt and iteration count with the derived key.

Limites de sécurité

  • PBKDF2 is CPU-hard but not memory-hard, making it vulnerable to GPU/ASIC attacks. Consider scrypt or Argon2 for stronger resistance.
  • All derivation is local.

Outils associés

Termes associés

参考链接