Encryptie methodes:
een overzicht

Wat is encryptie?

Er zijn tegenwoordig veel manieren om websites (bijv. met Captcha), accounts (two-factor-authentication) en belangrijke data te beschermen.  Encryptie (versleutelen) is een methode waarbij platte tekst met behulp van een sleutel wordt vertaald in een onbegrijpelijk reeks tekens. Als het goed is, is de inhoud van de versleutelde tekst (cijfertekst) alleen toegankelijk voor hen die de sleutel hebben om hem te kunnen lezen. De termen ‘niet-gecodeerde tekst’ en ‘cijfertekst’ worden gebruikt als er wordt gesproken over encryptie. Behalve tekstberichten kunnen moderne encryptie methodes ook worden toegepast op andere elektronisch verstuurde informatie, zoals spraakberichten, beeldbestanden of programmacodes.

Encryptie moet voorkomen dat anderen ongewenst toegang hebben tot bestanden, drives of directories en is een methode om gegevens vertrouwelijk te versturen. Al in de oudheid werd gebruikgemaakt van encryptie methodes door informatie die moest worden beschermd te coderen. Daarbij werden losse tekens van de niet-gecodeerde tekst, woorden of hele zinnen in een boodschap herschikt (transpositie) of vervangen door alternatieve karaktercombinaties (substitutie).

Om zo’n versleutelde tekst weer te kunnen decoderen, moet de ontvanger de regels kennen waarmee de tekst is versleuteld. Permutaties voor transpositiemethodes worden normaal gesproken uitgevoerd met behulp van een matrix. Om een getransponeerde cijfertekst om te schrijven in een niet-gecodeerde tekst moet de transpositiematrix bekend zijn of gereconstrueerd worden. Bij substitutiemethodes worden de tekens en cijfers uit de niet-gecodeerde tekst ingedeeld in een tabel, in de vorm van een geheim codeboek.

Een van de eerste en eenvoudigste encryptiemethodes is afkomstig van Julius Caesar. Het zogenaamde Caesarcijfer is gebaseerd op mono-alfabetische substitutie. Om zijn militaire correspondentie te beschermen tegen vijandelijke spionnen verschoof de gewiekste veldheer de letters van zijn woorden drie stappen in het alfabet. De encryptiecode was als volgt:

Platte tekst a b c d e f g h i j k l m n o p q r s t u v w x y z
Code: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Het aantal stappen waarmee de tekens worden verschoven, kan bij dit type encryptie worden beschouwd als sleutel. Die wordt niet aangegeven met een getal, maar met de corresponderende letter van het alfabet. Een verschuiving met drie stappen heeft dus ‘C’ als sleutel.

Waar het principe achter het Caesarcijfer relatief eenvoudig te achterhalen is, berusten codes tegenwoordig op meer complexe wiskundige functies, zogenaamde algoritmes, die meerdere substituties en transmutaties combineren en sleutels gebruiken als parameters in de vorm van wachtwoorden of binaire codes. Deze methodes zijn voor cryptoanalisten (codekrakers) beduidend ingewikkelder. Veel gevestigde cryptosystemen gelden met de huidig beschikbare middelen als niet te kraken.


Hoe werkt een encryptiemethode?

Een encryptiemethode bestaat in principe uit twee componenten: een cryptografisch algoritme en tenminste één geheime sleutel. Het algoritme beschrijft de encryptiemethode (bijv. ‘schuif alle letters van het alfabet op’) en de sleutel levert de parameter (bijv. ‘C = drie stappen’). Een encryptie kan dus worden beschreven als een methode waarbij de niet-gecodeerde tekst en een sleutel aan een cryptografisch algoritme worden gegeven en een cijfertekst ontstaat.


encryptie

Digitale sleutels

Moderne encryptiemethodes maken gebruik van digitale sleutels in de vorm van bitreeksen. Een essentieel criterium voor de veiligheid van de encryptie is de lengte van de sleutel in bits. Deze geeft de logaritmische maat aan voor het aantal mogelijke sleutelcombinaties en wordt ook wel de sleutelruimte genoemd. Hoe groter de sleutelruimte, des te weerbaarder de encryptie zal zijn tegen zogenaamde brute force attacks – het kraken van codes door alle mogelijke combinaties uit te proberen.

Om brute force attacks uit te leggen, maken we gebruik van het Caesarcijfer. De sleutelruimte is hier 25 – dat correspondeert met een sleutellengte van minder dan 5 bits. Een codekraker hoeft enkel 25 combinaties te proberen om de niet-gecodeerde tekst te ontcijferen, waardoor het Caesarcijfer dus geen serieus obstakel vormt. Moderne encryptie methodes gebruiken daarentegen sleutels die beduidend meer bescherming bieden. De Advanced Encryption Standard (AES) biedt bijvoorbeeld de mogelijkheid om sleutellengtes van 128, 192 of 256 bits te kiezen. De sleutelruimte van deze methode is daardoor ook evenredig groot.

Met een 128 bits encryptie kunnen 2128 condities worden afgebeeld. Dit correspondeert met meer dan 340 triljard mogelijke combinaties. Wanneer AES met 256 bits werkt, is het aantal mogelijke sleutels meer dan 115 duodeciljard. Zelfs met een geschikte technische uitrusting zou het een eeuwigheid duren om alle mogelijke combinaties uit te proberen. Met de huidige technologie zijn brute force attacks op de sleutelruimte van AES dus niet uitvoerbaar. Volgens Ee Times zou het een supercomputer triljoen jaar kosten om een 128 bits AES-sleutel te kraken, wat langer is dan het universum bestaat.


