next up previous contents index
Next: LEGAL_KLUDGE - (nicht) von 2.3a lesbare Dateien erzeugen Up: 2. KommandozeilenversionenPGP 2.6.x, 5.x, GnuPG Previous: 12. Die Installation von GnuPG

Unterkapitel


13. PGP bedienen

Im Verlauf dieses Kapitels werden wir von den Versionen PGP 2.6.2i, PGP 5.0 und GnuPG 1.0.0 ausgehen[*]. Abweichungen zu anderen Versionen der Reihe 2.6.x finden Sie bei den entsprechenden Befehlen erwähnt. Näheres zu den verschiedenen PGP-Versionen finden Sie in Anhang B. Am Ende dieses Kapitels,, finden Sie eine Kurzübersicht der besprochenen Befehle.

Texte, die in [eckigen Klammern] stehen, sind optional, können also weggelassen werden. Werden optionale Parameter angegeben, dürfen die eckigen Klammern selbst nicht angegeben werden. Wenn Zeilen zu lang für die Textbreite sind, werden sie in diesem Handbuch mit \ beendet und auf der nächsten Zeile fortgesetzt. Eine Kommandozeile der Art


\begin{command}beispiel: beispiel -a [-b] -c \
: -d -e -f [-g]
\end{command}
könnte also als
beispiel -a -c -d -e -f -g
eingetippt werden. (Unter Unix können Sie auch die Form mit \ am Ende der ersten Zeile, gefolgt von <Return> eintippen.)

  1. Kurzanleitung am Bildschirm

Mit dem Kommando
\begin{command}2.6.x: pgp -h
5.0: pgpe -h
5.0: pgpk -h
5.0: pgps -h
5.0: pgpv -h
gpg: gpg --help
\end{command}
gibt PGP einen "Kurzüberblick" über die möglichen Befehle.

Für 2.6.x gilt des Weiteren Folgendes: Abhängig davon, ob eine Datei namens pgp.hlp vorhanden ist oder nicht, wird der Befehl unterschiedlich ausgeführt. Ist pgp.hlp nicht vorhanden, erscheint eine etwa 15 Zeilen umfassende "Superkurzanleitung" am Bildschirm. Wenn die Datei pgp.hlp vorhanden ist, wird ihr Inhalt am Bildschirm angezeigt. Im Text kann mit den Tasten LEERTASTE, RETURN und B geblättert werden. Mit Q wird das Programm beendet. Falls die Datei de.hlp vorhanden und in der Datei config.txt der Eintrag language=de enthalten ist, wird der Hilfstext auf deutsch angezeigt. Details zu config.txt finden Sie in Abschnitt 14. (Die hier angegebenen Tasten gelten natürlich nur, wenn in der config.txt kein spezielles Anzeigeprogramm eingestellt wurde.)

GnuPG verwendet kein internes Anzeigeprogramm und gibt eine kurze Hilfe einfach auf der Standardausgabe aus. Wenn Sie sie auf einem Bildschirm mit weniger als 83 Zeilen lesen möchten, sollten Sie eines der Kommandos
\begin{command}gpg: gpg --help \vert less
gpg: gpg --help \vert more
\end{command}
aufrufen.

  2. Die Schlüsselverwaltung

Schon zu Zeiten Julius Cäsars war der Umgang mit Schlüsseln die delikateste Angelegenheit der Kryptographie. Einer der größten Vorteile von PGP ist die hochentwickelte Schlüsselverwaltung. GnuPG hat hier allerdings eine etwas andere Herangehensweise als PGP, für die meisten Befehle rufen Sie gpg -edit-key User_ID auf und geben dann einen passenden Befehl ein. In diesem Abschnitt finden Sie die entsprechenden Befehle so formatiert (aus Platzgründen beschränken wir uns auf "Menü" statt "GnuPG-Menü" o.ä.):
\begin{command}Menü: fpr
\end{command}
Der entsprechende Programmaufruf könnte wie folgt aussehen, wobei die kursiv gedruckten Teile die Benutzereingaben sind:
\begin{alltt}[ccr@nescio doc]\$ \textit{gpg --edit-key Koch}
gpg (GnuPG) 0.9.1; ...
... 68B7 AB89 5754 8DCD
\par Command> \textit{quit}
[ccr@nescio doc]\$
\end{alltt}

  1. Einen Schlüssel generieren

  Um Ihr eigenes Schlüsselpaar zu erzeugen, geben Sie folgenden Befehl ein:
\begin{command}2.6.x: pgp -kg
5.0: pgpk +fastkeygen=0 -g
gpg: gpg --gen-key
Menü: addkey
\end{command}
Nach der Eingabe dieses Befehls fragt PGP nach der Schlüsselgröße. PGP bietet einige mögliche Schlüsselgrößen als Auswahlmöglichkeiten an, 384 Bit "für den Hausgebrauch", 512 Bit "für normale Anwendungen" oder 1024 Bit "für militärische Sicherheit", Sie können aber auch direkt z.B. 1536 eingeben. Die Werte für die Schlüsselgrößen sind allerdings nur als Anhaltspunkte anzusehen. Je größer der Schlüssel ist, desto sicherer ist die Verschlüsselung, aber auch umso langsamer. Die meisten Anwender verwenden 2048 oder 1024 Bit.

  GnuPG fragt zunächst, welche Sorte Schlüssel Sie verwenden möchten. Da PGP 5.x/6.x von den angebotenen Schlüsseln nur die Kombination DSA/ElGamal (und RSA, allerdings nicht in allen Programmversionen) unterstützen, ist diese Kombination empfehlenswert, um mit Anwendern dieser PGP-Versionen Nachrichten austauschen zu können.

Des weiteren haben Sie die Möglichkeit, Schlüssel mit begrenzter Gültigkeitsdauer zu erzeugen; das ist nicht nur für zeitlich begrenzte Projekte interessant, sondern auch für den besonders sicherheitsbewußten Einsatz zu empfehlen - wenn Sie die von Ihnen verwendeten Schlüssel regelmäßig wechseln, machen Sie einen Angriff schwerer und uninteressanter.

