Quand on tape --pbkdf-memory 131072 au lieu du défaut 1 GB, l’intuition est : « moins memory-hard donc moins coûteux pour l’attaquant, mais plus rapide pour moi ». Fausse à moitié — ça m’a fait réfléchir une heure.
Ce que cryptsetup calibre vraiment
Argon2id dérive le master key en faisant deux choses : allouer un gros tableau RAM (--pbkdf-memory) et itérer dessus avec des accès pseudo-aléatoires. Coût total = mémoire × itérations. Cryptsetup ne fixe ni l’un ni l’autre : il fixe une cible temporelle, ~2s sur la machine qui exécute luksFormat (--iter-time, défaut 2000 ms). Il benchmarke :
--pbkdf-memory 1048576(1 GB) → 4 itérations pour 2s.--pbkdf-memory 131072(128 MB) → 47 itérations pour 2s.
Même temps total sur ta machine. Coût attaquant : même ordre de grandeur (~2s/essai). Réduire la mémoire ne réduit pas le coût total, ça le redistribue entre mémoire et itérations CPU.
Sécurité réelle
Le memory-hard pénalise les attaques massivement parallèles (FPGA/GPU/ASIC). Sur une carte 16 GB :
| Config | Temps/essai | Mémoire | Parallélisme/16 GB |
|---|---|---|---|
| 1 GB / 4 iter | ~2s | 1 GB | 16 essais |
| 128 MB / 47 iter | ~2s | 128 MB | 125 essais |
Donc 128 MB est ~8x plus parallélisable. Mais avec une passphrase diceware 5 mots (~65 bits), même 1000 essais simultanés = 250 millions d’années. La différence « 16 vs 125 » est noyée dans l’entropie de la passphrase.
L’attaque réaliste sur LUKS n’est jamais le brute-force du master key. C’est : passphrase faible, keyfile qui fuit, cold boot machine unlock, oubli de unmount (clé en RAM kernel), faille cryptsetup/kernel. Sur ces vecteurs, 128 MB ou 1 GB ne change rien.
Quand 1 GB devient un piège
Ça compte sur la machine qui DÉCHIFFRE. Chiffrer sur un PC 16 GB (4 iter × 1 GB = 2s), unlock sur un NAS 1 GB : Argon2 réclame 1 GB → 600 MB en swap → chaque accès = 50% de page fault → le KDF passe de 2s à 30 min de swap I/O (cf lkd 48). Avec 128 MB / 47 iter, tout reste en RAM physique, ~30s (CPU lent de l’Atom D510, sans la pénalité du swap).
Lessons learned
- mémoire × itérations ≈ constant dans une calibration. Réduire l’un augmente l’autre. Rien de « gratuit ».
- La sécurité vient de la passphrase, pas du choix mémoire vs itérations. 5 mots diceware → 128 MB suffit.
Password123!→ aucun KDF ne te sauve. - Seul gain de « plus de mémoire » : résistance GPU/FPGA parallèle. Effet réel sur un disque perso : nul.
- Seul piège de « trop de mémoire » : la machine d’unlock swap → unlock catastrophique.
- Calibrer sur la machine la plus faible : PC + NAS 1 GB → 128 MB ; tout en 16 GB+ → 512 MB-1 GB OK.