encryptie

Het principe van Kerckhoffs

Door de sleutellengtes vormen brute force attacks geen serieus gevaar meer voor moderne encryptie methodes. Codekrakers zoeken daarom naar methoden om zwakke plekken in algoritmes te ontdekken, om zo de rekentijd voor het ontcijferen van versleutelde gegevens te reduceren. Een andere aanpak concentreert zich op zogenaamde side channel attacks die de implementatie van een cryptosysteem in een apparaat of de software aanvallen. Het geheimhouden van een encryptiemethode is daarbij eerder contraproductief voor de veiligheid.

Volgens het principe van Kerckhoffs is de veiligheid van een cryptosysteem niet gebaseerd op de geheimhouding van het algoritme, maar van de sleutel. Al in 1883 formuleerde Auguste Kerckhoffs een van de basisprincipes van de moderne cryptografie: om een niet-gecodeerde tekst betrouwbaar te versleutelen, voldoet het om een bekend, goed geschreven wiskundige methode te voorzien van geheime parameters. Aan deze theorie is tot op heden niets wezenlijks veranderd.

Zoals op vele andere gebieden in software-engineering wordt er bij de ontwikkeling van encryptie mechanismes ook vanuit gegaan dat open source niet ten koste gaat van de veiligheid. Het consequente gebruik van het principe van Kerckhoffs leidt er veeleer toe dat fouten in cryptografische algoritmes sneller worden ontdekt, omdat methodes waarvan gehoopt wordt dat ze geschikt zijn, bestand moeten zijn tegen de kritische ogen van de experts.


encryptie

Sleutelexpansie: van wachtwoord naar sleutel

Gebruikers die bestanden willen versleutelen of ontsleutelen (decrypt), komen normaal gesproken niet in contact met sleutels, maar gebruiken een gemakkelijker hanteerbare tekenreeks: het wachtwoord. Veilige wachtwoorden hebben 8 tot 12 tekens, vormen een combinatie van letters, cijfers en speciale tekens en hebben ten opzichte van bitreeksen een belangrijk voordeel: mensen kunnen wachtwoorden zonder al te veel moeite onthouden. De meeste online accounts, bijvoorbeeld voor verschillende social media kanalen, worden beschermd met een wachtwoord.

Wachtwoorden zijn echter niet geschikt als sleutels voor encryptie door hun geringe lengte. Veel encryptie methodes maken daarom gebruik van een tussenstap waarin een wachtwoord ongeacht de lengte wordt omgerekend in een vaste bitreeks volgens het cryptosysteem dat wordt gebruikt. Er zijn ook methodes waarbij de sleutels binnen de technische mogelijkheden toevallig (random) worden gegenereerd.

Een veelvoorkomende methode om sleutels uit wachtwoorden te berekenen is PBKDF2 (Password-Based Key Derivation Function 2). Bij deze methode worden wachtwoorden aangevuld met een pseudo-random reeks, de zogenaamde salt value, en vervolgens met cryptografische hashfuncties op bitreeksen van de gewenste lengte afgebeeld.

Hashfuncties zijn collision-proof one-way functies – berekeningen die relatief eenvoudig kunnen worden gemaakt, maar heel moeilijk terug te draaien zijn. In cryptografie wordt een methode als veilig beschouwd als verschillende hashes zijn toegewezen aan verschillende documenten. Wachtwoorden die in sleutels zijn omgerekend met behulp van one-way functies kunnen alleen worden gereconstrueerd met heel zware rekenprogramma’s. Dit kan worden vergeleken met een telefoonboek: het is gemakkelijk om het juiste telefoonnummer bij een naam te zoeken, maar de naam bij een telefoonnummer zoeken is haast onmogelijk.

Bij PBKDF2 wordt de wiskundige berekening uitgevoerd in meerdere iteraties (herhalingen) om de op deze wijze gegenereerde sleutel te beschermen tegen brute force attacks. De salt value maakt het reconstrueren van een wachtwoord op basis van rainbow tables moeilijker. Dat is een aanvalspatroon waarbij codekrakers opgeslagen hashwaardes bij een onbekend wachtwoord uitsluiten.

Andere methodes voor wachtwoord-hashing zijn scrypt, bcrypt en LM-Hash, hoewel deze laatste gezien wordt als verouderd en onveilig.


encryptie

Het probleem van de verdeling van sleutels

Een centraal probleem van cryptologie is de vraag hoe informatie op de ene plaats kan worden versleuteld en ergens anders kan worden ontsleuteld. Zelfs Julius Caesar werd geconfronteerd met het probleem van de sleutelverdeling. Als hij een versleuteld bericht van Rome naar het Germaanse front wilde sturen, moest hij zeker weten dat de ontvanger de geheime boodschap kon ontcijferen. De enige oplossing: de bode moest niet alleen de cijfertekst, maar ook de sleutel overbrengen. Maar hoe kan een sleutel worden overgebracht zonder het risico dat hij in verkeerde handen valt?

Deze zelfde vraag houdt cryptologen vandaag de dag nog altijd bezig bij de overdracht van versleutelde data op internet. Mogelijke oplossingen zijn geïntegreerd in de ontwikkeling van diverse cryptosystemen en key exchange protocols. Het sleutelverdelingsprobleem van symmetrische cryptosystemen kan worden gezien als de hoofdreden voor de ontwikkeling van asymmetrische encryptie methodes.