Der Schlüssel-Befehl addkey ist interessant, um an einen bestehenden (eigenen) Schlüssel einen neuen Teilschlüssel zu hängen, beispielsweise den Schlüssel, mit dem Sie in den nächsten sechs Monaten ausgehende Post unterschreiben wollen.

Anschließend möchte PGP eine User-ID wissen, d.h. einen Namen, der angibt, wem der Schlüssel eigentlich gehören soll. Vorzugsweise sollte der gesamte Name verwendet werden, da so weniger Verwechslungsmöglichkeiten entstehen. Es ist allgemeiner Usus, hinter dem Realnamen in <spitzen Klammern> eine E-Mail-Adresse anzugeben, also z.B.:

Patrick Lenz <MASTER@aol.com>
Johanna Wiesmüller <smb4423@rz.uni-sonstwo.de>
Für GnuPG wird diese Form bereits dadurch erzwungen, daß Sie Ihren Namen, Ihre E-Mail-Adresse und evtl. noch einen Kommentar (z.B. "nur für Pressemeldungen") einzeln eingeben müssen. Diese Angaben werden im neuen Datenformat voneinander getrennt abgespeichert.

Nun fragt das Programm Sie nach einem Mantra, mit dem Ihr privater Schlüssel geschützt werden soll. Hierbei handelt es sich um die größere Ausgabe eines Paßwortes, die beliebig lang sein darf, also beispielsweise ein kompletter Satz. Ohne dieses Mantra ist Ihr privater Schlüssel praktisch wertlos. Dieses Mantra dürfen Sie auf keinen Fall vergessen, sonst haben Sie keine Möglichkeit, wieder an Ihren privaten Schlüssel zu kommen. Andererseits sollte das Mantra auch nicht zu leicht zu raten sein, denn es ist der einzige Schutz Ihres privaten Schlüssels vor Mitmenschen, die Daten von Ihrem Rechner herunterkopieren können.

Außerdem gilt das Übliche: Das Mantra nicht aufschreiben, kein kurzes oder anderweitig leicht zu ratendes Mantra verwenden ("Alea iacta est" wäre viel zu simpel, auch "Ich liebe Moni!" sollte nicht verwendet werden), und das Mantra nicht über ein Netzwerk eintippen. Normalerweise erscheint das Mantra nie am Bildschirm, es sei denn, die Konfiguration wurde entsprechend geändert.

PGP unterscheidet beim Mantra zwischen Groß- und Kleinschreibung. Neben Buchstaben kann das Mantra auch Ziffern, Satzzeichen usw. enthalten. Sollten Sie es tatsächlich vorziehen, kein Mantra zu verwenden, drücken Sie einfach RETURN. Das halten wir aber für eine sehr schlechte Idee.

Um das Schlüsselpaar zu erzeugen, braucht PGP große, wirklich zufällige Zufallszahlen.Diese werden bei PGP 2.6.x aus den Zeitabständen zwischen einigen Tastendrücken abgeleitet, um die Sie gebeten werden. Tippen Sie einfach ein wenig Zufallstext in ständig wechselnder Geschwindigkeit. PGP sagt Ihnen, wieviel Sie tippen müssen. GnuPG ist darauf ausgelegt, vom System bereitgestellte Zufallszahlen zu verwenden (Linux: /dev/random).PGP 5.0i nutzt diese Quelle auf Linux ebenfalls. Diese Zufallszahlen stammen aus den Zeitangaben, zu welcher Millisekunde Sie welche Taste gebraucht haben, wieviele Millisekunden der Zugriff auf eine Datei Ihrer Festplatte diesmal gebraucht hat, wie sehr die internen Rechnerzeiten voneinander abweichen und derartigen (aller Wahrscheinlichkeit nach wirklich zufälligen) Angaben. Für Systeme, auf denen kein derartiger Mechanismus vorgesehen ist, wurde der "entropy gathering daemon" entwickelt, der versucht, derartige Informationen im Hintergrund zu sammeln. Besser ist eine Integration in das System. Die nächste Generation der Intel-Chips, Pentium III, soll einen Hardware-Generator für Zufallszahlen enthalten. Sofern der Zugriff hierauf nicht durch das System eingeschränkt wird, wird das vermutlich eine gute zusätzliche Quelle zur Generierung echter Zufallszahlen sein.

    Anschließend zeigt PGP Ihnen mit einigen '.' und '+' (GnuPG auch noch '!', '^', '<', '>') seinen Fortschritt an. Auf langsameren Rechnern kann das Ganze durchaus mehrere Minuten dauern, aber es wird im Allgemeinen ja nur selten (bei jedem Schlüsselwechsel, beispielsweise alle sechs Monate einmal) gemacht. Falls Sie genauer wissen wollen, wann welches Zeichen angezeigt wird: Das Programm braucht zur Schlüsselerzeugung große, geheime Primzahlen. Diese werden berechnet, indem bei einer Zufallszahl begonnen wird und dann so lange die nächste ungerade Zahl getestet wird[*], bis eine Primzahl gefunden wurde. Die Bedeutung der einzelnen Zeichen finden Sie in Tabelle II-13.1. Die verwendeten Primzahltests (Rabin-Miller und Fermat) sind Zufallstests, die durchaus auch fehlerhaft behaupten können, eine Zahl sei prim, aber nicht umgekehrt - deswegen muß eine Zahl mehrere Durchläufe bestehen, um als Primzahl angesehen zu werden. Die Wahrscheinlichkeit dafür, daß PGP eine Zahl fehlerhaft als prim ansieht, ist verschwindend klein (kleiner als 2-16).


 
Tabelle: Bedeutung der Zeichen bei der Schlüsselerzeugung
Zeichen Bedeutung
. 10 Tests sind fehlgeschlagen.
+ Eine Zahl hat einen Testdurchlauf bestanden.
! Es werden neue Zufallsparameter gewählt.
^ Ein neuer Wert für den ElGamal-Parameter g wird getestet.
< Die Größe eines der RSA-Faktoren wurde verkleinert.
> Die Größe eines der RSA-Faktoren wurde vergrößert.
 

