PD-277 — Expression de besoin¶
Story¶
PD-277 — PV PRE — Implémenter anti-rejeu nonce et PKI certificate binding (v1.1)
Contexte¶
L'audit de vérification formelle PV PRE (Prolog, 24 checks) identifie 2 écarts non conformes sur les 24 checks BLOQUANTS. Les 22 autres checks passent à 100%. Le service PRE Umbral, les validateurs (ArtefactValidator, ContextValidator, SizeLimitValidator), l'orchestration légale et la destruction sont entièrement conformes.
Écarts à corriger¶
CHECK 23 — Anti-rejeu nonce (KO)¶
- L'entité
LegalReKeyne possède pas de colonneused_nonces - Aucun mécanisme de détection de rejeu lors de
reEncrypt() - Risque : un attaquant pourrait rejouer une opération de re-chiffrement avec les mêmes paramètres
CHECK 24 — PKI Certificate Binding (KO)¶
- L'entité
LegalReKeyne possède pas les colonnesowner_certificate_idetrecipient_certificate_id - La validation de certificats existe dans
MandateValidatorServicemais n'est pas liée auReKey - Risque : une clé de re-chiffrement n'est pas cryptographiquement liée aux certificats PKI des parties
Objectif¶
Atteindre 24/24 OK à l'audit Prolog :
Périmètre¶
- Anti-rejeu nonce : Ajouter colonne
used_noncessurLegalReKey, mécanisme de validation nonce dansreEncrypt(), migration TypeORM - PKI Certificate Binding : Ajouter colonnes
owner_certificate_idetrecipient_certificate_idsurLegalReKey, validation lors degenerateReKey(), migration TypeORM - Régénérer les faits Prolog (
_generated-facts.pl) pour refléter les nouveaux champs - Tests couvrant anti-rejeu et certificate binding
Learnings injectés¶
- [PD-63]
crypto.randomUUID()obligatoire pour tout identifiant aléatoire (Sonar flagge Math.random()) - [PD-41] Fail-closed systématique crypto, formats normalisés PRE-1.0
- [PD-238]
crypto.timingSafeEqual()pour comparaisons sécuritaires
Hors périmètre¶
- Les 5 checks de complétude (non-bloquants) : cron destruction, cron expiration, ETSI trusted list, blockchain anchoring, revocation propagation
- Modifications au service PRE bas-niveau (
pre.service.ts,umbral.provider.ts) — seul le modulelegal-preest impacté
Critères d'acceptation¶
- 24/24 checks OK à l'audit Prolog
- Migration TypeORM exécutable sans erreur
- Tests unitaires couvrant les 2 nouveaux mécanismes
- Fail-closed : toute erreur nonce/certificat → rejet de l'opération
- Aucune régression sur les 22 checks existants
Validation PO¶
Validé — 2026-02-28