Begrippenlijst

Privacy en versleuteling

Deze woorden worden in app-beschrijvingen losjes door elkaar gebruikt, terwijl juist in de verschillen ertussen de waarde zit. Verborgen is niet vergrendeld. Vergrendeld is niet versleuteld. En een sleutel die iemand anders bewaart, is niet echt van jou.

Verborgen versus versleuteld

Verborgen betekent dat een app afspreekt iets niet te tonen. Versleuteld betekent dat de bytes op schijf onleesbaar zijn zonder sleutel. Het eerste is een belofte, het tweede is rekenwerk.

Een verborgen map is nog altijd een gewone map. Alles wat de schijf rechtstreeks leest — een back-up, een bestandsbeheerder, een forensisch hulpmiddel, een andere app met de juiste rechten — ziet precies wat erin zit, want aan het bestand zelf is niets veranderd.

Versleuteling verandert het bestand wél. Wat er op schijf staat is ruis, en het blijft ruis voor iedereen zonder de sleutel, inclusief degene die de app geschreven heeft. Het onderscheid wordt pas zichtbaar op de dag dat het ertoe doet, en daarom is het de moeite waard om het vóór die dag te kennen.

Zie ook: In rust versus onderwegChaCha20-Poly1305

ChaCha20-Poly1305

Een modern versleutelingsalgoritme dat data zowel onleesbaar maakt als knoeien ermee detecteert. Snel op telefoons, die niet altijd hardwareversnelling hebben voor het oudere alternatief.

ChaCha20 doet het versleutelen; Poly1305 produceert een tag waarmee je controleert of de data niet is gewijzigd. Samen vormen ze wat authenticated encryption heet — bij een aangepast bestand mislukt het ontsleutelen luid en duidelijk in plaats van dat er geloofwaardige onzin uit komt.

Het is dezelfde constructie die in TLS en in moderne beveiligde berichtendiensten wordt gebruikt. Op hardware zonder AES-versnelling is het merkbaar sneller dan AES, en daarom geven telefoons er de voorkeur aan.

Zie ook: In rust versus onderwegKey wrapping

Key wrapping

envelope encryption

De bestanden met één sleutel versleutelen, en die sleutel vervolgens apart versleutelen met elke manier om binnen te komen. Een toegangscode wijzigen verpakt een kleine sleutel opnieuw in plaats van alles opnieuw te versleutelen.

Bestanden worden één keer versleuteld, met een sleutel die op het apparaat is gegenereerd. Die sleutel wordt daarna ingepakt — versleuteld — door de toegangscode, en nog een keer door de herstelcode. Twee enveloppen, met in elk dezelfde sleutel.

De gevolgen zijn allemaal praktisch. Een gewijzigde toegangscode herschrijft een paar honderd bytes in plaats van honderd gigabyte. Ontgrendelen met biometrie is nog zo’n ingepakte kopie en geen tweede beveiligingsmodel. En alle enveloppen kwijtraken betekent de sleutel kwijtraken, want die sleutel bestaat nergens anders.

Zie ook: HerstelcodeChaCha20-Poly1305

Herstelcode

Een eenmalige reeks tekens waarmee de hoofdsleutel kan worden uitgepakt als de toegangscode vergeten is. Niemand kan hem opnieuw uitgeven, omdat niemand anders hem ooit gehad heeft — ook de makers van de app niet.

Hij wordt één keer getoond, bij het instellen, en hij is de tweede van de twee deuren. Opgeschreven en ergens anders bewaard dan op het apparaat, maakt hij van een vergeten toegangscode een ongemak.

Is de toegangscode vergeten en de herstelcode kwijt, dan kan niemand de bestanden nog ontsleutelen. Dat is geen supportbeleid waar je over kunt discussiëren; dat is wat het betekent als er geen kopie van de sleutel bestaat. Bewaar hem net zo zorgvuldig als de bestanden verdienen.

Zie ook: Key wrappingZero-knowledge

Lokkluis

plausibele ontkenning

Een tweede toegangscode die een andere, onschuldige kluis opent. Wie gedwongen wordt de app te ontgrendelen, kán dat — en wat er opengaat is niet waar diegene naar zocht.

Beide toegangscodes zijn echt en beide openen een echte kluis. Niets op het scherm verraadt dat er nog een andere bestaat, en je kunt de app niet vragen welke van de twee hij laat zien.