Classificatie van encryptie methodes

In de moderne cryptologie wordt onderscheid gemaakt tussen symmetrische en asymmetrische encryptie methodes. De classificatie hiervan is gebaseerd op het gebruik van de sleutel.

Bij symmetrische cryptosystemen wordt één sleutel gebruikt voor zowel de encryptie als de decryptie van versleutelde data. Wanneer twee communicerende partijen versleutelde data uitwisselen, moet er een manier worden gevonden om ook de gezamenlijke sleutel in het geheim te verzenden. Bij asymmetrische cryptosystemen daarentegen heeft iedere communicatiepartner een eigen paar sleutels: een publieke sleutel (public key) en een privésleutel (private key).

Wanneer symmetrische en asymmetrische encryptie methodes worden gecombineerd, wordt gesproken van een hybride methode.


Symmetrische encryptie methodes

Tot in de jaren ‘70 van de vorige eeuw was de encryptie van informatie gebaseerd op symmetrische cryptosystemen, die hun wortels hebben in de antieke methodes, zoals de Caesarcijfers. Het basisprincipe van symmetrische encryptie is dat encryptie en decryptie gebeurt met behulp van dezelfde sleutel. Wanneer twee partijen versleuteld communiceren, moet zowel de afzender als de ontvanger beschikken over een kopie van de gemeenschappelijke sleutel. Om versleutelde informatie te beschermen tegen derden wordt de symmetrische sleutel geheimgehouden. Dit wordt daarom ook wel een private key methode genoemd.

Terwijl klassieke symmetrische encryptie methodes werken met letters om niet-gecodeerde tekst om te schrijven in cijfertekst, versleutelen computerondersteunde encrypties op het niveau van bits. Er wordt daarbij onderscheid gemaakt tussen stroom encryptie en blok encryptie.

  • Stroom encryptie: elk teken of elke bit van de niet-gecodeerde tekst wordt verbonden met een teken of bit van de sleutelstroom en vertaald in een versleuteld output-teken.
  • Blok encryptie: de tekens of bits die worden versleuteld, worden gecombineerd in blokken van een vaste lengte en afgebeeld als een encryptie met een vaste lengte.

Veelgebruikte encryptie methodes voor symmetrische cryptosystemen zijn relatief eenvoudige handelingen, zoals substituties en transposities die bij moderne methodes worden gecombineerd en in meerdere opeenvolgende rondes (iteraties) op de niet-gecodeerde tekst worden toegepast. Bovendien zijn additions, multiplications, modular arithmetic en XOR-operations in moderne symmetrische encryptie algoritmes geïntegreerd.

Bekende symmetrische encryptie methodes zijn de inmiddels achterhaalde Data Encryption Standard (DES) en zijn opvolger Advanced Encryption Standard (AES).


encryptie

Data Encryption Standard (DES)

DES is een symmetrische encryptie methode die in de jaren 70 van de vorige eeuw is ontwikkeld door IBM en in 1977 is gestandaardiseerd door het Amerikaanse National Institute of Standards and Technology (NIST). Naar de toen geldende maatstaven was DES een veilige, computerondersteunde encryptie methode die de basis vormde voor de moderne cryptografie. Op de standaard zit geen patent meer, maar hij geldt tegenwoordig wel als verouderd door de geringe sleutellengte van 64 bits (effectief slechts 56 bits). Al in 1994 werd het cryptosysteem gekraakt met enkel twaalf HP-9735 workstations en 50 dagen rekenen. Met de huidige stand van de techniek kan een DES-sleutel met een brute force attack binnen enkele uren worden ontcijferd.

Het symmetrische algoritme werkt als blok encryptie op bitlevel. De niet-gecodeerde tekst wordt opgedeeld in blokken van 64 bits die individueel met een 64 bits sleutel worden versleuteld. Zo wordt de 64 bits platte tekst vertaald in 64 bits cijfertekst. Omdat elk achtste bit van de sleutel fungeert als pariteitsbit (controlebit) zijn er effectief slechts 56 bits beschikbaar voor de encryptie.

