Algoritmes

Cryptografische algoritmes worden gebruikt voor het versleutelen en ontsleutelen van berichten. Hierdoor kunnen twee partijen met elkaar communiceren zonder dat er iemand meeleest.

 

Wat is een algoritme?

Een algoritme is een serie instructies voor het uitvoeren van een berekening, waarbij de invoer na een bepaald aantal stappen een bepaalde uitvoer heeft. Een metafoor hiervoor is een recept: met een aantal ingrediënten maak je een gerecht, de beschrijving die de bereidingswijze uitlegt is hierbij het algoritme. Een algoritme wordt meestal toegepast voor het oplossen van wiskundige problemen. Er zijn verschillende encryptiemethoden en per methode verschillende encrytpiealgoritmes, waarvan we de voor PKI meest relevante beschrijven.

Symmetrische encryptie

Bij symmetrische cryptografie wordt dezelfde cryptografische sleutel gebruikt voor zowel het versleutelen van informatie als voor het ontsleutelen ervan.

3DES

3DES is in 1998 ontwikkeld als een meer gecompliceerde versie van de inmiddels als kraakbaar beschouwde Data Encryption Standard (DES). DES is erg lang een veelgebruikt algoritme geweest. De beperkte sleutellengte van DES en het hierdoor beperkte aantal combinaties, maakt het algoritme gevoelig voor brute force aanvallen. Bij 3DES worden daarom 3 afzonderlijke DES-bewerkingen achter elkaar op de te versleutelen data losgelaten. Dat kan op twee manieren: met twee sleutels van 56 bits, waarbij de eerste en derde bewerking met dezelfde sleutel worden uitgevoerd, of met drie onafhankelijke sleutels van 56 bits. De totale sleutellengte waarmee gecodeerd wordt is dus respectievelijk 112 bits of 168 bits, waarbij de laatste uiteraard de veiligste vorm is.

AES

Advanced Encryption Standard (AES) is eind jaren '90 ontwikkeld als alternatief voor DES. AES is ontstaan uit het door twee Vlamingen ontwikkelde Rijndael algoritme en gebruikt een 128-bits sleutel. In programma's zoals WinRAR, WinZip, PowerArchiver wordt AES als encryptie aangeboden.

Asymmetrische encryptie

Bij asymmetrische cryptografie wordt gebruikgemaakt van twee aparte sleutels: één sleutel wordt gebruikt om de informatie te versleutelen of te ondertekenen, en de tweede sleutel om de informatie weer te ontsleutelen of de identiteit van de afzender te verifiëren.

RSA

Een jaar nadat Whitfeld Diffie en Martin Hellman asymmetrische cryptografie bedacht hebben, werd het in 1977 voor het eerst in de praktijk gebracht in de vorm van het algoritme RSA. RSA is ontworpen door Ron Rivest, Adi Shamir en Len Adleman. Het basisconcept van RSA encryptie is dat, zodra je twee verschillende, zeer grote priemgetallen met elkaar vermenigvuldigt het nagenoeg onmogelijk is het ontstane getal terug te herleiden naar de priemgetallen die eraan ten grondslag lagen. En hoe groter het getal is, hoe moeilijker het terugherleiden wordt. De meeste SSL-certificaten gebruiken RSA.

Browserfabrikanten en Certificate Authorities hebben afgesproken per 2014 RSA sleutels met een lengte van 1024 bit niet meer te vertrouwen. Per 1 januari 2014 moet de sleutellengte van een RSA sleutel minimaal 2048 bit zijn, om zo bestand te blijven tegen de steeds sterker wordende cryptografische aanvallen.

DSA

Digital Signature Algorithm (DSA) is in 1991 ontwikkeld door de NSA (National Security Agency) als alternatief voor de geldende standaard, RSA. Het gebruikt een ander wiskundig algoritme voor encryptie en ondertekening, maar is qua veiligheid en snelheid min of meer vergelijkbaar met RSA. DSA wordt met name toegepast binnen de Amerikaanse overheid. Gebruik van een SSL-certificaat dat naast RSA- ook DSA-encryptie ondersteunt, kan hierdoor van pas komen bij het voldoen aan overheidsstandaarden.

ECC

Het Elliptic Curve Cryptography (ECC) Algoritme is al in 1985 ontwikkeld door o.a. IBM als alternatief voor RSA. ECC gebruikt punten op een curve (elliptische krommen) om sleutels aan te maken voor het versleutelen van data en maakt hierdoor cryptografisch sterke sleutels met korte lengtes. ECC werkt sneller en efficiënter dan bijvoorbeeld RSA; een ECC sleutelpaar is 10.000 keer moeilijker te kraken dan een een 2048 bits RSA sleutelpaar.