Die frisch erzeugten Schlüssel werden vom Programm in den Bund mit öffentlichen bzw. den mit geheimen Schlüsseln abgelegt. Von dort aus kann der öffentliche Schlüssel später in eine eigene Datei kopiert werden, die Sie dann weitergeben können. Dann können Ihre Freunde und Bekannten Ihren öffentlichen Schlüssel zu ihrem Schlüsselbund hinzufügen.

Den privaten Schlüssel sollten Sie natürlich niemals weitergeben. Auch sollten Sie darauf achten, Ihr Schlüsselpaar selbst zu erzeugen und keine Schlüssel für Freunde zu erstellen[*]. Die Sicherheit des gesamten Systems liegt darin, daß Ihr privater Schlüssel wirklich privat ist.

Der private Schlüssel sollte nach Möglichkeit nicht auf einem Rechner liegen, der für andere Benutzerinnen zugänglich ist, auch wenn er durch ein Mantra geschützt ist.

   2. Einen Schlüssel in den Schlüsselbund aufnehmen

Um einen öffentlichen Schlüssel in den eigenen Bund mit öffentlichen Schlüsseln aufzunehmen, benutzen Sie folgenden Aufruf:
\begin{command}2.6.x: pgp -ka Datei [Schlüsselbund]
5.0: pgpk -a Datei
gpg: gpg --import Datei
\end{command}
Datei ist diejenige Datei, die den oder die neuen Schlüssel enthält, der optionale Parameter Schlüsselbund bezeichnet die Datei, die den öffentlichen Schlüsselbund enthält.

Wird PGP mit diesem Befehl aufgerufen, dann prüft es zunächst, ob der Schlüssel schon bekannt ist. In diesem Fall wird er nicht ein weiteres Mal eingebunden, sondern auf neue Unterschriften und/oder Benutzer-IDs untersucht, die gegebenenfalls in den Schlüsselbund aufgenommen werden. PGP durchsucht die komplette Datei und bearbeitet alle darin enthaltenen Schlüssel auf diese Art und Weise. Was unterschriebene Schlüssel sind und wozu sie dienen, wird in Abschnitt 7.3 erläutert.

  3. Einen Schlüssel oder eine Benutzer-ID löschen

Der Befehl hierfür lautet
\begin{command}2.6.x: pgp -kr Benutzer-ID [Schlüsselbund]
5.0: pgpk -r Benutzer...
...zer-ID
gpg: gpg --delete-key Benutzer-ID
Menü: deluid
Menü: delkey
\end{command}
Wird ein Schlüssel gefunden, der zu der angegebenen ID paßt, fragt PGP, ob Sie diesen entfernen möchten, bzw. wenn der Schlüssel mehrere IDs hat, ob Sie ihn ganz entfernen möchten oder nur die eine oder andere ID. Wenn Sie aus Ihrem eigenen Schlüssel IDs löschen, hat das keine Auswirkungen auf Kopien Ihres Schlüssels, die bei anderen Leuten (oder auf Keyservern) diese IDs bereits gespeichert haben.

  4. Inhaltsangabe des Schlüsselbunds

  Diese erhalten Sie mit dem Befehl
\begin{command}2.6.x: pgp -kv[v] [Benutzer-ID] [Schlüsselbund]
5.0: pgpk -l[l] [Benutzer-ID]
gpg: gpg -k[v[v]] [Benutzer-ID(s)]
\end{command}
Geben Sie eine Benutzer-ID an, werden alle Schlüssel aufgelistet, die den angegebenen Text enthalten, ansonsten alle Schlüssel der Datei (vgl. Abb. 13.1). Geben Sie keinen Schlüsselbund an, wird pubring.pgp bzw. pubring.pkr bzw. pubring.gpg verwendet. Verwenden Sie die Option -kvv, werden zusätzlich zu den Schlüsseln alle Unterschriften ausgegeben. Bei PGP 5.0 bewirkt -ll statt -l, daß zu jedem Schlüssel auch sein Fingerprint ausgegeben wird.
  
Abbildung 13.1: pgp -kvv ccr


\begin{alltt}[ccr@nescio ccr]\$ \textit{pgp -kvv ccr}
...
Schlüsselbund '/home/c...
...org>
sig 0x32106275 1999-03-28 Christopher Creutzig <ccr@foebud.org>
\end{alltt}



   5. Einen Schlüssel in eine eigene Datei extrahieren

Um einen Schlüssel in eine eigene Datei zu kopieren (die Sie beispielsweise weitergeben können), verwenden Sie den Befehl
\begin{command}2.6.x: pgp -kx Benutzer-ID [Zieldatei] [Schlüsselbund]
5.0: pgpk...
...atei
gpg: gpg --export Benutzer-ID \vert mail -s 'mein Key' a@b.de
\end{command}
Wird die Angabe der Zieldatei weggelassen, fragt PGP, wohin Sie den Schlüssel kopieren möchten. GnuPG gibt den Schlüssel auf die Standardausgabe aus, Sie können ihn also wie im Beispiel in eine Datei umleiten oder direkt in einem anderen Programm weiterverwenden. Bei dieser Operation bleibt der Schlüsselbund vollständig, der Schlüssel wird nur kopiert.

Ist der Schlüssel unterschrieben, dann werden die Unterschriften ebenfalls mit kopiert. Wollen Sie den Schlüssel als Text verschicken (beispielsweise im UseNet, /CL-Netz, auf Ihrer Homepage oder auch als "Anhängsel" an eine Nachricht), benutzen Sie den Befehl
\begin{command}2.6.x: pgp -kxa Benutzer-ID [Zieldatei] [Schlüsselbund]
5.0: pgp...
...r-ID -o Zieldatei
gpg: gpg --export --armor Benutzer-ID >Zieldatei
\end{command}

  6. Fingerabdruck anzeigen

Um einen Schlüssel über Telephon o.ä. vergleichen zu können, bietet sich die Verwendung des Fingerabdrucks an. Sie können ihn sich mit folgendem Befehl anzeigen lassen:


\begin{command}2.6.x: pgp -kvc Benutzer-ID
5.0: pgpk -ll Benutzer-ID
gpg: gpg --fingerprint Benutzer-ID
\end{command}

  7. Einen Schlüssel unterschreiben

  Mit dem folgenden Befehl wird ein Schlüssel unterschrieben:
\begin{command}2.6.x: pgp -ks Benutzer-ID [-u eigene_ID]
5.0: pgpk -s Benutzer-ID
gpg: gpg --sign-key [-u eigene_ID] Benutzer-ID
Menü: sign
\end{command}
Sie sollten eine solche Unterschrift nur leisten, wenn Sie sicher sind, daß Sie den Sinn und die Funktionsweise von Unterschriften unter Schlüsseln verstanden haben. Verstehen Sie diesen Warnhinweis bitte nicht als Arroganz von Leuten, die meinen, immer alles besser zu wissen. Wir haben in Diskussionen in verschiedenen Foren häufig feststellen müssen, daß die Frage, welche Voraussetzungen erfüllt sein müssen, damit man einen Schlüssel unterschreiben kann, das wahrscheinlich schwierigste Thema bei PGP ist. Auf keinen Fall sollten Sie mit Unterschriften unter PGP-Schlüsseln so großzügig sein, wie manche Prominente ihre Autogramme verteilen. Es geht hier nicht um Unterschriften im Sinne von Autogrammen für Sammler, sondern um Unterschriften unter elektronische Dokumente. Näheres finden Sie in Abschnitt HREF="node11.html#wann-unterschreiben">7.1.2.

GnuPG bietet Ihnen mit dem Parameter -lsign-key auch die Möglichkeit, eine nicht exportierbare Signatur zu erstellen. Der Sinn und Zweck dieser Möglichkeit liegt darin, daß Sie evtl. den Schlüssel einer Zertifizierungsinstanz (deren Fingerprint Sie auf vertrauenswürdigem Weg bekommen haben oder den Sie direkt von dieser Instanz bekommen haben) lokal zu beglaubigen, ohne daß die Instanz mehrere Tausend Unterschriften unter ihrem Schlüssel sammelt. Bitte mißbrauchen Sie diese Möglichkeit nicht! Auch diese Sorte Unterschriften sollten Sie nur unter Schlüssel setzen, bei denen Sie zu 100% sicher sind, daß die angegebene ID korrekt ist.

 Des weiteren bietet GnuPG die Möglichkeit, beim Unterschreiben eines Schlüssels mit -set-policy-url URL einen Verweis zu setzen, wo andere Menschen Hinweise darüber finden können, was Ihre Unterschrift Ihrer Meinung nach aussagt; darüber hinaus können Sie mit -notation-data Typ=Wert in die Unterschrift weitere Textdaten hineinsetzen, die integraler Bestandteil der Unterschrift werden. Beispielsweise könnte eine CA mit -set-policy-url einen Verweis auf ihren Haftungsausschluß und ähnliches in die Unterschrift mit aufnehmen und in Kombination mit -notation-data auch verschiedene Überprüfungsgrade anbieten, die alle mit demselben Schlüssel zertifiziert werden. Momentan können wir von letzterer Verwendungsart nur abraten: Es ist kaum anzunehmen, daß ein nennenswerter Teil der PGP-Nutzenden diese Daten überhaupt zur Kenntnis nimmt.

   8. Einen Schlüssel zurückziehen

Nehmen wir an, Ihr Schlüssel ist (am Ende gar mit dem passenden Mantra) in fremde Hände gefallen. Das sollten Sie der ganzen Welt erzählen. Nicht, um bedauert zu werden, sondern damit niemand mehr diesem Schlüssel vertraut. Dafür müssen Sie eine Schlüssel-Rückrufurkunde ausstellen. Der Befehl hierfür lautet:
\begin{command}2.6.x: pgp -kd Ihre-ID
5.0: pgpk --revoke Ihre-ID
gpg: gpg --gen-revoke Ihre-ID
\end{command}
Diese Urkunde trägt dann auch noch Ihre Unterschrift und kann genau wie zuvor der öffentliche Schlüssel verschickt werden. Natürlich ist der Sicherheitsverlust des Schlüssels nicht der einzig denkbare Grund dafür, ihn zurückzuziehen. In allen Fällen jedoch ist das Vorgehen dasselbe. Am besten schicken Sie Ihren neuen Schlüssel direkt mit.

Ach ja: Sobald Sie eine Rückrufurkunde ausgestellt haben, können Sie Ihren Schlüssel nicht mehr zum Unterschreiben verwenden, weil das keinen Sinn machen würde, die Unterschriften würden ohnehin nicht anerkannt werden.

  9. Einen Schlüssel "abschalten"

Wenn Sie von jemandem überzeugt worden sind, daß sein geheimer Schlüssel abhanden gekommen ist, können Sie seinen bzw. ihren öffentlichen Schlüssel lokal mit dem Befehl
\begin{command}2.6.x: pgp -kd Benutzer-ID
5.0: pgpk -d Benutzer-ID
\end{command}
"abschalten". Hierbei wird allerdings keine Schlüssel-Rückrufurkunde ausgestellt und der Schlüssel kann mit demselben Befehl auch wieder angeschaltet werden. Ein abgeschalteter Schlüssel wird von PGP nicht für das Verschlüsseln verwendet, beim Überprüfen einer Unterschrift wird eine Warnung ausgegeben. GnuPG bietet diese Möglichkeit leider nicht.

   3. Verschlüsseln einer Nachricht

Das Verschlüsseln einer Nachricht mit dem öffentlichen Schlüssel der Empfängerin geschieht mit folgendem Befehl:
\begin{command}2.6.x: pgp -e textdatei Benutzer-ID
5.0: pgpe -r Benutzer-ID tex...
...D textdatei
gpg: gpg --encrypt --remote-user Benutzer-ID textdatei
\end{command}
Dieser Befehl erzeugt eine Datei namens textdatei.pgp bzw. .gpg, die den verschlüsselten Text enthält. Beispiel:
\begin{command}2.6.x: pgp -e brief.txt Alice
2.6.x: pgp -e brief.txt ''Alice S'...
...pg: gpg -e -r Alice brief.txt
gpg: gpg -e -r ''Alice S'' brief.txt
\end{command}