Het DES-encryptie algoritme is een zogenaamd Feistel netwerk en is gebaseerd op een combinatie van substituties en transposities die in 16 iteraties worden uitgevoerd. De methode, genoemd naar de IBM-medewerker Horst Feistel, kan in vier stappen worden beschreven:

  1. Ingangspermutatie: het 64 bits bevattende niet-gecodeerde tekstblok wordt onderworpen aan een ingangspermutatie die de volgorde van de bits verandert. Het resultaat van deze permutatie wordt geschreven in twee 32 bits registers. Dit resulteert in een linker blokhelft (L) en een rechter blokhelft (R).
  2. Sleutelpermutatie: de 56 bits van de sleutel die relevant zijn voor het versleutelen, worden ook onderworpen aan een permutatie en vervolgens opgedeeld in twee grote blokken van 28 bits (C en D). Voor elk van de 16 iteraties wordt uit de beide sleutelblokken C en D een rondesleutel gegenereerd. Daarvoor worden de bits van beide blokhelften cyclisch met 1 of 2 bits naar links verschoven. Dit moet garanderen dat elke encryptie ronde een andere rondesleutel bevat. Daarna worden de beide blokhelften C en D afgebeeld op een 48 bits rondesleutel.
  3. Encryptie rondes: Elke encryptie ronde bevat de stappen a) tot en met d). Per ronde worden steeds een blokhelft R en een rondesleutel in de encryptie meegenomen. De blokhelft L blijft om te beginnen buiten beschouwing.
    • Expansion: de blokhelft R wordt door middel van expansie uitgebreid met een 48 bits blok. Daarvoor worden de 32 bits van de blokhelft als deel van de expansie opgedeeld in 4 bits groepen en volgens het volgende schema gedeeltelijk gedupliceerd en gepermuteerd:
      #
      DES-expansie, Wikipedia: https://de.wikipedia.org/wiki/Datei:Des_expansion.svg
    • XOR-verbinding van datablok en rondesleutel: in elke encryptie ronde wordt een 48 bits expanded blok R gelinkt met een 48 bits rondesleutel door middel van een XOR-operation. Het resultaat van de XOR-verbinding is weer een 48 bits blok.
    • S-boxen (substitutie boxen): na de XOR-operation wordt het 48 bits blok opgedeeld in acht 6 bits blokken, gesubstitueerd met acht 4 bits blokken met behulp van S-boxen en daarna gecombineerd tot een 32 bits blok. Het resultaat van de substitutieboxen wordt weer onderworpen aan een permutatie.
    • XOR-verbinding van R-blok en L-blok: na elke encryptie ronde wordt het resultaat van de S-boxen door middel van XOR verbonden met het tot nu toe ongebruikte L-blok. Het resultaat is een 32 bits blok dat als nieuw R-blok in de tweede encryptieronde plaatsneemt. Het R-blok van de eerste ronde dient als L-blok van de tweede ronde.
  4. Uitgangspermutatie: wanneer alle 16 encryptierondes zijn doorlopen, worden L- en R-blok gecombineerd tot een 64 bits blok en onderworpen aan een uitgangspermutatie die tegenovergesteld is aan de ingangspermutatie. De niet-gecodeerde tekst is nu versleuteld.

De volgende afbeelding toont een schematische voorstelling van het DES-algoritme. De XOR-links zijn afgebeeld als rode cirkels met een wit kruis.

encryptie
Vertaald van: DES-algoritme / publiek domein, Wikipedia: https://de.wikipedia.org/wiki/Datei:DES_resize.png

De ontsleuteling van een met DES versleutelde cijfertekst volgt hetzelfde schema, maar in omgekeerde volgorde.

Een groot punt van kritiek op DES is de geringe sleutellengte van 56 bits die resulteert in een verhoudingsgewijze kleine sleutelruimte. Deze lengte is niet meer opgewassen tegen een brute force attack met de rekencapaciteit van huidige computers. Bovendien wordt de methode van sleutelpermutatie met 16 nagenoeg identieke rondesleutels beoordeeld als te zwak.

Met Triple-DES (3DES) is een variant van DES ontwikkeld, waarbij de encryptie methode wordt doorlopen in drie opeenvolgende rondes. Ook de effectieve sleutellengte van 3DES bedraagt effectief slechts 112 bits en voldoet nog steeds niet aan de huidige minimumstandaard van 128 bits. Bovendien vraagt 3DES beduidend meer rekenwerk dan DES.

De Data Encryption Standard is daarom voor het grootste deel vervangen. Als opvolger geldt het eveneens symmetrische encryptie algoritme Advanced Encryption Standard.


encryptie

Advanced Encryption Standard (AES)

In de jaren 90 van de vorige eeuw werd duidelijk dat de meest gebruikte encryptiestandaard DES niet langer opgewassen was tegen de technische ontwikkelingen. Een nieuwe encryptiestandaard was nodig. Als opvolger zetten de ontwikkelaars Vincent Rijmen en Joan Daemen het naar hen genoemde Rijndael algoritme op – een methode die zich op grond van zijn veiligheid, flexibiliteit en performance in een openbare aanbesteding handhaafde en eind 2000 door de NIST is gecertificeerd als Advanced Encryption Standard (AES).

