Door Anoniem: Berichten worden versleuteld met de private key en ontsleuteld met de public key!
Als dat al zou kunnen, is het niet erg zinvol (het is wel een soort signeren). Immers iedereen kan de public key hebben, dus iedereen zou dan kunnen ontsleutelen!
Asymmetrische encryptie (dus met public en private keys) is, vergeleken met symmetrische encryptie, beretraag. Daarom wordt het in de praktijk gebruikt voor het versleutelen van hooguit tientallen bytes.
VersleutelenAls je een bestand of een verbinding wilt versleutelen (zodanig dat alleen geautoriseerden kunnen ontsleutelen), wordt eerst een symmetrische sleutel gegenereerd (of zoveel sleutels als er ontvangers zijn). Elke van
die sleutel(s) wordt versleuteld met de
public key(s) van de beoogde ontvanger(s). Die public key(s) zul je dus eerst in je bezit moeten hebben, en je zult zeker moeten weten dat ze daadwerkelijk toebehoren aan de bedoelde persoon (of personen). Naar elke ontvanger stuur je vervolgens de met zijn/haar public key verleutelde symmetrische sleutel,
en het -met die symmetrische sleutel- versleutelde bestand.
SignerenAls je een bestand digitaal wilt ondertekenen, kun je -in theorie- een kopie van dat bestand versleutelen met jouw private key. Als je vervolgens het versleutelde exemplaar naar een ontvanger stuurt, kan die ontvanger dat ontsleutelen met jouw public key en concluderen dat het bestand ongewijzigd moet zijn sinds het werd versleuteld met eerdergenoemde private key. Helaas ligt hierbij het risico op "tampering" (wijzigen) van de versleutelde data op de loer - op deze manier is er geen sprake van een cryptografische integriteitscheck, en dat was nou net de bedoeling bij digitale handtekeningen.
Daarom maken digitale handtekeningen in de praktijk gebruik van cryptografische hashes. De verzender berekent de hash (bijv. SHA256) over het bestand, en versleutelt die hash met haar/zijn private key. Het resultaat (de versleutelde hash) is de digitale handtekening. Deze kan in een separaat bestandje worden meegestuurd, of (zoals bij digitaal gesigneerde PDF's en uitvoerbare bestanden), achter het bestand worden "geplakt". De ontvanger berekent ook de hash over het bestand, en vergelijkt deze met de ontvangen hash - na die laatste met de public key te hebben ontsleuteld.
Wie heeft/hebben de private keyIn alle gevallen geldt dat je precies wilt weten wie een private key in bezit heeft en dat die private key niet is gelekt. Hoewel dat laatste erg lastig vast te stellen valt, is het in elk geval belangrijk dat je zeker weet dat de bijpassende public key van de veronderstelde persoon is.
Kortom, om te versleutelen gebruik je de public key van de ontvanger, en signeren doe je met jouw private key.
Ovrigens wordt het afgeraden om een sleutelpaar zowel voor signeren als voor versleutelen te gebruiken. Als je een PGP/GPG/Gnupg "sleutel" genereert, zijn dat in de praktijk dan ook twee sleutelparen. De private key uit één van die sleutelparen gebruik je uitsluitend om te signeren, de private key uit het andere sleutelpaar gebruik je alleen om te ontsleutelen.