One-time pad (OTP) mag dan perfecte encryptie leveren, het is ook een methode die nauwelijks nog toepassing heeft, omdat zij onpraktisch en ook niet onomstreden is. Een ding staat buiten kijf: OTP is de oplossing voor een hardnekkig probleem. Dit is het eerste gedeelte in een serie van drie over het inzetten van OTP tegen het lekken van sleutels uit end-point-hardware.
Encryptie is bedoeld om gegevens onleesbaar te maken voor derden. Soms willen partijen toch inzage hebben in de gegevens die ze verzenden. Middelen om dat te bereiken, waren altijd opzettelijk zwakke encryptie of de verplichting een achterdeur te installeren. Niet iedereen was daarvan gediend en daarom passen diensten zoals Messenger en Whatsapp end-to-end-encryptie toe. Hierbij heeft de dienstverlener zelf geen inzage in de gegevens en kan hij dus een verzoek om inzage ook niet inwilligen.
Er bestaan echter manieren die zelfs end-to-end-encryptie omzeilen. Dit is een bundel van soft- of hardwarematige technieken die sleutels uit het geheugen lezen of laten lekken uit de hardware van het endpoint. Hiermee lijkt het alsof we terug bij af zijn. Goede encryptie, slechte hardware. Er is een bepaalde manier van versleutelen, one-time pad (OTP) genaamd, die bepaalde eigenschappen heeft waardoor achterdeuren of lekkende sleutels zinloos worden.
Sleutelbewaarder
Als berichten versleuteld zijn, wil dit nog niet zeggen dat ze niet door anderen zijn te lezen. Als een serviceprovider bijvoorbeeld ook de bewaarder van de sleutel is, dan kan de serviceprovider zelf ook de berichten te lezen. Door wetgeving kan de dienstverlener gedwongen worden berichten af te staan of zelfs de sleutel helemaal af te staan. Omdat voor sommige dienstverleners de veiligheid van hun gebruikers belangrijk is, hebben zij end-to-end-encryptie ingevoerd. Een sleutel bestaat dan alleen op de twee eindpunten van een verbinding. Dat klinkt goed. De doorgever van de versleutelde berichten kan in dat geval de berichten dus zelf niet lezen. Ook niet als hij dat wel graag zou willen, ook niet als hij heel veel computerkracht tot zijn beschikking heeft.
Het heeft dan geen zin om de dienstverlener te vragen mee te werken in het leesbaar maken van de communicatie. In bepaalde landen is om die reden end-to-end-encryptie verboden. De regering wil immers mee kunnen lezen.
Omzeilen
Toch is end-to-end-encryptie te omzeilen. Hoe sterk of machtig bepaalde encryptie ook is, het is niet van belang als op het end-point zelf het ontsleutelde bericht is te lezen. Het end-point is altijd een telefoon of een computer. Het bericht en ook de gebruikte sleutel is daar ergens opgeslagen. Dit betekent dat wie toegang heeft tot het apparaat, ook de berichten kan lezen zonder ook maar moeite te hoeven doen de encryptie zelf te breken. Een mooi recent voorbeeld is de berichtendienst Encrochat waarbij niet de gebruikte off-the-record-encryptie werd gekraakt, maar de telefoon zelf. Dat zelfs goed betaalde en veilig gewaande producten hier last van kunnen hebben, bewijst dit artikel over Cisco. Het vpn-product Cisco Anyconnect stelt zorgvuldig een gemeenschappelijke sleutel tussen twee punten in. Deze sleutel moet aan beide kanten ergens op het apparaat opgeborgen worden. Iemand heeft daar naar gezocht en de plaats van de sleutel ergens in het geheugen gevonden. Het gevolg is dat de aanvaller alles kan meelezen gedurende een sessie. Voor een vpn-product is dat bijzonder ernstig omdat velen bouwen op de veiligheid waarvoor ze betalen.
Toegang tot het end-point kan op verbazend eenvoudige manier en zelfs ook nog met jouw eigen toestemming. Wie een nieuwe telefoon koopt, weet dat het eerste wat je moet doen het wifi-wachtwoord invoeren is. Bepaalde merken telefoons laten je dan nog even eerst de privacy-beleid goedkeuren. Wie die leest, en dat doet lang niet iedereen, ontdekt dat alles wat via het on-screen-toetsenbord ingevuld wordt ‘secure wordt overgebracht en gedeeld wordt met zeer zorgvuldig geselecteerde partijen’. Dus het wifi-paswoord en ook alle daarop volgende Whatsapp-berichten gaan via het toetsenbord naar die plek waar iemand genoeg betaalt voor deze informatie of waar deze geaggregeerd wordt in statistieken. Dit is hoe end-to-end-encryptie omzeild wordt. Het kan echt met een klikje.
Hierdoor is duidelijk dat het end-point, jouw telefoon of computer, goed bewaakt moet worden. Malware zou het geheugen kunnen scannen, screenshots kunnen maken of erger nog, het toetsenbord scannen. Dat is precies wat virusscanners doen. Daarom zijn deze applicaties ver van enige luxe en dus gewoon erg nodig. Het draaien van een onbekende applicatie of het versturen van veel gegevens is iets wat opvalt en daardoor hebben virusscanners een redelijke kans deze malware te vinden.
Sleutelextractie
De extractie van een sleutel zoals in het voorbeeld van Cisco Anyconnect heeft voor een hacker een belangrijk voordeel. Wie een sleutel kan onttrekken aan een apparaat, hoeft de gegevens niet zelf aan het apparaat te onttrekken. Hij kan de versleutelde gegevens ergens op de lange weg tussen zender en ontvanger aftappen en deze dan met de sleutel ontsleutelen. Niemand ziet in dat geval dat er gegevens zijn gestolen. Daarnaast is het ook nog eens zo dat de theoretische security, de sleutellengte, nog steeds hoog is terwijl er praktisch niets meer van over is. Ideale omstandigheden voor de aanvaller, niemand heeft iets door.
Bij alle applicaties waarbij een sleutel gegenereerd wordt en gedurende langere tijd bewaard moet worden, heeft het voor een aanvaller zin te proberen de sleutel te onttrekken aan het apparaat.
Dit was echter tientallen jaren lang wel de standaardmanier voor veel applicaties. Applicaties als Openpgp, GNUpg en RSA-gebaseerde applicaties en alle certificaten werken allemaal op basis van ‘sleutel goed bewaren’. Bij een certificeringautoriteit zijn alle uitgegeven en getekende certificaten gebaseerd op de geheimhouding van een enkel priemgetal. Op een pechdag lukt dat geheimhouden minder goed dan op andere dagen. Er is echter een verschil tussen de sleutel ‘pakken’ en de sleutel ‘laten lekken’. Wie gegevens van een apparaat wil hebben, wil daar niet op betrapt worden. Bij spionage is het ook van belang dat niemand ziet waar deze gegevens werkelijk naar toe gaan.
Geavanceerde vormen van spionage gebruiken daarom allemaal zogenaamde side-channels om informatie door te geven. Een side-channel betekent een totaal andere manier van het verzenden van informatie. Dit kan zo geavanceerd dat je er met je neus boven op kunt zitten en het niet ziet. Je kunt de hard- en software laten onderzoeken en het toch niet vinden.
Tien meter
Dit artikel heeft een referentie naar een uitgewerkte strategie van een Israëlische universiteit die een RSA-sleutel met behulp van een microfoon uit een laptop haalt vanaf een afstand van tien meter. Dit kan omdat de processor afhankelijk van de gekozen sleutel andere geluiden maakt.
Dit is een mooi voorbeeld van een akoestische side-channel-aanval. Er is weinig verbeeldingskracht voor nodig om te begrijpen dat deze methode nu overal over de wereld actief wordt toegepast om RSA gebaseerde applicaties aan te vallen.
Een bijzondere subcategorie van side-channels is de timing-side-channel. Deze kan bijzonder goed verborgen blijven omdat er eigenlijk niets wordt toegevoegd of weggelaten in informatie die op een normale manier verstuurd wordt. Informatie wordt met een timing-side-channel doorgegeven door bestaande informatie subtiel te vertragen. Het wel of niet vertragen van iets levert dan een bit aan informatie op. De aanvaller moet dan enige controle hebben over de ontvanger en leest deze informatie bij aankomst. Er is dan totaal geen relatie tussen de aanvaller en het systeem van het slachtoffer terwijl er wel kennis is overgedragen. Verder zal duidelijk zijn dat het lekken van deze gegevens via deze ‘omslachtige weg’ niet erg snel gaat.
Uiteraard probeert men side-channels te vinden voordat ze gegevens kunnen lekken. Code-inspectie is nog steeds de beste manier. Er zijn echter genoeg situaties waarbij dit niet afdoende is. Bijvoorbeeld als er manieren zijn om de code achteraf aan te passen. Dan is code-inspectie niet effectief meer.
Huawei
Het zijn precies deze zorgen die onze overheid heeft als het om netwerkapparatuur van Huawei gaat. En met recht. Uiteraard wordt er onderzoek gedaan naar side-channels en voor de hand liggende technieken worden onderschept. Maar toch, er is een kans dat het zo subtiel gedaan is dat het niet opvalt. En daarom zijn deze zorgen terecht.
Het is dus duidelijk dat als je de hardware niet volledig kunt vertrouwen iets geheims niet heel erg lang geheim kan blijven. Een snellere wisseling van sleutels, doorgaans in de orde van seconden, kan het in ieder geval moeilijker maken een sleutel te laten lekken. Als dit wordt gecombineerd met technieken waarbij sleutels een keten vormen, dan mag er gedurende langere tijd geen enkele sleutel gemist worden. Bij blockchains wordt dit ook toegepast. Het effectief misbruik van gelekte sleutels wordt dan moeilijker of onmogelijk.
Leuk artikel. Kleine correctie: De veiligheid van de door een CA uitgegeven certificaten zijn niet afhankelijk van de geheimhouding van een enkel priemgetal, maar van maar liefst twee priemgetallen!
Met plezier gelezen. Benieuwd naar deel 2 en 3.