Net als DES deelt ook AES de niet-gecodeerde tekst die moet worden versleuteld op in blokken. De standaard ondersteunt 128, 192 en 256 bits sleutels. In plaats van 64 bits blokken, maakt AES echter gebruik van beduidend grotere 128 bits blokken die met behulp van een substitutie-permutatie netwerk (SPN) in meerdere opeenvolgende rondes worden versleuteld. Ook de DES-opvolger maakt bij elke encryptieronde gebruik van een nieuwe rondesleutel die recursief is afgeleid van de uitgangssleutel en door middel van XOR met het te versleutelen datablok wordt verbonden. Het encryptieproces kan grofweg worden verdeeld in vier stappen:

  1. Sleutelexpansie: net als DES maakt ook AES in elke encryptie ronde gebruik van een nieuwe rondesleutel. Die wordt afgeleid van de uitgangssleutel door middel van recursie. Daarbij wordt de lengte van de uitgangssleutel uitgebreid, waardoor het mogelijk is om het benodigde aantal van 128 bits rondesleutels af te beelden. Elke rondesleutel is gebaseerd op een deel van de uitgebreide uitgangssleutel. Het aantal benodigde rondesleutels is gelijk aan het aantal encryptierondes (R) inclusief slotronde plus een rondesleutel voor de voorronde (aantal rondesleutels = R + 1).
  2. Voorronde: in de voorronde wordt het 128 bits inputblok verplaatst naar een tweedimensionale tabel (Array) en middels XOR met de eerste rondesleutel verbonden (KeyAddition). De tabel bevat 4 regels en 4 kolommen. Elke cel bevat dus één byte (8 bits) van het te versleutelen blok.
  3. Encryptierondes: het aantal encryptierondes hangt af van de gebruikte sleutellengte: 10 rondes bij AES128, 12 rondes bij AES192 en 14 rondes bij AES256. In elke encryptieronde wordt gebruikgemaakt van de volgende operations:
    • SubBytes: SubBytes is een monoalfabetische substitutie. Elke byte in het blok dat wordt versleuteld, wordt vervangen door een equivalent met behulp van een S-box.
    • ShiftRows: in ShiftRow transformatie worden de bytes in de cellen van de Array (zie voorronde) cyclisch naar links verschoven.
    • MixColumns: met MixColumns gebruikt het AES-algoritme een transformatie waarbij de data binnen de kolommen van de Array worden gemengd. Deze stap is gebaseerd op een herberekening van iedere individuele cel. Daarvoor worden de kolommen van de Array onderworpen aan een matrix multiplicatie en de resultaten worden verbonden met behulp van XOR.
    • KeyAddition: aan het eind van elke encryptieronde vindt weer een KeyAddition plaats. Die is net als in de voorronde gebaseerd op een XOR-verbinding van het datablok met de actuele rondesleutel.
  4. Slotronde: in tegenstelling tot de voorgaande rondes bevat de slotronde geen MixColumns transformaties, maar alleen de SubBytes, ShiftRows en KeyAddition operations. Het resultaat van de slotronde is de versleutelde tekst.

De ontsleuteling van AES-versleutelde data is gebaseerd op de investering van het encryptie algoritme. Dit heeft niet alleen betrekking op de volgorde van de stappen, maar ook op de operations ShiftRow, MixColumns en SubBytes, waarvan de richting ook wordt omgekeerd.

AES heeft een bewezen hoog niveau van beveiliging. Tot op heden is er geen praktisch uitvoerbare aanval bekend. Brute force attacks zijn inefficiënt vanwege de sleutellengte van minstens 128 bits. Bovendien zorgen operations, zoals ShiftRows en MixColumns voor het optimaal mengen van de bits: uiteindelijk is elke bit afhankelijk van de sleutel. Daarnaast overtuigt het cryptosysteem door een eenvoudige implementatie en een hoge snelheid. AES wordt o.a. gebruikt als encryptiestandaard voor WPA2, SSH en IPSec. Het algoritme wordt ook gebruikt voor het versleutelen van gecomprimeerde data-archieven, zoals 7-Zip of RAR.

De toegang van derden tot AES-versleutelde data is beveiligd zolang de sleutel geheim blijft. Omdat een en dezelfde sleutel wordt gebruikt voor het versleutelen en ontsleutelen, heeft het cryptosysteem net als elke andere symmetrische methode te maken met een sleutelverdelingsprobleem. Het veilige gebruik van AES is daardoor beperkt tot toepassingen waarbij geen sleutel hoeft te worden uitgewisseld of waarbij dit via een veilig kanaal kan worden geregeld.

De versleutelde communicatie op internet vereist echter dat data op de ene computer worden versleuteld en op een andere weer worden ontsleuteld. Hiervoor zijn asymmetrische cryptosystemen ontwikkeld waarmee veilig kan worden uitgewisseld of die werken zonder uitwisseling van een gemeenschappelijke sleutel.

Alternatieven voor AES zijn de symmetrische cryptosystemen MARS, RC6, Serpent en Twofish die zijn gebaseerd op blokencryptie en naast Rijndael ook finalisten waren van de AES-aanbesteding. Ook Blowfish, de voorganger van Twofish, wordt nog altijd gebruikt. Daarnaast trekt de stroomencryptie Salsa20 nog altijd de aandacht. Deze encryptie is in 2005 is ontwikkeld door Daniel J. Bernstein en behoort tot de finalisten van het Europese eSTREAM-project.


Asymmetrische encryptiemethodes

Terwijl bij symmetrische cryptosystemen aan beide kanten van de versleutelde communicatie dezelfde sleutel wordt gebruikt, genereren de beide partners van een asymmetrisch versleutelde communicatie elk een sleutelpaar. Elke deelnemer aan de communicatie beschikt dus over twee sleutels: een publieke en een privésleutel. Om versleuteld te kunnen communiceren, moet elke partij zijn publieke sleutel delen. Dit gebeurt normaal gesproken via sleutelservers, er wordt dan gesproken van een public key methode. De privé sleutel blijft daarentegen geheim. Dit is de kracht van asymmetrische cryptosystemen: anders dan bij symmetrische encryptie methodes wordt de geheime sleutel nooit afgegeven.

Publieke sleutels worden in een asymmetrische encryptie gebruikt voor de encryptie. Bovendien worden hiermee digitale handtekeningen gecontroleerd en gebruikers geverifieerd. Privé sleutels worden echter gebruikt voor het ontsleutelen, het genereren van digitale handtekeningen of voor authenticatie tegenover andere gebruikers.

Een voorbeeld:

Gebruiker A wil gebruiker B een versleuteld bericht sturen. Daarvoor heeft A de publieke sleutel van B nodig. Met de publieke sleutel van B kan A een bericht zo versleutelen dat het met de privé sleutel van B kan worden ontsleuteld. Afgezien van B kan niemand het bericht lezen. Zelfs A kan na de encryptie het bericht niet meer ontsleutelen.

Het voordeel van asymmetrische encryptie is het principe dat iedereen de publieke sleutel van gebruiker B kan gebruiken om berichten te versleutelen, maar dat die alleen door B kunnen worden ontsleuteld met zijn geheime sleutel. Omdat alleen de publieke sleutel wordt uitgewisseld, is er geen kanaal nodig dat beveiligd is tegen afluisteren of manipuleren.

Het nadeel van deze encryptie methode is echter dat B niet zeker weet of het versleutelde bericht echt van A afkomstig is. Want in theorie zou ook een derde gebruiker (C) de publieke sleutel van B kunnen gebruiken om berichten te versleutelen – bijvoorbeeld om malware te verspreiden. Bovendien kan A niet zeker weten of de publieke sleutel echt van B is. Ook C zou een publieke sleutel kunnen maken en doen alsof die van B is om berichten van A naar B te onderscheppen. Voor asymmetrische encryptie is daarom een mechanisme nodig waarmee een communicatiepartner de authenticiteit van de ander kan controleren.

Het probleem kan worden opgelost met digitale certificaten en handtekeningen.

  • Digitale certificaten: om asymmetrische encryptie methodes te beveiligen, kunnen communicatiepartners de authenticiteit van hun publieke sleutels laten bevestigen door een officiële certificeringsinstantie. Een veelgebruikte standaard voor public key certificering is X.509. Die wordt bijvoorbeeld gebruikt bij de overdracht van TLS/SSL-versleutelde data via HTTPS of bij de encryptie van e-mails via S/MIME.
  • Digitale handtekeningen: waar digitale certificaten worden gebruikt om publieke sleutels te verifiëren, worden digitale handtekeningen gebruikt om de afzender van een versleuteld bericht betrouwbaar te identificeren. Een privé sleutel wordt gebruikt om een handtekening te genereren. Vervolgens verifieert de ontvanger deze handtekening met behulp van de publieke sleutel van de afzender. De authenticiteit van de digitale handtekening kan worden beveiligd door een hiërarchisch gestructureerde public key infrastructure (PKI). Een decentraal alternatief voor hiërarchische PKI is het zogenaamde Web of Trust (WOT), een netwerk waarin gebruikers elkaar direct en indirect verifiëren. De eerste wetenschappelijke publicatie van een asymmetrische encryptiemethode vond plaats in 1977 door de wiskundigen Rivest, Shamir en Adleman. De RSA-methode die is genoemd naar de ontwikkelaars is gebaseerd op one-way functies met valluik en kan worden gebruikt voor het versleutelen van data en als methode voor digitale handtekeningen.

encryptie

Rivest, Shamir, Adleman (RSA)

RSA is een van de veiligste en best beschreven public key methodes. Het idee om een encryptie te realiseren met een publieke sleutel voor het versleutelen en een geheime voor het ontsleutelen, stamt van de cryptologen Whitfield Diffie en Martin Hellman. Zij publiceerden in 1976 met de Diffie-Hellman sleuteluitwisseling een methode waarbij twee communicatiepartners via een onveilig kanaal het samen eens kunnen worden over een geheime sleutel. De onderzoekers baseerden zich op Merkles Puzzle, ontwikkeld door Ralph Merkle. Er wordt daarom ook wel gesproken van de Diffie-Hellman-Merkle sleuteluitwisseling (DHM).

De cryptologen maakten gebruik van wiskundige one-way functies die weliswaar eenvoudig te implementeren zijn, maar alleen kunnen worden omgekeerd met een behoorlijke rekencapaciteit. De naar hen vernoemde sleuteluitwisseling wordt nog altijd gebruikt om geheime sleutels voor symmetrische cryptosystemen uit te wisselen. Een andere verdienste van dit duo is het concept van het valluik. In de publicatie van de Diffie-Hellman sleuteluitwisseling werden al verstopte afkortingen gebruikt waarmee de inversie van een one-way functie kan worden versneld. Diffie en Hellman leverden geen direct bewijs, maar hun theorie van het valluik moedigde vele cryptologen aan om zelf ook onderzoek te gaan doen.

Ook Rivest, Shamir en Adleman zochten naar afkortingen voor one-way functies – oorspronkelijk om de valluiktheorie te weerleggen. Maar hun onderzoek ontwikkelde zich in een andere richting en mondde uit in de encryptiemethode die uiteindelijk naar hen is vernoemd. Tegenwoordig geldt RSA als het eerste wetenschappelijk gepubliceerde algoritme dat het mogelijk maakt om versleutelde data zonder uitwisseling van een geheime sleutel over te brengen.

RSA maakt gebruik van een algoritme dat is gebaseerd op het vermenigvuldigen van grote priemgetallen. Over het algemeen is het geen probleem om twee priemgetallen met 100, 200 of 300 cijfers te vermenigvuldigen, maar tot op heden is er geen efficiënt algoritme dat de oplossing van de omgekeerde berekening hiervan in de priemfactoren kan ontleden. De priemfactorisering kan worden verduidelijkt met een voorbeeld:

