Sécurité

Architecture de sécurité

Comment MAFATE protège vos clés et vos données : de l'infrastructure HSM à l'isolation multi-tenant.

Vue d'ensemble de l'architecture

┌──────────────────────────────────────────────────────────────────┐
│  Votre application                                               │
│  ┌─────────────┐                                                 │
│  │  App Server │  [chiffrement AES-256-GCM DU CHAMP, ici]        │
│  │             │──POST /v1/keys/{id}/wrap   { dek } ───────────> │
│  │             │<─{ wrapped_key, key_version } ──────────────────│
│  └──────┬──────┘                                                 │
│         │ INSERT (l'enveloppe, six champs)                       │
│  ┌──────▼──────┐                                                 │
│  │  Database   │  le chiffre ET la cle emballee vivent ICI       │
│  └─────────────┘                                                 │
└──────────────────────────┬───────────────────────────────────────┘
                           │ HTTPS / TLS 1.3
                           │ ne portent que 32 octets de cle
                           ▼
┌──────────────────────────────────────────────────────────────────┐
│  MAFATE API  (Scaleway, France)                                  │
│                                                                  │
│  ┌────────────────┐    ┌──────────────────┐    ┌───────────────┐ │
│  │  Entree HTTP   │    │  Service de cles │    │  Journal      │ │
│  │  TLS 1.3       │───>│  emballage AES   │    │  chaine HMAC  │ │
│  │  cle API +     │    │  GCM, AAD liee   │    │  60 mois      │ │
│  │  permissions   │    │  au locataire    │    │  puis purge   │ │
│  └────────────────┘    └────────┬─────────┘    └───────────────┘ │
│                                 │                                │
│                        ┌────────▼─────────┐                      │
│                        │  Module PKCS#11  │                      │
│                        │  (logiciel)      │                      │
│                        │  KEK racine ici  │                      │
│                        └──────────────────┘                      │
└──────────────────────────────────────────────────────────────────┘

Le champ en clair n'apparait a aucun moment de ce schema, et c'est le point.
En mode serveur, ouvert sur demande, il transiterait par l'entree HTTP.

Infrastructure

Hébergement

Scaleway, région France. Serveur unique aujourd’hui ; la redondance multi-datacenter est planifiée, pas en service.

HSM

HSM logiciel PKCS#11 (SoftHSM) : les KEK ne quittent jamais le HSM. Le HSM matériel certifié FIPS 140-2 niveau 3 est planifié, pas encore en service.

TLS

TLS 1.3 uniquement, TLS 1.2 et inférieurs rejetés, certificats Let's Encrypt + monitoring OCSP

Réseau

WAF Cloudflare, DDoS protection, rate limiting par IP et par clé API

Isolation

Multi-tenant isolé : chaque organisation a son namespace de clés séparé en base et en HSM

Opérations cryptographiques

OpérationAlgorithmeExécution
Chiffrement donnéesAES-256-GCMCrypto Service (mémoire sécurisée)
Wrapping KEK→DEKAES-256-KWP (NIST)HSM PKCS#11
Dérivation DEKHKDF-SHA256HSM PKCS#11
HMAC journauxHMAC-SHA256Crypto Service
Génération IVCSPRNG (OS /dev/urandom)Crypto Service

Ce que MAFATE ne fait jamais

  • Stocker votre plaintext : en mode serveur il transite le temps du chiffrement, jamais écrit sur disque ni journalisé ; en mode enveloppe il ne transite pas du tout
  • Exposer les KEK (clés maîtresses) : elles restent dans le HSM, jamais en mémoire applicative
  • Conserver les DEK après l'opération : elles sont effacées de la mémoire immédiatement
  • Permettre l'accès à vos données entre tenants : isolation stricte par namespace
  • Logger le contenu de vos plaintexts : seules les métadonnées (key_id, version, IP) sont journalisées

Ce que MAFATE conserve, en revanche

Le mode enveloppe garantit que votre clair ne transite jamais. Il ne garantit pas que nous ne voyons rien. Voici ce qui est conservé, et combien de temps.

  • À chaque opération, une entrée d'audit : votre compte, la clé et sa version, l'identifiant de la clé d'API employée, l'adresse source et l'horodatage. Ce journal vous appartient et alimente vos attestations.
  • Ni votre clair, ni la clé de données, ni le jeton que vous présentez n'y figurent. Écrire ce jeton reviendrait à déposer, à côté de votre chiffré, la moitié de ce qu'il faut pour déchiffrer.
  • Pour la détection des anomalies : des compteurs horaires et des empreintes tronquées, conservés 8 jours. Les adresses sources déjà vues sont retenues sous forme empreinte, 7 jours. Le volume mensuel, 35 jours.
  • Mises bout à bout, ces données décrivent un profil d'usage : votre fréquence de lecture, les clés concernées, l'origine des appels, vos heures d'activité. Nous préférons le dire.
  • Les noms que vous donnez à vos clés sont enregistrés. Si cela pose problème dans votre analyse de risque, employez des noms neutres : rien n'exige un nom parlant.