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
- Le texte chiffré (
ciphertext) et soniv - Un identifiant public non devinable (ULID)
- La date d'expiration et le nombre de lectures restantes (1)
- Jamais le contenu en clair
- Jamais la clé de déchiffrement ni la passphrase
- Aucune IP, aucun email, aucun compte
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.