Aller au contenu

Modèle Cryptographique ProbatioVault

Hiérarchie des clés

Password utilisateur (jamais stocké)
    ▼ Argon2id (64 MiB, t=3, p=4)
K_encryption (32 bytes)
    ▼ AES-256-GCM decrypt
K_master_user (32 bytes) ─── stocké chiffré dans Secure Store
    ├──▶ HKDF-SHA3-256(doc_id) ──▶ K_doc (32 bytes)
    │                                   │
    │                                   ▼ AES-256-GCM
    │                                   │
    │                              Document chiffré
    └──▶ HKDF-SHA3-256(share_id) ──▶ K_share (partage)

Algorithmes utilisés

Dérivation de clés

Fonction Algorithme Paramètres Conformité
Password → K_encryption Argon2id m=64MiB, t=3, p=4, L=32 RFC 9106, OWASP 2024
K_master → K_doc HKDF-SHA3-256 salt=doc_id, info=domain RFC 5869
K_master → K_share HKDF-SHA3-256 salt=share_id, info=domain RFC 5869

Chiffrement

Usage Algorithme Taille clé Conformité
Documents AES-256-GCM 256 bits NIST SP 800-38D
K_master_user AES-256-GCM 256 bits NIST SP 800-38D
Key Wrapping HSM AES-KWP 256 bits NIST SP 800-38F

Hachage

Usage Algorithme Taille Conformité
Hash probatoire SHA3-256 256 bits FIPS 202
HMAC (HKDF) HMAC-SHA3-256 256 bits FIPS 198-1

Signature

Usage Algorithme Taille clé Conformité
Signature HSM RSA-PSS 4096 bits PKCS#1 v2.1
Horodatage RFC 3161 - eIDAS

Propriétés de sécurité

Confidentialité

  • Zero-Knowledge : Serveur ne voit jamais les données en clair
  • Forward Secrecy : Compromission K_doc n'affecte pas les autres documents
  • At-rest Encryption : Documents chiffrés en stockage

Intégrité

  • Hash unique : SHA3-256 par document
  • GCM Authentication : Tag authentification sur chaque chiffrement
  • WORM Storage : Immutabilité garantie

Authenticité

  • Signature HSM : Clé privée jamais exportée
  • Horodatage qualifié : TSA conforme eIDAS
  • Preuve composite : Hash + Signature + Timestamp

Rotation des clés

Rotation password

1. User change password (old → new)
2. Decrypt K_master avec old K_encryption
3. Derive new K_encryption = Argon2id(new_password, new_salt)
4. Re-encrypt K_master avec new K_encryption
5. Save new Master Envelope

Note: K_master_user et tous les K_doc restent INCHANGÉS
      → Aucun document à re-chiffrer

Rotation K_master (rare)

1. Derive new K_master (génération aléatoire)
2. Re-encrypt tous les documents avec new K_doc
3. Update Master Envelope

Note: Opération coûteuse, réservée aux cas de compromission

Domain Separation

Chaque dérivation utilise un domaine unique pour éviter les collisions :

Usage Domain String
K_encryption "ProbatioVault_Encryption_v1"
K_doc "ProbatioVault::K_doc::v1"
K_share "ProbatioVault::K_share::v1"
K_auth (SRP) "ProbatioVault_SRP_Auth_v1"

Stockage des clés

Clé Stockage Protection
Password Jamais Effacé après dérivation
K_encryption Mémoire Effacé après usage
K_master_user Secure Store Chiffré (Master Envelope)
K_doc Mémoire Dérivé à la demande, effacé après
Clés HSM HSM Non exportables

Vecteurs de test

Tous les algorithmes sont validés avec les vecteurs officiels : - RFC 9106 pour Argon2id - RFC 5869 pour HKDF - NIST SP 800-38D pour AES-GCM - NIST FIPS 202 pour SHA3-256