Concepts
Rotation des clés
La rotation des clés génère une nouvelle version de clé pour les nouvelles opérations, tout en conservant la capacité de déchiffrer les données chiffrées avec les versions précédentes.
Pourquoi faire tourner les clés ?
Limiter l'exposition
Une clé utilisée depuis trop longtemps augmente le risque en cas de fuite non détectée.
Conformité réglementaire
RGPD, NIS2, DORA et PCI-DSS recommandent ou imposent une rotation périodique.
Principe de moindre durée
Réduire la période de validité d'une clé limite la quantité de données exposées en cas de compromission.
Post-incident
En cas de suspicion de compromission, une rotation immédiate invalide l'exposition sans migration de données.
Comment fonctionne la rotation
La rotation ne détruit pas les versions précédentes. Elle crée une nouvelle version active, tout en maintenant les anciennes versions pour le déchiffrement des ciphertexts existants.
Avant rotation :
key-users-pii version 1 (active) → utilisée pour chiffrer
Après rotation :
key-users-pii version 2 (active) → utilisée pour les nouveaux chiffrements
key-users-pii version 1 (retired) → disponible pour déchiffrer les anciens ciphertexts
Le ciphertext stocké contient toujours key_version: 1
→ MAFATE utilise automatiquement la version 1 pour déchiffrerRotation automatique vs manuelle
| Automatique | Manuelle | |
|---|---|---|
| Déclencheur | Ordonnanceur du serveur, selon rotation_interval_days (90 par défaut) | POST /v1/keys/:id/rotate |
| Réglage | PATCH /v1/keys/:id/rotation { "interval_days": 90 } | Sans objet |
| Cas d'usage | Rotation de routine, conformité | Incident, compromission suspectée |
| Impact données | Aucun, transparent pour l'app | Aucun, transparent pour l'app |
| Trace | Journal d’audit, action key.auto_rotate, acteur « scheduler » | Journal d’audit, action key.rotate, avec la clé API qui a demandé |
| Webhook | Aucun | key.rotated, uniquement depuis le tableau de bord |
Fréquence recommandée
// Recommandations de rotation par type de données
key-users-pii → 90 jours (données personnelles)
key-payment-iban → 180 jours (données financières)
key-payment-cards → 180 jours (tokens carte)
key-health-phi → 90 jours (données de santé)
key-documents-archive → 365 jours (archives)
key-logs → 365 jours (journaux techniques)