Sécurité + Loi 25

20 invariants non-négociables, audités par défaut

Reventis est conçu Loi 25-first. Chaque feature, route, migration respecte les 20 invariants ci-dessous. Aucune exception, aucune dérogation, aucun raccourci.

Loi 25 conformeAES-256-GCMSHA-256 anti-tamperRLS Postgres 100 %SOC 2 Type II (en cours Y2)

Les 20 invariants

Aucune exception. Aucun raccourci.

  1. #01

    Consentement horodaté dans user_consents (purpose, ip_cidr, ts, version_tos, user_agent_hash) pour toute collecte PII.

  2. #02

    PII minimisée : aucune donnée client sensible (SIN, dossier médical, adresse perso). Données métier uniquement.

  3. #03

    IP anonymisée : stockage ip_cidr /24 seulement, jamais l’IP brute.

  4. #04

    User-agent hashé SHA-256, jamais le UA brut.

  5. #05

    Purge automatique : uploads bruts purgés 90 jours post-ingestion (revenue_streams normalisé conservé).

  6. #06

    Chiffrement au repos : tokens OAuth + secrets sensibles via AES-256-GCM (REVENTIS_INTEGRATION_KEY).

  7. #07

    Audit security_events systématique : login, MFA, OAuth, paiement, export PDF, suppression, IA compute, closing finalize, cosignature.

  8. #08

    RLS active à 100 % : SELECT self-only via auth.uid(), INSERT/UPDATE/DELETE sensibles via service-role.

  9. #09

    Aucune clé service-role côté client : SUPABASE_SERVICE_ROLE_KEY jamais dans le bundle browser.

  10. #10

    MFA TOTP forcé sur comptes payants (cabinets), sessions 8h max + 30 min inactivité auto-lock.

  11. #11

    Rate-limit auth : 5 tentatives / 10 min / IP via auth_failures.

  12. #12

    Mots de passe : bcrypt cost 12, min 12 chars, mix maj/min/digit/symbol.

  13. #13

    Notification CAI : en cas de brèche, runbook docs/runbooks/incident.md sous 72h.

  14. #14

    Data residency : Supabase actuellement us-east-2, migration ca-central-1 (AWS Montréal) avant Série A.

  15. #15

    Anti-tamper rapports IA : SHA-256 calculé à l’approve, vérifié à la lecture, alerte si mismatch.

  16. #16

    Anti-hallucination IA : evidence_payload Zod-strict, system_prompt "AUCUN chiffre inventé", fallback Haiku si parse fail.

  17. #17

    Idempotence webhooks : integration_webhook_events(provider, event_id) UNIQUE + HMAC timingSafeEqual constant-time.

  18. #18

    CAA DNS : letsencrypt.org + pki.goog autorisés uniquement, iodef mailto:security@reventis.io.

  19. #19

    DMARC : p=none monitoring → durcir vers p=quarantine puis p=reject après 30j stable SPF/DKIM.

  20. #20

    Zéro email perso dans l’infra : @gmail.com, @hotmail.com, @outlook.com, @aslouis.com → incident à corriger immédiatement.

Résidence des données

Hébergement actuel us-east-2 (AWS Ohio). Migration ca-central-1 (AWS Montréal) prévue avant Série A. Aucune donnée client transite hors juridiction Loi 25.

Procédure incident 72h

Notification CAI sous 72h en cas de brèche. Runbook documenté docs/runbooks/incident.md. Registre incidents de confidentialité tenu à jour.

Vulnerability disclosure

security@reventis.io · PGP key on request · responsible disclosure policy applies