Versleutelen met een publieke sleutel

Op deze pagina, ga je leren over een veelgebruikte manier van versleutelen die zeer veilig is.

Het fundamentele probleem van cryptografie is om een bericht te versturen dat niet onderschept kan worden. Symmetrische versleuteling heeft een fundamentele zwakte: de sleutel om het bericht te ontcijferen is ook een bericht dat verzonden moet worden, en niet onderschept mag worden.

Het idee van een publieke sleutel is uitgevonden door Whitfield Diffie en Martin Hellman, het werd openbaar gemaakt in 1976. Het was eigenlijk al veel eerder uitgevonden maar het werd geheim gehouden door de overheid.

Publiekesleutelcryptografie is een wiskundige techniek waarbij het probleem van het verzenden van een geheime sleutel ontweken wordt. In dit systeem bezit iedere persoon twee sleutels: één privé-sleutel die alleen die persoon zelf kent, en één 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.

Geen Afbeelding
Als je geen verbinding kan maken met YouTube, kijk dan de video hier, de video begint vanaf 2:25.
  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 de paragraaf "Secrecy Changes Forever" (Blown to Bits pages 178-181), om te leren hoe het werkt.
Hier is een model van het systeem met publieke sleutels (van 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 vetrouwen om een pincode te versturen?
Het is ook mogelijk om een privé-sleutel te gebruiken voor versleuteling en de publieke sleutel om te decoderen...
Het is niet zo handig voor geheime berichten (waarom niet?), maar het is handig voor digitale handtekeningen. Ik gebruik mijn privé-sleutel om een bericht te versleutelen; jij gebruikt mijn publieke sleutel om het te decoderen. Als je 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 getekend, dan versleutel ik het bericht met mijn privé-sleutel, 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 functie-compositie: de uitvoer van de eerste versleuteling is de invoer van de tweede.

Veilige HTTP

Veilige HTTP-verbindingen (je herkent dit aan https:// in plaats van http://) gebruiken een protocol dat Transport Layer Security (TLS) heet.Soms gebruiken ze nog een ouder protocol, Secure Sockets Layer (SSL). Allebei de protocollen maken gebruik van publieke sleutels. Met SSL/TLS, stuurt de website die je bezoekt zijn publieke sleutel en je browser gebruikt die sleutel om jouw informatie te versleutelen.

SSL/TLS (secure sockets layer/transport layer security, in het Nederlands veilige-socketslaag/transportlaagbeveiliging) is de standaard die gebruikt wordt voor informatie die cryptografisch beveiligd is en wordt verzonden over het internet.


Als je geen verbinding kan maken met YouTube, kijk dan de video hier, de video begint vanaf 4:40.
Geen Afbeelding
Open standaarden helpen met beveiliging...

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

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 methods 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 dit probleem uitgebreid is onderzocht door wiskundigen. (Aan de andere kant, wanneer quantumcomputers mogelijk zijn, zal ontbinden in factoren heel makkelijk zijn en hebben we nieuwe cryptografische methodes nodig.)

Omdat de cryptografische methodes die gebruikt worden in deze standaarden, voor iedereen te bekijken zijn, kunnen wiskundigen bestuderen hoe moeilijk het is om die methodes te breken. Dit lijkt misschien vreemd, als je iets geheim wilt houden, zou je dan niet de techniek ook geheim houden? Maar algoritmes die je geheimhoudt, kunnen fouten bevatten die je niet ziet, tot dat iemand met slechte bedoelingen ze vindt. Door dat de standaarden open zijn voor iedereen, kan een algoritme bestudeerd worden voordat het gebruikt wordt.

Certificaatautoriteiten

Certificaatautoriteiten geven certificaten af die verifiëren wie een bepaalde sleutel bezit die gebruikt wordt voor beveiligde communicatie.

Versleuteling met een publieke sleutel lost niet magisch alle problemen op. Iemand die afluistert (een persoon genaamd Eva, bijvoorbeeld) zou een neppe publieke sleutel kunnen maken waarbij ze doet alsof ze Alice is. Bob kan dan per ongeluk zijn bericht versleutelen met de neppe sleutel, 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 een derde partij, genaamd certificaatautoriteiten, om te verzekeren of een publieke sleutel echt is. In de veiligheidsinformatie van je browser kan je alle certificaatautoriteiten zien die je browser vertrouwt.

Maar dit verplaatst het probleem gewoon naar ee andere laag. Hoe weet de certificaatautoriteit dan dat jij bent wie je zegt dat je bent? Dat werkt net zoals hoe de bank checkt of jij wel bent wie je zegt dat je bent. Ze stellen vragen waarop ze denken dat alleen jij de antwoorden weet. Bijvoorbeeld, je pasnummer en je geboortedatum.
  1. Lees "The Key Agreement Protocol" en "Public Keys for Private Messages" (Blown to Bits pagina's 181-183) voor meer info over versleuteling met publieke sleutels.
  2. Doe onderzoek naar moderne versleutelmethodes zoals RSA, een methode die vooral gebruikt wordt bij digitale transacties.
Terug Volgende