Aller au contenu

Chiffrement

Tout ce que bae place dans un emplacement cloud est chiffré avant de quitter l’appareil ; il n’existe pas de mode non chiffré. bae n’implémente aucune cryptographie lui-même : tout le schéma est celui de coven, et cette page décrit comment bae l’utilise.

CléCe qu’elle fait
La clé de stockagechiffre la bibliothèque et ses enregistrements d’appartenance
La clé de cercle de chaque personnechiffre ce que cette personne garde privé : son historique d’écoute privé et ses listes privées
La clé de chaque fichierchiffre un fichier, et ne circule qu’à l’intérieur des changements chiffrés de sa ligne
La paire de clés de signature d’une personnesigne chaque changement qu’envoient ses appareils
La paire de clés de scellement d’une personneouvre les clés scellées pour cette personne

La clé de stockage est aléatoire, créée quand la bibliothèque obtient son emplacement cloud. Les paires de clés d’une personne sont partagées par tous ses appareils. Les clés privées et les clés de la bibliothèque vivent dans le trousseau du système d’exploitation, jamais dans un fichier ni dans la base de données. Elles atteignent un appareil de deux manières, toutes deux décrites dans Identité et appartenance : un code de restauration transporte les propres paires de clés d’une personne, et un administrateur qui approuve une invitation scelle les clés de stockage pour la clé de scellement de la nouvelle personne.

Une clé n’est jamais modifiée sur place ; une nouvelle est ajoutée. Après le retrait d’une personne, l’appareil d’un membre restant ajoute une nouvelle clé de stockage, et une nouvelle clé pour chaque cercle dont elle faisait partie, avant d’y écrire d’autres données : tout ce qui est écrit ensuite lui est illisible, tandis que les membres restants gardent chaque clé plus ancienne et peuvent lire tout l’historique. Retirer un seul appareil ne fait tourner aucune clé, puisque les autres appareils de la personne partagent ses clés ; à partir du retrait, ce que cet appareil envoie ne compte plus.

Ce qui est scellé

Lien vers cette section

Chaque objet de l’emplacement : changements, instantanés, enregistrements d’appartenance et fichiers. Le contenu est chiffré avec XChaCha20-Poly1305, chaque changement est signé avec Ed25519, et les clés sont scellées pour les personnes avec des boîtes scellées X25519. Les fichiers sont chiffrés par blocs de 64 Kio, chacun authentifié séparément et lié à sa position, donc un bloc ne peut pas être modifié, échangé ou réordonné sans que cela se voie. Le découpage en blocs est ce qui permet la diffusion : le lecteur peut déchiffrer exactement les blocs qu’il récupère.

Ce que le fournisseur peut voir

Lien vers cette section

Nombre d’objets, tailles d’objets, moment des envois, quel compte écrit chaque objet et quel appareil a envoyé chaque fichier et instantané, puisque leurs chemins nomment l’appareil. Pas les noms, pas les métadonnées, pas l’audio, pas les illustrations. Les fichiers sont sous des noms aléatoires, jamais un hachage de leur contenu. Il n’y a pas de récupération côté serveur : si chaque personne perd chaque appareil et chaque code de restauration, la bibliothèque est perdue, ce qui est le comportement prévu.

Ouvrir une bibliothèque lit ses clés depuis le trousseau du système d’exploitation. Un trousseau verrouillé à cet instant, par une session verrouillée ou un écran en veille, est distingué d’un trousseau défaillant : bae affiche la bibliothèque comme verrouillée et réessaie après le déverrouillage, plutôt que de déclarer la bibliothèque inutilisable. Un appareil peut aussi oublier la clé, ce qui verrouille la bibliothèque sur cet appareil jusqu’à ce qu’elle soit à nouveau déverrouillée.