Als je de priemgetallen 14.629 en 30.491 vermenigvuldigt, krijg je 446.052.839. Dit kan maar door vier getallen worden gedeeld: door 1, door zichzelf en door de beide priemgetallen die zijn vermenigvuldigd. Wanneer je de eerste twee mogelijkheden wegstreept, omdat elk getal kan worden gedeeld door 1 en door zichzelf, krijg je dus de uitgangswaardes 14.629 en 30.491.

Dit schema vormt de basis van de RSA-sleutelgeneratie. Zowel de publieke als de privésleutel vormen twee getallenparen:

Publieke sleutel: (e, N)

Privésleutel: (d, N)

N is de zogenaamde RSA-module. Die zit in beide sleutels en is het product van twee random gekozen, zeer grote priemgetallen p en q (N = p x q).

Om de publieke sleutel te genereren, heb je daarnaast e nodig: een getal dat onder bepaalde voorwaarden random wordt gekozen. Wanneer je N en e combineert, krijg je de publieke sleutel die iedere deelnemer in de communicatie tot zijn beschikking heeft.

Om de privé sleutel te genereren, heb je naast N ook d nodig. d is een waarde die het resultaat is van de random gegenereerde priemgetallen p en q en het toevalsgetal e, die op basis van de phi-functie van Euler (φ) met elkaar worden verrekend.

Welke priemgetallen in de berekening van de privésleutel worden gebruikt, moet geheim blijven om de veiligheid van de RSA-encryptie te garanderen. Het product van de beide priemgetallen kan echter in de publieke sleutel in niet-gecodeerde tekst worden gebruikt, omdat men ervan uitgaat dat er vandaag de dag geen efficiënt algoritme bestaat dat het product van zeer grote priemgetallen in een relevante tijd kan ontleden in zijn factoren. Het is dus niet mogelijk om p en q uit N te berekenen, tenzij de berekening kan worden afgekort. Zo’n valluik vormt de waarde d die alleen bekend is bij de bezitter van de privé sleutel.

De veiligheid van het RSA-algoritme is in hoge mate afhankelijk van de technische vooruitgang. De rekencapaciteit van computers verdubbelt ongeveer elke twee jaar en het is dus niet uitgesloten dat er binnen afzienbare tijd een efficiënte methode beschikbaar is om priemfactoren van deze grootte te ontleden. In dat geval biedt RSA de mogelijkheid om het algoritme aan te passen aan de technische ontwikkeling door nog grotere priemgetallen te gebruiken voor de berekening van de sleutel.

Voor een veilig gebruik van de RSA-methode worden aanbevelingen gedaan door het Amerikaanse National Institute of Standards and Technology dat het aantal bits specificeert en N-waardes voorstelt voor verschillende veiligheidsniveaus en verschillende sleutellengtes.


encryptie

ID-gebaseerde public key methode

Het zwakke punt van asymmetrische encryptie methodes is de authenticatie van gebruikers. In klassieke public key methodes heeft een publieke sleutel geen enkele relatie met de identiteit van zijn gebruikers. Wanneer het een derde lukt om zich met zijn eigen publieke sleutel voor te doen als een van de partijen die deelneemt aan de versleutelde dataoverdracht kan het hele cryptosysteem worden verwijderd zonder dat het algoritme of een privésleutel direct hoeft te worden aangevallen. In 1984 stelde Adi Shamir, mede-ontwikkelaar van RSA, daarom een ID-gebaseerd cryptosysteem voor dat is gebaseerd op de asymmetrische aanpak, maar de zwakheden daarvan probeert te compenseren.

In identiteit-gebaseerde encryptie (‘identity based encryption’, IBE) wordt de publieke sleutel van een communicatiepartner niet gegenereerd met een afhankelijkheid van de privésleutel, maar berekend uit een uniek ID. Afhankelijk van de context kan dit bijvoorbeeld met een e-mailadres of een domein. Zodoende is de authenticatie van een publieke sleutel door officiële certificeringsinstanties niet meer nodig. Hun plaats wordt echter ingenomen door de zogenaamde private key generator (PKG). Dit is een centraal algoritme waarmee de ontvanger van een versleuteld bericht een bij zijn identiteit horende decryptiesleutel kan laten uitgeven.

De theorie van ID-gebaseerde encryptie lost dus een basisprobleem op van asymmetrische cryptosystemen, maar levert wel twee andere veiligheidslekken op: een centraal kritiekpunt is de vraag hoe de privé decryptiesleutel van de PKG naar de ontvanger van het versleutelde bericht wordt overgedragen. Hier doet zich het welbekende sleutelverdelingsprobleem voor. Een ander nadeel van de ID-gebaseerde methode is het feit dat de PKG naast de ontvanger van een versleuteld bericht weer een instantie is die de decryptiesleutel kent. Dit is dus per definitie geen privésleutel en deze kan daarom gemakkelijk worden misbruikt. Theoretisch heeft de PKG de mogelijkheid om alle berichten ongeautoriseerd te ontsleutelen. Dit kan worden vermeden door het sleutelpaar met opensource software op je eigen computer te genereren.

De bekendste ID-gebaseerde methode stamt van Dan Boneh en Matthew K. Franklin.


Hybride encryptie methodes

Hybride encryptie is het verbinden van symmetrische en asymmetrische cryptosystemen voor de dataoverdracht op internet. Het doel van deze combinatie is om de zwakheden van het ene systeem te compenseren met de sterke punten van het andere.

