MS-OS v0.4.2 · build 240514 last threat-model review · 02 may 2026
beta
request_access ↗
~/ · sécurité · readme.md

Sécurité — zero-knowledge par construction.

Le serveur public ne peut pas lire vos documents. Ce n'est pas une promesse marketing : c'est la conséquence d'un choix d'architecture — clés asymétriques, séparation physique, write-only. Voici comment.

Chiffrement
X25519
libsodium 1.0.20 · NaCl box
Hébergement
PulseHeberg FR
SERVERD SAS · Toulon
Conformité
RGPD · ANSSI
by design
01
// architecture

Trois zones, deux clés, un vault.

// ZONE PUBLIQUE · INTERNET // SERVEUR PUBLIC · PULSEHEBERG FR // BACK-OFFICE INTERNE · TAILSCALE Sous-traitant navigateur web ↑ upload externe.masoustraitance.fr Caddy · TLS 1.3 clé PUBLIQUE de chiffrement seal(doc, pub_key) → ciphertext vault chiffré /srv/encrypted · LUKS2 TMG GED back-office interne clé PRIVÉE de déchiffrement jamais sortie de cette zone Donneur d'ordres via Tailscale JAMAIS · clé privée ⛔
Lecture du schéma — la clé publique de chiffrement vit sur le serveur public (côté uploader). La clé privée de déchiffrement vit sur une machine séparée, accessible uniquement via Tailscale par les administrateurs internes (TMG GED). Le serveur public ne dispose jamais de la clé privée, donc ne peut jamais lire ce qu'il stocke.
02
// encryption

Chiffrement write-only, en détail.

Primitive
X25519 · NaCl crypto_box

Chaque document est chiffré côté serveur public dès réception avec la clé publique du vault. Échange de clé X25519, symétrique XSalsa20, authentification Poly1305.

Séparation
Deux machines, une seule direction

La clé privée n'existe nulle part sur le serveur public — ni en mémoire, ni dans un fichier, ni dans une variable d'environnement. Elle vit sur une machine séparée à laquelle seul le back-office accède.

Au repos
LUKS2 + chiffrement par tenant

Au-delà du chiffrement applicatif, le volume de stockage est lui-même chiffré (LUKS2). Une clé par tenant rend le transfert de données entre tenants structurellement impossible.

En transit
TLS 1.3 · HTTP/3 · HSTS

Caddy v2 sert exclusivement en HTTPS, certificat Let's Encrypt auto-renouvelé. HSTS preload actif (max-age 2 ans, includeSubDomains). TLS 1.3 préféré, TLS 1.2 minimum accepté (TLS 1.0/1.1 refusés). Aucun cookie posé par le site — l'analytics agrégé Plausible fonctionne sans cookie.

↳ exemple de pipeline · serveur public
// 1. réception côté serveur public (externe.masoustraitance.fr)
const document = await req.file();              // ⌐ encore en clair, en RAM uniquement
const ciphertext = sodium.crypto_box_seal(      // ⌐ chiffré avec la clé publique
  document.bytes,
  PUBLIC_KEY_OF_VAULT                            // ⌐ la privée n'est PAS sur ce serveur
);
await store.put(tenant, hash, ciphertext);       // ⌐ on n'écrit que le chiffré

// 2. lecture (admin TMG GED, machine séparée, via Tailscale)
const cipher = await tmgGed.fetch(tenant, hash); // ⌐ pull périodique sur le serveur public
const plain  = sodium.crypto_box_seal_open(      // ⌐ déchiffrement local
  cipher,
  PUBLIC_KEY_OF_VAULT,
  PRIVATE_KEY_OF_VAULT                           // ⌐ vit uniquement ici
);
03
// audit

Piste d'audit probante, horodatée, opposable.

Horodatage qualifié
RFC 3161

Chaque dépôt et chaque consultation est horodaté par une autorité tierce conforme RFC 3161 (TSA). Le timestamp signé est attaché à l'événement et conservé.

Chaîne d'intégrité
Hash SHA-256 + journal append-only

Le journal d'événements est append-only et hashé en chaîne (chaque entrée référence le hash de la précédente). Toute altération rétroactive est détectée immédiatement.

Export PDF opposable
À la demande, en un clic

Vous exportez un dossier de conformité PDF, signé, horodaté, listant les pièces, leurs versions, et la chaîne d'événements — prêt à présenter en cas de contrôle URSSAF.

~/audit-log · vigisud-sas · 2026-05 append-only · sha-256 chained
2026-05-14T18:42:11+02uploadvigisud-sas · kbis_3mois.pdf
2026-05-14T18:42:11+02sealsystem · X25519 · pub:0xa1b2…
2026-05-14T18:42:13+02tstamptsa.altchet · RFC 3161 · sig:9f0c…
2026-05-14T19:01:54+02viewc.lefevre@… · via tmg-ged
2026-05-14T19:02:08+02tstamptsa.altchet · RFC 3161 · sig:0b14…
2026-05-14T19:14:02+02exportc.lefevre@… · audit_2026-05.pdf
04
// rgpd

RGPD by design, pas en post-production.

Minimisation

Nous ne collectons que ce qui sert directement à la vérification. Pas de tracking comportemental, pas de cookies tiers, pas de fingerprinting.

Conservation

Durée alignée sur l'obligation légale (5 ans, art. L243-7-5 CSS). Au-delà : suppression chiffrée automatique. Effacement anticipé sur demande.

Droits exercés en 30 j

Accès, rectification, effacement, portabilité, limitation, opposition. Réponse sous 30 jours, généralement bien plus vite — par mail direct, pas par formulaire.

Hors GAFAM

Hébergement PulseHeberg France (Toulon). Pas de Cloudflare en frontal. Pas d'API tiers américain (Stripe, Sendgrid…) — paiement Qonto (Paris), emails via la boîte de l'éditeur, monitoring interne. Analytics Plausible Cloud (Estonie · UE).

DPO interne

Will Hardy, mandaté DPO. Registre interne des traitements (RGPD Art. 30) tenu à jour. Joignable directement à dpo@tmgconseil.fr — pas de helpdesk anonyme.

Sous-traitants UE

Liste publique des sous-traitants techniques (SERVERD/PulseHeberg, Plausible Insights OÜ, DocuSeal Cloud EU). Tous établis en UE, contrats RGPD signés.

05
// threat-model

Ce qu'on sait protéger — et ce qu'on ne prétend pas.

Scénario Notre réponse Statut
Compromission du serveur publicLes documents restent illisibles : la clé privée est ailleurs.couvert
Compromission d'un admin TMG GEDAudit-log append-only, alerte sur tout déchiffrement inattendu.couvert
Erreur humaine côté donneur d'ordresSandbox éphémère + double validation avant export, journalisation des actions.couvert
Requête judiciaire étrangèreHébergement et personnel 100% UE. Pas de levier juridique américain.couvert
Compromission du sous-traitantHors périmètre — recommandation MFA email, mais pas de garantie.hors scope
↳ Un threat-model détaillé est disponible sous NDA. Demandez-le à security@tmgconseil.fr.
↳ audit?

Vous avez un RSSI exigeant ? Tant mieux.

Architecture détaillée, modèle de menaces complet, sources d'authentification, log de revues internes — disponibles sous NDA, en moins de 48 heures.

$ request audit pack ↗