Informatie geeft macht. Of het nu gaat om de nationale veiligheid of om de woorden van een overspelige partner, de openbaring van berichten en teksten kan het leven van mensen veranderen en het succes van naties bepalen. Vandaar dat er door de eeuwen heen zoveel energie is gestoken in het versleutelen van berichten en documenten. Maar hoe zijn we tot onze moderne versleutelingstechnieken gekomen, hoe werken ze, en hoe veilig zijn ze?

Vroege geheimschriften

Het eerste geheimschrift waar de meeste mensen kennis mee maken is de Caesarcode. Deze substitutiecode werkt met twee kopieën van het alfabet die langs elkaar worden gelegd, waarbij de tweede kopie wordt verschoven ten opzichte van de eerste. Dus als A wordt vervangen door E, wordt B  F, enzovoort. Voor iemand die het bericht onderschept, lijkt het onleesbaar. Het bericht kan nog verwarrender gemaakt worden door in plaats van het gewone alfabet Cyrillische of Griekse lettertekens of symbolen te gebruiken.
 
Ceaser Cipher - Encryption  article
Bij de Caesarcode worden de letters enkele plaatsen opgeschoven in het alfabet.
E vervangt hier A, F vervangt B, enzovoort.
 
Mx'w e psx sj jyr avmxmrk evxmgpiw jsv Ipioxsv!
Voorbeeld van een Caesarcode die u hier kunt proberen te ontcijferen.

Een andere belangrijke kwestie bij een geheimschrift is het gemak waarmee afzender en ontvanger een bericht kunnen coderen en decoderen. En natuurlijk moeten beide kanten hun codewiel wel in dezelfde stand zetten. Als die bekend is, kunnen beide kanten veilig en relatief gemakkelijk communiceren.

De code kraken

Natuurlijk is zo’n geheimschrift vrij gemakkelijk te kraken. Maar enkele dingen moeten wel alvast bekend zijn, voordat u daaraan kun beginnen. Om te beginnen moet u er achter zien te komen in welke taal de gecodeerde tekst is geschreven. Zonder die informatie is het onmogelijk om te weten welke woorden u in het bericht kunt verwachten. Daarna kunt u patroon- en frequentieanalyse gaan toepassen om de code te kraken. In het Engels komen bijvoorbeeld veel woorden van drie letters voor (the, and, why, how). En er zijn ook veel voorkomende lettercombinaties (qu, th, ck, ly, ing). Sommige letters komen vaak voor (e, t, a, o, i, enz.) en andere juist weinig (x, q, z).

Dus met potlood en papier (en wat geduld) kunt u patroonherkenning gebruiken om te bepalen welke letter is vervangen door welke andere letter in de code. Als de tekst lang genoeg is, kan frequentieanalyse helpen om te raden welke letters staan voor e, t, a, en andere veelgebruikte letters en combinaties.
 
Freq Analysis - sml. Encryption article
In het histogram links ziet u de frequentie van letters in het Engels.
Het histogram rechts geeft de frequentieanalyse weer van een met Caesarcode gecodeerde tekst.
Het lijkt erop dat alle letters in de tekst 5 plaatsen naar rechts geschoven zijn (A naar F, B naar G).
Er zijn hier enkele aandachtspunten. Ten eerste: degene die het bericht ontcijfert hoeft niet te weten op welke manier het versleuteld is. Weet hij dat wel, dan versnelt dat het proces, maar uiteindelijk vindt hij zowel het bericht als de versleutelingsmethode. Ten tweede: we hebben het bij deze methode nog helemaal niet gehad over het gebruik van computers. Met voldoende tijd en ervaring met talen werden codes al gekraakt, lang voordat er mechanische rekenmachines bestonden.
 

Geheimhouding biedt geen veiligheid

Wat we hieruit geleerd hebben, is dat het geheimhouden van de manier waarop een bericht versleuteld wordt de code niet krachtiger maakt. Zoals het in het Engels zo kernachtig wordt uitgedrukt: obscurity is not security. En dan gaat het niet alleen om de manier van coderen zelf, maar ook om de manier waarop het coderen is geïmplementeerd. Je kunt het beste slot van de wereld hebben, maar als de deur is gemaakt van karton en de kamer een glazen raam heeft, dan zijn er voor aanvallers gemakkelijker manieren om binnen te komen.

Veel van de beveiligingssystemen die in de afgelopen decennia zijn gekraakt, bleken een kwetsbare implementatie te hebben, het feit dat die implementatie geheim was, kon de kraak niet voorkomen. Enkele voorbeelden zijn KeeLoq voor draadloze autosleutels en GSM-encryptie.
 

In de jaren zeventig van de vorige eeuw, toen meer en meer computers werden gebruikt, werd het duidelijk dat die veel betere mogelijkheden voor gecodeerde communicatie boden dan alles wat in vroeger tijden werd gebruikt. In plaats van elke letter van een bericht te versleutelen, kon een document in binaire vorm worden gecodeerd met de nullen en enen van de opgeslagen data. Hoofdletters, kleine letters en interpunctie konden allemaal worden gecodeerd. De data kon op elke manier worden bewerkt, men hoefde zich niet meer te beperken tot 7-bits ASCII-tekens. De standaardisatie was daarbij wel een uitdaging. Als twee mensen een versleuteld bericht wilden delen, moesten ze wel hetzelfde algoritme gebruiken. Als er verschillende algoritmen worden toegepast, wordt de communicatie moeilijk.

