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.
-
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.
-
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