Encryptie

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.

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.

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 in de loop van de tijd grotere getallen als sleutel te gebruiken.

Er zijn grofweg twee vormen van cryptografie: symmetrische en asymmetrische.

Symmetrisch

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.

Asymmetrisch

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 een 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 een 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, S/MIME of ProtonMail.

Hashing

Cryptografische hashing (cryptohashing) is in strikte zin geen versleuteling, omdat bij hashing uit de verkregen hashcode de oorspronkelijke gegevens niet meer terug kunnen worden gehaald. Wel wordt bij hashing gebruikgemaakt van dezelfde technieken als bij versleuteling en vormt hashing ook vaak een onderdeel van versleutelingsprotocollen. Het verschil tussen hashing en encryptie is dus dat hashing maar 1 kant op kan (alleen hashen) en dat er bij encryptie twee kanten op gewerkt kan worden (coderen en decoderen).

Bij hashing wordt door middel van een hash algoritme een hashcode berekend van een blok gegevens. Uit deze hashcode is dan niet meer af te leiden wat de oorspronkelijke gegevens waren, maar iemand die de gegevens heeft kan wel opnieuw daarvan de hashcode berekenen en controleren of de berekende hashcode overeenkomt met een eerder verkregen hashcode. Aangezien de hashcode vaak veel kleiner is dan het oorspronkelijke blok gegevens is het op deze manier mogelijk om bij te houden of een bepaald document al eerder is gezien, zonder dat het hele document hoeft te worden opgeslagen. Ook kan iemand de hashcode van een document publiceren, wat later, als het document gepubliceerd is, als bewijs kan dienen dat het document toen al bestond (en dat hij er toen of eerder al over beschikte, of toen of eerder medewerking heeft gekregen van iemand die er toen of eerder al over beschikte). Het is namelijk praktisch onmogelijk achteraf een document te maken dat een gegeven hashcode oplevert.

Voor een veilige hashcode geldt dat het onmogelijk moet zijn te achterhalen van welk blok gegevens de code is afgeleid, en verder moet het onmogelijk zijn om twee verschillende blokken gegevens te maken die dezelfde hashcode hebben. Hierdoor heeft een hashcode de eigenschappen van een digitale vingerafdruk.

Cryptografische hashing is een deterministische procedure, maar heeft toch een bepaalde verwantschap met kansrekening. De hash lijkt willekeurig. De kans dat willekeurige oorspronkelijke gegevens een bepaalde hash opleveren is ongeveer het omgekeerde van het aantal mogelijke uitkomsten. Hoewel de hash meestal korter is dan de oorspronkelijke gegevens is dit aantal (twee tot de macht het aantal bits) al gauw zeer groot, en de genoemde kans dus zeer klein. Bij gebruik als checksum kan volstaan worden met een korte cryptohash; bij een beveiliging tegen vergissingen en technische onvolkomenheden hoeft de kans op een toevallig overeenkomende hash namelijk niet zo klein te zijn als bij een beveiliging tegen misbruik.

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 hash-algoritmen voor wachtwoorden 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 hash-algoritme 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.

Toekomst

Het is de verwachting dat in de toekomst zeer krachtige quantumcomputers beschikbaar zullen komen met een rekenkracht die de huidige publieke encryptie makkelijk zal kunnen kraken. Om dit doemscenario te voorkomen werken cryptografen sinds circa 2017 aan zogeheten post-quantum-encryptiemethodes die niet te kraken zijn door quantumcomputers.[1]

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.