Kennisbank
Versleuteling in rust
Elk veld van een bericht verzegeld voordat het wordt opgeschreven (berichttekst, onderwerp, adressen en bijlagebytes), zodat een kopie van de database cijfertekst is in plaats van post.
Nog niet
Alleen de inloggegevens die je ons geeft worden vandaag op deze manier verzegeld; berichtteksten, onderwerpen en bijlagen worden opgeslagen zoals ze binnenkwamen, en de envelop die ze gaat verzegelen is gebouwd maar bewust nergens op aangesloten.
Details
- Niet uitgebracht. Eén ding wordt verzegeld voordat het wordt opgeschreven en verder niets: een webhook-ondertekeningsgeheim. Het wordt verzegeld onder zijn eigen afgeleide sleutel, zodat cijfertekst die uit de ene tabel wordt gelicht niet als die van een andere kan worden geopend, en dat is de enige plek in de codebase waar überhaupt iets wordt verzegeld. Geen enkele berichttekst, onderwerp, contact, notitie, agenda-item of bijlage komt er doorheen.
- Het is een andere claim dan de twee eromheen, en het verschil zit in wie de sleutel heeft. End-to-end-versleuteling betekent dat de sleutel van jou is en de post hier onleesbaar; versleuteling in rust betekent dat de post op weg naar de opslag wordt verzegeld onder een sleutel die deze server afleidt, zodat een dump van de database, een back-up die zoekraakt of een query die iemand niet had moeten draaien cijfertekst oplevert, terwijl de server zelf hem nog wel kan openen om te groeperen, te doorzoeken en samen te vatten. De eerste beschermt jou tegen ons. De tweede beschermt jou tegen alle anderen, en dat is degene die anderen steeds weer overkomt.
- Wat vandaag waar is, is het waard om ronduit te zeggen in plaats van het te laten afleiden: post wordt opgeslagen op infrastructuur die haar eigen schijven versleutelt, er ligt geen eigen laag van ons bovenop, en wij hebben de sleutels, dus de server kan lezen wat hij opslaat, en de functies die je post doorzoeken en samenvatten doen precies dat. De privacypagina zegt dat in die woorden sinds ze geschreven is, en blijft dat zeggen tot dit wordt uitgebracht.
- Elk veld betekent meer dan de berichttekst. Het onderwerp, de lijst met afzender en ontvangers en het fragment dat de lijstweergave tekent staan in gewone geïndexeerde kolommen, net als de samenvattingen die uit een bericht worden gegenereerd, de notities die je aan een gesprek hangt, contactnamen, agendatitels en -locaties, en de naam en het type van elk bestand. Een kaart die versleuteld zei terwijl de onderwerpregel open en bloot bleef, zou het hangslot zijn dat dit product overal elders weigert te tekenen.
- Wat het kost was de open vraag, en de zoekhelft ervan heeft er nu een getal tegenover staan in plaats van een argument. Zoeken is vandaag een query over de eerste 4.000 tekens van het nieuwste bericht van elk gesprek, bewaard als platte tekst. Verzegeld wordt het een ontsleuteling en een scan binnen de mailboxopslag die de sleutel al heeft, in brokken genomen in plaats van rij voor rij: op een synthetisch corpus is dat ongeveer 100 tot 400 milliseconden over 50.000 gesprekken, en voorbij ongeveer 200.000 heeft het resultaten nodig die geleidelijk binnenkomen in plaats van allemaal tegelijk. Dat is gemeten op een ontwikkelmachine tegen gegenereerde post, niet op een levende mailbox, dus het is de vorm van de kosten in plaats van een belofte over die van jou. Zo blijft matchen op elk fragment van een woord precies zoals het nu werkt, en hoeft niets een index van woordhashes naar schijf te schrijven die iemand later kan lichten. Dezelfde tekst is wat de samenvatter, de tekstronde van de phishingscorer, de AI-schrijfcontrole en elke regel die op woorden matcht allemaal lezen, en elk van hen opent hem op dezelfde manier, en dat is de eerlijke vorm van deze claim: verzegeld tegen een kopie van de database, nooit verzegeld tegen de server.
- Voordat er iets onvervangbaars wordt verzegeld, moet de envelop zijn eigen versie en zijn eigen sleutel-id dragen. Elke afgeleide sleutel hangt vandaag aan één geheim, en dat roteren kost je de webhook-ondertekeningsgeheimen; zodra berichtteksten op dezelfde manier verzegeld zouden zijn, zou roteren de post kosten. Dat stuk is gebouwd, en er is nog niets mee verzegeld. Elke envelop die het maakt draagt zijn eigen versie en de id van de sleutel die hem maakte, leesbaar voordat iemand hem probeert te openen, en bindt zich aan precies de rij waar hij bij hoort: een waarde die uit de ene rij is gelicht en in een andere is gezet opent niet, en zegt dat hij verplaatst is in plaats van te falen als een verkeerde sleutel. Niets roept het nog aan, en dat is precies waarom het eerst is gebouwd. Het formaat is de verplichting; het invoeren, veld voor veld, is het deel dat omkeerbaar blijft.
- Eén zin bepaalt wat er verzegeld wordt, zodat hij ook toegepast kan worden op een kolom waar nog niemand aan heeft gedacht: verzegel alles wat een mens schreef of koos, laat alles wat de machine koos. Een onderwerp, een berichttekst, een gespreksnotitie, een contactnaam, een agendatitel, een bestandsnaam, een regel die je typte: die kwamen van jou. Een bericht-id, een wachtrijstatus, een aantal pogingen, een rij-id: die zijn hier gegenereerd, en ze verzegelen levert niets op terwijl het elke query kost die ze leest. Er liggen twee uitzonderingen bovenop. Een waarde die al onomkeerbaar is, een hash of een tokendigest, wordt niet veiliger door ook nog verzegeld te worden. Een waarde die met opzet gepubliceerd is blijft leesbaar, want haar verzegelen zou juist datgene verzegelen wat ze bestaat om uit te delen.
- Drie dingen blijven onder die regel leesbaar, en elk daarvan is iets waar de mailbox op gebouwd is in plaats van een hoekje dat is blijven liggen. Tijdstempels, omdat ze de sorteersleutel en de paginacursor zijn, en een mailbox die niet op datum kan sorteren is geen mailbox. Je domein, omdat de query die het leest is hoe een binnenkomend bericht de tenant vindt waar het bij hoort, voordat iemand is ingelogd en voordat er een sleutel in handen is. Gepubliceerde sleutels, omdat een afzender die van jou opzoekt. Elk daarvan zegt iets over de vorm van een account, en geen ervan is de inhoud van je post.
- Verzegelen onder een sleutel die de server afleidt is de eerste trede en degene die gebouwd wordt. De tweede, verzegelen aan jouw sleutel zodra post binnenkomt zodat geen enkele sleutel hier hem opent, is een grotere verandering en een ander product: de berichttekst verdwijnt permanent uit zoeken en de AI-functies, en sleutelbeheer en een herstelzin komen tussen jou en je eigen post te staan. Dat is een keuze die je bewust maakt in plaats van een schakelaar om om te zetten, en deze kaart zal zeggen welke van de twee is uitgebracht in plaats van de twee te vervagen.