Erseni Vault est un outil zero-knowledge. Le texte en clair ne quitte jamais votre navigateur sans être chiffré. Notre serveur ne voit que du texte chiffré et un jeton éphémère.
Le texte en clair reste dans votre navigateur.
Le serveur ne stocke que des données chiffrées.
La clé voyage dans le fragment du lien et ne nous parvient jamais.
Un serveur compromis, un employé indiscret ou une réquisition judiciaire ne peuvent pas lire votre secret. Nous ne détenons jamais la clé.
Les fragments d'URL ne sont pas transmis dans les requêtes HTTP : ils ne vivent que dans la barre d'adresse du navigateur. C'est pour cela que nous y plaçons la clé.
Les secrets s'autodétruisent après une lecture réussie ou à l'expiration de leur durée de vie. Dans les deux cas, le texte chiffré est supprimé de notre base de données.
Le backend et la cryptographie du navigateur sont open source. Lisez le code, exécutez-le localement, ou hébergez votre propre instance.
Code source : gitlab.erseni.net/open-source/secrets-component
Notes d'architecture et modèle de menace : docs/architecture.md
La cryptographie du navigateur utilise l'API native window.crypto.subtle. Aucune bibliothèque cryptographique tierce.
AES-GCM-256: Un algorithme de chiffrement symétrique utilisant une clé de 256 bits. Le mode GCM assure à la fois la confidentialité et l'authentification : toute altération du texte chiffré fait échouer le déchiffrement.
X25519: Un algorithme moderne d'accord de clés. Chaque partie génère une paire de clés, échange sa clé publique, puis dérive indépendamment un secret partagé que personne d'autre ne peut calculer sans l'une des clés privées.
HKDF-SHA256: Une fonction de dérivation de clés. Elle transforme un secret partagé (issu de X25519) en une clé uniforme, de longueur fixe, adaptée à AES-GCM.
Fragment d'URL : La partie d'une URL située après le symbole #. Les navigateurs gardent les fragments en local et ne les envoient jamais dans les requêtes HTTP. C'est pour cela que nous y plaçons les clés de chiffrement.
Zero-knowledge : Une architecture dans laquelle le serveur ne peut pas lire les données de l'utilisateur, même s'il le voulait. Seul le client détient les clés nécessaires au déchiffrement.