VidiaFlow — Sécurité & Fiabilité
Mise à jour : 12 mai 2026
Document public — destiné aux prospects B2B (agences, marques, studios), aux équipes conformité, et aux réponses RFP. Peut être partagé librement. Pour toute question :
security@vidiaflow.com.
TL;DR pour acheteurs B2B
VidiaFlow héberge ses données en Union européenne (Supabase Frankfurt, Vercel EU), chiffre les credentials tiers en AES-256-GCM, et applique une isolation Row-Level Security stricte sur 100 % des tables Postgres. Côté conformité, nous avons shippé l'engine de disclosure EU AI Act art. 50 trois mois avant la deadline du 2 août 2026 et un module dédié à la loi influenceurs FR 2023-451. Nous ne sommes pas certifiés SOC 2 ni ISO 27001 à ce jour — ces audits sont en roadmap Q4 2026 / Q1 2027. Cette page liste, sans embellissement, ce qui est shippé, ce qui est en cours, et ce qui ne l'est pas encore.
1Architecture
1.1 Stack technique
- Hébergement : Vercel (régions EU) + Supabase (Frankfurt, eu-central-1)
- Chiffrement au repos : standard Postgres managé Supabase (AES-256, clés gérées par Supabase)
- Chiffrement en transit : TLS 1.3 sur tous les endpoints publics, certificats Let's Encrypt managés par Vercel
- Chiffrement des tokens tiers (refresh tokens YouTube OAuth, secrets webhook) : AES-256-GCM avec
authTagLength=16pinné au niveau ducipher/decipherNode — closed audit Semgrep, PR #401 (5 mai 2026) - Secrets applicatifs : variables d'environnement Vercel chiffrées ; jamais committés ; rotation manuelle documentée en runbook interne
1.2 Authentification
- Supabase Auth : OAuth Google + email/password
- Sessions JWT signées côté Supabase, validées dans le middleware Next.js sur chaque route protégée
- Aucun mot de passe stocké en clair (hash bcrypt Supabase)
- 2FA / MFA disponible côté Supabase, activable par l'admin du compte (non encore proposé dans l'UI VidiaFlow — roadmap Q3 2026)
- Sessions invalidables côté serveur (revoke immédiat en cas de compromission)
1.3 API publique
L'API REST /api/v1/* (Studio + Agency natif, Pro via add-on) applique les contrôles suivants :
- Clés API hashées en Argon2id — le plaintext est affiché une seule fois à la création (reveal-once modal) puis ne quitte jamais la mémoire du client. La base ne contient que le hash.
- Header
Idempotency-Key(pattern Stripe) — replay-safe pendant 24 h, retourneIdempotent-Replayed: trueen cas de replay. - Webhooks sortants signés HMAC-SHA256 — header au format
t=<unix>,v1=<base64>(pattern Stripe). Retry queue dédiée avec backoff exponentiel 30 s / 120 s / 600 s, 4 tentatives maximum (PR #159). - Rate limit per-key, plan-aware — buckets minute / heure / jour, applicables sans toucher le code applicatif.
- Audit log structuré dans la table
api_usage_logs(await persistant — fix Vercel lambda PR #154). - CORS allowlist configurable via
API_CORS_ALLOWED_ORIGINS. - Tags Sentry auto-injectés sur chaque erreur (
api.endpoint,api.plan, prefix 8-char de la clé).
Cap : 10 clés actives maximum par utilisateur.
2Conformité réglementaire
2.1 RGPD (UE)
- Données hébergées dans l'UE (Supabase Frankfurt — eu-central-1)
- Droit à l'effacement : implémenté via Supabase Auth
auth.users+ cascade delete sur toutes les tables liées (RLS suruser_id) - Portabilité : export JSON disponible sur demande à
security@vidiaflow.com(procédure manuelle pour l'instant — endpoint self-service en roadmap) - DPO : non encore désigné (étant donné le volume de données traitées en mai 2026, le seuil RGPD n'est pas atteint). Désignation prévue dès franchissement du seuil.
- Sous-traitants documentés section 4.4
- Durée de conservation documentée section 4.3
2.2 EU AI Act — Article 50 (disclosure)
L'engine de disclosure a été shippé le 2 mai 2026, soit trois mois avant la deadline du 2 août 2026 (PR #187, 8 chunks).
- 5 carriers : badge UI, tooltip, header HTTP
Content-Authenticity, JSON-LD envelope dans les réponses API, blocs NOTE dans les fichiers SRT générés, footers dans les emails IA - C2PA manifest signing des thumbnails via
@contentauth/c2pa-node(certificat self-signed v1 — adhésion à la trust list officielle reportée, non bloquante pour la conformité) - Audit trail dans la table
ai_disclosure_events— le log s'écrit indépendamment du feature flag de rollout (chunk 8 — la table garde le forensic trail même quand les carriers UI sont cachés) - Page publique
/ai-disclosuredocumente les 5 carriers, accessible en 9 langues, conforme WCAG 2.1 AA - Surfaces couvertes (tier A) : 5 routes dashboard + 5 routes API publiques + 1 cron — chaque appel à un modèle génératif appelle
logDisclosure()
2.3 Loi Influenceurs FR — Loi n° 2023-451
Module dédié, accessible aux plans Pro+ et au futur produit B2B Compliance (compliance.vidiaflow.com, landing live, build prévu Sprint 3) :
- Détection automatique de mentions
#publicité,#sponsorisé,#collaborationsur les publications surveillées - Audit trail des deals avec montant, annonceur, présence du label obligatoire, présence d'un contrat écrit
- Rapports trimestriels PDF prévus pour les tiers Business et Enterprise du produit standalone
- Rappel produit : la loi expose à des amendes jusqu'à 300 000 € en cas de manquement
2.4 Mentions légales (LCEN)
La page /legal/mentions-legales lit les informations SIRET / adresse / forme juridique depuis des variables d'environnement (VIDIAFLOW_LEGAL_*). Tant que ces variables ne sont pas renseignées, un bandeau ambre signale visiblement les champs manquants. Statut au 12 mai 2026 : SIRET et adresse en cours d'immatriculation — VidiaFlow opère en pré-commercial jusqu'à finalisation.
3Sécurité applicative — Audits 2026
3.1 Audits récents (5 mai – 12 mai 2026)
Six audits techniques internes ont été persistés dans docs/audits/ du dépôt source. Une session de hardening intensive a closé 15 PRs le 12 mai 2026 sur sept classes de findings :
| Classe | Findings | PRs | Statut |
|---|---|---|---|
| CRITICAL — Silent fails | 3 | #408, #410, #411 | Closed |
| CRITICAL — Stripe webhook idempotency | 1 | #412 | Closed |
| HIGH — Quota race conditions | 2 | #413 | Closed |
| HIGH — Fetch timeouts | 4 | #414 | Closed |
| HIGH — Prévention OOM / memory leak | 1 | #415 | Closed |
| HIGH — SSRF (Server-Side Request Forgery) | 2 | #416 | Closed |
| HIGH — Rate limit / spam protection | 1 | #417 | Closed |
3.2 Tests automatisés
- 96 unit tests ajoutés sur les 15 PRs du 12 mai (cumul environ 775 tests)
- CI gating sur chaque PR : ESLint, TypeScript strict (
tsc --noEmit), build Next.js, deploy preview Vercel, axe-core a11y blocking - Taux de réussite CI : 100 % vert sur la session du 12 mai
3.3 Outils en place
- Semgrep : règles OWASP Top 10 + détection de secrets + crypto Node.js (le pinning
authTagLength=16a été identifié par cette suite) - TypeScript strict mode activé sur l'ensemble du projet
- ESLint avec règles security (no-eval, no-new-func, etc.)
- Sentry monitoring production, tags structurés par endpoint et plan
- Dependabot sur GitHub pour les CVE upstream
3.4 Hardening historique notable
- AES-256-GCM
authTagLengthpinning (PR #401, 5 mai 2026) — robustesse contre les attaques par tag truncation - WCAG 2.1 AA compliance validée par audit axe-core CI (PR #72, 21 avril 2026) — Lighthouse 100/100 sur 5 routes critiques
- Argon2id pour API keys (PR #152, 25 avril 2026)
- Row-Level Security par-commande sur 100 % des tables Postgres applicatives — pas une seule table en
RLS DISABLED
4Données utilisateur
4.1 Types collectés
- Email, nom, locale préférée (signup)
- URLs YouTube fournies par l'utilisateur, transcripts générés, vidéos sources uploadées
- Métadonnées de génération : style, langue, paramètres de sous-titrage
- Logs d'usage anonymisés pour métriques de coût LLM
4.2 Accès interne
- RLS sur 100 % des tables — chaque requête utilisateur est filtrée par
user_id = auth.uid()au niveau Postgres - Le seul rôle avec accès illimité est
service_role— utilisé exclusivement par les crons backend et les webhooks, jamais exposé au front - Les clés
service_rolene sont jamais committées ; uniquement présentes dans les variables d'environnement Vercel chiffrées - Le founder accède aux données de production via les pages
/admin/*, gated parisFounder()(comparaison stricte àFOUNDER_EMAIL)
4.3 Durées de conservation
- Vidéos sources (uploads ClipFlow) : 24 h après finalisation du burn, puis supprimées par cron
clipflow-storage-lifecycle - Outputs générés : 7 j (Free) / 30 j (Creator+) / 90 j (Studio+)
- Logs applicatifs : 30 j puis archivés/anonymisés
- Audit logs AI Act : conservation prolongée à des fins de conformité réglementaire (sera précisée après consultation juridique avant le 2 août 2026)
- Comptes inactifs : aucune purge automatique aujourd'hui ; politique formalisée en Q3 2026
4.4 Sous-traitants (data processors)
| Fournisseur | Rôle | Région | Notes |
|---|---|---|---|
| Supabase | Base de données, auth, storage | EU — Frankfurt | DPA signé |
| Vercel | Hébergement applicatif | EU regions | DPA disponible |
| Stripe | Paiement | EU pour transactions EU | PCI-DSS Level 1 |
| Anthropic | LLM (Claude) | US | Opt-out training par défaut |
| OpenAI | LLM fallback (GPT-5 mini) | US | Opt-out training par défaut |
| Groq | Transcription (Whisper) | US | Pas d'usage entraînement |
| Resend | Emails transactionnels | EU | DPA disponible |
| Google Cloud (Gemini) | Génération de thumbnails | US | Opt-out training |
Aucun transfert hors-UE ne concerne les données utilisateurs persistées (base, auth, storage). Les LLM US reçoivent uniquement les prompts au moment de la requête, sans persistence côté provider (configuration opt-out documentée).
5Roadmap sécurité
Court terme — Q3 2026
- ISO 27001 self-assessment (gap analysis interne)
- Désignation formelle d'un DPO
- Pen-test externe annuel (premier scope : API publique + webhooks)
- Export self-service RGPD (endpoint utilisateur)
- MFA exposé dans l'UI VidiaFlow (au-delà du toggle Supabase)
Moyen terme — Q4 2026 → Q1 2027
- SOC 2 Type I (préparation avec auditeur externe)
- Cloudflare Turnstile sur les formulaires marketing (anti-bot)
- Audit RGPD juridique externe
- Bug bounty program public (HackerOne ou équivalent)
Long terme — 2027 et au-delà
- SOC 2 Type II
- ISO 27001 certifié
- HIPAA — uniquement si une verticale santé matérialise (non priorité au 12 mai 2026)
6Contact sécurité
- Responsible disclosure / bug bounty informel :
security@vidiaflow.com - DPO : à désigner (Q3 2026)
- PGP : clé à générer ; en attendant, contact direct par email avec accusé de réception sous 48 h ouvrées
- SLA divulgation : nous nous engageons à répondre sous 5 jours ouvrés et à coordonner un calendrier de fix avec le chercheur
7Transparency Report
7.1 Incidents 2026
- 0 breach déclaré
- 0 data leak confirmé
- 0 incident significatif au sens du RGPD art. 33 (notification à la CNIL non requise)
7.2 Demandes légales
- 0 demande gouvernementale reçue
- 0 take-down notice reçue
Ce registre est mis à jour à chaque événement matériel.
Audit interne du présent document
Pour préserver la confiance, voici ce qui est shippé versus en roadmap :
Shippé (vérifiable dans le code public) :
- AES-256-GCM
authTagLengthpinning - Argon2id pour API keys + Idempotency-Key + HMAC webhooks
- RLS par-commande sur 100 % des tables
- Engine EU AI Act art. 50 (5 carriers + C2PA + audit trail)
- 15 PRs hardening du 12 mai 2026
- WCAG 2.1 AA validée axe-core CI
- Hébergement EU Supabase Frankfurt + Vercel EU
- Page
/ai-disclosurepublique
En roadmap (aspirations datées, non encore réalisées) :
- SOC 2 Type I (Q4 2026 → Q1 2027)
- SOC 2 Type II (2027+)
- ISO 27001 certifié (2027+)
- DPO désigné (Q3 2026)
- Pen-test externe annuel (Q3 2026)
- Bug bounty public (Q4 2026)
- Export RGPD self-service (Q3 2026)
- Clé PGP du contact sécurité (Q3 2026)
- C2PA cert sur trust list officielle (au-delà du self-signed v1)
- MFA exposé dans l'UI VidiaFlow
Pré-commercial au 12 mai 2026 :
- Mentions légales SIRET / adresse en cours d'immatriculation — bandeau ambre visible sur
/legal/mentions-legales
Ce document est mis à jour à chaque incident, audit, ou changement matériel. Dernière mise à jour : 12 mai 2026. Pour la version anglaise, contacter security@vidiaflow.com.