Docs/ Privacy & security

Chiffrement et gestion des clés

Secrets chiffrés par enveloppe ; apportez votre propre clé IA si vous préférez.

Chaque secret qu'AI Emaily détient en votre nom — tokens OAuth, mots de passe IMAP, clés BYOK — est chiffré par enveloppe et déchiffré uniquement dans un worker isolé au moment où il est nécessaire. Rien de sensible n'est stocké en ligne, écrit dans des journaux ou accessible au code applicatif.

Chiffrement en transit et au repos

Tout le trafic entre votre appareil et les serveurs d'AI Emaily transite via TLS 1.2+ avec des suites de chiffrement modernes. Les connexions qui se rabattent sur des versions TLS plus anciennes sont rejetées au niveau du répartiteur de charge.

Les données au repos — corps des messages, métadonnées, résumés — sont chiffrées avec AES-256 au niveau de la couche de stockage. Les blobs de stockage d'objets (corps des messages) portent une clé de chiffrement supplémentaire par objet gérée par un KMS, de sorte qu'une couche de stockage compromise ne peut pas produire de texte clair sans compromettre également le KMS.

Chiffrement par enveloppe pour tous les identifiants

Les tokens OAuth, les identifiants IMAP/SMTP et les clés BYOK sont enveloppés avec une clé de chiffrement de données (DEK) par utilisateur, elle-même chiffrée par une clé de chiffrement de clés (KEK) conservée dans un KMS dédié. La DEK n'est jamais stockée aux côtés du texte chiffré qu'elle protège. Les identifiants en texte clair ne touchent jamais les journaux applicatifs, les rapports d'erreurs ou les pipelines d'analyse.

Privilège minimal partout

AI Emaily demande l'accès minimal nécessaire pour chaque fournisseur de messagerie. Pour les fournisseurs OAuth comme Outlook et Microsoft 365, nous ne demandons que lecture + envoi + gestion des dossiers — jamais export de contacts, accès aux drives ou API d'administration — et chaque octroi de portée est affiché dans l'interface de connexion. Gmail et Google Workspace se connectent via IMAP/SMTP avec un mot de passe d'application que vous contrôlez et pouvez révoquer à tout moment.

Chaque ligne de base de données, blob de stockage d'objets et invocation de fonction porte un identifiant de propriétaire. Les requêtes ne présentant pas un JWT correspondant sont rejetées au niveau de la couche de données, pas seulement au niveau de la couche API. Cette autorisation au niveau objet signifie qu'un bug dans le routage API ne peut pas divulguer les données d'un utilisateur à un autre.

Flux d'autorisation de requête (simplifié)
1Le client envoie le JWT dans Authorization: Bearer …
2La passerelle API vérifie la signature + l'expiration
3La fonction extrait userId des claims vérifiés
4La requête BDD inclut WHERE owner_id = :userId
5La politique de stockage d'objets rejette les lectures de blobs inter-comptes
6Résultat retourné — aucune donnée inter-comptes possible

Webhooks, CORS et CSP

Les webhooks entrants de Stripe, Gmail Push Notifications et Microsoft Graph sont validés par des signatures HMAC avant qu'une charge utile ne soit traitée. Les webhooks rejoués ou falsifiés sont silencieusement ignorés et consignés.

L'application web est livrée avec une Politique de Sécurité du Contenu stricte qui bloque les scripts en ligne, restreint les cibles de fetch à nos propres domaines et hôtes API connus, et interdit le cadrage depuis des origines tierces. Le CORS est configuré par route pour n'autoriser que les origines de production et de staging.

Idempotence et nouvelles tentatives sécurisées

Chaque appel API mutatif — envoyer, archiver, étiqueter, déléguer — accepte une clé d'idempotence afin que les nouvelles tentatives réseau ne puissent pas dupliquer des actions. C'est particulièrement important pour l'envoi : si une connexion est interrompue après que le serveur a accepté la requête, une nouvelle tentative avec la même clé est une opération nulle, pas un envoi dupliqué.

Conformité PCI via Stripe

Les données de carte ne touchent jamais les serveurs d'AI Emaily. Les flux de facturation utilisent le checkout hébergé et les Elements de Stripe ; nous ne stockons que l'identifiant client Stripe et le statut de l'abonnement.

Frequently asked

Feature overview

AI Drafting

Ready to try it?

Start Free Trial