P17 - Chiffrement et sauvegardes chiffrées : LUKS, OpenSSL, GPG, Borg
Objectif
Protéger les données au repos : chiffrer un disque Linux (LUKS, l’équivalent de BitLocker), chiffrer un fichier (OpenSSL, GPG) et faire des sauvegardes chiffrées et dédupliquées avec Borg.
Source
Fiche rédigée à partir de la partie « Chiffrement » et « Backup chiffré » de cours de lidstah.
1. Les 4 objectifs (rappel)
Objectif
Outil
Question
Confidentialité
Chiffrement
Personne d’autre ne peut lire ?
Intégrité
Hachage (SHA-256…)
Le contenu n’a pas été modifié ?
Authentification
Signature
C’est bien la bonne personne ?
Non-répudiation
Signature + journaux
L’auteur ne peut pas nier ?
Type
Principe
Exemples
Symétrique
Une seule clé partagée, chiffre et déchiffre (rapide)
AES, ChaCha20
Asymétrique
Clé publique pour chiffrer (ou vérifier), clé privée pour déchiffrer (ou signer)
RSA, Ed25519
Hachage
Empreinte à sens unique, la moindre modification change tout
SHA-256, SHA-512 (MD5 et SHA-1 sont cassés)
flowchart LR
A["Alice"] -->|"chiffre avec la clé PUBLIQUE de Bob"| M["Message chiffré"]
M -->|"seul Bob déchiffre avec sa clé PRIVÉE"| B["Bob"]
A2["Alice"] -->|"signe avec SA clé privée"| S["Message signé"]
S -->|"tout le monde vérifie avec la clé publique d'Alice"| T["Lecteurs"]
2. LUKS : chiffrer un disque
À l’installation de Debian : partitionnement → Assisté – utiliser tout le disque avec LVM chiffré. La phrase de passe est demandée à chaque démarrage.
Serveur sans écran : déverrouiller à distance
Le paquet dropbear-initramfs lance un mini serveur SSH avant le démarrage du système, juste pour taper la phrase de passe.
sudo apt install dropbear-initramfs# /etc/dropbear/initramfs/dropbear.conf (Debian 12 et 13)DROPBEAR_OPTIONS="-I 120 -j -k -p 2222 -s -c cryptroot-unlock"# /etc/initramfs-tools/initramfs.conf : IP fixe pendant le démarrageIP=192.168.1.151::192.168.1.254:255.255.255.0:deb-cryptsudo cp ~/.ssh/authorized_keys /etc/dropbear/initramfs/authorized_keyssudo update-initramfs -u# au redémarrage, depuis ton PC : ssh -p 2222 root@192.168.1.151
Chiffrer un disque supplémentaire :
lsblk # repérer le disque, ex. /dev/sdbsudo cfdisk /dev/sdb # créer /dev/sdb1sudo cryptsetup luksFormat /dev/sdb1 # ⚠ efface tout, demande une phrase de passesudo cryptsetup open /dev/sdb1 mondisque # déverrouiller → /dev/mapper/mondisquesudo mkfs.ext4 /dev/mapper/mondisquesudo mkdir -p /mnt/mondisque && sudo mount /dev/mapper/mondisque /mnt/mondisque# fermersudo umount /mnt/mondisque && sudo cryptsetup close mondisque
Déverrouillage automatique au démarrage (une fois le disque système déverrouillé) avec un fichier clé :
Limites : le mot de passe doit être fort et transmis par un autre canal sûr.
GPG (asymétrique, standard OpenPGP)
gpg --full-generate-key # créer sa paire de clésgpg --list-secret-keys --keyid-format=long # voir ses clésgpg --armor --export ID_CLE > ma_cle_publique.asc # exporter sa clé publiquegpg --import cle_alice.asc # importer la clé d'Alicegpg --encrypt --recipient alice@exemple.fr message.txt # chiffrer pour Alice → message.txt.gpggpg --decrypt message.txt.gpg > message.txt # déchiffrer (avec SA clé privée)gpg --sign message.txt # signergpg --verify message.txt.gpg # vérifier une signature
On peut chiffrer pour plusieurs destinataires (--recipient répété). Git sait aussi signer les commits avec GPG.
4. Sauvegardes chiffrées avec Borg
Borg : sauvegardes chiffrées côté client, compressées et dédupliquées (un fichier identique n’est stocké qu’une fois, même renommé), envoyées par SSH.
sudo apt install borgbackup # sur la machine ET sur le serveur de sauvegardeDEPOT=ssh://user@192.168.1.153:22/home/backupborg init --encryption=repokey "$DEPOT" # créer le dépôt (phrase de passe)borg key export "$DEPOT" cle-borg.txt # ⚠ SAUVEGARDER cette clé ailleurs (KeePassXC)borg create --stats --progress -C zstd,10 --exclude '.cache' "$DEPOT"::'{now:%Y-%m-%d_%H%M}' ~borg list "$DEPOT" # liste des archivesborg extract "$DEPOT"::2026-10-23_1200 chemin/du/fichier # restaurer un fichierborg mount "$DEPOT"::2026-10-23_1200 /tmp/restauration # parcourir une archive comme un dossierborg umount /tmp/restaurationborg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6 "$DEPOT" # garder 7 jours, 4 semaines, 6 moisborg compact "$DEPOT" # libérer réellement l'espace
Clé + phrase de passe = tout
Si tu perds la clé exportée et la phrase de passe, les sauvegardes sont définitivement illisibles. C’est le prix du chiffrement.
Automatisation : borgmatic (un fichier YAML qui décrit quoi sauvegarder, où, combien garder, + un timer systemd). C’est le sujet du TP de lidstah.
Exercices
Pourquoi chiffrer les disques d’un serveur qui est dans une salle fermée à clé ?
Quelle clé utilises-tu pour envoyer un fichier chiffré à Bob avec GPG ?
Tu sauvegardes chaque jour 50 Go qui changent peu. Pourquoi Borg prend-il beaucoup moins que 50 Go par jour ?
Correction
Disque volé, disque défectueux renvoyé au constructeur, disque mal effacé à la revente : sans chiffrement, les données sont lisibles par n’importe qui qui a le disque en main.
La clé publique de Bob. Seule sa clé privée pourra déchiffrer.
Déduplication : seuls les morceaux (chunks) nouveaux ou modifiés sont stockés, le reste est référencé.
Erreurs fréquentes / dépannage
Symptôme
Cause / solution
Démarrage bloqué en attente du disque chiffré
Mauvaise UUID dans crypttab, ou fichier clé non ajouté (luksAddKey)
borg: Failed to create/acquire the lock
Une sauvegarde est encore en cours ou a planté : borg break-lock "$DEPOT" si on est sûr