Online beveiliging is een hot topic en encryptie speelt hierin een belangrijke rol. Versleuteling wordt gebruikt voor het verzenden van beveiligde e-mails, end-to-end encryptie (gebruikt door apps zoals Whatsapp) en meer. Het heeft ook wat nieuwsberichtgeving gehad toen de politie erin slaagde Encrochat en Exclu Messenger te hacken om criminelen wereldwijd te vangen.
In het afgelopen periode heb ik met PGP gewerkt. Er is veel informatie over dit onderwerp te vinden op het internet. Alle informatie is echter gefragmenteerd over meerdere websites of te gedetailleerd. In een serie blogposts zal ik alle informatie delen die ik wou dat ik wist voordat ik met PGP aan de slag ging.
In deze eerste blogpost bespreek ik de basisprincipes van PGP. Mijn tweede blogpost zal gaan over sleutels die worden gebruikt, en de derde blogpost zal gaan over het verschil tussen de specificatie en implementatie.
PGP staat voor Pretty Good Privacy en is ontwikkeld in 1991. PGP kan worden gebruikt voor het ondertekenen, comprimeren en versleutelen van gegevens zoals documenten en e-mails. Ik zal ze allemaal nader toelichten.
Ondertekening
Ondertekening kan worden gebruikt om te controleren of het bericht echt van de afzender is en op geen enkele manier is gewijzigd. PGP doet dit door eerst een hash te genereren. Welk hash-algoritme wordt gebruikt, hangt af van de implementatie (de standaard in GPG is SHA265). Deze hash wordt vervolgens ondertekend met de persoonlijke sleutel van de afzender. De ontvanger kan deze handtekening verifiëren met behulp van de openbare sleutel van de afzender.
De gegevens die versleuteld moeten worden, kunnen erg groot zijn. Om het verzenden gemakkelijker te maken, kunnen de gegevens worden gecomprimeerd door een soort zip-algoritme. Meestal gebeurt dit nadat de handtekening is gegenereerd en voordat de versleuteling plaatsvindt.
PGP kan een bericht versleutelen en ontsleutelen. Versleuteling gebeurt met behulp van de openbare sleutel van de ontvanger en ontsleutelen gebeurt met behulp van de privésleutel van de ontvanger.
Om te begrijpen hoe PGP-codering werkt, moet je eerst meer weten over versleuteling. Wat nog belangrijker is, u moet het verschil kennen tussen symmetrische en asymmetrische versleuteling.
Symmetrische versleuteling
Symmetrische versleuteling gebruikt dezelfde sleutel voor zowel versleuteling als ontsleuteling. Een voorbeeld hiervan is de Caesar cypher. Dit werkt door elke letter te vervangen door een letter op een vast aantal posities omhoog of omlaag in het alfabet. Als je bijvoorbeeld een verschuiving van 3 gebruikt, wordt A C, B wordt D en C wordt E.
Hello world
wordt Khoor zruog
.
Om dit te ontsleutelen, hoef je alleen maar het effect om te keren (C wordt A, enz.).
Dit is een snelle manier om informatie te versleutelen en te ontsleutelen, maar het is alleen veilig zolang de sleutel onbekend is. Omdat de sleutel wordt gebruikt voor zowel versleutelen als ontsleutelen, kan de sleutel worden gestolen bij de verzendende of ontvangende partij. En wanneer deze sleutel wordt onthuld, kunnenalle berichten die met deze sleutel zijn verzonden, worden ontsleuteld. Er kunnen ook valse berichten worden gegenereerd, waardoor deze methode gevaarlijk is om op te vertrouwen.
Asymmetrische versleuteling
Asymmetrische versleuteling maakt gebruik van een openbare en persoonlijke sleutel. De openbare sleutel wordt gebruikt om de informatie te versleutelen en de persoonlijke sleutel wordt gebruikt om te ontsleutelen. Aangezien de persoonlijke sleutel alleen bekend is aan het uiteinde van de ontvanger, is dit een zeer veilige manier van versleuteling. Het nadeel is echter dat dit vrij lang kan duren om te versleutelen / ontsleutelen. Hoe langer het bericht, hoe langzamer het proces.
PGP maakt eigenlijk gebruik van symmetrische- en asymmetrische versleuteling. Dit maakt het zowel snel als veilig.
De manier waarop PGP dit doet is door eerst een sessiesleutel te genereren. Deze sessiesleutel is een symmetrische encryptiesleutel en is uniek per bericht. De informatie wordt versleuteld met deze sessiesleutel.
Een voorbeeld van een sessiesleutel is
De sessiesleutel wordt vervolgens versleuteld met de openbare asymmetrische coderingssleutel van de ontvanger. Omdat de grootte van de sessiesleutel vrij klein is, duurt dit niet lang.
De gecodeerde gegevens met behulp van de symmetrische sessiesleutel en de asymmetrische gecodeerde sessiesleutel worden gecombineerd in het resulterende bericht. Dit bericht kan naar de ontvanger worden verzonden. Dit is zeer veilig, omdat alleen de ontvanger de sessiesleutel kan decoderen.
Dit zijn de belangrijkste kenmerken van PGP. De belangrijkste take-away is dat PGP zowel symmetrisch als asymmetrisch is en dat de gecodeerde sessiesleutel wordt gebruikt om het eigenlijke bericht te versleutelen en te ontsleutelen. In de volgende blog zal ik het hebben over de sleutels die gebruikt kunnen worden.