In de vorige blog heb ik het gehad over de belangrijkste kenmerken van PGP. In deze blog zal ik het hebben over de sleutels die gebruikt worden.
PGP maakt gebruik van een publieke en private sleutelcombinatie. In tegenstelling tot wat je misschien denkt, heb je eigenlijk geen twee sleutels. Je hebt twee sets sleutels. Beide sets bevatten een hoofd sleutel en een of meer subsleutels.
GPG, een bekende implementatie van PGP, genereert standaard een set van twee sleutels. Eén subsleutel voor ondertekening en compressie en één subsleutel voor encryptie. Dat wordt gedaan, omdat dit het gemakkelijk maakt om de sleutel te vervangen voor codering terwijl je nog steeds dezelfde sleutel gebruikt voor ondertekening.
Zowel publieke als private sleutels worden in een ‘sleutelhanger’ geplaatst, één voor publieke en één voor private keys. Alle sleutels kunnen er in worden opgenomen. GPG markeert ook de (sub)sleutels duidelijk te maken welke sleutel wordt gebruikt voor ondertekening, compressie en encryptie.
Alle sleutels hebben een unieke sleutel-id. In het bovenstaande voorbeeld is dit 32A3C3E7B57023DA4EB309F0747FF79F68AB2AF2
. Deze id wordt altijd verstrekt in elk bericht dat is ondertekend, gecomprimeerd en / of geëncrypt. Zo weet je welke sleutel uit de sleutelhanger gehaald moet worden om te verifiëren, decomprimeren en/of ontsleutelen.
Wanneer je jouw eigen implementatie maakt, moet u altijd de sleutel-id gebruiken om de sleutel op te halen, in plaats van de eerste sleutel op te halen. Dit werkt met RSA (standaard), maar als je een DSA/Elgemal combinatie gebruikt krijg je fouten. DSA kan namelijk alleen worden gebruikt voor ondertekening en compressie.
Tip: voeg bij het testen van je code een test toe die een DSA/Elgemal-combinatie gebruikt. Op deze manier krijg je de fout snel. Controleer ook de sleutel-ID om te zien of de juiste is gebruikt.
De standaardkeuze in GPG is een RSA/RSA-combinatie met een sleutelgrootte van 3072. Het is mogelijk om een andere combinatie te kiezen. Elke sleutel heeft zijn eigen voor- en nadelen. Weet wel dat RSA/RSA meestal een veilige keuze is.
Belangrijk om te weten is dat voor RSA een keysize van 3072 in principe de max is. Je kunt hoger gaan, maar de winst weegt niet op tegen de nadelen. Dit komt door het feit dat RSA priemgetallen gebruikt en hoe hoger je gaat, hoe kleiner de kans dat je een priemgetal tegenkomt. Waardoor RSA aanzienlijk langzamer wordt, maar niet even veiliger. Als er meer beveiliging nodig is, is het raadzaam om over te schakelen naar een elliptische curvecryptografie in plaats van RSA.
Wetende dat je eigenlijk een set sleutels maakt in plaats van slechts twee sleutels, helpt je om verder te gaan met je ontdekkingsreis met PGP. Vergeet niet om altijd de sleutel-ID te gebruiken om de sleutel van de sleutelhanger op te halen. Dit voorkomt een hoop onvoorziene fouten.
In mijn volgende en laatste blog zal ik het hebben over het verschil tussen de specificatie en implementatie.