Une clé après le # : comment les liens partagés tiennent le serveur à l’écart
Une conversation partagée est stockée sur notre serveur, et nous ne pouvons pas l’ouvrir. Comment cela fonctionne, où intervient le mot de passe, et ce qu’un lien ne peut pas protéger.
Partager revient d’ordinaire à confier vos mots à qui stocke le lien. Les liens partagés d’Undergrove sont conçus pour que le serveur détienne une copie qu’il ne peut pas lire. Le procédé est ancien et simple, et il a des limites qu’il vaut la peine de connaître.
La partie après le #
Quand vous partagez une conversation, votre navigateur crée une nouvelle clé aléatoire, chiffre une copie avec AES-GCM et n’envoie que le texte chiffré. La clé va dans le lien, après le #. Les navigateurs n’envoient pas cette partie d’une adresse au serveur quand ils chargent une page : la clé parvient donc à la personne à qui vous envoyez le lien, et jamais à nous.
Nous conservons le texte chiffré pendant 1, 7 ou 30 jours. Nous voyons son identifiant, sa taille, et quand il a été créé et ouvert. La page qui l’ouvre récupère le texte chiffré, lit la clé dans la barre d’adresse et le déchiffre dans l’onglet.
Un mot de passe, en plus
Un lien peut aussi exiger un mot de passe. La clé qui ouvre la copie provient alors des deux : le mot de passe est étiré avec PBKDF2-SHA256 sur 600 000 itérations et combiné à la clé du lien par HKDF. Ni le lien ni le mot de passe ne l’ouvre seul, et le mot de passe est vérifié dans l’onglet par rapport à la copie déjà présente : nous ne le voyons donc jamais.
Ouverture unique, et dates d’ouverture
Un lien peut ne s’ouvrir qu’une fois. Le serveur supprime sa copie dès sa première lecture et ne garde que l’heure à laquelle il a été ouvert, pour que le lien puisse indiquer qu’il a déjà servi plutôt que de passer pour n’avoir jamais existé. Avant de récupérer la copie, la page vous demande de confirmer, pour que l’aperçu de lien d’une messagerie ne l’épuise pas.
Un lien peut aussi ne s’ouvrir qu’à partir d’une date. D’ici là, le serveur refuse de remettre le texte chiffré. C’est le serveur qui tient parole, pas de la cryptographie : la copie est déjà stockée, et sa clé est déjà dans le lien.
Ce qu’un lien ne peut pas protéger
- Toute personne qui a le lien complet peut lire la copie. Traitez-le comme la conversation elle-même.
- Les messageries et les applications d’e-mail stockent les messages que vous envoyez, liens compris, partie après le # incluse.
- La page qui déchiffre la copie est du code que nous servons. /verify compare ce code avec le manifeste publié du build.
La page de confidentialité liste ce qui est stocké pour chaque lien, et le modèle de menace, qui pourrait voir quoi.
Autres notes de terrain
Ce que prouve une attestation, et ce qu’elle ne prouve pas
Votre navigateur vérifie l’enclave de Tinfoil avant d’envoyer le moindre mot. Ce que cette vérification établit, où elle s’arrête, et ce qui ne peut pas encore être vérifié dans un navigateur.
Ce que voit encore un relais qui ne peut pas lire
Notre relais transmet du texte chiffré qu’il ne peut pas ouvrir. Ce n’est pas la même chose que ne rien voir. Un inventaire de ce qu’il voit bel et bien, et pourquoi.