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échiffrer

Rotation automatique vs manuelle

AutomatiqueManuelle
DéclencheurOrdonnanceur du serveur, selon rotation_interval_days (90 par défaut)POST /v1/keys/:id/rotate
RéglagePATCH /v1/keys/:id/rotation { "interval_days": 90 }Sans objet
Cas d'usageRotation de routine, conformitéIncident, compromission suspectée
Impact donnéesAucun, transparent pour l'appAucun, transparent pour l'app
TraceJournal d’audit, action key.auto_rotate, acteur « scheduler »Journal d’audit, action key.rotate, avec la clé API qui a demandé
WebhookAucunkey.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)