§ SécuritéArchitecture détaillée

Tout ce qu'on fait
pour ne pas trahir.

Page technique. Détails sur l'architecture, le chiffrement, les flux de données, la rétention, le plan d'incident. Si vous êtes DPO ou RSSI et que vous voulez challenger nos choix, écrivez-nous : security@caviardez.fr.

§ 01Principes structurants

Quatre invariants,
jamais transigés.

§ 01

Zéro valeur stockée

On stocke uniquement le type d'entité détecté et sa position (bbox). La valeur des numéros (NIR, IBAN, etc.) n'est JAMAIS enregistrée en base, même temporairement.

§ 02

Détection FR validée + suppression destructive

Les identifiants français (NIR, SIRET, IBAN, TVA, RIB) sont détectés et confirmés par leur clé de contrôle (Luhn, MOD 97, clé CNIL), puis PyMuPDF apply_redactions efface physiquement glyphes, images et pixels — pas un rectangle noir au-dessus. On strip aussi les métadonnées (Author, Title, Producer, XMP).

§ 03

Rétention 1 h max

Purge horaire pg_cron (Supabase Storage) + cron de sécurité indépendant. Aucune sauvegarde, aucun cache. Si on tombe, vos PDFs disparaissent avec nous.

§ 04

100 % Union européenne

Hetzner Falkenstein (DE), Supabase eu-west-3 Paris (FR) pour le stockage, la base et l'auth, Vercel Frankfurt (DE), Stancer (FR, agréé ACPR) pour le paiement. Aucun PDF, aucun chiffre de contrôle ne traverse l'Atlantique.

§ 02Défense en profondeur

Six couches indépendantes,
détaillées.

  1. § 01

    Transport — TLS 1.3

    • HTTPS obligatoire (HSTS preload, max-age 2 ans, includeSubDomains)
    • Cipher suites modernes uniquement (X25519, AES-GCM, ChaCha20)
    • Pas de TLS 1.0 / 1.1, pas de RC4, pas de SHA-1
  2. § 02

    Stockage objet — Supabase Storage (UE)

    • Chiffrement at-rest natif, buckets privés (source + caviardé)
    • Suppression auto après 1 h (purge pg_cron + cron de sécurité)
    • Accès réservé au backend (clés service S3) — aucune lecture depuis le navigateur
    • Noms de fichiers non devinables (UUID) + livraison par URL signée 15 min
  3. § 03

    Base de données — Supabase

    • Postgres chiffré at-rest (AES-256), backups chiffrés
    • Row Level Security activée : un user ne voit que ses propres jobs
    • Aucun champ stocke de valeur PII — uniquement type, page, bbox
    • Region eu-west-3 (Paris), pas de réplication hors UE
  4. § 04

    Inter-services — HMAC

    • Toute requête Next.js → FastAPI signée HMAC-SHA256(ts ‖ method ‖ path ‖ sha256(body))
    • Fenêtre anti-replay ±60 s, signature non-rejouable cross-endpoint
    • Secret 64 caractères hex, rotation manuelle annuelle
  5. § 05

    Détection — déterministe

    • Aucune IA / LLM dans le pipeline — uniquement regex + validateurs cryptographiques
    • Luhn pour SIRET/SIREN/Carte, MOD 97 pour IBAN/RIB, clé CNIL pour NIR
    • Validation contextuelle pour CNI, passeport, date de naissance
    • Code du moteur auditable sous NDA
  6. § 06

    Logs & monitoring

    • Supabase Logflare pour les erreurs serveur — payloads sans PII
    • Aucun log de contenu PDF, aucun log de valeur détectée
    • UptimeRobot ping /healthz toutes les 5 min
    • Conservation logs : 30 jours, anonymisés au-delà
§ 03Cycle de vie d'un upload

