Modèle de sécurité · zero-knowledge

Comment ça marche

Tsecret te donne un lien à usage unique pour transmettre un secret. Le chiffrement se fait dans ton navigateur ; nos serveurs ne voient jamais ton contenu en clair. Voici exactement ce qui se passe — et pourquoi tu peux le vérifier toi-même.

1 Chiffrement dans ton navigateur

Quand tu cliques sur « Générer le lien », ton navigateur crée une clé aléatoire de 256 bits et chiffre ton secret en AES-256-GCM via la Web Crypto API native. Le texte en clair ne quitte jamais ta machine. Le serveur ne reçoit qu'un blob chiffré (ciphertext) et son vecteur d'initialisation (iv) — illisibles sans la clé.

2 La clé vit dans le # de l'URL

La clé de déchiffrement est ajoutée au lien après le # : tsecret.app/s/abc123#la-clé. Le fragment d'URL est une particularité des navigateurs : il n'est jamais envoyé au serveur, jamais présent dans nos logs, jamais dans nos backups. Tout ce qu'il faut pour déchiffrer vit dans le lien lui-même, et le déchiffrement n'a lieu que chez le destinataire.

Conséquence directe : même nous, qui hébergeons le service, sommes techniquement incapables de lire ton secret. Il n'y a rien à voler côté serveur — que du chiffré inexploitable. C'est ça, le zero-knowledge.

3 Lecture unique, puis autodestruction

À l'ouverture du lien, le destinataire voit d'abord un écran « Révéler ». Ce n'est qu'au clic que le secret est demandé au serveur — qui le renvoie et le supprime dans la même transaction atomique. Deux ouvertures simultanées ? Un verrou en base garantit qu'une seule gagne. Après ça, le lien est définitivement mort : rouvrir affiche « Ce secret n'existe plus ».

Cet écran anti-preview protège aussi contre les robots d'aperçu de lien (Slack, iMessage, WhatsApp, Discord) qui, sinon, « brûleraient » ton secret avant même que la personne l'ouvre.

4 Expiration automatique (TTL)

Même jamais lu, un secret expire selon la durée que tu choisis — 1 heure, 24 heures ou 7 jours — puis il est purgé de la base par une tâche planifiée. Rien ne traîne indéfiniment.

5 Passphrase optionnelle (double canal)

Tu peux ajouter une passphrase. Dans ce cas, la clé AES est dérivée de la combinaison clé-du-lien + passphrase via PBKDF2-SHA256 (210 000 itérations). Le destinataire a besoin des deux pour déchiffrer. Idée : envoie le lien par un canal (mail) et la passphrase par un autre (SMS). La passphrase n'est jamais transmise ni stockée — les tentatives se font localement, dans le navigateur.

Ce que le serveur stocke — et ce qu'il ne stocke pas

Vérifie-le toi-même

On ne te demande pas de nous croire sur parole. Le code est 100% open source : lis-le, audite le chiffrement, ou héberge ta propre instance. Le même codebase tourne chez nous et en self-hosting, tout se configure par variables d'environnement.

Note d'honnêteté : la sécurité repose sur le fait que le lien complet (avec le #) reste privé. Quiconque obtient le lien entier avant le destinataire peut lire le secret — comme pour tout partage par lien. Utilise la passphrase et un second canal pour les secrets les plus sensibles.

Créer un secret Lire le code