Op dit moment leveren Symantec en Comodo ECC certificaten.

ECDSA

Het Elliptic Curve Digital Signature Algorithm (ECDSA) is een variant van DSA die gebruik maakt van de hierboven genoemde Elliptic Curve Cryptography. Hiermee profiteert ECDSA van de kortere sleutellengtes van ECC. ECDSA wordt bijvoorbeeld gebruikt door Sony voor de Playstation 3 en door de virtuele munt Bitcoin.

Wat is een Hash Algoritme?

Hashing is net zoals encryptie een cryptografische functie, maar in tegenstelling tot encryptie is hashing geen tweerichtings-, maar éénrichtingsverkeer. Een hashfunctie maakt van data een unieke hashcode die niet teruggerekend kan worden naar de oorspronkelijke data. Kenmerkend voor een goede hashfunctie zijn weinig botsingen, oftewel de kans dat verschillende invoerwaarden dezelfde uitkomst geven is klein. Daarnaast zorgt iedere wijziging in de invoer voor een wijziging in de hashcode.

Voorbeelden van toepassingen zijn het veilig (gehasht) opslaan van wachtwoorden en het digitaal ondertekenen van documenten. CA's plaatsen een digitale handtekening op de hash van certificaten die zij uitgeven, waarmee een bezoeker de echtheid van het certificaat kan controleren. Een zwakke hashfunctie maakt het mogelijk twee certificaten met dezelfde hash te maken, wat het mogelijk maakt certificaten te vervalsen.

MD5

MD5 (Message Digest Algorithm 5) is een veelgebruikte cryptografische hashfunctie. MD5 is als internetstandaard gebruikt in vele veiligheidstoepassingen en wordt ook gebruikt om de integriteit van bestanden te controleren. MD5 werd door Ronald Rivest in 1991 ontworpen om de eerdere hashfunctie MD4 te vervangen. In 1996 werd er een fout in het MD5-ontwerp gevonden. Hoewel het geen ernstige fout was, werd er vanaf toen aanbevolen andere algoritmen zoals SHA-1 te gebruiken.

SHA-1

SHA-1 is een cryptografische hashfunctie ontworpen door de National Security Agency (NSA) en gepubliceerd in 1995 door het National Institute of Standards and Technology (NIST) als de standaard voor het verwerken van federale informatie. SHA staat voor Secure Hash Algorithm. Er zijn in totaal 4 SHA algoritmes, ieder met een verschillende structuur. Deze staan bekend als: SHA-0, SHA-1, SHA-2 en SHA-3. Het originele SHA-0 algoritme heeft een aanzienlijke kwetsbaarheid. In het SHA-1 algoritme is deze kwetsbaarheid hersteld, hiermee werd SHA-1 het meestgebruikte SHA algoritme. In theorie is het met voldoende rekenkracht echter mogelijk SHA-1 te kraken, daarom zal SHA-1 door de gestaag groeiende rekenkracht van computers binnen afzienbare tijd niet meer toereikend zijn.

SHA-2

In 2005 zijn er een aantal beveiligingsgebreken gevonden in SHA-1, waardoor een sterkere hashfunctie zeer wenselijk was. SHA-2 heeft een set van aanzienlijke verbeteringen op zijn voorganger. SHA-2 is op sommige punten vergelijkbaar met SHA-1, maar tot op heden zijn er geen vergelijkbare kwetsbaarheden gesignaleerd. Vanaf 1 januari 2017 worden SSL certificaten met SHA-1 hashing door Microsoft niet meer vertrouwd, als gevolg hiervan zullen certificaten na deze datum alleen nog maar met SHA-2 uitgegeven worden. Meer over SHA-2.

SHA-3

SHA-3, oorspronkelijk bekend als Keccak is ontworpen op oktober 2012 door Guido Bertoni, Joan Daemen, Michaël Peeters en Gilles Van Assche. Keccak werd geselecteerd als de winnaar van de NIST hashfunctiecompetitie. SHA-3 is niet bedoeld om direct SHA-2 te vervangen, omdat er nog geen succesvolle aanval op SHA-2 is uitgevoerd. Doordat er succesvolle aanvallen op MD5, SHA-0 en theoretische aanvallen op SHA-1 zijn uitgevoerd had NIST echter wel behoefte aan een alternatieve hashfunctie, dit is SHA-3 geworden.

Certificaat aanvragen

Op dit moment worden SSL certificaten standaard geleverd met een RSA sleutel en SHA-2 algoritme.

Certificaat aanvragen

SSLCheck

De SSLCheck controleert of je certificaat goed op je server is geïnstalleerd en of er mogelijke problemen zijn.