Im ersten Beispiel durchsucht PGP den Bund mit den öffentlichen Schlüsseln nach einer ID, die das Wort "Alice" enthält. Im zweiten Beispiel wird nach IDs gesucht, die "Alice S" enthalten. Leerstellen in der ID-Angabe können nur benutzt werden, wenn die Angabe für die ID in Anführungszeichen eingeschlossen wird. Bei der Suche wird nicht zwischen Groß- und Kleinbuchstaben unterschieden[*]. Wenn PGP eine passende ID findet, wird deren Schlüssel für das Chiffrieren der Datei brief.txt verwendet. Die Datei mit dem verschlüsselten Text heißt brief.pgp.

PGP versucht, die Datei mit dem Klartext zu komprimieren, bevor es sie verschlüsselt. Dies erhöht erheblich den Schutz gegen eine Kryptanalyse. Außerdem ist die verschlüsselte Datei in der Regel kleiner als die originale Klartextdatei.

Wenn die verschlüsselte Datei per E-Mail versandt werden soll, kann es sinnvoll sein, sie in druckbaren ASCII-Zeichen im Radix-64-Format darzustellen (siehe Abschnitt 13.10). Dies ist möglich durch Hinzufügen der Option -a. Moderne E-Mail-Systeme erlauben meistens aber direkt den Versand binärer Nachrichten.

  4. Verschlüsseln einer Nachricht für mehrere Empfänger

Wenn dieselbe Nachricht an mehrere Empfängerinnen verschickt werden soll, kann sie so verschlüsselt werden, daß alle Empfängerinnen dieselbe verschlüsselte Nachricht entschlüsseln können. Beim Verschlüsseln kann man hierfür mehrere Benutzerinnen-IDs angeben. Beispiel:
\begin{command}2.6.x: pgp -e brief.txt Alice Bob Carol
5.0: pgpe -r Alice -r Bob -r Carol brief.txt
gpg: gpg -e -r Alice -r Bob -r Carol brief.txt
\end{command}
Die durch dieses Kommando erzeugte Datei brief.pgp kann sowohl von Alice als auch von Bob oder Carol entschlüsselt werden. Es können beliebig viele Empfänger angegeben werden. Die Versionen 2.6.3i und 2.6.3in bieten auch die Möglichkeit, mit der Angabe -@datei den Inhalt der Datei datei als weitere Empfängerangaben zu lesen. Mit GnuPG läßt sich dieser Effekt erreichen, indem die Empfänger mit jeweils remote-user davor in eine Datei geschrieben werden und diese Datei dann mit Hilfe des Parameters -options eingelesen wird. (Nebenbei bemerkt läßt sich damit auch einstellen, daß alle Nachrichten auch an einen bestimmten weiteren Schlüssel kodiert werden sollen, beispielsweise den eigenen, womit ein Mail-Archiv auch für die verschlüsselten Nachrichten Sinn macht. Näheres zu dieser Überlegung finden Sie bei der Besprechung des Parameters EncryptToSelf bzw. encrypt-to[*].)

   5. Unterschreiben einer Nachricht

Der folgende Befehl unterschreibt eine Datei mit dem geheimen Schlüssel:
\begin{command}2.6.x: pgp -s textdatei [-u eigene-ID]
5.0: pgps [-u eigene-ID] textdatei
gpg: gpg -s [-u eigene-ID] textdatei
\end{command}
Der obige Befehl erzeugt eine Datei namens textdatei.pgp bzw. bei Verwendung von GnuPG textdatei.gpg.

Beispiel:
\begin{command}2.6.x: pgp -s brief.txt -u Bob
5.0: pgps -u Bob brief.txt
\end{command}
Hier sucht PGP in dem Schlüsselbund mit den geheimen Schlüsseln nach einer ID, in der die Zeichenfolge "Bob" vorkommt. Groß- und Kleinbuchstaben werden bei der Suche nicht unterschieden. Wenn PGP einen geheimen Schlüssel mit passender ID findet, wird dieser Schlüssel (nach Eingabe des korrekten Mantras) für die Unterschrift verwendet.

Wird -u Benutzer-ID nicht angegeben, dann verwendet PGP den default-Schlüssel für die Unterschrift. Näheres zur default-Einstellung finden Sie im Abschnitt MYNAME in Kapitel 14.

    6. Unterschreiben und Verschlüsseln

Der folgende Befehl unterschreibt zuerst die Klartextdatei mit dem geheimen Schlüssel der Absenderin und verschlüsselt dann die Daten mit dem öffentlichen Schlüssel der Empfängerin:
\begin{command}2.6.x: pgp -es textdatei Empfängerin-ID [-u Benutzer-ID]
5.0: pgpe -s -r Empfänger textdatei
gpg: gpg -es -r Empfängerin-ID textdatei
\end{command}

Die mit dem obigen Befehl erzeugte Datei, die den unterschriebenen und anschließend verschlüsselten Text enthält, hat den Namen textdatei.pgp. Der für die Unterschrift verwendete geheime Schlüssel wird automatisch aus dem Bund mit geheimen Schlüssel herausgesucht. Der öffentliche Schlüssel der Empfängerin wird aus dem Bund mit öffentlichen Schlüsseln herausgesucht. Wenn in der Befehlszeile keine Empfänger-ID angegeben wird, fragt PGP/GnuPG nach.

Mehrere Empfängerinnen können durch einfaches Hinzufügen ihrer IDs in der Befehlszeile angegeben werden, genau wie beim einfachen Verschlüsseln.

  7. Konventionelle Verschlüsselung

