PGP = Anhang

Kompatibilität mit alten Versionen von PGP
Die vielen PGP-Versionen
IDEA
RSA
Angriffsmöglichkeiten (RSA)
Computerorientierte politische Vereinigungen in den USA
Computerorientierte politische Vereinigungen in Deutschland und den Niederlanden
Literaturverzeichnis
Pressemeldungen
Dank
Über den Autoren
Die Adresse des Autoren
Bezugsquellen für PGP

# Kompatibilität mit alten Versionen von PGP

Es tut mir leid, aber Version 2.x von PGP ist nicht kompatibel zu Version 1.0. Für Version 1.0 generierte Schlüssel müssen durch neue ersetzt werden. Ab Version 2.0 verwendet PGP andere Algorithmen für die konventionelle Verschlüsselung, für die Datenkompression und für die Berechnung der Textprüfsummen. Außerdem gibt es ab Version 2.0 ein wesentlich besseres Konzept für die Verwaltung der Schlüssel. Die Änderungen sind zu umfangreich, um eine Kompatibilität mit Version 1.0 aufrechtzuerhalten.

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".

# Die vielen PGP-Versionen

Was soll eigentlich das ganze Chaos mit den Versionen 2.3a, 2.3a.5, 2.6, 2.6MIT, 2.6.1, 2.6ui, 2.7 usw.?

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.

# Kurz vorgestellt: Die Verschlüsselungsalgorithmen

## IDEA

Dieser symmetrische, auch single-key oder konventionell genannte Verschlüsselungsalgorithmus basiert auf der Kombination einfacher Rechenoperationen. Verwendet werden:

1. Bitweise Addition zweier Zahlen ohne Übertrag (XOR)
2. Addition zweier Zahlen ohne Berücksichtigung des Übertrags über 216 hinaus
3. Multiplikation zweier Zahlen und Bildung des Restes nach Division durch 216+1. Hierbei werden 0 und 216 besonders behandelt: Vor Beginn der Multiplikation wird eine 0 durch 216 ersetzt, das Ergebnis 216 wiederum wird als 0 interpretiert. Daraus folgt: 0 "mal" 0 = 1.

Aus dem 128-Bit-Schlüssel werden Teilschlüssel berechnet, und zwar S1,1 bis S8,6 und S9,1 bis S9,4. Hierfür wird der Schlüssel in acht 16 Bit große Teile geteilt, diese ergeben S1,1 bis S1,6, S2,1 und S2,2. Anschließend wird der gesamte 128-Bit-Schlüssel um 25 Bit nach links rotiert und wieder in acht Blöcke zu je 16 Bit unterteilt, die dann S2,3 bis S2,6 und S3,1 bis S3,4 werden. Dann wird wieder rotiert und so weiter.

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:

- Aus a und b e berechnen: "diskreter Logarithmus", gilt als derzeit unlösbar.
- Aus pq und d das geheime e berechnen: Hierzu muß nach derzeitigem Wissensstand pq in seine Faktoren zerlegt werden, was ebenfalls für nicht in sinnvoller Zeit lösbar gehalten wird.
- Eine an verschiedene Empfänger verschlüsselte Nachricht entschlüsseln: Wenn dasselbe a an mehrere Empfänger verschlüsselt wird, wobei dasselbe d verwendet wird (das ist nicht unwahrscheinlich), ist es mit einem kleinen mathematischen Kunstgriff möglich, die Nachricht zu entschlüsseln. Dies betrifft PGP nicht, da hier beim Verschlüsseln an mehrere Empfänger der IDEA-Schlüssel stets mit Zufallszahlen aufgefüllt wird, die für jeden Empfänger verschieden sind.

# Computerorientierte politische Vereinigungen in Deutschland und den Niederlanden

# Literaturverzeichnis

## Für den Einstieg in die Kryptographie

- Bruce Schneier, "Applied Cryptography: Protocols, Algorithms, and Source Code in C", zweite Auflage, John Wiley & Sons, 1995 (Dieses Buch ist wirklich gut.)
- Dorothy Denning, "Cryptography and Data Security", Addison-Wesley, Reading, MA 1982
- Dorothy Denning, "Protecting Public Keys and Signature Keys", IEEE Computer, Feb 1983
- Martin E. Hellman, "The Mathematics of Public-Key Cryptography", Scientific American, Aug 1979
- Steven Levy, "Crypto Rebels", WIRED, May/Jun 1993, page 54. (Ein "Muß" zu PGP und verwandten Themen)

## Weitere Literatur

- Ronald Rivest, "The MD5 Message Digest Algorithm", RFC 1321, MIT Laboratory for Computer Science, April 1992
- Xuejia Lai, "On the Design and Security of Block Ciphers", Institute for Signal and Information Processing, ETH-Zentrum, Zurich, Switzerland, 1992
- Xuejia Lai, James L. Massey, Seanm Murphy, "Markov Ciphers and Differential Cryptoanalysis", Advances in Cryptology - EUROCRYPT'91
- Philip Zimmermann, "A Proposed Standard Format for RSA Cryptosystems", Advances in Computer Security, Vol. III, edited by Rein Turn, Artech House, 1988
- Paul Wallich, "Electronic Envelopes", Scientific American, Feb 1993, page 30. (Handelt von PGP.)
- William Bulkeley, "Cipher Probe" Wall Street Journal, 28 April 1994, front page. (Handelt von PGP und Zimmermann.)
- James Bamford, "The Puzzle Palace: A Report on America's Most Secret Agency", 656 p., 09/1983 (ISBN 0-14-006748-5, Penguin Books), Viking Penguin.
- James Bamford, "The Puzzle Palace: Inside the National Security Agency, America's Most Secret Intelligence Organization", rev. & updated ed., 656 p., 12/1993 (ISBN 0-14-023116-1, Penguin Books), Viking Penguin.

