Asymmetrische cryptografie

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Bij asymmetrische cryptografie (zoals RSA) wordt gebruikgemaakt van twee aparte sleutels: één sleutel wordt gebruikt om de informatie te coderen (vercijferen) of te ondertekenen, en de tweede sleutel om de informatie weer te decoderen (ontcijferen) of de identiteit van de afzender te verifiëren. Bij de andere methode, de symmetrische cryptografie, wordt dezelfde sleutel gebruikt voor zowel coderen als decoderen; de sleutel is dan niet geschikt voor ondertekenen/verifiëren.

Voordeel van de asymmetrische cryptografie is, dat men door het verstrekken van de ene dan wel de andere sleutel kan kiezen wie de versleutelde informatie kan lezen en ook wie allemaal informatie kan versleutelen.

Geschiedenis [bewerken]

Om vertrouwelijke berichten uit te wisselen, maakten de oude Arabieren en Romeinen al gebruik van cryptografie. Als de ontvanger van het vercijferde bericht de manier van versleuteling en de sleutel kende, kon het bericht in klare tekst worden omgezet. Het was dus van belang dat de opsteller van de vercijferde tekst met name de sleutel op een veilige manier bij de ontvanger wist te bezorgen. Met de ontwikkeling van de computer konden cryptoanalisten veel sneller hun werk uitvoeren.

Sleuteldistributie probleem[bewerken]

Het was dus nodig dat de sleutels langer werden en frequenter werden ververst. Een Romeinse veldheer kwam nog weg met het vernieuwen van de sleutel op maandelijkse basis, maar de Duitsers stapten in de Tweede Wereldoorlog al over op dagelijkse verversing van de sleutels. Met name de komst van e-mail was aanleiding voor het ontwikkelen van een manier waarbij het niet nodig was dat de sleutel via een separaat kanaal werd uitgewisseld, voordat de ontvanger het bericht kon lezen.

Dit sleuteldistibutie probleem leidde uiteindelijk tot de ontwikkeling van asymmetrische cryptografie, waarbij de sleutel voor het vercijferen een andere is dan die voor het ontcijferen. Het versturen en ontvangen van de sleutel is niet meer nodig, doordat de publieke sleutel al in het bezit is van de ontvanger van het versleutelde bericht. Nu zou je zeggen dat iedereen die de publieke sleutel kent, het vercijferde bericht kan ontcijferen. Dankzij een specifieke wiskundige constructie, gebaseerd op modulair rekenen, werkt de publieke sleutel maar één kant op. De basis ligt in het gebruik van priemgetallen, die alleen deelbaar zijn door 1 of zichzelf, zonder dat er een restgetal overblijft. Het restgetal is essentieel bij deze vorm van versleuteling, omdat op basis van dit getal wel het bericht kan worden vercijferd, maar niet ontcijferd. 

Toepassing[bewerken]

Toepassingen maken dit principe duidelijk. Stel voor dat je een sleutelpaar bezit. Door één sleutel gewoon in media te publiceren (bijvoorbeeld op een website of meegestuurd bij ondertekening van een e-mail) wordt die sleutel de publieke sleutel van jouw set sleutels. De andere sleutel is dan jouw geheime sleutel die jij zorgvuldig voor jezelf houdt.

Versleuteling[bewerken]

Iedereen die aan jou een bericht wil sturen dat geheim moet blijven kan nu jouw publieke sleutel gebruiken om de informatie te vercijferen. Vervolgens kan het vercijferde bericht worden verzonden. Alleen jijzelf kan het bericht ontcijferen, omdat jij als enige beschikt over de geheime privé-sleutel, nodig om het bericht te ontcijferen. Anderen hebben wel een sleutel om te vercijferen, maar niet om te ontcijferen. Hierdoor blijft het bericht voor iedereen onleesbaar, behalve voor jou.

Ondertekening[bewerken]

Andersom kun je een bericht voorzien van een controlegetal dat afhankelijk is van de inhoud (door middel van hashen, bijvoorbeeld een MD5-sum of een SHA). Het is hierbij belangrijk dat er niet eenvoudig een ander bericht te maken is met hetzelfde controlegetal, omdat anders alsnog anderen het bericht ongezien zouden kunnen aanpassen. Door nu dat controlegetal met jouw geheime privé-sleutel te vercijferen en het resultaat mee te sturen (dit is de Digitale handtekening), geef jij iedereen de mogelijkheid om met jouw publieke sleutel het controlegetal te ontcijferen. Door opnieuw zelf een controlegetal op dezelfde manier van de inhoud te bepalen en het resultaat te vergelijken met de ontcijferde waarde, weet men zeker dat het bericht van jou afkomstig is, en dat de inhoud van het bericht onderweg niet is aangepast. Immers: alleen jij bezit de sleutel om het controlegetal te kunnen vercijferen (coderen). Op deze wijze wordt een bericht "digitaal ondertekend".

Vertrouwen[bewerken]

Hoe weet je nu of de publieke sleutel werkelijk van de persoon is die hij beweert te zijn? De methode van vertrouwen kan ook het best met een voorbeeld uitgelegd worden.

PKI[bewerken]

Zoals een bericht ondertekend kan worden, zo kan ook de bijbehorende publieke sleutel ondertekend worden, en wel door een derde partij. Die derde partij garandeert dat de eigenaar van die publieke sleutel, dus het sleutelpaar, inderdaad degene is die hij beweert te zijn. Deze bewering staat in het certificaat, waar ook de publieke sleutel in zit, en die op dezelfde manier digitaal ondertekend is met de geheime privé-sleutel van die derde partij, de Certificaatautoriteit. In het certificaat staat ook waar je kunt achterhalen of die bewering nog steeds geldig is, de CRL. Deze methode van vertrouwen heet PKI.

PGP[bewerken]

Als alternatief kan een ongetekende publieke sleutel gepubliceerd worden op een betrouwbaar medium, bijvoorbeeld op de website van de eigenaar van de sleutel. Deze vorm van vertrouwen wordt onder andere gebruikt bij PGP.