Comment ça marche
Aucune invention - uniquement des primitives éprouvées : BIP-39, X25519, HKDF-SHA256, XChaCha20-Poly1305. Voici tout le parcours, en langage clair.
12 mots, toute l’identité
Un profil commence par une phrase de récupération BIP-39 - 12 mots anglais contenant 128 bits d’entropie. Les mots sont étirés en une graine, et HKDF en dérive la paire de clés de chiffrement. Les mêmes mots sur n’importe quel appareil restaurent les mêmes clés : il n’y a pas de « compte » à récupérer, seulement la phrase.
L’adresse est la clé publique
Votre clé publique X25519, encodée en bech32 avec le préfixe sk, est votre adresse - environ 60 caractères commençant par sk1. Transmettez-la sous forme de texte ou de QR code. Il n’y a aucun annuaire où s’inscrire, ni aucun serveur qui associe des noms à des personnes.
sk1qsva3e52awafjvedj5ethvc5hs9j4t0ml26m83kn6kycsh9m46rejzha
Le message devient une enveloppe
Le texte est chiffré une seule fois avec une clé de message aléatoire via XChaCha20-Poly1305. Cette clé est ensuite emballée dans un emplacement pour chaque destinataire - et toujours dans un emplacement de plus pour vous. C’est pourquoi vos propres messages envoyés restent lisibles : déchiffrer votre historique est la même opération que lire le courrier entrant.
Les emplacements sont anonymes et mélangés : l’enveloppe ne contient aucune adresse, un observateur extérieur ne voit que des tailles. La clé de chaque emplacement est négociée par deux échanges X25519 - l’un avec une clé éphémère générée pour cette enveloppe (forward secrecy), l’autre avec la clé permanente de l’expéditeur (authentification de l’expéditeur).
L’enveloppe voyage comme du texte
L’enveloppe binaire est encodée en base64 dans un bloc blindé. Elle est autonome : collez-la dans une messagerie, un e-mail, un forum ou un fichier - tout canal qui transmet du texte transmet les messages Secret Keeper.
-----BEGIN SECRET MESSAGE V1----- AlXhZ0Qq7bfPj…base64…M42kLBi6p4Jro -----END SECRET MESSAGE V1-----
Fichiers : le conteneur .skf
Les fichiers utilisent le même schéma d’emplacements, mais le corps est chiffré par fragments : une vidéo de plusieurs gigaoctets passe en flux sans être chargée en mémoire. Les nonces des fragments suivent la construction STREAM (comme dans age et Tink) : un compteur détecte les réordonnancements et les doublons, un octet final détecte la troncature. Même le nom du fichier se trouve dans l’en-tête chiffré.
Sauvegardes
Une sauvegarde est un fichier .skb : réglages, contacts et historique dans un seul conteneur chiffré pour vous-même - le même schéma que les fichiers chiffrés : de l’extérieur, rien n’est lisible, pas même les adresses des contacts. La phrase de récupération n’est jamais dans la sauvegarde - le profil se restaure avec les 12 mots, la sauvegarde restaure tout le reste.
Ce que cela garantit
- Forward secrecy
- une clé éphémère neuve pour chaque enveloppe
- L’expéditeur peut relire
- votre propre emplacement dans chaque enveloppe envoyée
- Aucun état
- pas de sessions par paire, rien de stocké sur des serveurs
- Aucun identifiant utilisateur
- l’adresse est la clé publique elle-même
- Deux implémentations
- Dart dans l’application, @noble dans l’extension - vérifiées l’une contre l’autre par des vecteurs de test partagés
Envie de vérifier ?
La spécification complète, octet par octet, est publique - le même document contre lequel l’application et l’extension sont testées :