Architecture de sécurité
Vos données vous appartiennent.
Kapsul a été conçu dès le départ autour d'un principe simple : personne d'autre que vous ne doit pouvoir lire vos données financières — pas même nous.
Paramètres de chiffrement
La clé ne quitte jamais votre navigateur
Votre clé de chiffrement est dérivée de votre mot de passe directement dans votre navigateur, via l'API Web Crypto — une interface cryptographique native, fournie par votre système d'exploitation, sans dépendance tierce.
Le mot de passe sert de secret initial. À partir de lui, PBKDF2 effectue 210 000 passages de hachage SHA-256 pour produire une clé AES-256 bits. Ce nombre d'itérations correspond à la recommandation NIST 2023 — il rend toute attaque par force brute prohibitivement coûteuse.
La clé dérivée est marquée non exportable par le navigateur : elle existe uniquement en mémoire pour la durée de la session, et ne peut être lue ni par JavaScript, ni par Kapsul.
Chiffrement avant envoi — AES-256-GCM
Chaque donnée sensible (enveloppes, transactions, positions de portefeuille) est chiffrée avant d'être transmise au réseau. Le processus, à chaque écriture :
- Génération d'un IV de 96 bits aléatoires, unique pour cette opération
- Chiffrement AES-256-GCM de la donnée JSON sérialisée
- Concaténation IV + ciphertext encodée en Base64
- Envoi de cette chaîne opaque vers le serveur
Le mode GCM (Galois/Counter Mode) garantit à la fois la confidentialité et l'intégrité : toute altération du ciphertext en transit est détectée et le déchiffrement échoue.
Ce que Supabase stocke
Supabase est notre base de données. Elle ne reçoit que des blobs chiffrés — des chaînes Base64 sans structure lisible. Un accès direct à la base ne révèle aucune information financière.
Concrètement, une ligne de transaction en base ressemble à :
data_encrypted: "3k2nP9xQr7...YmFzZTY0...3RyaW5n"
Supabase Auth gère séparément votre adresse e-mail et votre session de connexion — c'est la seule donnée identifiable qu'il détient. Votre mot de passe de chiffrement (distinct du mot de passe de connexion) n'est jamais transmis.
Architecture zéro-connaissance
Le modèle est dit Zero-Knowledge : même en cas d'accès complet à nos infrastructures (base de données, logs serveur, trafic réseau), il est techniquement impossible de lire vos données — la clé n'y est jamais présente.
Ce modèle a une conséquence importante : si vous perdez votre mot de passe de chiffrement, vos données sont irrécupérables. Nous ne pouvons pas effectuer de réinitialisation. Conservez-le dans un gestionnaire de mots de passe.
Implémentation — Web Crypto API
Aucune bibliothèque cryptographique externe n'est utilisée. Tout repose surwindow.crypto.subtle, l'API cryptographique embarquée dans tous les navigateurs modernes (Chrome, Firefox, Safari, Edge). Elle est implémentée au niveau du système d'exploitation et auditée indépendamment.
Le code de chiffrement de Kapsul tient en moins de 70 lignes et peut être audité directement dans les outils développeur de votre navigateur.
Données de marché — cotations et historique
Les cours boursiers (actions, ETF) et les taux de change sont récupérés en temps réel depuis l'API publique Yahoo Finance. Ces requêtes ne contiennent aucune donnée personnelle — uniquement des symboles boursiers (AAPL, RDDT…).
Les positions de votre portefeuille (quantité, PRU, date d'achat) sont chiffrées comme toutes les autres données sensibles — Yahoo Finance ne les reçoit jamais.
Récapitulatif — qui voit quoi
| Donnée | Vous | Kapsul / Supabase | Tiers |
|---|---|---|---|
| Transactions & enveloppes | ✓ Lisible | Chiffré (illisible) | Jamais transmis |
| Positions portefeuille | ✓ Lisible | Chiffré (illisible) | Jamais transmis |
| Clé de chiffrement | ✓ En mémoire | Jamais reçue | Jamais transmise |
| Adresse e-mail | ✓ | ✓ (Supabase Auth) | Non partagée |
| Symboles boursiers | ✓ | Logs serveur | Yahoo Finance (anonyme) |
Cette architecture de chiffrement de bout en bout est active pour tous les comptes, y compris en période bêta. Aucune donnée financière n'est stockée en clair, quelle que soit la formule d'abonnement.