Het bestaat voor de situatie waarin weigeren te ontgrendelen geen optie is: een grens, een eis, iemand die over je schouder meekijkt. Versleuteling alleen helpt daar niet, want het probleem is niet de sleutel maar dat je gedwongen wordt hem te gebruiken.

Zie ook: HerstelcodeVerborgen versus versleuteld

Sleutelhanger

De beschermde opslag van het systeem voor kleine geheimen, gedragen door de beveiligingshardware van het apparaat. Daar horen sleutels en tokens thuis, en niets groots.

Items erin kunnen voorwaarden meekrijgen: alleen leesbaar als het apparaat ontgrendeld is, alleen op dit apparaat, alleen na bevestiging met biometrie of toegangscode. Die voorwaarden worden door hardware afgedwongen en niet doordat de app het beleefd vraagt.

Hij bewaart geheimen, geen data. Sleutels, tokens en ingepakt materiaal gaan daarheen; de versleutelde bestanden zelf staan op schijf, waar grootte geen probleem is.

Zie ook: Key wrappingIn rust versus onderweg

In rust versus onderweg

Versleuteld in rust betekent onleesbaar op schijf. Versleuteld onderweg betekent onleesbaar op het netwerk. Het zijn losse beschermingen, en een product kan naar waarheid het een beweren zonder het ander te doen.

HTTPS is versleuteling onderweg: veilig voor iedereen die het netwerk afluistert, en aan de andere kant volledig leesbaar voor de server zodra het aankomt. Versleuteling in rust gaat over de opgeslagen kopie, en dat is wat telt als een apparaat kwijtraakt of een schijf wordt uitgelezen.

Een privacybelofte zorgvuldig lezen komt er meestal op neer dat je uitzoekt over welke van de twee het gaat. “Je gegevens zijn versleuteld” zonder een van beide woorden erbij is een zin die zo gekozen is dat hij niets zegt.

Zie ook: ChaCha20-Poly1305Zero-knowledge

Zero-knowledge

Een ontwerp waarbij de aanbieder niet kan lezen wat hij opslaat, omdat de sleutels de apparaten van de gebruiker nooit verlaten. De toets is simpel: kunnen ze je wachtwoord resetten en je daarna alsnog je data geven?

Kan een dienst je toegang herstellen nadat je alles vergeten bent, dan houdt die dienst iets vast waarmee je data te ontgrendelen is — wat betekent dat ze gedwongen kunnen worden dat te gebruiken, en dat wie bij hen inbreekt dezelfde mogelijkheid erft.

De afruil is echt en hoort ronduit benoemd te worden in plaats van als puur voordeel verkocht: oprecht zero-knowledge betekent dat je de toegang oprecht kwijt bent zodra de laatste sleutel weg is. Er is geen derde optie waarbij de aanbieder je wel kan redden en niemand anders.

Zie ook: HerstelcodeIn rust versus onderweg

Biometrie

Face ID, Touch ID

Het apparaat bevestigt dat jij het bent, niet de app; de app hoort alleen ja of nee. Er komen nooit vingerafdruk- of gezichtsgegevens bij een app terecht, en niets ervan is een wachtwoord.

Ontgrendelen met biometrie is een gemak dat om een geheim heen zit, geen vervanging ervan. Wat het beschermt is een opgeslagen sleutel, en daarom zit er altijd een toegangscode achter — de biometrie kan falen, en de terugval moet iets zijn wat je weet.

De vergelijking gebeurt binnen aparte hardware en de sjablonen verlaten die nooit. Een app die Face ID aanbiedt, stelt het systeem een vraag en verzamelt niets.

Zie ook: SleutelhangerKey wrapping

Anonieme statistieken

Gebeurtenissen tellen zonder vast te leggen wie ze veroorzaakte. Wat die belofte waard is, hangt volledig af van wat er aan elke gebeurtenis hangt — en bestandsnamen, paden en URL’s zijn waar zulke beloftes meestal breken.

Weten dat een scherm geopend werd, is een telling. Weten welk bestand er is afgespeeld, is een beschrijving van een persoon. De grens tussen die twee is niet het woord “anoniem”, maar welke velden de gebeurtenis meedraagt.

Een belofte die vertrouwen verdient, zegt net zo precies wat er *niet* wordt verstuurd als wat wel: geen bestandsnamen, geen paden, geen URL’s, geen inloggegevens, geen identificatie die sessies overleeft — en biedt een manier om het hele ding uit te zetten.

Zie ook: In rust versus onderweg

De andere onderwerpen