PD-81 - Specification canonique contractuelle¶
Statut: CONTRACTUELLE - FAIT LOI
Version: 1.0.0
Perimetre: EPIC PD-189 (Cryptographie, preuves et acces legaux)
1. Objectif¶
Definir le contrat fonctionnel, securitaire et probatoire du module Legal PRE de ProbatioVault, permettant un acces judiciaire exceptionnel, temporaire, borne et tracable a des documents chiffres, sans introduire de backdoor permanente ni degrader le modele zero-knowledge global.
Le module PD-81 orchestre obligatoirement, dans cet ordre logique: 1. la reception et la validation d'un mandat judiciaire eIDAS, 2. la double validation interne 2-of-2 (adaptation PD-82), 3. l'activation d'un acces temporaire via PRE (extension PD-41), 4. la tracabilite probatoire complete (PD-37, PD-38, PD-39), 5. la destruction cryptographique verifiable des mecanismes temporaires.
2. Perimetre / Hors perimetre¶
2.1 Perimetre inclus¶
Sont dans le perimetre contractuel: - Validation d'un mandat judiciaire signe electroniquement (eIDAS) avec verification de signature, chaine de certificats, validite temporelle, et statut de revocation (CRL/OCSP) via TSP reel. - Extraction puis controle contractuel du perimetre du mandat (liste de documentId, fenetre temporelle, identite emettrice). - Reutilisation du mecanisme PD-82 avec adaptation des roles (DPO, LegalOfficer) et du contexte (LEGAL_PRE_MANDATE). - Activation PRE uniquement apres etat ACTIVATED de la double validation. - Extension de PD-41 avec generateLegalReKey(), revokeReKey(), getLegalAccessStatus(). - Generation de ReKey legales strictement temporaires, bornees au mandat, marquees isLegal=true, rattachees a mandateId, et stockees dans un espace isole des ReKey standards. - Consultation en lecture seule sur le perimetre documentaire autorise. - Journalisation append-only des evenements, signature HSM, hash SHA3-256, horodatage TSA RFC 3161, ancrage periodique, preuve composite auditable. - Destruction cryptographique verifiable a expiration TTL, fin de consultation, ou revocation explicite.
2.2 Hors perimetre¶
Sont explicitement hors perimetre: - PRE standard hors cas legal (partages adultes, delegations B2B). - Portail front-end autorite judiciaire. - API machine-to-machine judiciaire (phase future). - Gouvernance PKI complete des autorites (on suppose des identites exploitables via TSP). - Notifications utilisateur (l'evenement est journalise; l'emission de notification est hors perimetre). - Resistance post-quantique. - Appreciation juridique finale par un juge/autorite exterieure.
2.3 Informations manquantes (bloquantes ou a preciser)¶
Les informations suivantes ne sont pas specifiees dans l'expression de besoin et doivent etre explicitees pour une conformite contractuelle complete: 1. Liste normative des roles autorises a porter DPO et LegalOfficer (fonctions, delegations, incompatibilites, suppleances). 2. Source de verite de l'identite juridique interne (annuaire, registre RH, IAM) et niveau d'assurance d'identite requis. 3. Valeurs derogatoires de rate limiting si l'environnement ne retient pas le profil contractuel par defaut (10/min/ReKey, plage [1..60]). [CORRECTION v2] 4. Capacite/cadence operationnelle des batchs d'ancrage si une contrainte plus stricte que le delai maximal contractuel de 24h est imposee. [CORRECTION v2] 5. Valeurs derogatoires eventuelles de destructionDeadline au-dela de la valeur contractuelle par defaut (1 heure). [CORRECTION v3] 6. Politique de retention des preuves composites et journaux probatoires. 7. Taxonomie des types de mandat et valeurs de TTL de double validation associees. [CORRECTION v2]
En l'absence de ces parametres, les exigences correspondantes sont contraignantes sur le principe, mais leurs seuils chiffres sont a completer avant recette finale.
3. Definitions¶
- Mandat judiciaire: acte electronique signe (eIDAS) autorisant un acces legal borne a un perimetre et une duree.
- TSP: Trust Service Provider utilise pour verifier signature qualifiee, certificats, et statut de revocation.
- Legal PRE: mode d'orchestration PRE specifique a PD-81, distinct du PRE standard.
- ReKey legale: artefact de re-chiffrement temporaire associe a un mandat, marque
isLegal=true, scope borne. - TTL: duree de validite d'une ReKey legale; borne dure maximale de 30 jours calendaires.
- Perimetre mandat: ensemble ferme de
documentIdexplicitement autorises. - Double validation 2-of-2: workflow PD-82 adapte, necessitant deux validations distinctes (DPO + LegalOfficer), avec mapping PD-82
DPO -> PARENTetLegalOfficer -> AUTHORITYet etats intermediairesPENDING_DPO/PENDING_LEGAL_OFFICER/PENDING_BOTHavantACTIVATED. [CORRECTION v2] - TTL de double validation (
validationTtl): fenetre contractuelle par defaut de 7 jours calendaires; parametre configurable dans l'intervalle [1 heure, 30 jours], sans depasser la validite du mandat. [CORRECTION v2] - Activation: transition d'etat autorisant l'usage des ReKey legales apres validations completes.
- Revocation: annulation avant terme d'une ReKey legale; effet immediat attendu avec invalidation dans la meme transaction ou sous 5 secondes maximum. [CORRECTION v2]
- Destruction cryptographique verifiable: suppression logique et invalidation irreversibles d'une ReKey legale, tracees probatoirement.
- Delai de destruction (
destructionDeadline): borne contractuelle maximale entre l'entree dans un etat terminal (REVOKED/EXPIRED/COMPLETED) et l'atteinte de l'etatDESTROYED; valeur par defaut: 1 heure; parametre configurable dans l'intervalle [1 minute, 24 heures]. [CORRECTION v3] - Preuve composite: paquet verifiable hors plateforme reliant mandat, validations, operations PRE, signatures HSM, hash, timestamp TSA, et preuve d'ancrage.
- Audit a posteriori utilisateur: capacite du titulaire du coffre a verifier l'existence, la chaine d'evenements et l'integrite de l'operation.
- Fin de consultation (
END_OF_CONSULTATION): condition de cloture declenchee par action explicite de l'autorite judiciaire consultante (Bob) OU par epuisement du nombre de consultations autorisees explicitement par le mandat; a defaut de plafond explicite dans le mandat, seule l'action explicite est valide. [CORRECTION v2] - Bob (contexte Legal PRE): autorite judiciaire consultante destinataire du rechiffrement legal;
bobPublicKeyest la cle publique de cette autorite. [CORRECTION v2] - Source et verification de
bobPublicKey: la cle provient du mandat eIDAS (ou de son annexe signee referencee) et DOIT etre verifiee via chaine de certificats/CRL/OCSP par TSP, puis rapprochee d'une identite judiciaire autorisee dans IAM. [CORRECTION v2] - Rate limiting legal PRE: valeur contractuelle par defaut de 10 consultations/minute par
legalReKeyId, parametre configurable dans [1..60] consultations/minute. [CORRECTION v2] - Frequence d'ancrage probatoire: ancrage au batch periodique avec delai maximal contractuel de 24 heures entre emission de l'evenement et ancrage observable. [CORRECTION v2]
- Titulaire: proprietaire du coffre (
ownerUserId) auquel appartiennent les documents vises par le mandat; l'habilitation audit est evaluee sur cette propriete IAM. [CORRECTION v2] - Fail-closed: en cas de doute ou d'erreur, l'acces est refuse par defaut.
4. Invariants (non negociables)¶
| ID | Regle contractuelle | Justification |
|---|---|---|
| INV-81-01 | Aucun acces legal ne persiste au-dela du TTL ou de la revocation; aucun mecanisme permanent d'acces n'est cree. | Interdiction de backdoor permanente. |
| INV-81-02 | Aucun acces n'est possible sans mandat valide eIDAS verifie via TSP reel au moment de l'instruction. | Conformite judiciaire et non-repudiation. |
| INV-81-03 | L'activation exige obligatoirement deux validations distinctes conformes PD-82 (DPO et LegalOfficer) et portees par deux userId IAM juridiquement distincts. | Separation des pouvoirs, reduction du risque interne. [CORRECTION v2] |
| INV-81-04 | Aucune cle persistante de document n'est exposee; seuls des artefacts temporaires de re-chiffrement sont admis. | Preservation zero-knowledge. |
| INV-81-05 | Le scope d'acces est strictement limite aux documentId du mandat; tout document hors liste est interdit. | Principe de proportionnalite et minimisation. |
| INV-81-06 | L'acces legal est strictement en lecture seule; aucune modification ni suppression de document WORM n'est autorisee. | Integrite documentaire et WORM. |
| INV-81-07 | Toute ReKey legale est destructible de facon verifiable a expiration, a fin de consultation, ou sur revocation. | Limitation temporelle effective. |
| INV-81-08 | Chaque etape probatoire est journalisee append-only, signee HSM, hashee SHA3-256, horodatee TSA, et rattachable a l'ancrage periodique (delai max 24h). | Opposabilite et integrite de la preuve. [CORRECTION v2] |
| INV-81-09 | Une preuve composite complete et verifiable hors plateforme doit etre produite pour chaque operation legal PRE finalisee. | Auditabilite externe. |
| INV-81-10 | Le mode Legal PRE est isole du PRE standard: stockage, traces, et etats separes. | Cloisonnement de risque. |
| INV-81-11 | En cas d'erreur de validation, incoherence d'etat, ou indisponibilite d'un composant critique de confiance (TSP/HSM/TSA), le systeme refuse l'acces (fail-closed). | Robustesse securitaire. |
| INV-81-12 | Le champ contextId est obligatoire sur toutes operations PRE legales et doit correspondre au contexte LEGAL_PRE_MANDATE. | Coherence cryptographique et tracabilite. |
5. Flux nominaux¶
N1 - Reception et qualification du mandat¶
- Le systeme recoit une demande legal PRE contenant un mandat signe et les metadonnees requises.
- Le systeme verifie le format et l'integrite du mandat.
- Le systeme interroge le TSP et valide signature qualifiee, chaine de certificats, validite temporelle, CRL/OCSP.
- Le systeme extrait
mandateId, emetteur, periode autorisee, listedocumentId, puis resout chaque identifiant de mandat vers undocumentIdinterne ProbatioVault. [CORRECTION v2] - En cas de non-resolution d'au moins un identifiant, le systeme rejette la demande en fail-closed (ERR-81-06). [CORRECTION v2]
- Le systeme enregistre un evenement probatoire de qualification (append-only + HSM + hash + TSA).
- Le systeme ouvre un dossier de validation interne en etat
PENDING_BOTH.
Post-condition N1: dossier legal PRE cree et eligible a la double validation.
N2 - Double validation interne 2-of-2 (adaptation PD-82)¶
- Le DPO realise la validation 1 signee, horodatee, identite juridique rattachee.
- Le LegalOfficer realise la validation 2 signee, horodatee, identite juridique rattachee.
- Le systeme applique les regles d'etat PD-82 adaptees au contexte
LEGAL_PRE_MANDATE, avec mappingDPO -> PARENT,LegalOfficer -> AUTHORITYet etats intermediairesPENDING_DPO/PENDING_LEGAL_OFFICER/PENDING_BOTH. [CORRECTION v2] - Si les deux validations sont presentes dans
validationTtl(defaut 7 jours calendaires), etat finalACTIVATED. [CORRECTION v2] - Le systeme journalise chaque transition d'etat de maniere probatoire.
Post-condition N2: dossier en etat ACTIVATED, sinon REJECTED/EXPIRED selon regles PD-82.
N3 - Activation et consultation legale bornee¶
- Sur dossier
ACTIVATED, le systeme appelleactivateLegalAccess, qui orchestre en internegenerateLegalReKey()avec TTL legal et scopedocumentIddu mandat (un seul appel API externe). [CORRECTION v2] - La ReKey legale produite est marquee
isLegal=true, liee amandateId, et stockee dans l'espace isole legal. - Les consultations sont autorisees uniquement sur
documentIddu mandat, en lecture seule. - Le systeme applique le rate limiting contractuel anti-extraction massive (defaut 10 consultations/minute par
legalReKeyId, configurable dans [1..60]). [CORRECTION v2] - Chaque consultation journalise un evenement probatoire.
Post-condition N3: acces legal actif, borne dans le temps et le perimetre.
N4 - Cloture et destruction cryptographique¶
- La cloture intervient sur expiration TTL, fin de consultation, ou action explicite
revokeReKey(). - Le systeme invalide immediatement la ReKey legale pour tout usage ulterieur (meme transaction ou delai max 5 secondes). [CORRECTION v2]
- Le systeme produit un evenement de destruction/revocation signe et horodate.
- Le statut d'acces passe a un statut terminal de cloture (
REVOKEDouEXPIREDouCOMPLETED) puis aDESTROYEDapres suppression physique/zeroisation verifiable de l'artefact de rechiffrement. [CORRECTION v2] - Le systeme assemble la preuve composite complete et la rend disponible pour audit a posteriori.
Post-condition N4: aucun acces legal operationnel restant pour le mandat cloture.
5bis. Diagrammes Mermaid¶
D1 - Machine d'etats LegalValidationCase (adaptation PD-82)¶
Etats du dossier de validation interne. Ref: INV-81-03 (double validation 2-of-2 distincte), INV-81-02 (mandat eIDAS valide requis).
stateDiagram-v2
[*] --> PENDING_BOTH : registerLegalMandate()\n[mandat eIDAS valide - INV-81-02]
PENDING_BOTH --> PENDING_LEGAL_OFFICER : submitInternalValidation(DPO)\n[INV-81-03: userId distincts]
PENDING_BOTH --> PENDING_DPO : submitInternalValidation(LegalOfficer)\n[INV-81-03: userId distincts]
PENDING_BOTH --> EXPIRED : validationTtl ecoulee
PENDING_LEGAL_OFFICER --> ACTIVATED : submitInternalValidation(LegalOfficer)\n[INV-81-03: 2-of-2 complete]
PENDING_LEGAL_OFFICER --> EXPIRED : validationTtl ecoulee
PENDING_DPO --> ACTIVATED : submitInternalValidation(DPO)\n[INV-81-03: 2-of-2 complete]
PENDING_DPO --> EXPIRED : validationTtl ecoulee
PENDING_BOTH --> REJECTED : mandat invalide / ERR-81-08
PENDING_LEGAL_OFFICER --> REJECTED : ERR-81-08 meme userId
PENDING_DPO --> REJECTED : ERR-81-08 meme userId
ACTIVATED --> [*]
EXPIRED --> [*]
REJECTED --> [*] D2 - Machine d'etats LegalReKey (cycle de vie)¶
Transitions contractuelles du statut ReKey legale. Ref: INV-81-01 (aucun acces au-dela TTL/revocation), INV-81-07 (destruction verifiable), INV-81-04 (artefacts temporaires uniquement).
stateDiagram-v2
[*] --> ACTIVE : generateLegalReKey()\n[dossier ACTIVATED - INV-81-04]
ACTIVE --> REVOKED : revokeReKey()\n[invalidation <= 5s - INV-81-01]
ACTIVE --> EXPIRED : expiresAt atteint\n[INV-81-01: aucun acces post-TTL]
ACTIVE --> COMPLETED : closeLegalAccess(END_OF_CONSULTATION)\n[INV-81-01]
REVOKED --> DESTROYED : destruction cryptographique\n[<= destructionDeadline - INV-81-07]
EXPIRED --> DESTROYED : destruction cryptographique\n[<= destructionDeadline - INV-81-07]
COMPLETED --> DESTROYED : destruction cryptographique\n[<= destructionDeadline - INV-81-07]
DESTROYED --> [*] D3 - Sequence N1+N2 : Qualification mandat et double validation¶
Flux multi-service couvrant la reception du mandat (N1) et la double validation (N2). Ref: INV-81-02 (verification TSP), INV-81-03 (2-of-2), INV-81-08 (journalisation probatoire), INV-81-11 (fail-closed TSP/HSM/TSA).
sequenceDiagram
participant Client
participant Orchestrateur as PD-81 Orchestrateur
participant TSP
participant HSM
participant TSA
participant PD82 as PD-82 (Double Validation)
participant AuditLog as Audit append-only
Note over Client,AuditLog: N1 - Qualification du mandat
Client->>Orchestrateur: registerLegalMandate(mandatePayload, contextId)
Orchestrateur->>Orchestrateur: Verification format/integrite
Orchestrateur->>TSP: Verifier signature eIDAS + chaine + CRL/OCSP
alt TSP indisponible [INV-81-11]
TSP-->>Orchestrateur: Erreur
Orchestrateur-->>Client: ERR-81-15 fail-closed
end
TSP-->>Orchestrateur: Resultat validation
alt Mandat invalide [INV-81-02]
Orchestrateur-->>Client: ERR-81-01..05 rejet
end
Orchestrateur->>Orchestrateur: Extraction mandateId, scopeDocumentIds, periode
Orchestrateur->>Orchestrateur: Resolution documentId internes
Orchestrateur->>HSM: Signer evenement MANDATE_QUALIFIED (SHA3-256)
HSM-->>Orchestrateur: hsmSignature [INV-81-08]
Orchestrateur->>TSA: Horodater evenement (RFC 3161)
TSA-->>Orchestrateur: tsaTokenRef [INV-81-08]
Orchestrateur->>AuditLog: Ecrire MANDATE_QUALIFIED (append-only)
Orchestrateur->>PD82: Ouvrir dossier (PENDING_BOTH, contextId=LEGAL_PRE_MANDATE)
Orchestrateur-->>Client: LegalMandateResult (legalCaseId)
Note over Client,AuditLog: N2 - Double validation 2-of-2
Client->>Orchestrateur: submitInternalValidation(legalCaseId, DPO, identity1)
Orchestrateur->>PD82: Validation 1 (DPO -> PARENT) [INV-81-03]
PD82-->>Orchestrateur: PENDING_LEGAL_OFFICER
Orchestrateur->>HSM: Signer VALIDATION_SUBMITTED
Orchestrateur->>TSA: Horodater
Orchestrateur->>AuditLog: Ecrire VALIDATION_SUBMITTED
Client->>Orchestrateur: submitInternalValidation(legalCaseId, LegalOfficer, identity2)
Orchestrateur->>Orchestrateur: Verifier identity2 != identity1 [INV-81-03]
Orchestrateur->>PD82: Validation 2 (LegalOfficer -> AUTHORITY)
PD82-->>Orchestrateur: ACTIVATED
Orchestrateur->>HSM: Signer VALIDATION_ACTIVATED
Orchestrateur->>TSA: Horodater
Orchestrateur->>AuditLog: Ecrire VALIDATION_ACTIVATED
Orchestrateur-->>Client: ValidationStateResult (ACTIVATED) D4 - Sequence N3+N4 : Activation PRE legale, consultation et destruction¶
Flux multi-service couvrant l'activation (N3) et la cloture (N4). Ref: INV-81-04 (pas de cle persistante), INV-81-05 (scope strict), INV-81-06 (lecture seule), INV-81-07 (destruction verifiable), INV-81-10 (isolation), INV-81-12 (contextId obligatoire).
sequenceDiagram
participant Client
participant Orchestrateur as PD-81 Orchestrateur
participant PD41 as PD-41 (PRE legal)
participant HSM
participant TSA
participant AuditLog as Audit append-only
participant Storage as Storage legal isole
Note over Client,Storage: N3 - Activation et consultation
Client->>Orchestrateur: activateLegalAccess(legalCaseId)
Orchestrateur->>Orchestrateur: Verifier etat ACTIVATED + mandat valide
Orchestrateur->>PD41: generateLegalReKey(alicePK, bobPK,<br/>LEGAL_PRE_MANDATE, constraints) [INV-81-12]
PD41->>PD41: Generer ReKey (isLegal=true, TTL<=30j) [INV-81-04]
PD41->>Storage: Stocker ReKey domaine legal isole [INV-81-10]
PD41-->>Orchestrateur: LegalReKey (ACTIVE)
Orchestrateur->>HSM: Signer LEGAL_ACCESS_ACTIVATED
Orchestrateur->>TSA: Horodater [INV-81-08]
Orchestrateur->>AuditLog: Ecrire LEGAL_ACCESS_ACTIVATED
Orchestrateur-->>Client: LegalAccessActivationResult
loop Consultations (rate limit: 10/min/reKey)
Client->>Orchestrateur: consulter(legalReKeyId, documentId)
Orchestrateur->>Orchestrateur: Verifier documentId in scopeDocumentIds [INV-81-05]
Orchestrateur->>Orchestrateur: Verifier lecture seule [INV-81-06]
Orchestrateur->>Orchestrateur: Verifier rate limit
Orchestrateur->>PD41: Re-chiffrer document via ReKey
PD41-->>Orchestrateur: Document re-chiffre pour Bob
Orchestrateur->>HSM: Signer LEGAL_DOCUMENT_ACCESSED
Orchestrateur->>AuditLog: Ecrire LEGAL_DOCUMENT_ACCESSED
Orchestrateur-->>Client: Document (lecture seule)
end
Note over Client,Storage: N4 - Cloture et destruction
alt Revocation explicite
Client->>Orchestrateur: closeLegalAccess(legalReKeyId, REVOKE)
else Expiration TTL
Orchestrateur->>Orchestrateur: expiresAt atteint [INV-81-01]
else Fin de consultation
Client->>Orchestrateur: closeLegalAccess(legalReKeyId, END_OF_CONSULTATION)
end
Orchestrateur->>PD41: revokeReKey(legalReKeyId) [invalidation <= 5s]
PD41->>Storage: Invalider ReKey [INV-81-01]
PD41-->>Orchestrateur: RevocationResult (REVOKED|EXPIRED|COMPLETED)
Orchestrateur->>HSM: Signer LEGAL_ACCESS_CLOSED / LEGAL_REKEY_REVOKED
Orchestrateur->>TSA: Horodater
Orchestrateur->>AuditLog: Ecrire evenement cloture
Note over Orchestrateur,Storage: Destruction (<= destructionDeadline)
Orchestrateur->>Storage: Suppression physique / zeroisation ReKey [INV-81-07]
Storage-->>Orchestrateur: Confirmation destruction
Orchestrateur->>HSM: Signer LEGAL_REKEY_DESTROYED
Orchestrateur->>TSA: Horodater
Orchestrateur->>AuditLog: Ecrire LEGAL_REKEY_DESTROYED
Orchestrateur->>Orchestrateur: Assembler preuve composite [INV-81-09]
Orchestrateur-->>Client: LegalAccessClosureResult (DESTROYED) 6. Cas d'erreur¶
| ID | Condition detectee | Reponse attendue |
|---|---|---|
| ERR-81-01 | Mandat absent ou format invalide | Rejet immediat, aucun dossier active, evenement probatoire d'echec. |
| ERR-81-02 | Signature eIDAS invalide ou certificat non qualifie | Rejet fail-closed, motif explicite, aucune activation possible. |
| ERR-81-03 | Chaine de certificats incomplete/invalide | Rejet fail-closed, aucune creation de ReKey. |
| ERR-81-04 | Certificat revoque (CRL/OCSP) | Rejet fail-closed, evenement de securite critique. |
| ERR-81-05 | Fenetre temporelle du mandat echue ou non encore valide | Rejet fail-closed. |
| ERR-81-06 | Perimetre mandat vide ou incoherent (documentId dupliques/invalides) ou non resoluble vers les documentId internes | Rejet de la demande, aucune activation. [CORRECTION v2] |
| ERR-81-07 | Tentative d'activation sans etat ACTIVATED PD-82 | Refus strict, alerte d'incoherence d'etat. |
| ERR-81-08 | Validateur 1 et validateur 2 de meme identite juridique (userId IAM identique), meme si le role differe | Refus de la 2e validation, etat non activable. [CORRECTION v2] |
| ERR-81-09 | TTL demande > 30 jours | Rejet de generation ReKey legale. |
| ERR-81-10 | Acces a un documentId hors mandat | Refus strict, evenement de tentative hors perimetre. |
| ERR-81-11 | Tentative de modification/suppression document en mode legal | Refus strict, evenement de violation lecture seule. |
| ERR-81-12 | ReKey legale expiree/revoquee/inconnue | Refus strict de consultation. |
| ERR-81-13 | Echec signature HSM d'un evenement probatoire | Blocage de progression et refus d'activation/consultation concernee (fail-closed). |
| ERR-81-14 | Echec horodatage TSA d'un evenement obligatoire | Blocage de progression pour l'evenement obligatoire (fail-closed). |
| ERR-81-15 | Service TSP indisponible | Rejet temporaire fail-closed, operation non executable. |
| ERR-81-16 | Incoherence entre mandateId de la ReKey et dossier legal | Refus strict et alerte de securite. |
| ERR-81-17 | Tentative de reutilisation post-destruction | Refus strict, evenement de tentative de reutilisation. |
| ERR-81-18 | Depassement du rate limiting (defaut 10 consultations/minute par legalReKeyId) | Refus/temporisation selon politique contractuelle, evenement d'abus. [CORRECTION v2] |
7. Modele de donnees¶
Les entites ci-dessous sont contractuelles. Les types concrets et la persistance sont hors implementation, mais les champs marques "obligatoire" DOIVENT exister.
7.1 Entite LegalMandate¶
mandateId(obligatoire, unique)issuerIdentity(obligatoire, identite juridique emettrice)issuerRole(obligatoire, ex: juge/magistrat)signatureProfile(obligatoire, qualification eIDAS)certificateChainRef(obligatoire)revocationStatus(obligatoire)validFrom(obligatoire)validUntil(obligatoire)scopeDocumentIds[](obligatoire, non vide)mandateHashSha3(obligatoire)receivedAt(obligatoire)validationStatus(obligatoire:VALID/INVALID)
7.2 Entite LegalValidationCase¶
legalCaseId(obligatoire, unique)mandateId(obligatoire, reference)contextId(obligatoire,LEGAL_PRE_MANDATE)state(obligatoire: etats PD-82 adaptes)validationTtl(obligatoire, defaut 7 jours calendaires, configurable [1 heure..30 jours]) [CORRECTION v2]validator1Identity(obligatoire si validation 1 faite)validator1Role(obligatoire si validation 1 faite:DPO)validator1Signature(obligatoire si validation 1 faite)validator1At(obligatoire si validation 1 faite)validator2Identity(obligatoire si validation 2 faite)validator2Role(obligatoire si validation 2 faite:LegalOfficer)validator2Signature(obligatoire si validation 2 faite)validator2At(obligatoire si validation 2 faite)
7.3 Entite LegalReKey¶
legalReKeyId(obligatoire, unique)mandateId(obligatoire)legalCaseId(obligatoire)isLegal(obligatoire, valeur vraie)contextId(obligatoire)scopeDocumentIds[](obligatoire, identique au mandat)ttlSeconds(obligatoire, <= borne contractuelle)destructionDeadline(obligatoire, defaut 3600 secondes, configurable [60..86400]) [CORRECTION v3]issuedAt(obligatoire)expiresAt(obligatoire)status(obligatoire:ACTIVE/REVOKED/EXPIRED/COMPLETED/DESTROYED) [CORRECTION v2]storageDomain(obligatoire, valeur legale isolee)
Transitions contractuelles LegalReKey.status (cycle de vie): [CORRECTION v2] | Etat source | Declencheur | Etat cible | Contrainte | |---|---|---|---| | ACTIVE | revokeReKey() valide | REVOKED | Invalidation immediate (<= 5s). | | ACTIVE | Echeance expiresAt atteinte | EXPIRED | Refus de consultation post-TTL. | | ACTIVE | closeLegalAccess avec END_OF_CONSULTATION | COMPLETED | Cloture normale de consultation. | | REVOKED | Procedure de destruction cryptographique | DESTROYED | Suppression physique/zeroisation de l'artefact obligatoire, dans un delai maximal de destructionDeadline (defaut 1h). [CORRECTION v3] | | EXPIRED | Procedure de destruction cryptographique | DESTROYED | Suppression physique/zeroisation de l'artefact obligatoire, dans un delai maximal de destructionDeadline (defaut 1h). [CORRECTION v3] | | COMPLETED | Procedure de destruction cryptographique | DESTROYED | Suppression physique/zeroisation de l'artefact obligatoire, dans un delai maximal de destructionDeadline (defaut 1h). [CORRECTION v3] |
7.4 Entite LegalAccessEvent¶
eventId(obligatoire, unique)eventType(obligatoire; probatoire si dans{MANDATE_QUALIFIED, VALIDATION_SUBMITTED, VALIDATION_ACTIVATED, LEGAL_ACCESS_ACTIVATED, LEGAL_DOCUMENT_ACCESSED, LEGAL_ACCESS_CLOSED, LEGAL_REKEY_REVOKED, LEGAL_REKEY_DESTROYED}, informatif sinon) [CORRECTION v2]mandateId(obligatoire)legalCaseId(obligatoire)legalReKeyId(optionnel selon evenement)actorIdentity(obligatoire)actorRole(obligatoire)eventAt(obligatoire)eventPayloadHashSha3(obligatoire)hsmSignature(obligatoire)tsaTokenRef(obligatoire pour evenement probatoire)merkleLeafRef(obligatoire)anchoringBatchRef(obligatoire des que ancre)
7.5 Entite LegalCompositeProof¶
proofId(obligatoire, unique)mandateId(obligatoire)proofVersion(obligatoire)mandateEvidenceRef(obligatoire)doubleValidationEvidenceRef(obligatoire)rekeyLifecycleEvidenceRef(obligatoire)auditLogEvidenceRef(obligatoire)anchoringEvidenceRef(obligatoire)generatedAt(obligatoire)verificationMaterial(obligatoire, suffisant pour verification hors plateforme)
8. Criteres d'acceptation¶
| ID | Critere | Testable |
|---|---|---|
| AC-81-01 | Un mandat eIDAS valide est accepte uniquement si signature, chaine, temporalite et revocation sont valides via TSP reel. | Oui |
| AC-81-02 | Un mandat invalide (signature/chaine/CRL/OCSP) est rejete en fail-closed sans ReKey emise. | Oui |
| AC-81-03 | Sans double validation 2-of-2 adaptee (DPO + LegalOfficer), aucun passage a ACTIVATED n'est possible. | Oui |
| AC-81-04 | Avec double validation conforme dans le TTL de validation, le dossier atteint ACTIVATED. | Oui |
| AC-81-05 | generateLegalReKey() ne reussit que sur dossier ACTIVATED et genere une ReKey marquee isLegal=true avec mandateId. | Oui |
| AC-81-06 | Le TTL d'une ReKey legale superieur a 30 jours est refuse. | Oui |
| AC-81-07 | Toute tentative de consultation hors scopeDocumentIds est refusee et journalisee. | Oui |
| AC-81-08 | Toute tentative d'ecriture/suppression en mode legal est refusee. | Oui |
| AC-81-09 | A expiration TTL, la ReKey devient inutilisable et son statut passe a EXPIRED, puis DESTROYED apres destruction cryptographique. | Oui [CORRECTION v2] |
| AC-81-10 | revokeReKey() invalide immediatement la ReKey et interdit toute consultation ulterieure. | Oui |
| AC-81-11 | Chaque evenement probatoire obligatoire porte hash SHA3-256, signature HSM, horodatage TSA et reference d'ancrage. | Oui |
| AC-81-12 | Une preuve composite est generable pour chaque dossier finalise et verifiable hors plateforme. | Oui |
| AC-81-13 | Les ReKey legales sont stockees dans un domaine isole des ReKey standard. | Oui |
| AC-81-14 | L'utilisateur titulaire peut obtenir les artefacts d'audit a posteriori. | Oui |
| AC-81-15 | Conformite substantielle RGPD (proportionnalite/minimisation) sur la base d'une analyse juridique contextuelle. | Non - hors perimetre (evaluation juridique externe) |
| AC-81-16 | Opposabilite judiciaire effective en contentieux reel. | Non - hors perimetre (decision juridictionnelle) |
9. Interfaces¶
Les interfaces ci-dessous sont contractuelles. Les signatures sont definies au niveau service; aucun detail d'implementation n'est prescrit.
9.1 Orchestrateur PD-81¶
registerLegalMandate(input) -> LegalMandateResult¶
Pre-conditions: - input.mandatePayload present. - input.contextId present et egal a LEGAL_PRE_MANDATE.
Post-conditions: - Si validation eIDAS reussie: mandat enregistre avec validationStatus=VALID et dossier de validation cree (PENDING_BOTH). - Sinon: rejet explicite, aucun dossier activable.
submitInternalValidation(input) -> ValidationStateResult¶
Pre-conditions: - input.legalCaseId existant. - input.validatorRole dans {DPO, LegalOfficer}. - input.validatorIdentity juridique verifiable.
Post-conditions: - Transition d'etat conforme aux regles PD-82 adaptees. - Aucune activation si validations insuffisantes/non conformes.
activateLegalAccess(input) -> LegalAccessActivationResult¶
Pre-conditions: - Dossier en etat ACTIVATED (PD-82 adapte). - Mandat toujours valide temporellement. - Scope documentaire non vide.
Post-conditions: - Creation d'une ReKey legale via PD-41 etat ACTIVE. - L'appel orchestre en interne generateLegalReKey(...); aucun second appel API externe n'est requis pour le meme dossier. [CORRECTION v2] - Aucune activation hors des bornes mandat/TTL.
closeLegalAccess(input) -> LegalAccessClosureResult¶
Pre-conditions: - input.legalReKeyId connu. - Cause de cloture explicite (REVOKE, EXPIRE, END_OF_CONSULTATION).
Post-conditions: - ReKey non reutilisable. - Statut de cloture pose (REVOKED/EXPIRED/COMPLETED) puis transition DESTROYED apres destruction cryptographique verifiable. [CORRECTION v2] - Evenements probatoires de cloture produits.
getLegalAuditProof(input) -> LegalCompositeProof¶
Pre-conditions: - input.mandateId ou input.legalCaseId present. - Demandeur autorise a auditer, c.-a-d. titulaire (ownerUserId du coffre cible) ou role explicitement delegue dans IAM. [CORRECTION v2]
Post-conditions: - Retour d'une preuve composite coherente ou erreur explicite si dossier incomplet/non autorise.
9.2 Extension PD-41 (mode legal)¶
generateLegalReKey(alicePublicKey, bobPublicKey, contextId, legalConstraints) -> LegalReKey¶
Pre-conditions: - contextId=LEGAL_PRE_MANDATE. - legalConstraints.mandateId present. - legalConstraints.isLegal=true. - legalConstraints.ttl <= borne dure contractuelle. - legalConstraints.scopeDocumentIds non vide. - bobPublicKey est fournie par le mandat eIDAS (ou annexe signee referencee) et associee a l'autorite judiciaire consultante (Bob). [CORRECTION v2] - L'authenticite de bobPublicKey est verifiee par TSP (signature/chaine/CRL/OCSP) puis par rapprochement IAM de l'identite judiciaire autorisee. [CORRECTION v2]
Post-conditions: - ReKey legale versionnee et validee par validate(). - ReKey stockee dans domaine legal isole.
revokeReKey(legalReKeyId, reason, actorIdentity) -> RevocationResult¶
Pre-conditions: - legalReKeyId existant et non terminal.
Post-conditions: - ReKey invalidee immediatement. - Evenement probatoire de revocation emis.
getLegalAccessStatus(legalReKeyId) -> LegalAccessStatus¶
Pre-conditions: - legalReKeyId present.
Post-conditions: - Retour d'un statut unique parmi ACTIVE, REVOKED, EXPIRED, COMPLETED, DESTROYED, UNKNOWN. [CORRECTION v2]
10. Contraintes non fonctionnelles¶
10.1 Securite et conformite¶
- Mode fail-closed obligatoire sur tout composant de confiance indisponible ou incoherent (TSP, HSM, TSA).
- Isolation stricte des donnees et artefacts legal PRE vs PRE standard.
- Aucune exposition de secret cryptographique en logs/audit.
- Respect du principe de minimisation: seules donnees necessaires au mandat et a la preuve sont traitees.
- Compatibilite visee eIDAS 2.0, RGPD, NF Z42-013/ISO 14641, art. 1366 Code civil.
- Verification juridique finale de conformite normative: hors perimetre technique testable.
10.2 Performance et disponibilite¶
- Le module doit maintenir la coherence des etats sous concurrence et garantir l'atomicite probatoire des transitions critiques.
- Le systeme doit supporter des consultations legales limitees par rate limiting contractuel sans degradation compromettant la preuve.
- Les objectifs chiffres de latence et debit ne sont pas fournis: information manquante a contractualiser.
- L'invalidation dite "immediate" d'une ReKey (
revokeReKey/closeLegalAccess) doit etre effective dans la meme transaction ou en <= 5 secondes. [CORRECTION v2] - Pendant la fenetre d'invalidation (jusqu'a 5 secondes), les consultations en cours peuvent aboutir ; toute consultation initiee apres la confirmation de la revocation DOIT etre refusee. [CORRECTION v3]
- La destruction effective (etat
DESTROYED) doit intervenir dans un delai maximal dedestructionDeadline(defaut 1 heure) apres l'entree dans un etat terminal. [CORRECTION v3]
10.3 Volumetrie et retention¶
- Le module doit supporter un historique append-only complet de tous evenements legal PRE.
- Retention des journaux et preuves composites: information manquante a contractualiser.
- Frequence et capacite des batchs d'ancrage: cadence periodique avec delai maximal d'ancrage de 24 heures. [CORRECTION v2]
10.4 Observabilite probatoire¶
- Chaque etape critique doit etre correlable de bout en bout (
mandateId,legalCaseId,legalReKeyId). - Toute rupture de chaine probatoire doit etre detectee et faire echouer l'operation concernee.
10.5 Robustesse operationnelle¶
- Toute commande de destruction/revocation doit etre idempotente.
- Toute tentative de reutilisation d'un artefact legal terminal doit echouer explicitement.
- Les transitions d'etat doivent etre deterministes et auditablement reproductibles.