Manchmal kann es vorkommen, daß man eine Datei nach einer herkömmlichen Methode (mit einem geheimen Schlüssel, der nicht vom Programm zufällig gewählt wird) verschlüsseln möchte. Sinnvoll ist das beispielsweise für die Verschlüsselung einer Archivkopie von Daten, die einfach nur gespeichert, aber nicht an andere Leute verschickt werden soll. Der Befehl hierfür lautet:
\begin{command}2.6.x: pgp -c textdatei
5.0: pgpe -c textdatei
gpg: gpg -c textdatei
gpg: gpg --symmetric [--cipher-algo algorithm] textdatei
\end{command}

Der Inhalt der Datei mit dem Namen textdatei wird komprimiert, verschlüsselt und in eine Datei mit dem Namen textdatei.pgp bzw. textdatei.gpg geschrieben. Bei dieser Operation werden keine öffentlichen Schlüssel, Schlüsselbunde, Benutzer-IDs usw. verwendet.

PGP fragt bei obigem Befehl nach einem Mantra, mit dem die Datei verschlüsselt werden soll. Dieses Mantra braucht nicht dasselbe zu sein, mit dem der geheime Schlüssel gesichert ist, und es sollte auch nicht dasselbe sein, da Sie es evtl. anderen Menschen mitteilen möchten. PGP versucht, die Daten vor der Verschlüsselung zu komprimieren. Die Algorithmen, die GnuPG anbietet, können Sie mit
\begin{command}gpg: gpg --version
\end{command}
abfragen. (Sie sind in der Zeile "Cipher:" aufgelistet.)

   8. Entschlüsselung und Prüfung der Unterschrift

Mit folgendem Befehl wird eine verschlüsselte Datei entschlüsselt und/""oder eine Unterschrift geprüft:
\begin{command}2.6.x: pgp verschlüsselte_datei [-o klartext_datei]
5.0: pgpv ve...
... klartext_datei]
gpg: gpg [-o klartext_datei] verschlüsselte_datei
\end{command}
PGP geht davon aus, daß verschlüsselte_datei die Endung .asc oder .pgp trägt. Falls verschlüsselte_datei eine Unterschrift enthält, wird sie automatisch geprüft. Die Benutzer-ID der Unterschreibenden wird am Bildschirm angezeigt.

PGP bearbeitet verschlüsselte_datei vollautomatisiert. Die Datei kann sowohl nur verschlüsselt als auch nur unterschrieben oder auch unterschrieben und verschlüsselt sein. PGP verwendet die Schlüssel-ID, die in verschlüsselte_datei angegeben ist, um aus dem Bund mit den geheimen Schlüsseln denjenigen herauszusuchen, für den verschlüsselte_datei verschlüsselt wurde. Falls die Datei eine Unterschrift enthält, verwendet PGP die zusammen mit der Unterschrift gespeicherte Schlüssel-ID, um aus dem Bund mit öffentlichen Schlüsseln denjenigen herauszusuchen, mit dem die Unterschrift geprüft werden kann. Falls all diese Schlüssel vorhanden sind, ist während der Entschlüsselung keine weitere Eingabe erforderlich, ausgenommen natürlich das Mantra, mit dem der geheime Schlüssel gesichert ist.

Falls verschlüsselte_datei konventionell, also mit der Option -c, verschlüsselt wurde, fragt PGP bei der Entschlüsselung nach dem Mantra, mit dem die Datei verschlüsselt wurde.

Der optionale Parameter -o klartext_datei gibt an, in welcher Datei die entschlüsselten Daten gespeichert werden sollen. Fehlt diese Angabe, wird bei PGP 2.6.x der Name von verschlüsselte_datei ohne Suffix für die Klartextdatei verwendet, mit Ausnahme der Version 2.6.3i, die die Endung nach dem Dateiinhalt vergibt - bedauerlicherweise auch entgegen der Vorschrift des Users durch -o. GnuPG verwendet standardmäßig den Originaldateinamen, der in der verschlüsselten Datei gespeichert ist. Wird der Befehl
\begin{command}gpg: gpg --decrypt dateiname
\end{command}
verwendet, so schreibt GnuPG den entschlüsselten Text auf die Standardausgabe. Sie können ihn mit
\begin{command}gpg: gpg --decrypt datei1 >datei2
\end{command}
in eine Datei datei2 umleiten.

  9. Erzeugen einer Datei mit Zufallszahlen

Seit der Version 2.6.2 bietet PGP die Möglichkeit, den internen Generator für Pseudozufallszahlen auch dazu zu verwenden, eine Datei mit kryptographisch zuverlässigen Zufallszahlen zu erstellen. Dazu dient der Aufruf
\begin{command}2.6.x: pgp +makerandom=Bytes Dateiname
gpg: gpg --gen-random Qualität [Bytes] >Dateiname
\end{command}
der eine Datei Dateiname der Größe Bytes mit pseudozufälligem Inhalt erzeugt. Bei GnuPG haben Sie darüber hinaus die Möglichkeit, mit der Angabe 0, 1 oder 2 verschieden "stark zufällige" Zahlen zu erzeugen. PGP 5.0 scheint keine derartige Option zu bieten.

   10. Nachrichten im Radix-64-Format

     In vielen E-Mail-Systemen ist nur der Versand von ASCII-Text möglich. Meistens werden die nötigen Konvertierungen, um Texte mit Umlauten oder Binärdaten zu versenden, bereits vom E-Mail-System vorgenommen, aber das funktioniert nicht immer und ist manchmal überhaupt nicht vorgesehen. Binärdaten, wie die von PGP normalerweise erzeugten verschlüsselten Dateien, können dann nicht versandt werden. PGP kann deshalb bei Bedarf die verschlüsselten Daten im Radix-64-Format darstellen, ähnlich dem Privacy-Enhanced-Mail-Format oder der MIME-Kodierung desselben Namens.

Radix-64 stellt binäre Daten ausschließlich durch druckbare 6-Bit-ASCII-Zeichen dar, so daß eine verschlüsselte Nachricht wie gewöhnlicher E-Mail-Text verschickt werden kann. Radix-64 ist also eine Art "Transport-Verpa"ckung", die Schutz vor einer "Verstümmelung", also einer Veränderung, die das Entschlüsseln der Nachricht unmöglich machen würde, auf dem Transportweg bietet. Um Übertragungsfehler erkennen zu können, wird der Radix-64-Darstellung eine Prüfsumme hinzugefügt.