Du dépôt à la suppression,
moins de 60 minutes.

  1. T+0 s

    Upload via TLS 1.3. Le PDF traverse Next.js (proxy léger, jamais écrit sur disque) puis est signé HMAC vers FastAPI.

  2. T+1 s

    FastAPI vérifie magic bytes %PDF-, taille (≤ 50 MB), pages (≤ 500 ; la limite affichée dépend de votre formule). PDF stocké en mémoire/disque local temporaire (TTL 5 min).

  3. T+2 s à T+10 s

    Détection : 20 patterns FR avec validation cryptographique. Vous recevez un job_id et la liste des types/positions trouvés (jamais les valeurs).

  4. T+10 s à 5 min

    Vous validez les détections dans votre navigateur. Vous pouvez ajouter des termes personnalisés (nom, n° client). Aucun nouvel échange réseau tant que vous n'avez pas cliqué « Caviarder ».

  5. T+5 min

    Caviardage destructif via PyMuPDF. Métadonnées strippées. PDF caviardé déposé sur Supabase Storage (chiffré at-rest) + URL signée 15 min. PDF source supprimé immédiatement.

  6. T+15 min

    URL de téléchargement expire. Le PDF caviardé reste accessible en interne pendant 45 min supplémentaires pour les éventuelles ré-éditions.

  7. T+1 h

    Tous les artefacts disparaissent. PDF source, PDF caviardé, fichiers OCR temporaires. Seules les métadonnées du job restent en base (type d'entités, comptage — jamais les valeurs) pour votre tableau de bord.

§ 04Plan d'incident

Ce qu'on fait
si ça pète.

  1. T+0 — Détection (alerte Supabase Logflare / utilisateur / contrôle interne).

  2. T+1 h — Notification interne, isolation du service impacté, snapshot pour forensics.

  3. T+24 h — Notification clients Pro/Enterprise impactés (email + dashboard).

  4. T+72 h — Notification CNIL si breach concerne des données personnelles (Art. 33 RGPD).

  5. T+7 j — Post-mortem public anonymisé, plan correctif communiqué.

Disclosure responsable — politique

Cf /.well-known/security.txt (RFC 9116)

  1. 1. Contact privé d'abord : security@caviardez.fr. PGP key disponible sur demande.
  2. 2. Accusé de réception sous 72 h ouvrées. Sans réponse de notre part, ne publiez pas — relancez sur le même email.
  3. 3. Investigation conjointe. On vous tient informé toutes les 2 semaines max. Si l'impact est critique, on coordonne un correctif accéléré.
  4. 4. Fix + publication sous 90 jours maximum à compter du signalement. Si on dépasse, vous êtes libre de publier (on s'engage à ne pas demander d'extension au-delà de 90 j sans accord explicite).
  5. 5. Reconnaissance sur la page Acknowledgments avec votre accord (anonyme possible). Pas de bug bounty monétaire à ce stade.

On encourage le testing sur des PDFs synthétiques (sans vraies PII). Pour les tests intrusifs (rate-limit, parser PDF, etc.), prévenez-nous 48 h à l'avance avec votre plage IP source — on évite de bloquer en WAF.

Acknowledgments

Personne pour l'instant — sois le/la premier·e à nous signaler quelque chose d'intéressant. Les signalements retenus sont crédités ici, avec votre accord.

§ 05Conformité

Cadres respectés
et certifications.

  • RGPD (UE 2016/679) — DPA Art. 28 disponible (personnalisé Pro / signé d'office Enterprise). Registre de traitement et fiche d'information aux personnes concernées en cours de finalisation.
  • Recommandations CNIL — caviardage destructif conforme aux guidelines administratives, mots-clés contextuels pour les pièces d'identité (alignés Microsoft Purview France_CNI), validation cryptographique des entités CNIL (NIR clé officielle).
  • Sous-traitants — Hetzner, Supabase (DB + Storage) et Vercel ont leur propre DPA signé en amont. Stancer (paiement, FR) n'a aucun accès aux PDFs. Liste complète →
  • Audit indépendant — code du moteur de détection ouvert à audit technique sous NDA (clients Pro/Enterprise). Audit pentest par cabinet externe planifié — le rapport résumé sera fourni sur demande une fois réalisé.

Une question technique précise ?
Écrivez-nous.

On répond aux questions sécurité / architecture / RGPD sous 48 h ouvrées, sans formulaire à remplir.

security@caviardez.fr