# Danksagungen

Ich danke den im folgenden genannten Leuten für ihre Mitarbeit an der Entwicklung von PGP. Wenn ich auch der alleinige Autor von PGP Version 1.0 bin, so sind große Teile der neueren Versionen in internationaler Zusammenarbeit entstanden, an der viele Menschen unter meiner Leitung beteiligt waren.

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.(*)

(*)Spätere Versionen portierte Peter Simons. d.Ü.

Übersetzungen von PGP stammen von Jean-Loup Gailly in Französisch, von Felipe Rodriguez Svensson und Branko Lankester in Holländisch, von Miguel Angel Gallardo in Spanisch, von Hugh Kennedy und Lutz Frank in Deutsch(*), David Vincenzetti in Italienisch, Harry Bush und Maris Gabalins in Lettisch, von Zygimantas Cepaitis in Litauisch, von Peter Suchkow und Andrew Chernov in Russisch und von Alexander Smishlajev in Esperanto. Peter Gutmann bot eine Übersetzung in neuseeländisches Englisch an, aber wir waren dann doch der Meinung, daß US-Englisch ausreichend ist.

(*)Diese übersetzten `language.txt`. Diese Übersetzung ist schwer aufzutreiben. Mittlerweile existiert auch eine Übersetzung dieser Datei von Marc Aurel, die inzwschen von Frank Prüfer gepflegt wird. d.Ü.

Jean-Loup Gailly, Mark Adler und Richard B. Wales veröffentlichten die ZIP-Kompressionsroutinen und erlaubten ihre Verwendung für PGP. Die MD5 Routinen entwickelte Ron Rivest, der sie auch für Public Domain Verwendung freigab. Xuejia Lai und James L. Massey entwickelten an der ETH Zürich die IDEA-Verschlüsselung. Die Verwendung von IDEA durch PGP erfolgt mit Genehmigung der AscomTech AG.

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.

(*)PGP ist mittlerweile auch für den Macintosh verfügbar. d.Ü.

Die Entwicklung von PGP ist zu einem bemerkenswerten sozialen Phänomen geworden. Der besondere politische Reiz, der von PGP ausgeht, hat eine auch heute noch wachsende Zahl freiwilliger Programmiererinnen zur gemeinsamen Arbeit angeregt. Wie in dem Kinderbuch "Stone Soup" beschrieben, wird es für mich immer schwieriger, durch die dicke Suppe hindurch den Stein auf dem Boden des Topfes zu erkennen, den ich selbst zu Anfang hineingeworfen habe.

# Über den Autor

Philip Zimmermann ist Softwareentwickler mit über zwanzig Jahren Erfahrung. Er ist spezialisiert auf integrierte Echtzeitsysteme, Kryptographie und Fragen der Authentisierung von Nachrichten und Datenkommunikation. Er hat Erfahrungen unter anderem mit dem Entwurf und der Implementierung von Authentizitätsprüfungssystemen bei Finanz-Informationsnetzwerken, in der Datensicherheit in Netzwerken, Protokollen zur Schlüsselverwaltung, Echtzeit-Multitasking-Systemen, Betriebssystemen und lokalen Netzwerken.

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

# Bezugsquellen für PGP

> 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 `<mailserv@nic.funet.fi>`:

    ENCODER uuencode
    SEND pub/unix/security/crypt/pgp26is.zip
    SEND pub/unix/security/crypt/pgp26i.zip(*)

(*)Der Name der Quellcodedatei variiert nach meiner Erfahrung etwas. d.Ü.

Nach spätestens 24 Stunden haben Sie in Ihrem Postfach etwa 15 UUcodierte Nachrichten, aus denen Sie mit UUdecode die beiden `.zip`-Dateien erhalten.

Zu Informationen zu PGP-Implementierungen für den Apple Macintosh, den Amiga und den Atari ST oder andere Rechner können Sie Hugh Miller `<hmiller@lucpul.it.luc.edu>` fragen.

Hier die E-Mail-Adressen oder Telefonnummern einiger Personen, die Sie fragen können, wo es PGP in einem bestimmten Land gibt:

- Deutschland
  FoeBuD e.V. `<foebud@bionic.zerberus.de>` +49 521 175254
  Christopher Creutzig `<c.creutzig@bionic.zerberus.de>`
  Abel Deuring `<a.deuring@bionic.zerberus.de>`
- Neuseeland
  Peter Gutmann `<pgut1@cs.aukuni.ac.nz>`
  Hugh Kennedy `<70042.710@compuserve.com>`
- Holland, Spanien
  Branko Lankester `<lankeste@fwi.uva.nl>`
  Miguel Angel Gallardo `<gallardo@batman.fi.upm.es>`
  +31 2159 42242 (341)
  474 38 09
- Toronto, Ontario, Canada, USA
  Hugh Miller `<hmiller@lucpul.it.luc.edu>`
  Colin Plumb `<colin@nyx.cs.du.edu>`
  +1 (312) 508-2727
- Frankreich
  Jean-loup Gailly `<jloup@chorus.fr>`

Dies ist Zugriff auf diese Seite.