Im Radix-64-Format werden jeweils drei Byte durch vier druckbare ASCII-Zeichen dargestellt, so daß die Länge der Datei um etwa 33 Prozent zunimmt. Das sieht zunächst nach einer ziemlich großen Aufblähung der Datei aus, berücksichtigt werden muß aber, daß PGP Klartextdateien häufig um einen größeren Faktor komprimiert, bevor sie verschlüsselt werden.

Für eine Radix-64-Darstellung der verschlüsselten Datei wird einfach die Option -a beim Programmaufruf hinzugefügt:
\begin{command}2.6.x: pgp -esa brief.txt Empfänger
5.0: pgpe -sa -r Empfänger brief.txt
gpg: gpg -esa -r Empfänger brief.txt
\end{command}

Hier wird brief.txt unterschrieben und komprimiert, anschließend verschlüsselt und das Ergebnis im Radix-64-Format in eine Datei mit dem Namen brief.txt.asc (bzw. unter MS-DOS brief.asc) geschrieben. Diese Datei kann wie gewöhnliche E-Mail im Internet oder jedem anderen E-Mail-Netzwerk verschickt werden. Die Entschlüsselung einer so verschickten Nachricht unterscheidet sich nicht von der Entschlüsselung einer .pgp-Datei:
\begin{command}2.6.x: pgp brief
5.0: pgpv brief
gpg: gpg brief.asc
\end{command}
PGP sucht hier zuerst nach einer Datei namens brief.asc und erst danach nach brief.pgp. PGP erkennt automatisch am Dateiinhalt, daß brief.asc vor der eigentlichen Entschlüsselung erst wieder zurück in Binärdarstellung umgewandelt werden muß.

In manchen E-Mail-Netzen ist der Versand sehr langer Nachrichten nicht möglich[*]. Längere Texte müssen dort in mehrere Teile gesplittet werden, die einzeln verschickt werden. Wenn beim Verschlüsseln die Option für Darstellung im Radix-64 Format angegeben wurde, schreibt PGP bei einem langen Text die verschlüsselten Daten in mehrere Dateien, deren Namen auf .as1, .as2, .as3 usw. enden. Das PGP der Empfängerin fügt diese automatisch wieder zusammen, wenn beim Aufruf von PGP einfach die erste Datei angegeben wird. Bei der Entschlüsselung ignoriert PGP allen Text aus den Nachrichtenköpfen, der nicht zu den Radix-64-Blöcken gehört. Die Größe dieser Dateien läßt sich über den Parameter ARMORLINES einstellen, vgl. Abschnitt 14.

Möchte man einen öffentlichen Schlüssel im Radix-64-Format verschicken, kann die Option -a bzw. -armor auch beim Befehl für das Extrahieren des Schlüssels aus der Datei mit öffentlichen Schlüsseln angegeben werden.

Hat man vergessen, die Option -a beim Verschlüsseln einer Nachricht oder beim Extrahieren eines Schlüssels anzugeben, kann man die Binärdatei auch nachträglich in das Radix-64-Format umwandeln, indem man PGP nur mit der Option -a aufruft, ohne Angabe der Option für Verschlüsseln oder Unterschreiben:
\begin{command}2.6.x: pgp -a brief.pgp
\end{command}

Um keine Mißverständnisse aufkommen zu lassen: Dieses "Nacharbeiten" muß mit der bereits verschlüsselten Datei erfolgen, also mit brief.pgp in obigem Beispiel. Falsch wäre die folgende Befehlskombination:
\begin{command}2.6.x: pgp -es brief.txt Benutzer-ID
2.6.x: pgp -a brief.txt
\end{command}

Der erste Befehl erzeugt eine verschlüsselte Datei brief.pgp; der zweite Befehl erzeugt eine Datei brief.asc im Radix-64-Format, jedoch aus der Klartextdatei brief.txt. Daß brief.asc nicht unmittelbar "für das menschliche Auge lesbar" ist, bedeutet nicht, daß die Datei verschlüsselt ist!

3 PGP 5.0 scheint keine solche Funktion anzubieten; um den Effekt mit GnuPG zu erreichen, brauchen Sie den Aufruf
\begin{command}gpg: gpgm --enarmor datei.gpg
\end{command}

  11. Klartext-Unterschrift

Wenn man eine Datei versenden möchte, die zwar unterschrieben, aber nicht verschlüsselt ist, komprimiert PGP normalerweise alle Daten und wandelt sie anschließend gegebenenfalls in das Radix-64-Format. Handelt es sich bei den Daten um einen Text, ist er folglich nicht unmittelbar lesbar.

Soll der Text lesbar bleiben, bietet PGP die Möglichkeit, nur die Unterschrift im Radix-64-Format an den Text anzufügen. Empfängerinnen einer solcher Nachricht brauchen also PGP nicht aufzurufen, um den Text zu lesen. PGP ist hier nur für eine Kontrolle der Unterschrift erforderlich. Der entsprechende Befehl lautet
\begin{command}2.6.x: pgp -sat +clearsig=on presseerklaerung.txt
5.0: pgps -at -...
...g=on presseerklaerung.txt
gpg: gpg --clearsig presseerklaerung.txt
\end{command}
Das Ergebnis sieht dann z.B. so aus:

-----BEGIN PGP SIGNED MESSAGE-----

Wir verwenden ab sofort PGP für unsere Nachrichten.

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: noconv

