> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snakysec.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 06 rotate shamir keys

# Runbook 06 — Rotation annuelle des shares Shamir Vault

## 1. Objectif

Rotation préventive annuelle des 5 shares Shamir du Vault de production,
selon la politique [01-keyholders.md §6](../01-keyholders.md). Pas une opération
DR (pas d'incident en cours), mais opération sensible qui peut bricker le
Vault si mal exécutée → traitée comme un runbook formel.

## 2. Quand exécuter

* **Annuel obligatoire** : Q3 chaque année (juillet-août)
* **Immédiat** : suspicion de compromission d'une share (vol YubiKey, perte laptop, intrusion domicile, fuite KeePass)
* **Pré-test trustee** : 1 mois avant un test de récupération de l'enveloppe notaire (pour éviter de désynchroniser)

## 3. Prérequis

* 3 shares actives accessibles (DR Owner peut faire seul)
* RDV programmé avec le notaire pour récupération + re-dépôt enveloppe
* Vault opérationnel + unsealed
* Token root ou token avec policy `sys/rekey`
* Imprimante propre (pas réseau / pas mémoire) pour QR codes
* Broyeur DIN P-7 disponible

## 4. Procédure

### 4.1 Préparation (J-7)

```
1. Confirmer RDV notaire (date + heure)
2. Tester YubiKey et KeePass : décodage des shares actuelles fonctionne
3. Imprimer 5 papiers QR codes vierges + 1 papier carbone pour numérotation
4. Charger le broyeur DIN P-7
5. Vérifier qu'on a un Vault snapshot récent (vault-snapshot.sh tournée la veille)
```

### 4.2 Récupération enveloppe trustee (J0)

```
1. Présenter au notaire la demande conjointe (DR Owner + mandataire SASU)
2. Notaire ouvre l'enveloppe avec procès-verbal
3. Vérifier que les 2 shares S4 + S5 sont lisibles (test scan QR offline)
4. Reprendre les shares (l'enveloppe sera re-scellée avec les nouvelles à la fin)
```

### 4.3 Initiation du rekey (depuis VPS prod)

```bash theme={null}
ssh mssp@vps.snakysec.com
cd /opt/mssp/app/platform

# Login token root
docker exec -it mssp-vault sh -c "vault login"
# Saisir token root (depuis KeePass)

# Initier le rekey
docker exec mssp-vault vault operator rekey -init \
  -key-shares=5 \
  -key-threshold=3 \
  -nonce-suffix="rotation-$(date +%Y%m%d)"
```

Vault retourne un `nonce` à conserver pour les étapes suivantes.

### 4.4 Fournir les 5 shares actuelles

```bash theme={null}
docker exec -it mssp-vault vault operator rekey -nonce="${NONCE}"
# Saisir share 1 (depuis YubiKey décodée)
docker exec -it mssp-vault vault operator rekey -nonce="${NONCE}"
# Saisir share 2 (depuis KeePass)
docker exec -it mssp-vault vault operator rekey -nonce="${NONCE}"
# Saisir share 3 (depuis papier coffre domicile)
# Vault peut fonctionner avec 3/5, mais pour rekey, il en faut le quorum d'origine
docker exec -it mssp-vault vault operator rekey -nonce="${NONCE}"
# Saisir share 4 (depuis enveloppe trustee)
docker exec -it mssp-vault vault operator rekey -nonce="${NONCE}"
# Saisir share 5 (depuis enveloppe trustee)
```

À la fin, Vault génère 5 NOUVELLES shares + nouveau root token. **NE PAS
LES PERDRE** — elles s'affichent une seule fois.

### 4.5 Distribution des nouvelles shares

| Nouvelle share | Support        | Action                                                        |
| -------------- | -------------- | ------------------------------------------------------------- |
| S1 (new)       | YubiKey 5 NFC  | Encoder via `ykman openpgp keys` ou app dédiée                |
| S2 (new)       | KeePassXC      | Stocker dans le master KDBX, attribut "Vault Shamir Share 2"  |
| S3 (new)       | Papier QR code | Imprimer (imprimante non-réseau), placer dans coffre domicile |
| S4 (new)       | Papier QR code | Imprimer, sceller avec S5 dans nouvelle enveloppe Tyvek       |
| S5 (new)       | Papier QR code | Idem S4                                                       |

### 4.6 Re-dépôt chez le notaire

```
1. Apporter au notaire l'enveloppe Tyvek scellée contenant S4+S5 (new)
2. Procès-verbal de dépôt avec mention "remplace l'enveloppe du [date précédente]"
3. Notaire récupère et détruit l'ancienne enveloppe (ou conserve verrouillée 30j puis détruit)
4. Coût : ~50-100 € (acte simple, pas un acte de dépôt initial)
```

### 4.7 Destruction sécurisée des anciennes shares

```
1. Anciennes papiers de S3 (coffre domicile) : broyeur DIN P-7
2. Anciennes shares dans KeePass : supprimer l'attribut, vider la corbeille
3. Anciennes shares YubiKey : reset OpenPGP slot, ré-encoder avec S1 (new)
4. Anciennes shares enveloppe trustee : déjà détruites par notaire (§4.6)
```

### 4.8 Validation

```bash theme={null}
# Re-tester un unseal complet (sealed → unsealed)
docker exec mssp-vault vault operator seal
docker exec -it mssp-vault vault operator unseal  # share 1 (new)
docker exec -it mssp-vault vault operator unseal  # share 2 (new)
docker exec -it mssp-vault vault operator unseal  # share 3 (new)

docker exec mssp-vault vault status
# attendu : Sealed: false
```

### 4.9 Mise à jour documentaire

* Mettre à jour `docs/dr/01-keyholders.md` §7 (journal des rotations)
* Procès-verbal dans `docs/dr/test-results/YYYY-Q3-shamir-rotation.md`
* Sauvegarder le procès-verbal notaire avec les statuts SnakySec

## 5. Erreurs courantes

| Erreur                                            | Solution                                                                 |
| ------------------------------------------------- | ------------------------------------------------------------------------ |
| `Error: rekey already in progress`                | Cancel le rekey en cours : `vault operator rekey -cancel`                |
| Une nouvelle share illisible (papier mal imprimé) | Re-générer un nouveau rekey, refaire la procédure                        |
| Notaire indisponible le jour J                    | Reporter de quelques jours, conserver les shares actuelles               |
| Vault sealed après rekey                          | Quelqu'un a saisi une mauvaise share — re-essayer unseal avec les bonnes |

## 6. Rollback

Si la rotation échoue à mi-chemin et qu'on ne peut pas terminer :

```bash theme={null}
docker exec mssp-vault vault operator rekey -cancel
```

Vault revient aux anciennes shares. Re-essayer plus tard.

| Version | Date       | Auteur             |
| ------- | ---------- | ------------------ |
| 1.0     | 2026-04-26 | Nicolas Schiffgens |
