# 6. Chiffrement et secrets Cette section couvre le chiffrement de disque complet, le rôle du TPM (matériel et désormais logiciel), et les grandes familles de gestion de secrets côté système. ## LUKS — chiffrement de disque complet **LUKS** (*Linux Unified Key Setup*) est le format standard de chiffrement de partition sous Linux, construit au-dessus de `dm-crypt` (le module noyau qui effectue le chiffrement/déchiffrement à la volée au niveau bloc). Points clés : - L'en-tête LUKS stocke plusieurs **emplacements de clé** (*key slots*) — jusqu'à 32 en LUKS2 — chacun protégeant indépendamment la même clé maître de volume, ce qui permet plusieurs phrases de passe ou méthodes de déverrouillage distinctes sans re-chiffrer les données. - La **clé maître de volume** n'est jamais dérivée directement d'une phrase de passe : la phrase de passe déverrouille un emplacement de clé via une fonction de dérivation coûteuse (Argon2id par défaut en LUKS2), et c'est l'emplacement déverrouillé qui révèle la clé maître réelle — changer de phrase de passe ne nécessite donc jamais de re-chiffrer les données. - Révoquer un emplacement de clé compromis (`cryptsetup luksKillSlot`) est instantané, sans toucher au contenu chiffré. ## TPM — matériel et désormais logiciel Le **TPM** (*Trusted Platform Module*) est une puce (ou son équivalent micrologiciel, fTPM) qui stocke des clés cryptographiques dans un matériel résistant à l'extraction, et peut **sceller** une clé à un état de démarrage précis (mesures PCR du firmware, du bootloader, du noyau) — si l'état de démarrage a changé (firmware modifié, bootloader remplacé), le TPM refuse de livrer la clé, détection d'altération avant même l'entrée d'une phrase de passe. `systemd-cryptenroll` permet de lier un volume LUKS au TPM local, pour un déverrouillage automatique **conditionné** à l'intégrité de la chaîne de démarrage. **Nouveauté 2026** : systemd 261 introduit un **service de TPM logiciel** (`systemd-tpm2`), utile en environnement virtualisé où aucun TPM matériel n'est exposé à la machine virtuelle — même modèle de scellement, sans dépendre d'un composant physique. ## Gestion de secrets côté système - **`gpg-agent`** : cache des clés PGP/SSH déverrouillées en mémoire pour une durée limitée, évite de ressaisir une phrase de passe à chaque usage. - **Trousseaux de session** (ex. intégration au gestionnaire de session graphique) : stockent des secrets applicatifs chiffrés, déverrouillés à l'ouverture de session utilisateur. - **Coffres-forts de secrets applicatifs** (hors périmètre système pur) : bases de données chiffrées dédiées, avec contrôle d'accès fin par application plutôt qu'un simple fichier lisible par l'utilisateur. ## Effacement mémoire (zeroization) Une clé cryptographique laissée en mémoire après usage reste vulnérable à une lecture (dump mémoire, `swap` sur disque non chiffré, attaque à froid sur la RAM). Une bibliothèque cryptographique rigoureuse **efface explicitement** (écrase avec des zéros) toute donnée sensible dès qu'elle n'est plus nécessaire, plutôt que de compter sur le ramasse-miettes ou la simple fin de portée d'une variable — principe de défense en profondeur applicable à tout logiciel manipulant des secrets, pas seulement au noyau. *(Schéma disponible : `schema.svg`, dans ce dossier.)*