iQCVAgUBNvUMgRmebHZs6TI5AQHc6QP+N0mcXeefCrvcJdgaAk9d7LQuZFAgL8Vc
QORHr3O4f6A8kGZ5vCALGx892dgaZs29EhBtE2yLKewgdRB3BCmpFmwemDORH8Zw
C2OuVPuOWx7rM+uy410BdJDI5GQFstXVzmvD/yxL+ZgLhBFSDI1sTMhFv8RWahx5
TnKbgD1e8OM=
=0Tjk
-----END PGP SIGNATURE-----
Wichtiger Hinweis: Eine solche Nachricht wird als Textnachricht versandt und unterliegt dadurch möglichen Änderungen auf dem Versandweg. Typische Änderungen sind Zeichensatzkonvertierungen oder das Einfügen oder Löschen von Leerzeichen (primär am Zeilenende). PGP toleriert gewisse Änderungen, beispielsweise werden Leerzeichen am Zeilenende nicht berücksichtigt und eine Zeichensatzkonvertierung vom Standardzeichensatz des Absenders zum Standardzeichensatz der Empfängerin wird auch toleriert - ein anderes Vorgehen würde die Klartextunterschriften von vornherein unbrauchbar machen. Wenn die Änderungen anderer Natur sind, wird PGP die Nachricht als verändert erkennen, was zu einem in diesem Fall unberechtigten Verdacht einer echten, inhaltlichen Fälschung führt. Dieses Problem haben alle Klartext-Signaturverfahren aus Prinzip, trotzdem schien es sinnvoll, diese Möglichkeit des unterschriebenen Klartextes trotz ihrer Störanfälligkeit in PGP aufzunehmen. In der Realität hat sich gezeigt, daß das Verfahren erstaunlich stabil arbeitet. Ein weiterer Störfaktor kommt durch die Neuerungen in PGP 2.6.3i hinzu:  Hier wird in der Klartextunterschrift der verwendete Zeichensatz mit abgelegt. So eine Nachricht kann natürlich nur dann als korrekt unterschrieben angesehen werden, wenn sie entweder keine Umlaute und sonstigen Sonderzeichen enthält oder der Empfänger die Nachricht zufälligerweise im selben Zeichensatz erhält, wie der Absender sie geschrieben hat.

In der CLEARSIG-Routine vor den Versionen 2.6.i und 2.6.2 (siehe Anhang B: "Die vielen PGP-Versionen") gab es einen Konzeptfehler, der es erlaubte, Nachrichten in gewisser Weise zu verändern, ohne daß dies von PGP gemeldet wurde. Die mit diesem Buch ausgelieferte Version 2.6.2i hat diesen Fehler nicht mehr.

Falls die Details Sie interessieren: Wenn PGP eine Klartext-Unterschrift überprüfen wollte, wurde Text, der nach der Zeile

-----BEGIN PGP SIGNATURE-----
folgte, nicht beachtet, bis eine Leerzeile gefunden wurde. Grund dafür war, daß hier dieselbe Routine wie für das Einlesen der Unterschrift verwendet wurde. Dort muß die Zeile
Version x.y
übersprungen werden. Da es auch möglich war, Zeilen, die PGP nicht als Leerzeile ansah, aber für den Anwender wie Leerzeilen aussehen, einzufügen, ließen sich Klartext-Unterschriften bei flüchtiger Kontrolle fälschen.

  12. Die Umgebungsvariable für das PGP-Verzeichnis: PGPPATH

    PGP benötigt beim Ver- und Entschlüsseln mehrere Dateien, unter anderem die beiden Dateien [xref=öffentlicher Schlüsselbund]pubring.pgp und [xref= geheimer Schlüsselbund]secring.pgp bzw. bei PGP 5.0 pubring.pkr und secring.skr mit öffentlichen und geheimen Schlüsseln, randseed.bin (enthält die Parameter für den Zufallszahlengenerator), config.txt bzw. pgp.cfg (Konfigurationsdatei) und language.txt bzw. language50.txt (enthält die Textmeldungen von PGP, unter Umständen in mehreren Sprachen).

Diese Dateien können (und sollten) in einem eigens dafür angelegten Verzeichnis stehen, z.B. c:\pgp oder ~/.pgp/. Damit PGP diese Dateien auch dann findet, wenn es aus einem beliebigen anderen Verzeichnis aufgerufen wird, muß die Umgebungsvariable PGPPATH auf das Verzeichnis mit den PGP-Dateien gesetzt werden. Unter MS-DOS geschieht das mit dem Befehl

SET PGPPATH=C:\PGP
Wenn PGPPATH so gesetzt ist, benutzt PGP als Datei mit den öffentlichen Schlüsseln die Datei c:\pgp\pubring.pgp (vorausgesetzt, Verzeichnis und Datei existieren). Mit einem geeigneten Editor[*] kann unter MS-DOS der Befehl SET PGPPATH= in die Datei autoexec.bat eingetragen werden, so daß PGPPATH automatisch beim Start des Rechners gesetzt wird. Unter Unix kann sich jeder User in seiner     ~/.profile, ~/.cshrc oder ~/.bashrc eine entsprechende Zeile einfügen, für sh-ähnliche Shells also
PGPPATH=~/.pgp/
export PGPPATH
bzw. für csh-ähnliche Shells
setenv PGPPATH ~/.pgp/
Wenn PGPPATH nicht definiert ist, sucht PGP die Dateien im aktuellen Verzeichnis. Unter Unix werden einige Standardverzeichnisse durchsucht, u.a. ˜/.pgp, o.g. Einstellung ist also überflüssig. Wenn Ihre PGP-Version ihre Daten nicht findet, teilt sie Ihnen mit, wo sie sucht. Die entsprechende Umgebungsvariable für GnuPG nennt sich GNUPGHOME, standardmäßig wird das Verzeichnis ˜/.gnupg verwendet.

  13. Kurzübersicht über die PGP-Befehle

1. Kommandos zum Umgang mit Nachrichten

2. Kommandos zur Schlüsselverwaltung

3. Selten verwendete Kommandos

4. Kommandooptionen, die in Verbindung mit anderen Optionen benutzt werden können


next up previous contents index
Next: LEGAL_KLUDGE - (nicht) von 2.3a lesbare Dateien erzeugen Up: 2. KommandozeilenversionenPGP 2.6.x, 5.x, GnuPG Previous: 12. Die Installation von GnuPG
Christopher Creutzig