Het National Bureau of Standards in de Verenigde Staten besloot deze handschoen op te pakken. IBM had een commercieel product, Lucifer, dat voldoende veiligheid bood. Het was krachtig genoeg om aanvallen te doorstaan met de toen, en in de nabije toekomst, beschikbare rekenvermogens. Dit werd de Data Encryption Standard, DES, die werkte met een sleutel van 56 bits. Maar er was nog een uitdaging. Het algoritme was niet geheim, maar de beide partijen hadden wel een manier nodig om de sleutel voor de codering uit te wisselen. Hoe kunnen we op een veilige manier coderingssleutels uitwisselen?

Het uitwisselen van sleutels

In zijn boek, The Code Book: The Secret History of Codes and Codebreaking, merkt Simon Singh op dat “Het probleem van het uitwisselen van sleutels cryptografen altijd heeft dwarsgezeten.” In de Tweede Wereldoorlog werden codeboeken verspreid, waarmee Enigma-gebruikers veilig konden communiceren. Zelfs met DES moesten de Verenigde Staten hun sleutels verspreiden op ponsbanden of floppy disks naar medewerkers in de hele wereld. Men dacht dat het probleem van het uitwisselen van sleutels onoplosbaar was.

Gelukkig waren er twee mannen, Whitfield Diffie en Martin Hellman, die daar niet in geloofden. Samen denkend over verschillende mogelijke oplossingen, kwamen ze op een idee. Bij dat idee werd een geheime boodschap verstuurd in een kistje. De afzender, die we meestal Alice noemen bij het beschrijven van coderingsmethoden, stopt haar bericht in het kistje en sluit dat af met een hangslot, waarvan alleen zij de sleutel heeft. Ze stuurt het kistje naar de ontvanger, die we meestal Bob noemen. Natuurlijk kan Bob het kistje niet openen, want Alice heeft de sleutel van haar hangslot.

Maar nu komt de slimme truc. Bob zet een eigen hangslot, waarvan alleen hij de sleutel heeft, op het kistje. Dan stuurt hij het kistje terug naar Alice. Zij verwijdert nu haar hangslot. Het bericht is dan nog steeds veilig dankzij Bob’s hangslot. Tenslotte stuurt ze het kistje terug naar Bob, die zijn eigen hangslot opent en het bericht van Alice kan lezen.
 
Alice Bob Padlock. Encryption article
Diffie en Hellman bedachten een manier waarop twee mensen een geheim kunnen delen,
zonder eerst een coderingssleutel uit te wisselen.

Van hangsloten naar wiskunde

Dit proces bewijst dat het mogelijk is om een bericht op een veilige manier over te dragen, maar toch is er nog een onopgelost probleem: hoe moeten we dat idee wiskundig implementeren? De oplossing werd gevonden in eenrichtingsfuncties: functies die gemakkelijk te berekenen zijn, maar waarbij het moeilijk is om van de uitkomst terug te rekenen naar de input. Dit werd opgelost met modulaire rekenkunde. Daarmee kunnen Alice en Bob in het openbaar sleutels uitwisselen, maar alleen zij kunnen hun berichten coderen en decoderen met behulp van hun privésleutels. En toch moest er nog een sleutel worden gedeeld.

Daar kwam verandering in door de inspanningen van Rivest, Shamir en Adleman, die werkten bij het MIT Laboratory for Computer Science. Zij ontdekten dat het met behulp van priemgetallen mogelijk was sleutels te maken in paren. Mensen die een bericht naar, bijvoorbeeld, Alice willen sturen, kunnen gebruikmaken van haar openbare sleutel. Alleen Alice kan die berichten decoderen met behulp van haar privésleutel. Het eindresultaat van dit werk was de RSA public-key cryptografie.

Hoe veilig zijn onze coderingsalgoritmen?

We horen nog steeds nieuws over ‘gekraakte’ codes, maar meestal wordt daarbij met behulp van social engineering toegang verkregen tot wachtwoorden en sleutels. De manier van coderen hoeft niet gestolen te worden. Hoe lang hebben we nog de tijd, totdat onze hedendaagse versleutelingstechnologie wordt gekraakt?

Cryptografie vertrouwt op technieken die met de huidige computertechnologie te veel rekenkracht eisen om binnen een redelijke tijd te kraken. Toen DES werd ontwikkeld, in de jaren zeventig, werd het als erg veilig beschouwd. Maar al halverwege de jaren negentig werd de “Deep Crack”-hardware ontwikkeld, waarmee een DES-key binnen 4,5 dagen was te vinden. Deze werkte met een groot aantal parallel werkende sleuteltesters en technieken voor het versnellen van het vinden van de gebruikte sleutel.

Vandaag de dag wordt het AES-algoritme, Advanced Encryption Standard, gebruikt voor versleuteling. Dat is, ondanks veel onderzoek, tot nu toe niet gekraakt. Maar nu quantum computing zijn schaduw vooruit werpt, bestaat er een kans dat het binnenkort ook gekraakt wordt. Dankzij werk van Peter Shor bestaat er al een quantum-algoritme dat het bepalen van priemfactoren vereenvoudigt. Er is dan ook al een race gaande om post-quantum versleutelingsalgoritmen te bedenken, zodat onze geheimen ook in de toekomst… geheim blijven.

Vertaling: Evelien Snel