Het kraken van codes is een van de belangrijkste taken van inlichtingendiensten. Onlangs werd bekend dat de National Security Agency (NSA) erin was geslaagd om versleutelde berichten te openen. Dit roept de vraag op wat encryptie (versleuteling) precies is en hoe het werkt.

Wat is encryptie?

Een groot deel van de informatie die je als gebruiker dagelijks op internet zet is Deze versleuteling heet encryptie. Door deze versleuteling kan niet iedereen zomaar je e-mails of whatsappberichten bekijken.

Als je een website bezoekt, maak je verbinding met een server die ervoor zorgt dat je de website kunt bekijken. Deze informatie wordt opgedeeld in kleine pakketjes die afzonderlijk worden versleuteld.

Het werkt ook de andere kant op: ook als gebruiker stuur je de server versleutelde informatie. Bijvoorbeeld door het invullen van je inloggegevens of het plaatsen van berichten op Facebook.

Encryptie vindt plaats op verschillende niveaus. Niet alleen de datapakketjes, maar ook je en je router zijn apart beveiligd. De belangrijkste momenten waarop je data worden beveiligd zijn als je computer met een server communiceert en de internetbrowser ervoor zorgt dat de datapakketjes worden voorzien van een adres en een encryptievorm die de server kan ontcijferen.

Hoe werkt encryptie?

Al lang voor de komst van internet gebruikten mensen vormen van encryptie om te voorkomen dat jan en alleman hun correspondentie konden lezen. Zo gebruikte Julius Caesar een vorm van geheimschrift om veilig met zijn veldheren te communiceren, ook wel bekend als Caesar’s cipher of substitutiecode. Elke letter in zijn brieven verving hij door een andere letter die een vast aantal plaatsen verder of terug in het alfabet stond.

Als je encryptie gebruikt waarbij je drie letters in het alfabet opschuift, wordt dit bijvoorbeeld:

-Terugtrekken naar het westen

-Whuxmwuhnnhq qddu khw zhvwhq

Dit is een van de simpelste vormen van encryptie en erg gemakkelijk te ontcijferen. Gelukkig is de huidige encryptie veel lastiger te kraken en wordt er behalve van letters ook gebruikt gemaakt van cijfers en andere karakters. Je computer vertaalt data naar bits, een verzameling nullen en enen. 256 bits = 2^256 karaktercombinaties. Zeg maar: héél veel combinaties.

Voor het versleutelen en het ontcijferen wordt dezelfde sleutel gebruikt. Het wordt daarom wel symmetrische encryptie genoemd. Het nadeel hiervan is dat de je de sleutel om de encryptie te ontcijferen veilig bij de ontvanger moet zien te krijgen. Anders gezegd: Caesar moest zijn veldheren op een veilige manier laten weten welke vorm van geheimtaal hij gebruikte en hoeveel letters in het alfabet hij opschoof.

Daarom wordt er tegenwoordig vaak ook gebruik gemaakt van asymmetrische encryptie, public key encryption genoemd. Het achter deze encryptie maakt hierbij voor elke gebruiker twee sleutels aan. Een publieke sleutel die je met al je contacten deelt en een privésleutel die je voor jezelf houdt. Deze sleutels zijn aan elkaar gekoppeld. Als iemand jou een versleutelde e-mail wil sturen, versleutelt hij het bericht met jouw publieke sleutel. Wanneer je het bericht ontvangt zie je allerlei willekeurige karakters waar je geen wijs uit wordt. Maar omdat jij de enige bent die de juiste privésleutel bezit, kan je het bericht ontcijferen.

Maar hoe gebruik je dat dan?

Symmetrische en asymmetrische encryptie wordt gebruikt om de informatie die je over het net verzendt te beveiligen. De veiligheid van de sleutels hangt af van het algoritme en de lengte van de sleutels. Het nadeel van asymmetrische encryptie is dat het ontcijferen veel rekenkracht en daardoor veel tijd kost. Het nadeel van symmetrische sleutels is de overdracht van de geheime sleutel die onveilig kan verlopen. Om beide nadelen weg te nemen worden symmetrische en asymmetrische encryptie vaak gecombineerd.

Dat gebeurt onder meer bij het Transport Layer Security (TLS) protocol, dat standaard ingebouwd is in de meeste internetbrowsers. Bij het bezoeken van een website, bijvoorbeeld Facebook, communiceert de computer met een server. Hoe deze communicatie precies plaatsvindt is vastgelegd in een protocol, het HTTP- of HTTPS-protocol.

