Het versleutelen van communicatie blijft behoorlijk controversieel. Ondanks alle weerstand, onder meer vanuit sommige overheden en overheidsdiensten, wordt versleutelde communicatie langzaamaan de standaard. Hoe werkt encryptie eigenlijk en welke encryptiesoorten zijn er nu?
Betekenis
Binnen de cryptografie staat encryptie voor het coderen (versleutelen) van gegevens op basis van een bepaald algoritme. Deze versleutelde gegevens kunnen nadien weer gedecrypteerd (ontcijferd of gedecodeerd) worden zodat men de originele informatie weer terugkrijgt. Dit proces wordt decryptie genoemd.
In de meeste democratische landen is het recht op vrije meningsuiting in de grondwet opgenomen, zoals in Nederland (artikel 7) en België (artikel 14).
Deze visie sluit nauw aan bij wat de VN al in 1966 in het Verdrag voor Burgerrechten en Politieke Rechten stelde (artikelen 17 en 19). Het Europees Verdrag voor de Rechten van de Mens bevat verder het recht op respect voor onder meer ieders privéleven en correspondentie (artikel 8).
Veilig en vertrouwelijk communiceren, is dus een grondrecht. Dit recht hoort niet alleen bepaalde groepen te beschermen, zoals journalisten en dissidenten, maar geldt voor elke burger. Ook wanneer (je vindt dat) je niets te verbergen hebt, behoud je het recht op privacy. Dit blijkt trouwens steeds noodzakelijker in een informatiemaatschappij waarin je vaak niet eens kunt achterhalen welke persoonsgegevens zonder je toestemming waar en door wie worden gebruikt.
Daarbij komt dat vertrouwelijke communicatie je helpt om je te beschermen tegen allerlei vormen van cybercriminaliteit, zoals gegevens- en identiteitsdiefstal.
Een van de bedoelingen van cryptografie is dat gegevens veilig uitgewisseld kunnen worden tussen twee personen over een onveilig communicatiekanaal, dat wil zeggen een communicatiekanaal waar ook derden toegang toe kunnen hebben, zoals het internet. De versleuteling zorgt er dan voor dat deze derden de gegevens niet kunnen lezen. Dit gebeurt meestal door het gebruik van sleutels. Wat precies een sleutel vormt verschilt per algoritme, maar meestal is een sleutel een reeks van tientallen of honderden cijfers en letters. Het doel van het cryptografische algoritme is ervoor te zorgen dat alleen de personen met de juiste sleutel de versleutelde gegevens weer kunnen ontcijferen.
Dit gebeurt meestal door het gebruik van sleutels. Wat precies een sleutel vormt verschilt per algoritme, maar meestal is een sleutel een reeks van tientallen of honderden cijfers en letters. Het doel van het cryptografische algoritme is dan om er voor te zorgen dat alleen de personen met de juiste sleutel de versleutelde gegevens weer kunnen ontcijferen. Bij de meeste cryptografische algoritmen is het in principe wel mogelijk om zonder de juiste sleutels de versleutelde gegevens te decoderen, maar dit decoderen kost dan zo veel rekenwerk en tijd dat het praktisch onmogelijk is.
Het decoderen van gegevens zonder de juiste sleutel kan op de snelste computers van nu miljarden jaren rekentijd kosten, door alle mogelijke sleutels uit te proberen, totdat er een sleutel wordt gevonden die werkt. Als de sleutel een groot genoeg getal is, zijn zelfs de snelste computers niet in staat om alle mogelijke sleutels in afzienbare tijd uit te proberen. Aangezien computers door de jaren heen steeds sneller worden is het wel nodig om in de loop van de tijd grotere getallen als sleutel te gebruiken. Er zijn grofweg twee vormen van cryptografie: symmetrische en asymmetrische.
Rotatie van alfabet
Aan een versleutelde boodschap als ‘rra cyhf rra vf gjrr’ heb je niks zonder de bijbehorende sleutel. In dit geval is dat een simpele rotatie van dertien letters in het alfabet (ROT13). Vaak zijn zulke sleutels via trial-and-error (brute force) snel te achterhalen.
Dat geldt des te meer als je daarbij rekening kunt houden met andere factoren, zoals de wetenschap dat de letter ‘e’ in het Nederlands de meest voorkomende letter is. Zou de ‘r’ in onze boodschap een ‘e’ kunnen zijn?
Bij encryptie is er bovendien het probleem van hoe je de sleutel veilig bij de beoogde ontvanger krijgt. En wat als deze versleuteling alleen maar ‘point-to-point’ verloopt (P2PE), bijvoorbeeld van de verzender tot aan de (eerste tussenliggende) ontvanger of server, zoals bij sommige vormen van digitale communicatie? Ten slotte, de eigenlijke boodschap mag dan nog over de hele route stevig versleuteld zijn via end-to-end encryptie (E2EE), in de praktijk zijn heel wat zogenoemde metadata toch niet versleuteld en daaruit valt alvast op te maken wie iets op welk moment naar wie heeft gecommuniceerd.
Symetrisch
Bij symmetrische cryptografie gebruiken zender en ontvanger dezelfde sleutel. Die sleutel moet van tevoren uitgewisseld worden via een veilig kanaal (waarbij zender en ontvanger elkaars identiteit kunnen controleren en onderschepping van de sleutel door derden niet mogelijk is).
Het gebruik van dezelfde sleutel wil niet altijd zeggen dat het coderen en het decoderen identiek zijn. Bij de sleutel Rot13, die bij e-mail veel wordt gebruikt, is dat wel het geval. Wie een gecodeerd bericht opnieuw met ROT13 decodeert, ziet weer het oorspronkelijke bericht. Bij een code als A→B, B→C enz. is dat niet het geval, maar de decodeersleutel kan eenvoudig worden afgeleid uit de codeersleutel. Beide gelden als symmetrische cryptografie.
Asymetrisch
Moderner is de asymmetrische cryptografie, ook wel public key encryption genoemd. Hierbij hebben zender en ontvanger elk een eigen set van twee sleutels, waarvan er één publiek is en één niet.
Het is in theorie mogelijk, maar niet praktisch haalbaar, om de geheime sleutel uit de publieke sleutel af te leiden. Berichten die met een publieke sleutel worden versleuteld, kunnen alleen met de geheime sleutel worden ontcijferd. Met andere woorden: onbevoegden kunnen het bericht niet lezen.
Andersom geldt dit ook: informatie die is vercijferd met de geheime sleutel van iemand, kan alleen met de bijbehorende publieke sleutel worden ontcijferd. Dit laatste wordt gebruikt bij het digitaal ondertekenen van berichten: men heeft de zekerheid dat het bericht afkomstig is van degene die zich de afzender noemt. De publieke sleutel mag aan iedereen bekend zijn en kan dus uitgewisseld worden over een onveilig kanaal zoals internet. Om een bericht te coderen en digitaal te ondertekenen, heeft de zender zijn eigen geheime sleutel nodig én de publieke sleutel van de ontvanger.
Om het ontvangen bericht te decoderen en te verifiëren of de handtekening wel van de zender is, heeft de ontvanger zijn eigen geheime sleutel nodig én de publieke sleutel van de zender. Het grote voordeel van asymmetrische cryptografie is dat uitwisseling van de benodigde sleutels kan plaatsvinden via een onveilig kanaal. Afluisteren van de uitgewisselde informatie - inclusief publieke sleutels - vormt geen enkel probleem. Een onderscheppingsrisico bestaat wel: wanneer zender en ontvanger nalaten te controleren of de gebruikte publieke sleutel inderdaad hoort bij de (beoogde) ander is het voor een derde mogelijk om zich voor te doen als één van de twee partijen. Iedereen kan immers zeggen: “mijn naam is zus-en-zo en hier is mijn publieke sleutel, stuur me nu uw gegevens maar”.
Zender en ontvanger dienen dus langs een betrouwbaar kanaal elkaars identiteit vast te stellen en publieke sleutels te bevestigen. Een nadeel van asymmetrische cryptografie is dat grote sleutellengtes nodig zijn (bijvoorbeeld 4096 bytes), waardoor coderen en decoderen veel rekenkracht vergt. De sleutels moeten groot zijn, omdat het anders mogelijk wordt met een snelle computer de geheime sleutel te vinden. Vaak wordt een combinatie van asymmetrische en symmetrische cryptografie gebruikt: eerst wordt door middel van asymmetrische cryptografie een geheim tussen zender en ontvanger uitgewisseld, die de sleutel vormt voor de snellere symmetrische cryptografie van grote blokken data. Bij de versleuteling van e-mail wordt wel asymmetrische cryptografie toegepast, door PGP, GPG of S/MIME.
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:
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.
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.
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 Elgamal 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.
E-mail: (START)TLS
SMTP (Simple Mail Transport Protocol) kunnen we gerust een verouderd protocol noemen. Er zijn immers geen ingebouwde voorzieningen naar encryptie of authenticatie toe.
Gelukkig zijn er uitbreidingen en standaarden gekomen die voor een betere beveiliging zorgen. Zo ondersteunen haast alle mailservers en -clients inmiddels TLS (Transport Layer Security) en STARTTLS.
Je moet uiteraard wel je mailclient correct configureren. Om bijvoorbeeld in Microsoft Outlook na te gaan welk versleutelingsmechanisme wordt gebruikt, ga je naar Bestand / Accountinstellingen / Accountinstellingen, selecteer je een account, klik je op Herstellen / Geavanceerde opties en plaats je een vinkje bij Ik wil mijn account handmatig herstellen. Klik vervolgens op Repareren en controleer de instellingen bij Uitgaande e-mail.
Let wel, het gaat hierbij uitsluitend om transportversleuteling (op basis van hybride encryptie trouwens). Dit is een vorm van P2Pe, wat maakt dat de encryptie intact blijft tot aan de mailserver van je provider, maar niet noodzakelijk tijdens het verdere transport. Weet dus dat je mailprovider je berichtgeving nog altijd kan inkijken, eventueel na een dwangbevel.
Hashing van wachtwoorden
Voor de aanmelding bij een computer zijn vaak een naam en een wachtwoord nodig. Deze wachtwoorden worden vaak versleuteld opgeslagen, zodat de wachtwoorden niet bekend worden als het bestand met wachtwoorden door een onbevoegde gelezen wordt.
Dit gebeurt door middel van een hashing-algoritme, dat het onmogelijk maakt de versleutelde gegevens te decoderen. Dat is ook niet nodig, aangezien het voldoende is te controleren of de gebruiker het juiste wachtwoord heeft opgegeven. Bij het versleutelen van wachtwoorden is het echter onveilig om gebruik te maken van algemene hash-algoritmen, en dient gebruik te worden gemaakt van speciale hashalgoritmen voor wachwoorden zoals bcrypt, scrypt, of PBKDF. De reden is dat normale hash-algoritmen zijn ontworpen om zo snel mogelijk berekend te kunnen worden.
Bij het hashen van wachtwoorden is dat onwenselijk, omdat het daardoor mogelijk wordt dat iemand die de hashcodes van de wachtwoorden in bezit heeft gekregen achterhaalt welke hashcode van welk wachtwoord is afgeleid. De lengte en complexiteit van wachtwoorden die mensen in de praktijk gebruiken is beperkt, terwijl computers steeds sneller worden. Daardoor wordt het voor iemand die probeert hashcodes voor wachtwoorden te kraken steeds makkelijker om een computer allerlei mogelijkheden te laten uitproberen.
Hash-algoritmen voor wachtwoorden blokkeren deze methode doordat voor deze algoritmen in te stellen is hoeveel rekentijd ze moeten kosten. De algoritmen worden dan zo ingesteld dat het uitrekenen ervan bijvoorbeeld één milliseconde kost, terwijl het berekenen van een hashcode met een gewoon hashalgoritme minder dan een microseconde kan kosten. Bij het controleren van een wachtwoord is het meestal geen probleem als dit een milliseconde in plaats van een microseconde kost, terwijl iemand die wil proberen de hashcodes te kraken meer dan duizend keer zo veel rekenwerk moet doen, en dus meer dan duizend keer langer bezig is.
Decryptiebevel
Er is in Nederland een internetconsultatie geweest betreffende het concept-wetsvoorstel computercriminaliteit III met onder meer een wettelijke regeling waarbij aan een verdachte een decryptiebevel kan worden gegeven, in afwijking van het beginsel van nemo tenetur ( Het nemo-teneturbeginsel, of voluit het beginsel van nemo tenetur prodere se ipsum betekent letterlijk dat niemand is gehouden tegen zichzelf (bewijs) te leveren of dat niemand kan worden gedwongen aan zijn eigen veroordeling mee te werken). Het decryptiebevel is niet opgenomen in de Wet Computercriminaliteit III. Een nadeel voor opsporingsdiensten, een voordeel voor criminelen.
Toekomst
Het is mogelijk dat in de toekomst er quantumcomputers komen met een rekenkracht die de huidige publieke encryptie kunnen kraken. Om dit doemscenario te voorkomen werken cryptografen sinds circa 2015 aan zogeheten post-quantum-encryptiemethodes die ook door quantumcomputers niet zijn te kraken.