Version 2.0 ist weitgehend kompatibel mit neueren Versionen. Weil neue Versionen von PGP auch neue Möglichkeiten bieten, können die älteren Versionen manche Dateien, die mit neueren Versionen erzeugt wurden, nicht in jedem Fall bearbeiten. Wir haben uns Mühe gegeben, die internen Datenstrukturen dieser Version von PGP so zu entwerfen, daß sie an künftige Änderungen angepaßt werden können, so daß hoffentlich niemand noch einmal bei einer kommenden Version von PGP die alten Schlüssel wegwerfen und neue generieren muß.
Versionen ab 2.6 erzeugen teilweise Daten, die von früheren PGP-Versionen nicht gelesen werden können. Grund hierfür ist zum Einen die Möglichkeit, Schlüssel mit mehr als 1024 bit Länge zu verwenden, zum anderen die Tatsache, daß ich mich mit dem MIT geeinigt habe, die neueren Versionen so zu gestalten, damit mehr Anwendrinnen auf die patentrechtlich unbedenklichen Versionen umsteigen. Weitere Informationen hierzu finden Sie im nächsten Abschnitt: "Die vielen PGP-Versionen".
Bis zur Version 2.3 (2.3a ist ein kleiner Bugfix, d.h. es ist ein Programmierfehler entfernt worden, der Klartext-Unterschriften betraf) war PGP "Guerilla-Freeware", die außerhalb der USA unter Philip Zimmermanns Federführung entstand. Das hatte zur Folge, daß die Verwendung von PGP innerhalb der USA eine Verletzung von Patentrechten darstellte. Das nächste PGP, das entwickelt wurde (2.4), umging diese Probleme dadurch, daß es sich um eine kommerzielle Version handelte, die von ViaCrypt, Phoenix, Arizona vertrieben wurde. Mit dem Kauf dieser Version erhielt man das Recht, PGP kommerziell einzusetzen, die nötigen Abgaben an PKP und Ascom Tech waren im Preis eingeschlossen.
Um eine in den USA legale Version von PGP zu erstellen, schloß Philip Zimmermann ein Abkommen mit PKP und dem MIT, ein PGP zu entwickeln, das die frei verwendbaren RSAREF-Routinen benutzt. Teil dieser Abmachung war eine Änderung der Urheberrechtsbestimmungen. PGP wird ab der Version 2.5 (die erste MIT-Version) nicht mehr unter den Bestimmungen der General Public License der Free Software Foundation (Stichwort GNU-Projekt) vertrieben, sondern diese Bestimmungen haben Einschränkungen erfahren, die sich zum Teil in den RSAREF-Bedingungen begründen, zum Teil in der Abmachung von Philip Zimmermann mit PKP.
Kurze Zeit nach der Freigabe der Version 2.5 entstand die Version 2.6. Diese Version hatte - wiederum aufgrund eines Abkommens - eine "Zeitbombe" eingebaut, die zur Folge hatte, daß sie ab dem 1. September 1994 Nachrichten, Schlüssel und Unterschriften erzeugt, die mit früheren Versionen nicht gelesen werden können. Das dient dazu, die Verwendung der (in den USA immer noch illegalen) Version 2.3(a) einzudämmen. Um internationale PGP-Kommunikation zu ermöglichen, ohne US-Exportverbote zu verletzen, haben einige Leute sehr bald die nötigen Änderungen am Quelltext veröffentlicht. Diese hat Peter Simons in seine Amiga-Version 2.3a.2 eingebaut, wobei die Version 2.3a.3 enstand (die aktuellen Versionen von PGP lassen sich direkt für den Amiga kompilieren) und ein Engländer mit dem Pseudonym Mathew hat sie in eine MS-DOS-Version 2.3a eingebaut und das Produkt 2.6ui genannt, wobei "ui" für "unofficial international" steht. Unofficial deshalb, weil die Version von keinem Programmierer des PGP-Teams abgesegnet ist, international deshalb, weil die Version außerhalb der USA entstanden ist und ohne Probleme in allen Ländern, die Verschlüsselung gestatten, verwendet werden kann - außer in den USA.
Um ihren kommerziellen Kunden eine Kommunikation mit 2.6-Anwendern zu ermöglichen, brachte ViaCrypt die Version 2.7 auf den Markt.
Die neueste Version ist die 2.6.2, ein Bugfix zur 2.6 vom MIT. Diese Version sollte nur innerhalb der USA verwendet werden, da eine Verbreitung der USA-Version nach Europa das Abkommen zwischen Philip Zimmermann und PKP gefährdet. Außerhalb der USA ist die aktuelle Version die 2.6.3i. Diese verhält sich leider in einigen Punkten nicht ganz kompatibel zu den offiziellen, d.h. vom MIT und Philip Zimmermann veröffentlichten, Versionen. Wen das stört, dem sei die 2.6.2i empfohlen.
Die eigentliche Verschlüsselung läuft so ab, daß ein Klartextblock von 64 Bit Länge in vier Blöcke zu je 16 Bit eingeteilt wird, die anschließend dem Verfahren in Abb. 4 unterworfen werden. Dargestellt ist nur der erste Durchlauf, das Verfahren wird achtmal angewendet.
Zum Entschlüsseln kann dasselbe Verfahren verwendet werden.
Damit dabei der ursprüngliche Klartext erhalten bleibt,
müssen die Teilschlüssel wie in Abb. 5 gewählt werden.
RSA
RSA, das wohl berühmteste asymmetrische
Verschlüsselungsverfahren, ist benannt worden nach Rivest,
Shamir und Adleman, seinen Entwicklern. Als sie es 1977
veröffentlichten, war es das einzige öffentlich bekannte
Verfahren, daß die 1967 von Diffie und Hellman publizierte Idee
öffentlicher Schlüssel tatsächlich einsetzen konnte.
Das System basiert auf Rechnungen im Körper der ganzen Zahlen modulo pq, wobei p und q zwei Primzahlen sind. In diesem System zu rechnen, geht ebenso vor sich wie gewohnt, nur, daß vom Ergebnis nur der Rest bei Division durch pq behalten wird. Wenn wir als Beispiel pq = 15 setzen, dann sind folgende Rechnungen korrekt:
2 + 5 = 7 2 * 5 = 10 4 * 5 = 5 4 * 4 = 1 1 / 4 = 4
Von besonderem Interesse sind hier die Exponentialfunktionen:
5 ^ 2 = 10 4 ^ 7 = 4
Denn es ist kein effizientes Verfahren bekannt, diese Rechnung umzukehren, d.h. es ist keine Möglichkeit bekannt, in annehmbarer Zeit Probleme wie x ^ 5 = 12 zu lösen. (Auf der Schwierigkeit des diskreten Logarithmus, also der Lösung von 6 ^ x = 8 etc., beruhen andere Verfahren.) Weiterhin interessant ist eine Beziehung, die schon Euler bekannt war:
a ^ {phi (x)} ~= 1 (mod x)
Wobei ~= das Zeichen dafür ist, daß wir das oben erwähnte Modulo-Rechnen durchführen, und zwar mod x. phi (x) ist die Eulersche Phi-Funktion. Für uns wichtig ist nur, daß phi (pq) = (p - 1)(q - 1) gilt, wiederum für die Primzahlen p und q. Eine kurze Rechnung ergibt:
a ^ {phi (pq)} ~= 1 (mod pq) a ^ {(k * phi (pq))} ~= 1 (mod pq) a ^ {(k * phi (pq) + 1)} ~= a (mod pq)
Wenn wir nun zwei Zahlen d und e einführen, von denen wir verlangen, daß de = k * phi (pq) + 1 gelten soll (k sei eine beliebige ganze Zahl ungleich null), dann erhalten wir (ab sofort alle Rechnungen modulo pq):
a ^ de = a a ^ d = b b ^ e = a
Wobei die Kenntnis von b und d nicht ausreicht, um
a zu berechnen. RSA funktioniert nun so, daß als
öffentlicher Schlüssel d und das Produkt pq
veröffentlicht werden und die Nachrichten a damit wie
eben beschrieben verschlüsselt werden. Die verschlüsselten
Nachrichten (b) können dann bedenkenlos versandt werden,
da sie ohne e nicht entschlüsselt werden können.
Angriffsmöglichkeiten auf RSA:
Branko Lankester, Hal Finney und Peter Gutmann haben sehr viel Zeit damit verbracht, neue Eigenschaften in PGP 2.0 einzubauen und es auf verschiedene Unix-Varianten zu portieren. Hal und Branko leisteten Schwerstarbeit bei der Implementierung meiner Protokolle für die Schlüsselverwaltung. Branko hat damit mehr Zeit verbracht als alle anderen, die sich an der Entwicklung von PGP beteiligt haben.
Hugh Kennedy portierte PGP auf VAX/VMS, Lutz Frank auf den Atari ST, Cor Bosman und Colin Plumb portierten PGP auf den Commodore Amiga.(*)
Charlie Merritt lehrte mich, wie man professionell Arithmetik für große Zahlen programmiert, wie sie bei Public Key Verschlüsselungen üblich sind. Jimmy Upton schrieb eine schnelle Implementierung des Algorithmus zum Multiplizieren mit anschließender Modulo-Bildung. Von Thad Smith stammt ein noch schnellerer Algorithmus hierfür. Zhahai Stewart hatte viele gute Ideen zu den Dateiformaten von PGP und ähnlichem. Er machte den Vorschlag, mehr als eine Benutzerinnen-ID für einen Schlüssel zuzulassen. Vom Konzept beglaubigter Schlüssel erzählte mir Whit Diffie. Kelly Goen hatte die meiste Arbeit bei der elektronischen Erstveröffentlichung von PGP 1.0.
Viele Beiträge zur Verbesserung des Programmcodes stammen von Colin Plumb, Derek Atkins und Castor Fu. Weitere Beiträge, nicht nur zur Programmierung, kommen von Hugh Miller, Eric Hughes, Tim May, Stephan Neuhaus und vielen anderen; zu viele, um ihre Namen jetzt im Gedächtnis zu haben. Die Portierung auf den Macintosh ist in zwei Projekten bei Zbigniew Fiedorwicz und Blair Weiss in Arbeit.(*) Seit der Veröffentlichung von PGP 2.0 haben mir viele andere Programmiererinnen Patches, Bugfixes und Anpassungen für die Portierung auf andere Computer zugesandt. Es sind zu viele, um ihnen hier einzeln zu danken.
Zimmermann bietet anwenderspezifische Implementierungen von
Kryptographie, von Authentizitätsprüfungen und von
asymmetrischen Systemen an, außerdem allgemeine
anwenderspezifische Entwicklungen. Seine Firmenadresse:
Die Adresse des Autors
Eine ständige Aktualisierung einer solchen Liste würde sehr viel Arbeit kosten. Für aktuelle Listen sei an dieser Stelle auf die englischen FAQs, die regelmäßig in alt.security.pgp veröffentlicht werden, sowie auf die deutschen FAQs, die in /Z-NETZ/ALT/PGP/ALLGEMEIN und in de.comp.security veröffentlicht werden, verwiesen. d.Ü.PGP verwendet das Verschlüsselungsverfahren RSA, das durch ein Patent im Besitz der Firma Public Key Partners geschützt ist. Für PGP-Anwenderinnen außerhalb der USA sei angemerkt, daß es nur in den USA ein Patent auf RSA gibt. Zu beachten ist, daß es allen Personen, die in den USA und Kanada leben, aufgrund der Exportgesetze dieser Staaten verboten ist, kryptographische Software dieser Art zu exportieren. Wenn Sie jedoch außerhalb der USA leben, begehen Sie wahrscheinlich keinen Verstoß gegen das US-Exportgesetz, wenn Sie sich PGP von einer Quelle außerhalb der USA besorgen. Beachten Sie, daß sich der Name "PGP" aufgrund der Verhandlungen mit den RSA-Patentinhabern bei zukünftigen Versionen möglicherweise ändern wird.
Im Folgenden finden Sie eine kleine Auswahl von Stellen, an denen Sie angeblich PGP bekommen können (Stand: März 1996). Für die Richtigkeit dieser Informationen gibt es keine Garantie.
Das Standardpaket von PGP besteht aus zwei komprimierten Dateien, wobei die Dateinamen die Versionsnummer enthalten. Die Version 2.6.2i steht in der Datei pgp263ix.zip. Diese Datei enthält das ausführbare Programm für MS-DOS und dieses Handbuch (im englischen Original). Außerdem gibt es die Datei pgp263is.zip, die den Quellcode enthält. Diese Dateien können mit PKUNZIP Version 1.10 oder neuer dekomprimiert werden. Unix-Anwender, die keine UNZIP-Implementierung haben, können an denselben Stellen auch die Quelltexte als komprimierte tar-Datei pgp.2.6.3.is.tar.gz finden.
Zur Erinnerung: Wählen Sie Binärübertragung, wenn Sie sich die Dateien per ftp holen. Unter Kermit muß auf beiden Seiten die Betriebsart "8 Bit binär" gewählt werden. Und nun eine kleine Liste anonymer ftp-Server, die PGP anbieten:
Deutschland:ftp.cert.dfn.de
Finnland:nic.funet.fi
Italien:
ghost.dsi.unimi.it
Großbritannien:src.doc.ic.ac.uk
Falls Sie ftp nicht einsetzen können: nic.funet.fi bietet auch "ftp-Mail-Service" an. Um PGP zu bekommen, senden Sie die folgende Nachricht an <[email protected]>:
ENCODER uuencode SEND pub/unix/security/crypt/pgp26is.zip SEND pub/unix/security/crypt/pgp26i.zip(*)
Zu Informationen zu PGP-Implementierungen für den Apple Macintosh, den Amiga und den Atari ST oder andere Rechner können Sie Hugh Miller <[email protected]> fragen.
Hier die E-Mail-Adressen oder Telefonnummern einiger Personen, die Sie fragen können, wo es PGP in einem bestimmten Land gibt: