PD-243 — Review Specification (Gate 3 Phase 1)¶
Revieweur : Claude (cross-validation — auteur: ChatGPT) Date : 2026-02-19 Mode : Factuel
Écarts identifiés¶
ECT-01 — Contradiction label K_doc¶
Type : Contradiction Référence : PD-243-specification.md Section 4.1 + TC-REG-03 Description : La spec déclare dans "Inclus" la "Normalisation/correction des labels HKDF (Kdoc → K_doc)" tandis que TC-REG-03 mentionne "Si pas de migration : K_doc === expected_K_doc" avec l'ancien label. La correction du label EST un breaking change car elle modifie la sortie HKDF. Ces deux affirmations sont mutuellement exclusives. Impact : Si le label change, toutes les K_doc existantes deviennent invalides. Si le label ne change pas, l'anomalie PD-34 n'est pas corrigée. Gravité : Bloquant
ECT-02 — Ambiguïté migration K_doc¶
Type : Ambiguïté Référence : PD-243-specification.md Section 4.2 + REQ-243-06 Description : Le périmètre "Exclu" mentionne "Migration des données historiques déjà dérivées avec ancien label Kdoc" mais REQ-243-06 impose "Le label HKDF K_doc DOIT être exactement ProbatioVault::K_doc::v1". Il n'est pas clarifié si les nouvelles dérivations utilisent le nouveau label (breaking change pour documents existants) ou si on maintient l'ancien label pour compatibilité (contradictoire avec REQ-243-06). Impact : Ambiguïté sur le comportement attendu lors de la dérivation K_doc. Gravité : Bloquant
ECT-03 — Vecteurs de test non calculés¶
Type : Non testable Référence : TC-CRYPTO-03, TC-LABEL-03, TC-REG-01, TC-REG-02, TC-REG-03 Description : Les vecteurs de test mentionnent expected_K_auth (hex): [a calculer avec implementation de reference] et expected K_encryption (hex): [valeur de reference avant PD-243]. Ces valeurs ne sont pas pré-calculées. Les tests ne sont pas exécutables en l'état. Impact : Impossible de valider la conformité sans vecteurs de référence précalculés. Gravité : Majeur
ECT-04 — Dépendance interopérabilité non bornée¶
Type : Hypothèse dangereuse Référence : HYP-243-03 + TC-INTEROP-01 Description : HYP-243-03 assume "Les vecteurs de test communs seront produits avant validation finale d'interopérabilité". TC-INTEROP-01 dépend de ces vecteurs. Si les vecteurs ne sont pas produits, le test d'interopérabilité ne peut pas être exécuté, rendant INV-243-06 non vérifiable. Impact : Dépendance externe non bornée pour la validation. Gravité : Majeur
ECT-05 — Couverture partielle INV-243-03¶
Type : Incohérence Spec↔Tests Référence : INV-243-03 + TC-ISO-02 Description : INV-243-03 stipule que K_encryption != K_doc. TC-ISO-02 vérifie uniquement K_auth !== K_doc. Il manque un test explicite vérifiant K_encryption !== K_doc pour couvrir complètement INV-243-03. Impact : Couverture partielle de l'invariant INV-243-03. Gravité : Mineur
ECT-06 — Encodage UTF-8 non précisé¶
Type : Ambiguïté Référence : PD-243-specification.md Section 5 - Encodage labels Description : Le paramètre "Encodage labels : UTF-8 exact byte-à-byte" ne précise pas si les caractères spéciaux (::) doivent être normalisés (NFC/NFD) ou si la comparaison est sur les bytes bruts. Pour des labels ASCII-only comme utilisé ici, ce n'est pas critique, mais la spécification n'explicite pas cette contrainte. Impact : Risque faible mais interprétation ambiguë possible. Gravité : Mineur
ECT-07 — Zeroization non vérifiable automatiquement¶
Type : Risque sécu/conformité Référence : INV-243-04 + TC-SEC-01 Description : L'invariant INV-243-04 est marqué "Testable: Partiel" et TC-SEC-01 confirme "Automatisable: Partiel (revue + test erreur)". La vérification du nettoyage best-effort repose sur une revue structurelle, non sur un test automatisé. En JavaScript, la zéroisation effective est fondamentalement impossible (GC, immutabilité strings). Impact : Acceptation implicite d'une limitation technique sans critère d'acceptation objectif. Gravité : Mineur (déjà documenté comme limitation)
Synthèse¶
| Gravité | Nombre | Écarts |
|---|---|---|
| Bloquant | 2 | ECT-01 (Contradiction label K_doc), ECT-02 (Ambiguïté migration) |
| Majeur | 2 | ECT-03 (Vecteurs non calculés), ECT-04 (Dépendance interop) |
| Mineur | 3 | ECT-05 (Couverture INV-243-03), ECT-06 (Encodage UTF-8), ECT-07 (Zeroization) |
Total : 7 écarts identifiés (2 bloquants, 2 majeurs, 3 mineurs)
Points positifs¶
- Traçabilité complète REQ → INV → TA → TC
- Matrice de couverture explicite (17 scénarios, 100% INV et TA couverts)
- Paramètres cryptographiques normalisés avec références RFC
- Contraintes techniques explicites (Hermes, pure JS)
- Hypothèses documentées
- Scénarios non testables identifiés avec mitigations
Recommandation Phase 1¶
RESERVE — Les écarts bloquants ECT-01 et ECT-02 doivent être clarifiés avant poursuite. La décision architecturale sur la gestion du breaking change label K_doc est manquante dans la spécification.