PD-81 - Scenarios de test de reference¶
Statut: REFERENCE QA CONTRACTUELLE
Version: 1.0.0
Perimetre: EPIC PD-189 (CRYPTO)
Source normative: PD-81-specification.md
0) Cadre de test et prerequis globaux¶
Ces scenarios valident la conformite contractuelle du module Legal PRE, sans prescrire d'implementation.
Prerequis globaux obligatoires (communs a tous les tests): - Environnement de test isole, donnees nettoyees avant chaque scenario (reset DB + reset files de traces). - Horloge de reference synchronisee (NTP) et gel temporel possible pour tests TTL (time control QA). - TSP, HSM et TSA operationnels sur environnements de test dedies, avec identites/certificats de test eIDAS qualifies. - Jeu de donnees deterministe: - mandate-valid-001 (mandat valide, documentIds: DOC-1001, DOC-1002). - mandate-scope-empty-001 (mandat sans documentId). - mandate-expired-001, mandate-notyet-001. - certificats: valide, non qualifie, chaine incomplete, revoque. - Identites internes distinctes: - validator-dpo-001 (role DPO), - validator-legal-001 (role LegalOfficer), - validator-dual-001 (meme userId IAM simule pour test conflit d'identite juridique). [CORRECTION v2] - Endpoint/API disponibles: - registerLegalMandate, submitInternalValidation, activateLegalAccess, closeLegalAccess, getLegalAuditProof. - generateLegalReKey, revokeReKey, getLegalAccessStatus. - Collecte de preuves active: journaux append-only, artefacts de hash SHA3-256, signatures HSM, tokens TSA RFC3161, preuve composite exportable.
Convention de verification: - "Verifier" signifie verifier par resultats API + etats + artefacts probatoires horodates. - Chaque rejet fail-closed doit etre observe par: - absence de ReKey legale active, - journal d'evenement de refus, - absence d'effet de bord sur documents.
1) Matrice de couverture (INV / AC / ERR -> scenarios)¶
1.1 Couverture des invariants¶
| Invariant | Scenarios couvrants |
|---|---|
| INV-81-01 | N4, E12, E17, L1, L5, R7 [CORRECTION v3] |
| INV-81-02 | N1, E02, E03, E04, E05, E15 |
| INV-81-03 | N2, E07, E08 |
| INV-81-04 | N3, S1 |
| INV-81-05 | N3, E10 |
| INV-81-06 | N3, E11 |
| INV-81-07 | N4, E12, E17, L2, L5, R7 [CORRECTION v3] |
| INV-81-08 | N1, N2, N3, N4, E13, E14 |
| INV-81-09 | N4, L4 |
| INV-81-10 | N3, S4 |
| INV-81-11 | E13, E14, E15, R1, R2, R3 |
| INV-81-12 | N3, S2 |
1.2 Couverture des criteres d'acceptation¶
| Critere | Scenarios couvrants |
|---|---|
| AC-81-01 | N1 |
| AC-81-02 | E01, E02, E03, E04, E05 |
| AC-81-03 | E07 |
| AC-81-04 | N2 |
| AC-81-05 | N3, E07 |
| AC-81-06 | E09 |
| AC-81-07 | E10 |
| AC-81-08 | E11 |
| AC-81-09 | N4, L1 |
| AC-81-10 | N4, L2 |
| AC-81-11 | N1, N2, N3, N4 |
| AC-81-12 | N4, L4 |
| AC-81-13 | N3, S4 |
| AC-81-14 | L4, S6 |
1.3 Couverture des erreurs contractuelles¶
| Erreur | Scenario |
|---|---|
| ERR-81-01 | E01 |
| ERR-81-02 | E02 |
| ERR-81-03 | E03 |
| ERR-81-04 | E04 |
| ERR-81-05 | E05 |
| ERR-81-06 | E06 |
| ERR-81-07 | E07 |
| ERR-81-08 | E08 |
| ERR-81-09 | E09 |
| ERR-81-10 | E10 |
| ERR-81-11 | E11 |
| ERR-81-12 | E12 |
| ERR-81-13 | E13 |
| ERR-81-14 | E14 |
| ERR-81-15 | E15 |
| ERR-81-16 | E16 |
| ERR-81-17 | E17 |
| ERR-81-18 | E18 |
2) Scenarios nominaux (N1 a N4)¶
N1 - Reception et qualification du mandat valide¶
Objectif: Demonstrer qu'un mandat eIDAS valide est accepte et journalise conformement.
Prerequis specifiques: - Mandat mandate-valid-001 signe avec certificat qualifie, chaine complete, non revoque, fenetre temporelle valide. - TSP/TSA/HSM disponibles.
Etapes: 1. Appeler registerLegalMandate avec le mandat et metadonnees. 2. Observer verification TSP (signature, chaine, temporalite, CRL/OCSP). 3. Recuperer le dossier legal cree.
Resultats attendus: - Reponse: acceptation + creation dossier PENDING_BOTH. - Extraction correcte de mandateId, emetteur, periode, documentIds. - Evenement probatoire present avec hash SHA3-256, signature HSM, horodatage TSA. - Aucune ReKey generee a ce stade.
Evidence minimale: - ID dossier, statut, trace append-only, token TSA, preuve de verification TSP.
N2 - Double validation interne 2-of-2 jusqu'a ACTIVATED¶
Objectif: Verifier le passage strict vers ACTIVATED uniquement apres 2 validations distinctes conformes (identites juridiques userId IAM distinctes). [CORRECTION v2]
Prerequis specifiques: - Dossier legal issu de N1 en PENDING_BOTH.
Etapes: 1. Soumettre validation DPO via submitInternalValidation (acteur validator-dpo-001). 2. Soumettre validation LegalOfficer via submitInternalValidation (acteur validator-legal-001). 3. Lire l'etat du dossier.
Resultats attendus: - Transition intermediaire conforme PD-82 adaptee au contexte LEGAL_PRE_MANDATE. - Etat final ACTIVATED si 2 validations distinctes dans validationTtl (defaut 7 jours calendaires). [CORRECTION v2] - Chaque transition est journalisee avec hash + signature HSM + TSA.
Evidence minimale: - Journal des transitions d'etat signe/horodate, identites juridiques distinctes.
N3 - Activation PRE legale et consultation bornee¶
Objectif: Verifier la generation d'une ReKey legale temporaire, bornee et l'acces lecture seule dans le scope.
Prerequis specifiques: - Dossier ACTIVATED (N2). - contextId=LEGAL_PRE_MANDATE.
Etapes: 1. Appeler activateLegalAccess (orchestration interne de generateLegalReKey) avec TTL <= 30 jours et scope du mandat. [CORRECTION v2] 2. Verifier via getLegalAccessStatus que la ReKey est active. 3. Lire DOC-1001 (autorise). 4. Lire DOC-1002 (autorise).
Resultats attendus: - ReKey creee avec attributs: isLegal=true, mandateId renseigne, stockage domaine legal isole. - Consultations autorisees uniquement en lecture sur docs du mandat. - Chaque consultation est journalisee probatoirement.
Evidence minimale: - Metadata ReKey legale, statut actif, traces de consultation signees/horodatees.
N4 - Cloture et destruction cryptographique verifiable¶
Objectif: Verifier invalidation immediate et preuve composite complete de fin d'operation.
Prerequis specifiques: - ReKey legale active issue de N3.
Etapes: 1. Declencher cloture via closeLegalAccess (motif END_OF_CONSULTATION) ou revokeReKey. [CORRECTION v2] 2. Verifier statut terminal via getLegalAccessStatus. 3. Tenter une consultation post-cloture. 4. Exporter preuve via getLegalAuditProof.
Resultats attendus: - Statut de cloture dans {REVOKED, EXPIRED, COMPLETED} puis transition vers DESTROYED apres destruction cryptographique verifiable. [CORRECTION v2] - ReKey immediatement inutilisable apres cloture/revocation. - Evenement de destruction/revocation signe et horodate. - Preuve composite complete, verifiable hors plateforme.
Evidence minimale: - Etat terminal, refus post-cloture, bundle de preuve verifiable hors plateforme.
3) Scenarios d'erreur (ERR-81-01 a ERR-81-18)¶
E01 - ERR-81-01 Mandat absent ou format invalide¶
- Prerequis: payload sans mandat ou JSON/schema invalide.
- Etapes: appeler
registerLegalMandate. - Attendu: rejet immediat, aucun dossier actif, aucune ReKey.
E02 - ERR-81-02 Signature eIDAS invalide / certificat non qualifie¶
- Prerequis: mandat signe invalide OU certificat non qualifie.
- Etapes:
registerLegalMandate. - Attendu: rejet fail-closed, journal de refus, aucune ReKey.
E03 - ERR-81-03 Chaine de certificats incomplete/invalide¶
- Prerequis: mandat avec chaine tronquee/invalide.
- Etapes:
registerLegalMandate. - Attendu: rejet fail-closed.
E04 - ERR-81-04 Certificat revoque (CRL/OCSP)¶
- Prerequis: certificat marque revoque par TSP.
- Etapes:
registerLegalMandate. - Attendu: rejet fail-closed.
E05 - ERR-81-05 Fenetre temporelle echue ou non encore valide¶
- Prerequis:
mandate-expired-001puismandate-notyet-001. - Etapes: 2 appels
registerLegalMandate. - Attendu: rejet fail-closed dans les 2 cas.
E06 - ERR-81-06 Perimetre mandat vide ou incoherent¶
- Prerequis:
mandate-scope-empty-001ou scope incoherent. - Etapes:
registerLegalMandate. - Attendu: rejet de demande, pas d'activation possible.
E07 - ERR-81-07 Activation sans etat ACTIVATED PD-82¶
- Prerequis: dossier en
PENDING_BOTH(une seule ou zero validation). - Etapes: appeler
activateLegalAccess/generateLegalReKey. - Attendu: refus strict, aucune ReKey.
E08 - ERR-81-08 Meme identite juridique (userId IAM) pour les 2 validations [CORRECTION v2]¶
- Prerequis: dossier
PENDING_BOTH. - Etapes: soumettre validation 1 puis validation 2 avec
validator-dual-001(memeuserIdIAM, role potentiellement different). [CORRECTION v2] - Attendu: refus de la 2e validation, etat non
ACTIVATED.
E09 - ERR-81-09 TTL demande > 30 jours¶
- Prerequis: dossier
ACTIVATED. - Etapes:
generateLegalReKeyavec TTL=31 jours. - Attendu: rejet generation ReKey.
E10 - ERR-81-10 Acces a documentId hors mandat¶
- Prerequis: ReKey legale active scopee sur
DOC-1001,DOC-1002. - Etapes: tenter lecture
DOC-9999. - Attendu: refus strict + journalisation probatoire du refus.
E11 - ERR-81-11 Tentative de modification/suppression document¶
- Prerequis: session legal active.
- Etapes: tenter operation write/delete sur doc autorise.
- Attendu: refus strict, WORM non altere.
E12 - ERR-81-12 ReKey expiree/revoquee/inconnue¶
- Prerequis: trois cas (expiree, revoquee, ID inconnu).
- Etapes: appel consultation avec chaque cas.
- Attendu: refus strict dans les 3 cas.
E13 - ERR-81-13 Echec signature HSM evenement probatoire¶
- Prerequis: indisponibilite HSM simulee au moment d'un evenement obligatoire.
- Etapes: executer operation qui exige journal probatoire.
- Attendu: blocage fail-closed, operation annulee.
E14 - ERR-81-14 Echec horodatage TSA evenement obligatoire¶
- Prerequis: TSA indisponible/simulee en erreur.
- Etapes: executer operation avec evenement obligatoire.
- Attendu: blocage fail-closed, operation annulee.
E15 - ERR-81-15 Service TSP indisponible¶
- Prerequis: TSP down/time-out.
- Etapes:
registerLegalMandate. - Attendu: rejet temporaire fail-closed.
E16 - ERR-81-16 Incoherence mandateId ReKey vs dossier¶
- Prerequis: tentative d'usage d'une ReKey liee a un autre dossier.
- Etapes: consultation avec mismatch mandateId/dossier.
- Attendu: refus strict + emission alerte securite.
E17 - ERR-81-17 Tentative de reutilisation post-destruction¶
- Prerequis: ReKey detruite (N4).
- Etapes: tenter reutilisation de la meme ReKey.
- Attendu: refus strict, aucune resurrection possible.
E18 - ERR-81-18 Depassement rate limiting¶
- Prerequis: seuil contractuel applique (defaut 10 consultations/minute par
legalReKeyId, configurable [1..60]). [CORRECTION v2] - Etapes: envoyer rafale au-dela du seuil sur consultation legale.
- Attendu: refus/temporisation selon contrat + traces anti-extraction.
4) Scenarios de securite (tentatives d'exploitation)¶
S1 - Tentative backdoor par extraction de cle persistante¶
- But: verifier qu'aucune cle persistante de document n'est exposee.
- Etapes: interroger toutes APIs de statut/detail ReKey et journaux exportes.
- Attendu: presence exclusive d'artefacts temporaires de rechiffrement, jamais de cle persistante document.
- Couvre: INV-81-04.
S2 - Escalade via contextId non conforme¶
- But: contourner controles en injectant
contextId!=LEGAL_PRE_MANDATEou absent. - Etapes: appeler
generateLegalReKeyaveccontextIdvide/forge. - Attendu: refus strict, journal alerte.
- Couvre: INV-81-12.
S3 - Reutilisation token/session apres revocation¶
- But: verifier l'invalidite immediate apres
revokeReKey. - Etapes: etablir session de lecture puis revoquer, puis reemettre requetes avec anciens artefacts.
- Attendu: echec immediat de toutes requetes ulterieures.
- Couvre: INV-81-01, INV-81-07.
S4 - Franchissement de cloisonnement PRE standard vs legal¶
- But: verifier isolation stockage, traces et etats entre domaines.
- Etapes: tenter de lire/joindre ReKey legal depuis API PRE standard et inversement.
- Attendu: separation stricte, aucune resolution croisee possible.
- Couvre: INV-81-10, AC-81-13.
S5 - Extraction massive par trafic distribue¶
- But: evaluer resistance anti-exfiltration (burst + parallelisme).
- Etapes: lancer charge multi-clients sur docs autorises et non autorises.
- Attendu: application du rate limiting (defaut 10/min par
legalReKeyId), refus/temporisation, preuves de controle conservees. [CORRECTION v2] - Couvre: ERR-81-18, INV-81-05.
S6 - Tentative d'extraction d'artefacts d'audit par non titulaire¶
- But: verifier controle d'acces a
getLegalAuditProof. - Etapes: demander preuve avec identite non titulaire puis identite titulaire legitime (
ownerUserIddu coffre cible dans IAM). [CORRECTION v2] - Attendu: refus non titulaire, succes titulaire, tracabilite des 2 acces.
- Couvre: AC-81-14.
5) Scenarios de robustesse (pannes, concurrence, idempotence)¶
R1 - Panne TSP intermitente pendant qualification mandat¶
- Prerequis: TSP alterne disponible/indisponible.
- Etapes: soumettre serie de mandats valides en fenetre de panne.
- Attendu: chaque tentative pendant panne est rejetee fail-closed; aucune activation partielle.
R2 - Panne HSM pendant journalisation d'une transition d'etat¶
- Prerequis: HSM indisponible lors d'une validation interne.
- Etapes: soumettre validation durant panne, puis apres reprise.
- Attendu: operation en panne refusee, operation apres reprise traitee normalement sans etat corrompu.
R3 - Panne TSA pendant evenement obligatoire¶
- Prerequis: TSA indisponible lors de
generateLegalReKey. - Etapes: lancer activation en panne puis retester apres reprise.
- Attendu: blocage fail-closed en panne; succes uniquement quand TSA revient.
R4 - Concurrence sur validations 2-of-2¶
- Prerequis: dossier
PENDING_BOTH. - Etapes: emissions concurrentes de validations (dont doublons/replays).
- Attendu: un seul passage coherent a
ACTIVATED, aucune double activation ni etat impossible.
R5 - Idempotence de revokeReKey¶
- Prerequis: ReKey active.
- Etapes: appeler
revokeReKeydeux fois avec memelegalReKeyId. - Attendu: 1er appel revoque; 2e appel sans effet fonctionnel supplementaire, statut final stable, trace explicite idempotente.
R6 - Concurrence consultation vs expiration TTL¶
- Prerequis: ReKey active proche expiration.
- Etapes: lancer lectures paralleles au voisinage exact de l'expiration.
- Attendu: toutes requetes apres instant d'expiration sont refusees; aucune lecture post-TTL acceptee.
R7 - Concurrence consultation/revocation dans la fenetre de 5 secondes [CORRECTION v3]¶
- Prerequis: ReKey active, systeme de test permettant lancement parallele. [CORRECTION v3]
- Etapes: (1) Lancer une revocation via
revokeReKey, (2) Simultanement, lancer des consultations en parallele pendant 5 secondes, (3) Verifier les resultats de chaque consultation. [CORRECTION v3] - Attendu: Toute consultation initiee APRES la confirmation de revocation est refusee. Les consultations en cours au moment de la revocation peuvent aboutir (tolerance de la fenetre 5s). Aucune consultation ne reussit apres la fenetre de 5 secondes. [CORRECTION v3]
- Couvre: SEC-v2-01, INV-81-01, INV-81-07. [CORRECTION v3]
6) Scenarios cycle de vie (TTL, expiration, destruction, audit)¶
L1 - Expiration TTL automatique¶
- Prerequis: ReKey legale TTL court (ex: 120s) en environnement horloge controlee.
- Etapes: verifier acces avant expiration puis apres expiration.
- Attendu: acces valide avant, refus strict apres, statut
EXPIRED.
L2 - Destruction sur fin de consultation¶
- Prerequis: mode de cloture
END_OF_CONSULTATIONactif. [CORRECTION v2] - Etapes: terminer consultation (action explicite de l'autorite judiciaire) puis appeler
closeLegalAccess. [CORRECTION v2] - Attendu: statut
COMPLETEDpuisDESTROYEDapres destruction verifiable, impossibilite de reutilisation. [CORRECTION v2]
L3 - Destruction sur revocation explicite¶
- Prerequis: ReKey active.
- Etapes: appeler
revokeReKeyavec motif legal, verifier invalidation immediate. - Attendu: statut
REVOKED, puisDESTROYEDapres destruction cryptographique; refus instantane de tout acces ulterieur. [CORRECTION v2]
L4 - Audit a posteriori hors plateforme¶
- Prerequis: operation legal PRE finalisee (cas
COMPLETED->DESTROYEDet casREVOKED->DESTROYED). [CORRECTION v2] - Etapes:
- Recuperer
LegalCompositeProofviagetLegalAuditProof. - Verifier hors plateforme: chainage des evenements, hash SHA3-256, signatures HSM, tokens TSA, coherence des statuts.
- Verifier acces titulaire aux artefacts.
- Attendu: preuve complete, verifiable, exploitable en audit externe.
L5 - Verification du delai de destruction [CORRECTION v3]¶
- Prerequis: ReKey en etat
REVOKED(issue de L3 ou R5), horloge controlee. [CORRECTION v3] - Etapes: (1) Revoquer une ReKey, (2) Attendre un delai inferieur a
destructionDeadline, (3) Verifier que la destruction est declenchee avantdestructionDeadline. [CORRECTION v3] - Attendu: statut
DESTROYEDatteint dans le delai contractuel. [CORRECTION v3] - Couvre: AMB-v2-01, INV-81-07, INV-81-01. [CORRECTION v3]
7) Points NON TESTABLES ou testables sous condition¶
NT-81-01 - "Rate limiting contractuel anti-extraction massive"¶
- Statut: TESTABLE. [CORRECTION v2]
- Motif: seuil par defaut defini (10 consultations/minute par
legalReKeyId) avec intervalle configurable contractuel [1..60]. [CORRECTION v2] - Impact test: E18/S5 verifient le profil par defaut, ou explicitent la valeur configuree si derogation environnementale.
NT-81-02 - "Utilisateur titulaire" (AC-81-14)¶
- Statut: TESTABLE. [CORRECTION v2]
- Motif: titulaire defini comme
ownerUserIddu coffre cible et controle via IAM. [CORRECTION v2] - Impact test: L4/S6 verifient directement la matrice "ownerUserId vs non-owner".
8) Regles de verdict¶
- Conforme si et seulement si:
- tous les scenarios N1-N4 passent,
- E01-E18 passent avec comportement exact attendu,
- aucun invariant INV-81-01..12 n'est viole,
- tous les AC-81-01..14 sont couverts et verifies,
- les points eventuellement marques "TESTABLE SOUS CONDITION" disposent de prerequis contractuels explicites. [CORRECTION v2]
- Non conforme des qu'un seul fail-closed requis est absent, qu'une ReKey survit hors TTL/revocation, ou qu'une preuve composite est incomplete/non verifiable.