Versleutelen met een publieke sleutel

Op deze pagina leer je over een veelgebruikte cryptografische methode die heel veilig is.

Het fundamentele gegeven van cryptografie is om berichten te versturen die niet onderschept kunnen worden. Symmetrische versleuteling heeft een fundamentele zwakte: de sleutel om een bericht te ontcijferen is zelf ook een bericht dat verzonden moet worden en niet onderschept mag worden...

Publiekesleutel-cryptografie is een wiskundige techniek waarbij het probleem van het verzenden van een geheime sleutel vermeden wordt. In dit systeem bezit iedere persoon twee sleutels: een privé-sleutel die alleen die persoon zelf kent, en een publieke sleutel die iedereen mag weten. Als Bob een geheim bericht naar Alice wil sturen, dan versleutelt hij het bericht met de publieke sleutel van Alice. Niemand anders dan Alice kan nu dit bericht decoderen. Alleen haar privé-sleutel kan de versleuteling ontdoen. Daarnaast is het ook onmogelijk om de privé-sleutel te weten te komen door de publieke sleutel te bekijken.

Het concept van een publieke sleutel is uitgevonden door Whitfield Diffie en Martin Hellman. Het werd openbaar gemaakt in 1976. Later bleek dat het al eerder was uitgevonden, onder andere binnen de Britse geheime dienst, maar dat onderzoek werd geheim gehouden tot in de jaren negentig.

Geen Afbeelding

  1. Het lijkt misschien ongeloofwaardig dat Alice haar sleutel publiek kan maken, terwijl niemand anders het bericht kan decoderen. Deze techniek hangt af van wat wiskunde en een aantal beperkingen van de snelheid van computers. Lees het hoofdstuk 'Secrecy Changes Forever', pagina 178-181 uit Blown to Bits, om te leren hoe het werkt.

Hier is een model van het systeem met publieke sleutels. Bron: wikimedia.org
Geen Afbeelding
  1. Bespreek met een partner hoe deze methode anders is dan symmetrische cryptografie, de techniek die gebruikt werd op vorige pagina's. Zou je deze methode vertrouwen om een pincode te versturen?
Het is ook mogelijk om een privé-sleutel te gebruiken voor versleuteling en de publieke sleutel om te decoderen...

Deze omdraaiing is niet zo bruikbaar voor geheime berichten (waarom niet?), maar het is wel handig voor digitale handtekeningen. Ik gebruik mijn privésleutel om een bericht te versleutelen; jij gebruikt mijn publieke sleutel om het te decoderen. Als jij een leesbaar bericht krijgt, dan bewijst dat dat het bericht versleuteld was met mijn privé-sleutel.

Als ik wil dat het bericht én geheim is én digitaal ondertekend, dan versleutel ik het bericht eerst met mijn privésleutel, en dan versleutel ik dit nog eens met jouw publieke sleutel om het geheim te houden. Jij ontcijfert het twee keer, eerst met je eigen privé-sleutel en dan nog een keer met mijn publieke sleutel. Dit is een mooi voorbeeld van functiecompositie, de uitvoer van de eerste versleuteling is de invoer van de tweede.


Veilige HTTP

Veilige HTTP-verbindingen (te herkennen aan https:// in plaats van http://) gebruiken een protocol dat Transport Layer Security (TLS) heet of misschien een oudere versie genaamd Secure Sockets Layer (SSL). Beide protocollen zijn gebaseerd op publiekesleutel- cryptografie. Met SSL/TLS stuurt de website die je bezoekt zijn publieke sleutel en je browser gebruikt die sleutel om de informatie die jij verstuurt te versleutelen.

Secure Sockets Layer/Transport Layer Security (SSL/TLS) is de standaard die gebruikt wordt voor informatie die cryptografisch beveiligd is en wordt verzonden over het internet.



Geen Afbeelding
Open standaarden helpen de beveiliging...

Om goed te werken moet een cryptografische methode makkelijk te gebruiken zijn voor de bezitter van de privé-sleutel en moeilijk te kraken voor alle andere mensen. Maar wat betekent 'moeilijk'? Huidige cryptografische methoden maken gebruik van het feit dat het lastig is om hele grote getallen te ontbinden in factoren. Er is geen bewijs dat niemand een snelle manier kan vinden om het te doen, maar we weten vrij zeker dat het niet zal gebeuren omdat het probleem uitgebreid is onderzocht door wiskundigen. Aan de andere kant, wanneer quantumcomputers in gebruik genomen worden, zal ontbinden in factoren heel makkelijk zijn en hebben we nieuwe cryptografische methodes nodig.

Ontbinden in factoren is het opdelen van een product in kleinere delen. Je kan bijvoorbeeld 15 ontbinden in de factoren 3 en 5, want 3 × 5 = 15.


Doordat de cryptografische methodes die gebruikt worden in deze standaarden openbaar zijn, kunnen wiskundigen bestuderen hoe moeilijk het is om die methodes te breken. Dit lijkt misschien vreemd, als je iets geheim wilt houden, moet je dan ook niet de techniek geheim houden? Maar algoritmes die je geheimhoudt, kunnen zwakheden bevatten die onontdekt blijven totdat iemand met slechte bedoelingen ze ontdekt. Open standaarden maken het mogelijk om een algoritme te bestuderen voordat het in de praktijk gebruikt wordt.


Certificaatautoriteiten

Versleuteling met een publieke sleutel lost niet alle problemen op. Iemand die afluistert (Eva bijvoorbeeld) zou een valse publieke sleutel kunnen maken waarbij ze doet alsof ze Alice is. Bob kan dan per ongeluk zijn bericht versleutelen met de valse sleutel van Eva, terwijl het bericht voor Alice bedoeld is. Eva kan dan gewoon Bobs bericht lezen. In de praktijk wordt dit probleem opgelost door gebruik te maken van derde partijen, genaamd certificaatautoriteiten, om publieke sleutels te certificeren. In de veiligheidsinformatie van je browser kan je alle certificaatautoriteiten zien die door je browser worden vertrouwd.

Certificaatautoriteiten geven certificaten uit die verifiëren wie de eigenaar is van de encryptiesleutels die gebruiken worden voor beveiligde communicatie.


Uiteindelijk verplaatst dit het probleem gewoon een laag naar achteren. Hoe weet de certificaatautoriteit dat jij bent wie je zegt dat je bent? Het werkt een beetje hetzelfde als hoe jouw bank checkt of jij wel bent wie je zegt dat je bent. Ze stellen vragen waarop ze hopen dat alleen jij het antwoord weet, zoals je geboortedatum.

  1. Lees 'The Key Agreement Protocol' en 'Public Keys for Private Messages', pagina 181-183 uit Blown to Bits , voor meer informatie over versleuteling met publieke sleutels.
  2. Doe onderzoek naar moderne versleutelmethodes zoals RSA, een methode die vooral gebruikt wordt bij digitale transacties.

Terug Volgende