Aller à la documentation
Base de connaissances

Chiffrement au repos

Chaque champ d'un message scellé avant d'être écrit sur disque (corps, objet, adresses et octets des pièces jointes), pour qu'une copie de la base de données soit du texte chiffré et non du courrier.

Pas encore

Seuls les identifiants que vous nous confiez sont scellés de cette façon aujourd'hui ; les corps, les objets et les pièces jointes sont stockés tels qu'ils sont arrivés, et l'enveloppe qui les scellera est construite mais délibérément branchée sur rien.

Détails

  • Pas livré. Une seule chose est scellée avant d'être écrite sur disque, et rien d'autre : un secret de signature de webhook. Il est scellé sous sa propre clé dérivée, de sorte qu'un texte chiffré extrait d'une table ne puisse pas être ouvert comme celui d'une autre, et c'est le seul endroit du code où quoi que ce soit est scellé. Aucun corps, objet, contact, note, entrée d'agenda ni pièce jointe n'y passe.
  • C'est une promesse différente des deux qui l'entourent, et la différence tient à qui détient la clé. Le chiffrement de bout en bout signifie que la clé est la vôtre et que le courrier est illisible ici ; le chiffrement au repos signifie que le courrier est scellé en entrant dans le stockage sous une clé que ce serveur dérive, de sorte qu'un vidage de la base, une sauvegarde égarée ou une requête que quelqu'un n'aurait pas dû lancer ne donnent que du texte chiffré, tandis que le serveur lui-même peut encore l'ouvrir pour construire les fils, chercher et résumer. Le premier vous protège de nous. Le second vous protège de tous les autres, et c'est celui qui n'arrête pas d'arriver aux autres.
  • Ce qui est vrai aujourd'hui mérite d'être dit clairement plutôt que laissé à deviner : le courrier est stocké sur une infrastructure qui chiffre ses propres disques, aucune couche à nous ne se superpose à cela, et nous détenons les clés ; le serveur peut donc lire ce qu'il stocke, et les fonctions qui cherchent et résument votre courrier font exactement cela. La page de confidentialité le dit dans ces termes depuis sa rédaction, et continuera de le dire jusqu'à ce que ceci soit livré.
  • « Chaque champ » veut dire bien plus que le corps. L'objet, la liste des expéditeurs et destinataires et l'extrait qu'affiche la liste occupent des colonnes indexées ordinaires, tout comme les résumés générés à partir d'un message, les notes que vous attachez à un fil, les noms de contacts, les titres et lieux d'agenda, et le nom et le type de chaque fichier. Une carte annonçant « chiffré » pendant que la ligne d'objet reste en clair serait exactement le cadenas que ce produit refuse de dessiner partout ailleurs.
  • Ce que cela coûte était la question ouverte, et la moitié qui concerne la recherche a désormais un chiffre en face plutôt qu'un argument. La recherche est aujourd'hui une requête sur les 4 000 premiers caractères du message le plus récent de chaque fil, conservés en texte clair. Scellée, elle devient un déchiffrement et un parcours à l'intérieur du magasin de boîtes aux lettres qui détient déjà la clé, pris par blocs plutôt que ligne par ligne : sur un corpus synthétique, cela représente environ 100 à 400 millisecondes sur 50 000 conversations, et au-delà d'environ 200 000 il faut des résultats qui arrivent progressivement au lieu d'arriver d'un bloc. C'était mesuré sur une machine de développement contre du courrier généré, et non sur une boîte réelle : c'est donc l'allure du coût plutôt qu'une promesse sur la vôtre. Ainsi la correspondance sur n'importe quel fragment de mot survit exactement comme aujourd'hui, et rien n'a besoin d'écrire sur disque un index d'empreintes de mots que quelqu'un pourrait récupérer plus tard. C'est le même texte que lisent le résumeur, la passe sur le corps du détecteur de hameçonnage, le contrôle d'écriture par IA et toute règle portant sur des mots, et chacun l'ouvre de la même façon, ce qui donne la forme honnête de cette promesse : scellé contre une copie de la base de données, jamais scellé contre le serveur.
  • Avant que quoi que ce soit d'irremplaçable soit scellé, l'enveloppe doit porter sa propre version et son propre identifiant de clé. Chaque clé dérivée pend aujourd'hui à un seul secret, et le faire tourner vous coûte les secrets de signature des webhooks ; si les corps étaient scellés de la même manière, le faire tourner coûterait le courrier. Cette pièce est construite, et rien n'a été scellé avec elle. Chaque enveloppe qu'elle fabrique porte sa propre version et l'identifiant de la clé qui l'a fabriquée, lisibles avant que quiconque tente de l'ouvrir, et se lie à la ligne exacte à laquelle elle appartient : une valeur extraite d'une ligne et déposée dans une autre ne s'ouvre pas, et elle dit qu'elle a été déplacée au lieu d'échouer comme une mauvaise clé. Rien ne l'appelle encore, et c'est tout l'intérêt de la construire d'abord. Le format est l'engagement ; l'adopter, un champ à la fois, est la partie qui reste réversible.
  • Une seule phrase décide de ce qui est scellé, pour qu'elle puisse s'appliquer à une colonne à laquelle personne n'a encore pensé : sceller tout ce qu'une personne a écrit ou choisi, laisser tout ce que la machine a choisi. Un objet, un corps, une note de fil, un nom de contact, un titre d'agenda, un nom de fichier, une règle que vous avez tapée : cela vient de vous. Un identifiant de message, un état de file, un compteur de reprises, un identifiant de ligne : cela a été généré ici, et les sceller n'achète rien tout en coûtant à chaque requête qui les lit. Deux exceptions se posent par-dessus. Une valeur déjà irréversible, une empreinte ou un condensé de jeton, n'est pas rendue plus sûre en étant scellée en plus. Une valeur publiée exprès reste lisible, car la sceller scellerait la seule chose qu'elle existe pour distribuer.
  • Trois choses restent lisibles sous cette règle, et chacune est un fondement de la boîte aux lettres plutôt qu'un coin laissé en friche. Les horodatages, parce qu'ils sont la clé de tri et le curseur de pagination, et qu'une boîte aux lettres qui ne peut pas trier par date n'est pas une boîte aux lettres. Votre domaine, parce que la requête qui le lit est la façon dont un message entrant trouve le locataire auquel il appartient, avant que quiconque soit connecté et avant qu'aucune clé soit en main. Les clés publiées, parce qu'un expéditeur consulte la vôtre. Chacune dit quelque chose sur la forme d'un compte, et aucune n'est le contenu de votre courrier.
  • Sceller sous une clé que le serveur dérive est le premier barreau, et celui qui est en construction. Le second, sceller vers votre clé à l'arrivée du courrier pour qu'aucune clé d'ici ne l'ouvre, est un changement plus vaste et un autre produit : le corps quitte définitivement la recherche et les fonctions d'IA, et la garde des clés ainsi qu'une phrase de récupération passent entre vous et votre propre courrier. C'est un choix à faire délibérément plutôt qu'un interrupteur à basculer, et cette carte dira lequel a été livré au lieu de mélanger les deux.