HTTP is vaak niet zichtbaar in de adresbalk van je browser. HTTP is een onbeveiligde verbinding en daardoor kan je data relatief makkelijk onderschept worden. HTTPS is een met TLS beveiligde verbinding, die sinds een aantal jaar standaard door veel websites met gevoelige persoonsinformatie wordt gebruikt. Als je op het groene slotje naast de adresbalk klikt kun je precies zien welke encryptie TLS gebruikt. In het geval van Facebook is dat bijvoorbeeld een symmetrische sleutel van 128 bit die weer beveiligd is met een asymmetrische sleutel van 2048 bit.

Ter vergelijking: als je veilig met ene Bob wil corresponderen, stuur je Bob een open kluis die fungeert als publieke sleutel. Jij hebt als enige de (privé)sleutel die op deze kluis past. Als Bob jou een bericht wil sturen, stuurt hij deze kluis (1) terug met daarin de (symmetrische) sleutel van een andere kluis (2). Alleen door de tweede kluis te openen kan je Bobs bericht lezen.

De publieke sleutels die jij en Bob elkaar sturen, maken deel uit van een certificaat. Een certificaat bevat de naam van de afzender, de publieke sleutel, de geldigheidsduur, een lijst met alle ongeldige certificaten en de naam van de autoriteit die het certificaat heeft afgegeven. Het gebruik van certificaten zorgt ervoor dat je de identiteit van de afzender kan vaststellen. Hiermee voorkom je dat iemand jouw gegevens onderschept door zich voor te doen als bijvoorbeeld de server van een bank, het zogenoemde phishing. Als een certificaat niet is goedgekeurd, word je meestal gewaarschuwd door je browser.

Hoe kraakt de NSA onze berichten?

Niet. De NSA heeft de meeste encryptievormen niet gekraakt, maar simpelweg omzeild. Dit doet ze door samen te werken met encryptieontwikkelaars om zo encryptiestandaarden te verzwakken en geheime achterdeuren in software in te bouwen. Dit gebeurde bij encryptieontwikkelaar RSA. Dit bedrijf ontwikkelt zeer veilige asymmetrische encryptie op basis van gigantisch lange In december 2013 dat RSA 10 miljoen dollar van de NSA zou hebben ontvangen om een zwak algoritme als standaard te gebruiken in de encryptietool BSafe.

In 2007 dat dit algoritme beveiligingsproblemen kende. Het Amerikaanse National Institute of Standards and Technology (NIST), dat de encryptiestandaarden bepaalt, zou in samenwerking met de NSA het algoritme achter BSafe hebben goedgekeurd. Door de NSA werd er een achterdeur aangebracht in de encryptie, waardoor de geheime sleutels niet willekeurig worden aangemaakt en ze voor de inlichtingendienst makkelijk te achterhalen zijn. Het omzeilen van de encryptie zou niet nodig zijn als de NSA wist hoe de achterliggende algoritmen werken. Dat zou ze in staat stellen om te voorspellen welke privésleutel aan een publieke sleutel is gekoppeld.

Ra, ra, wat is de sleutel?

Een andere methode die de NSA gebruikt om encryptie te omzeilen, is het raden van encryptiesleutels met grote rekenkracht. Dit kan met supercomputers soms een paar jaar duren. Door de encryptiesleutels te vergroten en regelmatig te veranderen blijven de makers van encryptiesoftware de almaar uitdijende rekenkracht van inlichtingendiensten voor. In 1977 daagde encryptieontwikkelaar RSA de wereld uit om een sleutel van 428 bit met brute rekenkracht te raden. De ontwikkelaar schatte dat dit met de toenmalige rekenkracht 40.000 biljoen jaar zou duren. Zeventien jaar later werd de sleutel geraden. Inmiddels wordt er veel gebruik gemaakt van 1024 bit RSA-sleutels en raadt het NIST aan om over te stappen op sleutels van 2048 bit. Ook de NSA kan deze (nog) niet raden.

Om zwakheden in encryptie te voorkomen, moeten we minder afhankelijk worden van encryptiebedrijven die angstvallig hun broncodes geheim houden. Het is niet voor niks dat cryptografen pleiten voor open source-encryptie waar de broncode openbaar is. Open source-encryptie is niet per definitie onkraakbaar, maar het zorgt er wel voor dat de broncode door miljoenen mensen te controleren is op zwakheden.

De bewering dat de NSA bijna alle encryptie op het internet zou hebben gekraakt is dus onjuist. Nog steeds kunnen we vertrouwen op Helaas is het gebruik van encryptie een gedeelde verantwoordelijkheid. Niet alleen encryptieontwikkelaars en bedrijven, maar ook jij en ik kunnen het leven van inlichtingendiensten zuur maken door ze te overspoelen met versleutelde berichten.