Van otp naar AES: Encryptie wordt steeds veiliger

Redactie WINMAG Pro
Encryptie, het is een van de standaard features geworden op ieder apparaat. Maar wat is encryptie precies? Hoe heeft het zich de afgelopen jaren ontwikkeld en waar zijn we nu? Het is tijd om eens dieper in te gaan op de techniek waar we bijna alles mee beveiligen.

Encryptie is het versleutelen van gegevens op basis van een bepaald algoritme. Door de data te coderen kun je gegevens veilig uitwisselen met iemand via het internet of een ander medium waar ook derden toegang toe hebben. De bedoeling is dat deze derden de gegevens niet kunnen lezen, alleen degene met de juiste sleutel kan de data zien. De gegevens worden versleuteld met een methode die gebaseerd is op de bits, dus het is niet zozeer de tekst uit bijvoorbeeld een e-mail die gecodeerd wordt. Als je de juiste sleutel hebt, wat meestal een groot getal van enkele tientallen decimalen is, kun je de data weer decoderen en zo alles bekijken.

One-Time Pad

Een van de eerste vormen van encryptie was One-time pad (otp), een techniek die in 1882 ontwikkeld werd. De methode werd echter vooral gebruikt bij telexverkeer en het systeem daarvoor is ontwikkeld door Gilbert Vernam in 1917. Bij otp werd elk teken van de tekst uit de telex vercijferd met een teken op een sleutelband. Deze sleutelband bestond uit een 5-bits sleutelcode geponst in een geluste papieren strook. Later werden deze codes volledig willekeurig en even lang als het verzonden bericht. Zowel de zender als de ontvanger had zo'n band met exact dezelfde sleuteltekens. Bij het verzenden liep de telexband parallel aan de papieren strook met sleuteltekens, waardoor de tekst versleuteld werd. De ontvanger liet de papieren strook parallel lopen aan de cijfertekst (de versleutelde tekst) om zo alles weer te decoderen.

Onpraktisch hierbij was dat de sleutel maar één keer gebruikt mocht worden voor één bericht en na gebruik vernietigd moest worden. Wel was het ontzettend veilig: otp is, als het op de juiste manier gebruikt wordt, niet te kraken. Elke letter is te vercijferen naar een willekeurige letter, waardoor je geen gebruik kunt maken van een brute force attack. Iedere mogelijke sleutel kan namelijk in een andere oplossing resulteren.

Eerste stap naar encryptie voor computers

In de Tweede Wereldoorlog werden er allerlei machines gemaakt om berichten te versleutelen. Een bekend voorbeeld hiervan is de Schlüsselmaschine E, beter bekend als Enigma, in die tijd gebruikt door de Duitsers. De tekenset van zowel de originele tekst en de gecodeerde tekst bestond uit 26 tekens: de hoofdletters van het alfabet. Andere tekens werden niet gebruikt. Op de machine kon je diverse knoppen indrukken die de combinatie van het elektrische circuit en de mechanische beweging (de vercijfering) vertalen in oplichtende lampen. Dit is de vercijferde letter. Enigma had een enorm aantal mogelijkheden qua sleutels, wat het ontcijferen van de verzonden teksten ingewikkeld maakte. De Duitsers maakten dit nog ingewikkelder: zij werkten iedere dag met een andere instelling, wat de dagsleutel genoemd werd. Vervolgens kreeg ook ieder bericht een eigen sleutel mee, de berichtsleutel. Om een bericht te versturen moest de machine op de dagsleutel ingesteld staan. Daarna werd de berichtsleutel verzonden en de machine op deze sleutel ingesteld. Daarop volgde het bericht. Hoewel de machine door zowel de Polen als de Britten gekraakt werd, is de Britse versie het bekendste. Alan Turing, een Britse wetenschapper, maakte een machine – de Bombe – die de berichten kon ontcijferen. Hier zat echter wel wat speurwerk bij. Zo ontdekten de onderzoekers dat een letter nooit in zichzelf vercijferd werd, een a werd dus nooit omgezet in een a. Daarnaast was het gemakkelijk om de berichten van de Duitsers te voorspellen, dankzij hun strikte uniformiteit. Daardoor was het mogelijk om te voorspellen op welke plaats een bepaald stukje tekst kan komen. De machine die Turing maakte om de berichten geautomatiseerd te ontcijferen, was de eerste stap richting elektronische decodering.

Data encryption standard

Begin jaren zeventig werd de cryptografische versleuteling Lucifer ontwikkeld door Horst Feistel van IBM. Hiervan werd de Data Encryption Standard (DES) afgeleid. DES werkt met een sleutellengte van 64-bits, waarvan er acht controlebits zijn. De informatie die versleuteld moet worden, wordt opgedeeld in datablokken van 64-bits die in zestien stappen op bepaalde manieren door elkaar geschoven worden. Vaak werd er per stap en per groep van bits de sleutel gewisseld. In 1977 werd DES de standaard voor alle encryptie, maar later bleek dat deze methode niet zo veilig was. Probleem is dat wanneer je iets invoert met een bepaalde sleutel, de uitvoer met dezelfde sleutel ook altijd gelijk blijft. Daarnaast wordt er in blokken van 64-bits gewerkt, waardoor je deze kunt overschrijven met een ander blok van 64-bits, zodat een deel van de boodschap wordt herhaald. Daar zijn extra maatregelen voor genomen, genaamd 3DES of Triple DES. De sleutellengte werd vergroot, door middel van een schakeling waarbij drie DES-algoritmen achter elkaar werden geplaatst. Feit blijft dat de standaard-DES gemakkelijk te kraken is, zeker als overheid zijnde. Het combineren van rekenkracht is eenvoudig te realiseren, zeker als anderen hun computer mee laten doen. Daardoor kun je de versleuteling kraken en het bericht alsnog lezen. In 1995 bleek dan ook dat DES niet meer betrouwbaar en veilig is.

