Aller au contenu

Data Flows ProbatioVault

Flux d'upload de document

┌─────────┐                    ┌─────────┐                    ┌─────────┐
│ Client  │                    │ Backend │                    │ Storage │
└────┬────┘                    └────┬────┘                    └────┬────┘
     │                              │                              │
     │  1. Hash document (SHA3-256) │                              │
     │  2. Derive K_doc (HKDF)      │                              │
     │  3. Encrypt document (AES)   │                              │
     │                              │                              │
     │  4. Upload encrypted doc     │                              │
     │ ────────────────────────────>│                              │
     │                              │                              │
     │                              │  5. Validate hash format     │
     │                              │  6. Check hash uniqueness    │
     │                              │                              │
     │                              │  7. Store encrypted doc      │
     │                              │ ────────────────────────────>│
     │                              │                              │
     │                              │  8. Store metadata (DB)      │
     │                              │                              │
     │  9. Return doc_id            │                              │
     │ <────────────────────────────│                              │
     │                              │                              │

Flux de consultation de document

┌─────────┐                    ┌─────────┐                    ┌─────────┐
│ Client  │                    │ Backend │                    │ Storage │
└────┬────┘                    └────┬────┘                    └────┬────┘
     │                              │                              │
     │  1. Request document         │                              │
     │ ────────────────────────────>│                              │
     │                              │                              │
     │                              │  2. Check RLS (user access)  │
     │                              │                              │
     │                              │  3. Fetch encrypted doc      │
     │                              │ ────────────────────────────>│
     │                              │                              │
     │                              │ <────────────────────────────│
     │                              │  4. Return encrypted doc     │
     │                              │                              │
     │  5. Return encrypted doc     │                              │
     │ <────────────────────────────│                              │
     │                              │                              │
     │  6. Derive K_doc (HKDF)      │                              │
     │  7. Decrypt document (AES)   │                              │
     │  8. Verify hash (SHA3-256)   │                              │
     │                              │                              │

Flux d'authentification

┌─────────┐                    ┌─────────┐                    ┌─────────┐
│ Client  │                    │ Backend │                    │  Vault  │
└────┬────┘                    └────┬────┘                    └────┬────┘
     │                              │                              │
     │  1. SRP-6a Challenge         │                              │
     │ ────────────────────────────>│                              │
     │                              │                              │
     │  2. SRP-6a Response          │                              │
     │ <────────────────────────────│                              │
     │                              │                              │
     │  3. SRP-6a Proof             │                              │
     │ ────────────────────────────>│                              │
     │                              │                              │
     │                              │  4. Fetch secrets            │
     │                              │ ────────────────────────────>│
     │                              │                              │
     │  5. JWT Token                │                              │
     │ <────────────────────────────│                              │
     │                              │                              │
     │  6. Unlock keystore local    │                              │
     │  (Argon2id → K_encryption)   │                              │
     │  (Decrypt → K_master)        │                              │
     │                              │                              │

Flux de certification (signature)

┌─────────┐                    ┌─────────┐                    ┌─────────┐
│ Client  │                    │ Backend │                    │   HSM   │
└────┬────┘                    └────┬────┘                    └────┬────┘
     │                              │                              │
     │  1. Request certification    │                              │
     │  (doc_id, hash)              │                              │
     │ ────────────────────────────>│                              │
     │                              │                              │
     │                              │  2. Prepare signing request  │
     │                              │                              │
     │                              │  3. Sign with HSM key        │
     │                              │ ────────────────────────────>│
     │                              │                              │
     │                              │ <────────────────────────────│
     │                              │  4. Return signature         │
     │                              │                              │
     │                              │  5. Request timestamp (TSA)  │
     │                              │                              │
     │                              │  6. Store proof              │
     │                              │                              │
     │  7. Return certification     │                              │
     │ <────────────────────────────│                              │
     │                              │                              │

Données sensibles

Donnée Localisation Protection
Password Client (mémoire) Jamais stocké, effacé après usage
K_encryption Client (mémoire) Effacé après usage
K_master_user Client (Secure Store) Chiffré par K_encryption
K_doc Client (mémoire) Dérivé à la demande, effacé après
Document clair Client (mémoire) Jamais stocké, effacé après affichage
Document chiffré S3 SSE + Object Lock
Hash document DB Non sensible (intégrité)