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.
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-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.
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.
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.