Pretty Good Privacy (PGP) erlaubt das kryptografische Unterschreiben und das Ver- und Entschlüsseln von Dokumenten. Ersteres dient der Sicherung der Identität, letzteres der Sicherung der Vertraulichkeit. Dabei wird der OpenPGP-Standard benutzt, der eine Kombination aus herkömmlichen und Public-Key-Verfahren einsetzt. PGP selbst – als Produkt der PGP Corporation – ist keine GPL-Software. Der OpenPGP-Standard ist dagegen nicht proprietär. Die wichtigste Open-Source-Implementierung von OpenPGP ist GnuPG (GPG) [1] .
Die Grundidee der Public-Key-Kryptografie ist, dass zuerst ein Verschlüsselungsprozess den lesbaren Text chiffriert und anschließend ein Entschlüsselungsprozess das Ganze wieder in eine lesbare Form zurückverwandelt. Zum Verschlüsseln wird ein Algorithmus und ein Schlüssel gebraucht.
Ein ganz einfaches Beispiel für einen Verschlüsselungs-Algorithmus ist der sogenannte Cäsar-Code, bei dem jeder Buchstabe um eine feste Distanz verschoben wird: Aus
»A
«
wir
»D
«
aus
»B
«
wird
»E
«
und so weiter. Den Algorithmus könnte man so beschreiben:
»Verschiebe jeden Buchstaben X um den Schlüsselwert 3
«
.
Dieses Verfahren ist natürlich sehr leicht zu brechen und als ernsthaftes Verschlüsselungsverfahren nicht zu gebrauchen, doch es verdeutlicht das Grundprinzip: Der Empfänger braucht wieder den zuvor benutzten Schlüssel und den Algorithmus. Und hier stößt man auf ein Problem: Wie soll man den Empfänger mit diesen Daten versorgen? Man kann sie nicht verschlüsseln, denn er hätte nichts in der Hand, womit er sie entschlüsseln könnte. Sendet man sie aber unverschlüsselt, könnten sie von Unbefugten abgefangen werden.
Die Lösung für dieses Problem ist die Public-Key-Kryptografie. Sie verwendet einen öffentlichen Schlüssel zum Verschlüsseln der Nachricht und einen anderen, privaten Schlüssel für das Entschlüsseln. Dabei ist es unmöglich den privaten Schlüssel aus dem öffentlichen abzuleiten. Deshalb kann man den öffentlichen Schlüssel unbesorgt überall verteilen. Der private Schlüssel wird dagegen niemals und mit niemandem geteilt.
Wenn man eine Nachricht mit GPG verschlüsselt, passiert das Folgende:
Nachricht und Session Key gelangen verschlüsselt gemeinsam zum Empfänger. Bei ihm passiert das Folgende:
Nun liegt die Nachricht wieder in lesbarer Form vor. Die zugrunde liegende Mathematik ist nicht Gegenstand dieses Artikels. Wer deren Details studieren möchte, findet ein nachvollziehbares Beispiel unter [2] .