Symmetrische cryptosystemen, zoals AES (Advanced Encryption Standard) worden met de huidige stand van de techniek gezien als veilig en maken het mogelijk om ook grote datahoeveelheden snel en efficiënt te verwerken. Het ontwerp van het algoritme is gebaseerd op een gedeelde privésleutel die veilig uitgewisseld moet worden tussen ontvanger en afzender van een versleuteld bericht. Maar gebruikers van de symmetrische methode zien zich gesteld voor het probleem van de sleutelverdeling. Dit kan worden opgelost door asymmetrische cryptosystemen. Methodes als RSA zijn afhankelijk van een strikte scheiding van publieke en privésleutels waardoor de overdracht van een privésleutel wordt voorkomen.

RSA biedt echter alleen betrouwbare bescherming tegen crypto-analyses wanneer de sleutellengte minstens 1.976 bits is. Dit resulteert in lange berekeningen waardoor het algoritme ongeschikt is voor het versleutelen en ontsleutelen van grote datahoeveelheden. Bovendien is de cijfertekst die moet worden verstuurd na een RSA-encryptie beduidend langer dan de niet-gecodeerde tekst.

In hybride encryptie methodes worden asymmetrische algoritmes daarom niet gebruikt om gebruikersdata te versleutelen, maar om de overdracht van een symmetrische session key te beveiligen via een onbeschermd publiek kanaal. Dit maakt het weer mogelijk om een tekst die met behulp van symmetrische algoritmes is versleuteld, efficiënt te ontsleutelen.

Het proces van een hybride encryptie kan in drie stappen worden beschreven:

  1. Sleutelbeleid: bij hybride methodes wordt de symmetrische encryptie van een bericht ingekaderd door een asymmetrische encryptiemethode. Daarvoor moeten zowel asymmetrische (a) als symmetrische sleutels (b) worden gegenereerd:
    • Voor de versleutelde dataoverdracht genereren beide communicatiepartners eerst een asymmetrisch sleutelpaar: een publieke sleutel en een privésleutel. Vervolgens wordt de publieke sleutel uitgewisseld – bij voorkeur beveiligd door een authenticatiemechanisme. Het asymmetrische sleutelpaar is voor het versleutelen en ontsleutelen van een symmetrische session key en wordt over het algemeen meerdere keren gebruikt.
    • Het versleutelen en ontsleutelen van de platte tekst gebeurt met de symmetrische session key. Deze wordt door de afzender van een bericht bij elke encryptie opnieuw gegenereerd.
  2. Encryptie: wanneer een (omvangrijk) bericht veilig via internet moet worden verstuurd, genereert de afzender eerst een symmetrische session key waarmee de gebruikersdata worden versleuteld. Als dat is gedaan, wordt de publieke sleutel van de ontvanger gebruikt voor de asymmetrische encryptie van de session key. Zowel de gebruikersdata als de symmetrische sleutel zijn in versleutelde vorm beschikbaar en kunnen veilig worden verzonden.
  3. Ontsleuteling: wanneer een versleutelde tekst samen met de versleutelde session key bij de ontvanger aankomt, gebruikt die zijn privésleutel om de session key asymmetrisch te ontsleutelen. Die wordt weer gebruikt om de symmetrisch versleutelde gebruikersdata te ontsleutelen.

Volgens dit schema kan een efficiënte encryptiemethode worden gerealiseerd waarmee zelfs omvangrijke gebruikersdata snel en veilig kunnen worden ver- en ontsleuteld. Omdat alleen een korte session key asymmetrisch wordt versleuteld, zijn de verhoudingsgewijze lange berekeningstijden van asymmetrische algoritmes bij de hybride encryptie niet van belang. Het sleutelverdelingsprobleem van de symmetrische encryptiemethode beperkt zich door de asymmetrische encryptie van de session key tot het probleem van de gebruikersauthenticatie. Dit kan bij uitsluitend asymmetrische cryptosystemen worden opgelost door digitale handtekeningen en certificaten.

Hybride encryptie methodes worden gebruikt in de vorm van IPSec waarbij de beveiligde communicatie plaatsvindt via onbeveiligde IP-netwerken. Het Hypertext Transfer Protocol Secure (HTTPS) gebruikt met TLS/SSL ook een hybride encryptieprotocol dat symmetrische en asymmetrische cryptosystemen combineert. Daarnaast is de implementatie van de hybride methode de basis voor encryptiestandaards als Pretty Good Privacy (PGP), GnuPG en S/MIME die worden gebruikt voor de encryptie van e-mails.

Een veelvoorkomende combinatie van hybride encryptie methodes is de symmetrische encryptie van gebruikersdata via AES en de aansluitende asymmetrische encryptie van de session key door middel van RSA. De session key kan ook worden geregeld met de Diffie-Hellman methode. Die kan dienen als Ephemeral Diffie-Hellman Forward Secrecy, maar is vatbaar voor man-in-the-middle aanvallen. Het Elgaman cryptosysteem is een vervanger voor het RSA-algoritme. Deze in 1985 door Taher Elgamal ontwikkelde public key methode is ook gebaseerd op het idee van de Diffie-Hellman sleuteluitwisseling en wordt in de actuele versie van het encryptieprogramma PGP gebruikt.

  • Gecertificeerde veiligheid

    Gecertificeerde veiligheid
  • Beste hostingbedrijf

    Beste hostingbedrijf
  • MKB Best Choice

    MKB Best Choice
  • Professionele support

    Professionele support
  • Hosted in Germany

    Hosted in Germany