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é) |