In de cryptografie vind je heel wat specifieke terminologie terug. We hebben een woordenlijst gemaakt om je alvast op weg te helpen in de lettersoep van de cryptografische algoritmen. Cryptografie is in feite wiskunde. Pure, eenvoudige, zuivere wiskunde. Wiskunde creëerde de algoritmen die de basis vormen voor alle soorten encryptie. En encryptie vormt de basis voor privacy en beveiliging op het internet. Daarom houden we van wiskunde. Zelfs als die een beetje ingewikkeld is. Algoritmen moeten zo worden ontwikkeld dat ze tegen computers werken. Naarmate computers slimmer worden, worden algoritmen zwakker en moeten we op zoek naar nieuwe oplossingen. Cryptografie moet mee evolueren om criminelen geen kans te geven.
Hoe doen we dat? Eerst en vooral moet je een cryptosysteem ontwikkelen dat zowel vertrouwelijk als authentiek is. Dit cryptosysteem staat in voor het aanmaken van de key(s) die worden gebruikt voor het versleutelen en ontsleutelen van gegevens of berichten. Door de jaren heen werden een aantal handtekeningalgoritmen ontwikkeld om deze keys aan te maken. Omdat computers steeds krachtiger worden, zijn een aantal daarvan intussen verouderd.
Voordat we een overzicht geven van de belangrijkste en meest gebruikte algoritmen in de cryptografie, overlopen we eerst een aantal termen die regelmatig voorkomen in dit artikel.
Brute Force-aanval
Een brute force-aanval of een 'woordenboekaanval' is een trial-and-error-methode om de private key van een versleuteld gegevenspakket te onderscheppen. De trial-and-error gebeurt met een computer, dus hoe groter de rekenkracht, hoe meer 'pogingen' kunnen worden ondernomen in een korte periode. Naarmate de rekenkracht en prestaties groter worden, wordt het eenvoudiger om de private key te vinden, tenzij u de key langer maakt, waardoor het aantal mogelijkheden gaat toenemen.
Keylengtes
Keygrootte of keylengte verwijst naar het aantal bits in een key gebruikt door een cryptografisch algoritme. Enkel de juiste key kan een gecodeerde tekst (output) ontsleutelen tot een niet-versleutelde tekst (input). Naarmate de CPU krachtiger wordt, is er minder en minder tijd nodig om een encryptiekey te hacken. Daarom zijn keys steeds langer moeten worden. De limiet was jarenlang 40 bits, maar vandaag zien we keylengtes tot 4096 bits in de cryptografie.
Block sizes
Sommige algoritmen gebruiken 'block ciphers' (blokvercijfering) om gegevens in blokken (groepen bits met een vaste lengte) te versleutelen en ontsleutelen. Er bestaat een relatie tussen de blokgrootte en de hoeveelheid gegevens die kan worden versleuteld zonder blokken te dupliceren. De achterliggende reden daarvoor uitleggen zou ons te ver leiden, maar het is belangrijk te weten dat de huidige aanbeveling is om blokken van minstens 128 bits te gebruiken.
Algoritmen met symmetrische key
Een algoritme met een symmetrische key (ook gekend als een algoritme met een geheime key) gebruikt het concept van een slot en sleutel om niet-versleutelde tekst te versleutelen en gecodeerde tekst te ontsleutelen. Voor zowel het versleutelen als het ontsleutelen van het bestand wordt dezelfde 'sleutel' gebruikt. Deze worden verder ingedeeld in 'stream ciphers' en 'block ciphers'. Een 'stream cipher' (stroomvercijfering) is een manier van vercijferen waarbij klare tekst met een pseudowillekeurige cijferstroom bit voor bit in cijfertekst wordt omgezet. 'Block ciphers' nemen het aantal bits en versleutelen deze bloksgewijs (gekend als ronden), waarbij de klare tekst wordt getransformeerd naar een blok aan cijfertekst, zodat deze een veelvoud van de blokgrootte is.
Het algoritme zelf is niet geheim maar de afzender en ontvanger van een bericht moeten beide een kopie van de geheime key op een veilige plaats hebben. Het gebruik van dezelfde key is een van de nadelen van cryptografie met een symmetrische sleutel omdat iedereen die de key in handen krijgt, uw gegevens kan ontsleutelen.
DES
De Data Encryption Standard of DES was, en is waarschijnlijk nog steeds, een van de bekendste algoritmen in de moderne cryptografie. Vandaag wordt deze doorgaans als onveilig beschouwd. DES werd in de jaren 1970 ontwikkeld door IBM en werd later overgenomen door het National Bureau of Standards (NBS) en National Security Agency (NSA). De betrokkenheid van de NSA bij de ontwikkeling lag aan de basis van controversiële geruchten over achterpoortjes en leidde tot wijdverbreide kritiek. DES werd pas in 1976 goedgekeurd als cryptografische standaard en gepubliceerd in FIPS.
In de jaren 1990 leek het berekenen van 72 biljard mogelijke keys voor een 56-bits DES-key bijzonder onwaarschijnlijk. Dit zou het geval geweest zijn voor één computer, maar in 1997 lukte het een groep computerwetenschappers onder leiding van Rocke Verser om met duizenden vrijwillige computers DES te kraken binnen 24 uur, en wonnen hij en zijn team de DES-uitdaging van 10.000 dollar.
Sindsdien werd DES versterkt met nieuwe updates onder de namen double-DES en triple-DES, een vorm van vercijfering met meerdere lagen zodat elk gegevensblok drie keer ontsleuteld zou moeten worden. Triple-DES wordt soms nog gebruikt, maar AES (zie verder) is intussen de nieuwe standaard geworden.
Nog in gebruik? – DES en double-DES worden niet meer gebruikt, maar triple-DES met drie keys wordt nog steeds aanbevolen als algoritme in NIST SP 800-57. Het is veel trager in gebruik dan het AES-algoritme, maar wordt nog steeds gebruikt in de sector van elektronische betalingen. Het wordt ook gebruikt in Microsoft OneNote en Outlook 2007 om gebruikersinhoud en systeemgegevens te beschermen en de browsers Firefox en Mozilla Thunderbird in CBC-modus om gebruikersgegevens voor websiteverificatie te versleutelen bij gebruik van een masterwachtwoord.
AES
De Advanced Encryption Standard of AES werd ontwikkeld door het National Institute of Standards and Technology (NIST) in 2001. AES wordt gebruikt door de Amerikaanse overheid met keylengtes van 128, 192 en 256 bits.
AES heeft een vrij eenvoudig wiskundig kader dat het volgens sommigen kwetsbaar maakt voor aanvallen. De theoretische XSL-aanval werd aangekondigd in 2002 en sindsdien hebben beveiligingsonderzoekers zoals Bruce Schneier manieren gevonden om delen van het algoritme te hacken. Het is echter belangrijk te weten dat Bruce Schneier in zijn artikel zelf stelt dat er geen reden tot paniek is omdat ze slechts 11 van de volle 4 ronden van AES-256 ontcijferd hebben, wat 270 pogingen heeft gekost. Bovendien moet de cryptograaf toegang hebben tot de versleutelde tekst met de bijbehorende meerdere sleutels, waardoor AES nog steeds een grote veiligheidsmarge heeft, maar niet zo groot als aanvankelijk gedacht.
Nog in gebruik? – Ja! AES wordt vandaag nog veel gebruikt vanwege zijn betere verwerkingscapaciteit en de mogelijkheid om gebruikt te worden met verschillende soorten hardware zoals smartcards en zeer krachtige computers.
MARS
Nadat DES te zwak bleek te zijn, startte NIST een open aanbesteding, beter gekend als het Advanced Encryption Standard Process, tussen 1997 en 2000 om een nieuwe en verbeterde block cipher te vinden. MARS was een van de finalisten dankzij zijn gelaagde, gecompartimentaliseerde benadering om de technologie bestand te maken tegen toekomstige ontwikkelingen op het vlak van cryptografie en CPU-kracht.
MARS ondersteunt blokken van 128 bits en variabele keylengtes op een aantal vaste en gemengde ronden en is uitstekend bestand tegen cryptografische aanvallen. Critici beweerden dat subkeys met lange reeksen enen en nullen mogelijk hebben geleid tot een eenvoudige en doeltreffende aanval op MARS.
Nog in gebruik? – 21 van 23 ronden van MARS werden gebroken door Bruce Schneier en John Kelsey in 2004.
IDEA
Het International Data Encryption Algorithm (IDEA), oorspronkelijk de Improved Proposed Encryption Standard (IPES) genoemd, werd ontworpen door James Massey van ETH Zurich onder een onderzoekscontract bij de Hasler Foundation, nu Ascom Tech AG, en werd voor het eerst besproken in 1991. IDEA was een beperkte herziening van de Proposed Encryption Standard (PES), bedoeld als vervanger van de DES.
IDEA is nu vrij van patenten en kan dus volledig vrij worden gebruikt, maar op de naam zelf rust wel nog een handelsmerk. Het werkte op basis van een 64-bits blok met een 128-bits key en is nog steeds een optioneel algoritme in de OpenPGP-standaard. Bruce Schneier was zeer lovend over dit algoritme in 1996 tot de patenten het gebruik bemoeilijkten en de snelheid van het algoritme moest onderdoen voor moderne technologie.
IDEA’s algoritme met 8,5 ronden werd voor het eerst gebroken in 2011 met een meet-in-the-middle-aanval en onafhankelijk in 2012 met een narrow-bicliques-aanval. In mei 2005 kondigde MediaCrypt een opvolger van IDEA aan, met de naam IDEA NXT.
Nog in gebruik? – Niet algemeen gebruikt, maar nu vrij van patenten voor gebruik in toepassingen.
RC 2
Rivet’s cipher, Ron’s code of, meer algemeen, RC-algoritmen werden uitgevonden door Ron Rivest. Hoewel ze allemaal dezelfde achternaam delen, zijn de algoritmen erg verschillend. Voor dit artikel zullen we alle namen afzonderlijk bespreken.
RC2, dat Ron Rivest ontwikkelde in 1987, is een 64-bits block cipher met variabele keylengtes en 18 ronden, die zeer ongebalanceerd zijn Feistel-netwerk (16 ronden op één type en twee ronden op een ander).
Nog in gebruik? – Nee. Het wordt afgeraden om dit algoritme te gebruiken. Het is kwetsbaar voor een related-key-aanval met 234 gekozen klare teksten.
RC4
RC4 werd in 1987 ontwikkeld door Ron Rivest. Aanvankelijk was dit een vakgeheim tot het werd gepubliceerd in de mailinglijst van Cypherpunks in 1994. Na de bekendmaking in de nieuwsgroep sci-crypt, werd dit algoritme snel gebroken door Bob Jenkins. Het algoritme werd nooit officieel vrijgegeven door RSA Security, maar het werd gebruikt in een aantal encryptieprotocollen en standaarden zoals WEP in 1997, WPA in 2003, SSL in 1995 en TLS in 1999, tot het werd verboden in alle versies van TLS RFC 7465 in 2015.
Nog in gebruik? – Nee. Het wordt afgeraden om dit algoritme te gebruiken.
RC5
Ron Rivest ontwikkelde RC5 in 1994 met als doel op alle vlakken variabel te zijn. Blokgroottes kunnen variëren van 32, 64 tot 128 bits en keygroottes van 0 tot 2040 bits en ronden van 0 tot 255. De oorspronkelijke aanbeveling voor parameters was blokken van 64 bits, keys van 128 bits en 12 ronden.
Nog in gebruik? – Distributed.net werken aan brute-force-aanvallen op RC5. Ze hebben de 56-bits key gekraakt in 250 dagen en de 64-bits key in 1.757 dagen. Ze werken nog steeds aan de 72-bits key, waardoor deze nog steeds veilig in gebruik is.
RC6
RC6 werd afgeleid van RC5 door Ron Rivest en zijn collega's. Het werd ontwikkeld om te voldoen aan de eisen van de Advanced Encryption Standard-wedstrijd en eindigde als een van de vijf finalisten. Het heeft een blokgrootte van 128 bits en ondersteunde keygroottes van 128, 192, 256 bits en maximaal 2040 bits. RC6 gebruikt, net als RC5, gegevensafhankelijke rotaties, modulaire toevoeging en XOR-bewerkingen. Het algoritme werd niet gekozen omdat volgens de website van RSA Security het algoritme nog niet vrij van royalty's was.
Nog in gebruik? – Uit gelekte informatie van de NSA bleek dat het werd gebruikt in implantaten in 2016. Daarnaast blijkt dat voor RC6 nog twee patenten gelden in de VS: US 5724428 A en US 5835600 A, maar deze verlopen tussen 2015 en 2017.
Blowfish
Blowfish is een symmetrische block cipher ontwikkeld door Bruce Schneier ter vervanging van DES en IDEA. Deze gebruikt variabele keylengtes van 32 bits tot 448 bits, een blokgrootte van 64 bits en 16 ronden, en was een van de eerste ongepatenteerde en licentievrije block ciphers (en is dat nog steeds). Serge Vaudenay, de Franse cryptograaf, vond een manier om zwakke keys te gebruiken in plaintext-aanvallen om 14 van de 16 ronden te achterhalen.
Blowfish heeft ook kritiek gekregen omdat het traag is in bepaalde toepassingen en kwetsbaar is voor verjaardagsaanvallen in HTTPS.
Nog in gebruik? – Nee. Hoewel het intussen bekend is dat dit algoritme kwetsbaar is voor Sweet32-aanvallen, verjaardagsaanvallen en plaintext-aanvallen, gebruiken sommige toepassingen het nog steeds, bijvoorbeeld voor het versleutelen van wachtwoorden. Bruce Schneier beveelt nu het gebruik van Twofish aan.
Twofish
Twofish is een opvolger van Blowfish die werd gepubliceerd in 1998. Met een blokgrootte van 128 bits, keylengtes tot 256 bits en 16 ronden, werd dit algoritme een van de vijf finalisten van de Advanced Encryption Standard-wedstrijd, maar het werd niet gekozen voor standaardisatie. Het was iets geavanceerder dan Blowfish omdat het kon worden geïmplementeerd op zowel hardware en smartcards als grote microprocessors.
Bruce Schneier en het team dat Twofish ontwikkelde, bood een beloning van $ 10.000 voor wie dit algoritme kon kraken tijdens de eerste ronde van AES-evaluatie. In 1999 wonnen Sean Murphy en Fauzan Mirza de prijs voor hun paper "An Observation on the Key Schedule of Twofish".
Nog in gebruik? – Ja. Het kan nog steeds vrij van patenten worden gebruikt.
Threefish
Threefish werkte met blokken van 256 bits, 512 bits en 1024 bits met dezelfde keygroottes als het blok en tot 80 ronden. Threefish werd in 2008 gecreëerd als onderdeel van de Skein Hash Function, een van de vijf finalisten van de wedstrijd voor SHA-3-hashfuncties van het NIST. Threefish werd geprezen voor zijn snelheid; Threefish-512 kan data versleutelen met 6,1 blokcycli per byte op een 64-bits machine.
Nog in gebruik? – Ja. Het kan nog steeds vrij van patenten worden gebruikt. In oktober 2010 werd echter een aanval gepubliceerd die 53 van de 72 ronden van Threefish-256 kon kraken en 57 van de 72 ronden in Threefish-512, dus het kon risicovol zijn om Threefish te gebruiken.
Serpent
Serpent nam ook deel aan de Advanced Encryption Standard-wedstrijd en behaalde de tweede plaats na Rijndael (nu gekend als AES). Serpent werd in 1998 ontwikkeld door Ross Anderson, Eli Buham en Lars Knudsen. Het heeft een blokgrootte van 128, 192 of 256 bits met een bloklengte van 128 bits en 32 ronden. Rijndael won het van Serpent omdat de jury vond dat dit algoritme efficiënter kan worden geïmplementeerd in software.
In 2001 slaagden Eli Burham, Orr Dunkelman en Nathan Keller erin om 10 van de 32 ronden van Serpent-128 te kraken met 2118 bekende plaintexts en 289 tijd. Ze konden Serpent-192/256 ook kraken met 2118 plaintext en 2187 tijd. Andere papers hebben intussen betere resultaten geboekt en tot 12 ronden gekraakt, wat echter nog steeds onvoldoende is om het algoritme als zwak te beschouwen.
Nog in gebruik? – Ja. Serpent wordt nog steeds gebruikt in het openbare domein en hoewel sommige aanvallen tot 12 ronden van de volle 32 ronden hebben kunnen doorbreken, kost een dergelijke aanval nog steeds veel tijd en energie.
Asymmetrische algoritmen
Asymmetrische cryptografie is ook gekend als public key cryptografie en is gebaseerd op het principe van een paar mathematisch verwante keys voor het versleutelen en ontsleutelen van gegevens: een public key en een private key. Het public key-paar kan met iedereen worden gedeeld, terwijl de private key geheim moet blijven. Iedereen kan met de public key een bericht versleutelen, maar alleen de bezitter van een private key kan het ontsleutelen. De beveiliging is afhankelijk van de geheimhouding van de private keys.
Diffie-Hellman
Diffie-Hellman is een van de eerste geregistreerde voorbeelden van asymmetrische cryptografie. Het werd bedacht door Ralph Merkle en verder ontwikkeld door Whitfield Diffie en Martin Hellman. Voor veilige versleutelde communicatie moeten beide partijen normaal gesproken hun keys uitwisselen via een beveiligd fysiek kanaal. Diffie-Hellman maakte deze uitwisseling overbodig door een extra key toe te voegen, de public key.
Diffie-Hellman is niet langer als standaard cryptografisch algoritme gebruikt, want het bleek kwetsbaar voor verschillende aanvallen. Een Logjam-aanval kan bijvoorbeeld man-in-the-middle-aanvallen mogelijk maken, waarbij de hacker gegevens verzonden via de verbinding kan lezen en wijzigen.
Nog in gebruik? – Ja. Voor algemene PKI-beveiliging en digitale ondertekening, raadt NIST RSA aan (zie verder) omdat voor Diffie-Hellman meer CPU-kracht en gegevensuitwisseling vereist is voor digitale ondertekening en SSL in het bijzonder. Diffie-Hellman wordt echter nog steeds gebruikt in het openbare domein, bijvoorbeeld in Elliptic Curve Cryptography.
RSA
Het Rivet-Shammir-Adleman-algoritme, beter gekend als RSA, is vandaag een van de meest gebruikte asymmetrische cryptosystemen op het web. RSA is gebaseerd op de factorisatie van priemgetallen, omdat terug werken vanaf twee vermenigvuldigde priemgetallen moeilijk is voor computers, zeker als de priemgetallen groter worden. De uitdaging om RSA te breken staat bekend als het ‘RSA-probleem’.
RSA is een traag algoritme en daarom wordt het gebruikt voor het versleutelen en ontsleutelen van de symmetrische keys die, op hun beurt, de berichten versleutelen en ontsleutelen. De symmetrische keys doen het meeste werk, terwijl RSA voor een sterk en veilig kanaal zorgt.
In 1998 beschreef Daniel Bleichenbacher hoe hij een zwakke plek in het PKCS#1-bestand gebruikte (gebruikt voor de private key). Met zijn aanval kon hij de private key bemachtigen en gebruiken om sessiekeys te herstellen en berichten te ontsleutelen. Als reactie hierop publiceerde RSA Laboratories nieuwe versies van PKCS#1 die niet kwetsbaar zijn voor deze aanval. Hoewel men al heeft geprobeerd om RSA aan te vallen, blijft het algoritme sterk, waarschijnlijk tot kwantumcomputers algemeen gebruikt zullen worden.
Nog in gebruik? – Ja. RSA is vandaag het meest gebruikte asymmetrische algoritme.
Elliptic Curve
ECC staat voor Elliptic Curve Cryptography, een benadering van public key cryptografie gebaseerd op elliptische krommen over eindige velden. Cryptografische algoritmen gebruiken doorgaans een wiskundige vergelijking om keys te ontcijferen; ECC maakt ook gebruik van een vergelijking, maar hanteert een andere aanpak.
SSL/TLS-certificaten gebruiken meestal RSA-keys en de aanbevolen grootte van deze keys blijft toenemen (bv. van 1024 bits naar 2048 bits enkele jaren geleden) om de cryptografische sterkte te behouden. ECC is een alternatief voor RSA. Beide keytypes delen dezelfde belangrijke eigenschap dat ze asymmetrische algoritmen zijn (een key voor versleutelen en een key voor ontsleutelen). ECC kan echter dezelfde cryptografische sterkte bieden met veel kleinere keygroottes - dit biedt een betere beveiliging met minder rekenkracht en lagere opslagvereisten.
Nog in gebruik? - Ja. NIST beveelt 15 elliptische krommen aan die kunnen worden gebruikt als standaard. Volgens sommigen is dit zwak omdat er zwakke plekken zijn die hackers kunnen aanvallen, hoewel er manieren zijn om deze tegen te houden. Andere redenen voor een gebrek aan populariteit hebben te maken met de random key generator ontwikkeld door NIST, met de benaming Dual Elliptic Curve Deterministic Random Bit Generator of DUAL_EC_DRBG afgekort. Sommige mensen waren van mening dat de generator (ontwikkeld door de NSA) niet zo willekeurig was als je zou denken – deze werd later stopgezet.
Pure wiskunde
Naarmate kwantumcomputers stilaan hun intrede maken, vragen velen zich af hoe de cryptografie zal evolueren. Volgens sommigen zal onze traditionele aanpak om de keylengte steeds groter te maken als reactie op de toenemende rekenkracht zijn limiet bereiken. Anderen denken dat dat niet noodzakelijk het geval is.
Als we hier iets van kunnen leren, is het dat algoritmen allemaal een 'veiligheidsmarge' hebben, zoals Bruce Schneier het stelt. We moeten erkennen dat het met voldoende rekenkracht en tijd mogelijk is om een algoritme te kraken, maar als we blijven samenwerken en gelijke tred blijven houden met de toename in rekenkracht, kunnen we nieuwe algoritmen vinden om de oude te vervangen.
Denk je dat er nog een algoritme ontbreekt in dit artikel, laat het ons dan weten, zodat we het in het overzicht kunnen opnemen. Binnenkort zullen we ook een vervolgartikel uitbrengen over cryptografische hashfuncties, waaronder SHA en MD.