Advanced Encryption Standard

Na DES kwam de Advanced Encryption Standard (AES), welke we vandaag de dag nog steeds gebruiken. Deze standaard is tot stand gekomen dankzij een wedstrijd. Op 2 januari 1997 hield het Amerikaanse Nationaal Instituut voor Standaardisatie en Technologie een wedstrijd om een vervanger voor DES te ontwikkelen. Onder meer IBM en RSA Security deden mee, maar zij wonnen niet. In 2001 kwam Rijndael, een algoritme ontwikkeld door de Belgische Vincent Rijmen en Joan Daemen uit Leuven, als winnende techniek uit de bus. Het hedendaagse AES is een deelgroep van het Rijndael-algoritme. Hierbij is de blokgrootte 128 bits en de sleutel 128, 192 of 256 bits. Rijndael kan echter meer aan dan AES, dit algoritme kan werken met alle blokgroottes en sleutels die een veelvoud zijn van 32 bit. Daar geldt wel een minimum van 128 bit en een maximum van 256 bit bij. AES is in theorie te kraken, maar dat duurt miljarden jaren. Daarentegen blijkt wel uit de documenten van Edward Snowden dat de NSA aan het onderzoeken is of AES te kraken is. Maar tot nu toe zijn er geen praktische aanvallen bekend om deze encryptie te kraken. Deze techniek wordt dan ook nog steeds gebruikt, bijvoorbeeld als standaardversleuteling voor je desktop.

Hashing

Hashing is een techniek waarbij er door middel van een hash algoritme een hashcode berekend wordt van een blok gegevens. Hieruit kun je vervolgens niet meer opmaken wat de originele data was, maar als je de gegevens hebt kun je de hashcode opnieuw berekenen en controleren of deze overeenkomt met de eerder verkregen hascode. Voordeel is dat de hashcode vaak een stuk kleiner is dan de originele data, waardoor je kunt bij houden of een bepaald document eerder gezien is zonder dat je het document hoeft op te slaan. Hashing is eigenlijk geen encryptie. Het grote verschil is dat hashing maar één kant op werkt (het versleutelen van gegevens) en encryptie twee kanten op (coderen en decoderen). Daarentegen gebruikt hashing wel dezelfde technieken als encryptie, en is het vaak een onderdeel van versleutelingsprotocollen. Deze techniek wordt veel gebruikt bij het opslaan van wachtwoorden. Een password wordt vaak versleuteld bewaard, zodat kwaadwillenden het niet kunnen lezen als ze bij een bestand met wachtwoorden komen. Voor gebruikers heeft dit weinig gevolgen, de computer hoeft alleen te controleren of je inderdaad het juiste wachtwoord hebt opgeslagen. Dit is ook mogelijk door de hashcode opnieuw te berekenen en te vergelijken met de opgeslagen code.

Is encryptie echt zo veilig?

Wat de encryptie van nu (AES, hashing etcetera) zo veilig maakt, is dat je in principe de data wel kunt decoderen zonder de juiste sleutel, maar dat dit zoveel rekenwerk kost dat het praktisch onmogelijk is. Het grote gevaar zit hem echter in het onderscheppen van de sleutel. Als je gecodeerde gegevens wilt uitwisselen met een ander, moet je diegene de juiste sleutel geven om alles te decoderen. Hackers kunnen deze sleutel onderscheppen en zo alsnog de gegevens ontcijferen. Gebruik je encryptie echter op persoonlijke devices als je notebook, smartphone of usb-stick, dan is dit niet van toepassing. Hier heb je immers alleen zelf je sleutel voor nodig (bijvoorbeeld een wachtwoord, en die is te beveiligen met hashing), dus deze hoeft niet uitgewisseld te worden. Natuurlijk is het wel mogelijk dat kwaadwillenden je wachtwoord kunnen achterhalen via bijvoorbeeld keyloggers of andere malware. Helemaal veilig is het dus nooit. Asymmetrische encryptie is misschien wel de veiligste soort, maar daar heb je weer een enorme rekenkracht voor nodig. Erg praktisch is dit dus niet. Maar eigenlijk is niets in de digitale wereld voor de volle honderd procent veilig, de kans op een hack blijft altijd bestaan. Je hoeft het ze echter niet makkelijker te maken dan dat het is, dus zorg altijd voor een goed beveiligde computer.

Redactie WINMAG Pro
Door: Redactie WINMAG Pro
Redactie

Redactie WINMAG Pro

Redactie