Dieser zweite Teil des Handbuchs beinhaltet spezielle Themen, die nicht im ersten Teil "Grundlagen" enthalten sind. Das Lesen dieses Teils ohne Kenntnis des ersten ist nicht sehr sinnvoll. Andererseits ist die Kenntnis dieses zweiten Teils für die Benutzung von PGP nicht unbedingt erforderlich.
pgp -kv 0x67F7
listet alle Schlüssel, in denen 67F7 ein Teil der Schlüssel-ID ist. Diese Option ist vor allem dann praktisch, wenn es von einer Person zwei verschiedene Schlüssel mit ein und derselben Benutzer-ID gibt. In diesem Fall läßt sich mit Hilfe der Schlüssel-ID einer der beiden Schlüssel eindeutig auswählen.
Beispiel:
pgp -sb letter.txt
Hier wird eine Datei letter.sig erzeugt, die nur die Unterschrift enthält. Der Inhalt der Datei letter.txt wird nicht in letter.sig gespeichert. Wenn die Unterschrift in einer eigenen Datei (letter.sig in obigem Beispiel) erzeugt wurde, müssen beide Dateien (im Beispiel letter.sig und letter.txt) an die Empfängerin geschickt werden. Sie benötigt beide Dateien, um die Echtheit der Unterschrift zu prüfen. Wenn sie die Datei mit der Unterschrift durch PGP bearbeiten läßt, stellt das Programm fest, daß diese Datei keinen Text enthält, und fragt die Benutzerin nach dem Namen der Textdatei. Erst danach kann PGP die Unterschrift prüfen. Wenn der Empfänger bereits weiß, daß Text und Unterschrift in getrennten Dateien gespeichert sind, kann er auch beide Dateinamen in der Kommandozeile angeben:
pgp letter.sig letter.txt
oder
pgp letter letter.txt
In diesem Fall fragt PGP nicht nach dem Namen der Textdatei. Die Unterschrift in einer eigenen Datei zu speichern, ist dann sinnvoll, wenn die Unterschriften unabhängig vom Text protokolliert werden sollen. Die abgetrennte Unterschrift ist auch für die Dateien mit ausführbaren Programmen (bei MS-DOS: .EXE und .COM) sinnvoll, um eine Virusprüfung durchzuführen. Sie ist auch dann sinnvoll, wenn mehrere Personen ein Dokument (beispielsweise einen Vertrag) unterschreiben sollen, ohne daß die Unterschriften "verschachtelt" werden. Die Unterschrift jeder einzelnen Person wird unabhängig von den anderen gespeichert. Wenn man eine verschlüsselte Nachricht erhält, bei der Unterschrift und Text in einer Datei stehen, kann die Unterschrift auch nachträglich vom Text getrennt werden. Dies geschieht mit der Option -b bei der Entschlüsselung:
pgp -b letter
Hier wird letter.pgp entschlüsselt. Falls eine
Unterschrift vorhanden ist, wird sie geprüft und in einer
eigenen Datei letter.sig gespeichert.
Entschlüsselung einer Nachricht und Speicherung zusammen mit
einer Unterschrift
Normalerweise wollen Sie eine verschlüsselte Nachricht
vollständig entschlüsseln, die Unterschrift (oder mehrere
verschachtelte Unterschriften) prüfen und hierbei eine
"Schicht" nach der anderen abtrennen, bis der originale
Klartext übrig bleibt. Manchmal wollen Sie aber die Nachricht
nur entschlüsseln und die Unterschriften bei der Nachricht
belassen. Dies ist beispielsweise dann sinnvoll, wenn Sie die Kopie
einer unterschriebenen Nachricht an eine dritte Person weiterleiten
möchten, gegebenenfalls erneut verschlüsselt. Angenommen,
es kommt eine Nachricht, die Charlie unterschrieben hat,
verschlüsselt mit dem öffentlichen Schüssel des
Empfängers. Die Nachricht soll entschlüsselt und zusammen
mit Charlies Unterschrift an Alice weitergeleitet werden,
gegebenenfalls mit ihrem öffentlichen Schlüssel
verschlüsselt. Mit PGP ist das kein Problem. Mit folgendem
Kommando wird eine Nachricht entschlüsselt, ohne daß die
Unterschriften abgetrennt werden:
pgp -d letter
Hier wird die Datei letter.pgp entschlüsselt, und Unterschriften werden, falls vorhanden, zusammen mit dem entschlüsselten Klartext in der Ausgabedatei gespeichert.
Die Ausgabedatei kann archiviert oder - gegebenenfalls wieder verschlüsselt - an eine andere Person weitergeleitet werden.
ASCII-Text wird auf verschiedenen Computern leicht unterschiedlich dargestellt. Beispielsweise endet eine Zeile bei MS-DOS mit den beiden Zeichen für Wagenrücklauf und Zeilenvorschub. Bei Unix endet eine Zeile nur mit dem Zeichen für Zeilenvorschub. Beim Macintosh endet eine Zeile mit dem Zeichen für Wagenrücklauf, ohne Zeilenvorschub. Traurig, aber wahr.
Nicht verschlüsselte ASCII-Daten werden bei E-Mail-Systemen normalerweise in eine kanonische, maschinenunabhängige Form gebracht, wenn sie zwischen zwei Computern ausgetauscht werden. Bei kanonischer Textdarstellung besteht ein Zeilenende aus den Zeichen Wagenrücklauf und Zeilenvorschub. Beispielsweise konvertiert das weit verbreitete KERMIT den ASCII-Text in diese kanonische Form, bevor der Text an einen anderen Computer gesendet wird, und das KERMIT auf dem Computer, der den Text empfängt, konvertiert ihn wieder in diejenige Form, die sein Betriebssystem braucht. Dadurch ist es einfach, Texte zwischen verschiedenen Computern auszutauschen.
Diese automatische Anpassung der Textdarstellung an das jeweilige Betriebssystem ist bei verschlüsselten Nachrichten nicht möglich, weil der Klartext durch die Verschlüsselung dem Übertragungsprogramm verborgen bleibt. Diese Aufgabe muß das Verschlüsselungsprogramm übernehmen. Deshalb kann man bei PGP angeben, ob der Klartext als Binärdaten oder als ASCII-Text angesehen werden soll. In letzterem Fall wird der Klartext vor der Verschlüsselung in kanonische Form gebracht. Bei der Entschlüsselung wird er dann in die Form gebracht, die für das Betriebssystem des Computers, auf dem entschlüsselt wird, geeignet ist.
Wenn die Option t beim Verschlüsseln und / oder Unterschreiben einer Nachricht mit angegeben wird, konvertiert PGP den Text vor der Verschlüsselung bzw. dem Unterschreiben in die kanonische Form:
pgp -et message.txt Empfänger-ID
Diese Option schaltet PGP automatisch ab, sobald es in der zu
verschlüsselnden Datei Daten findet, die es nicht als Text
betrachtet. Falls der Klartext aus einem 8-Bit-Zeichensatz besteht,
falls er also mehr Zeichen enthält als der ASCII-Standard
für den englischen Zeichensatz, verwendet PGP bei der
Konvertierung in die kanonische Form den Zeichensatz LATIN1 (ISO
8859-1 Latin Alphabet 1). Die Konvertierung hängt davon ab, was
als Parameter CHARSET in der PGP-Konfigurationsdatei
eingetragen ist. LATIN1 ist eine Obermenge von ASCII, mit
diakritischen Zeichen für viele europäische Sprachen.
Vermeidung von "Spuren des Klartextes" auf der
Festplatte
Nachdem PGP eine Datei verschlüsselt hat, kann es bei Bedarf die
Klartext-Datei überschreiben und danach löschen, so
daß keine "Spuren" des Klartextes auf der Festplatte
verbleiben. Dies verhindert, daß der Klartext mit einem
Sektor-Editor oder einem ähnlichen Programm noch gelesen werden
kann. Diese Option ist sinnvoll, um zu vermeiden, daß
vertrauliche Informationen unkontrolliert auf der Festplatte
verbleiben.
Um den Klartext nach der Verschlüsselung und / oder dem Unterschreiben von der Festplatte zu löschen, wird die Option w verwendet:
pgp -esw message.txt Empfänger-ID
Hier wird eine verschlüsselte, unterschriebene Datei message.pgp erzeugt, und die Klartext-Datei message.txt wird danach überschrieben und gelöscht. Diese Option sollte mit Vorsicht benutzt werden. Zudem muß betont werden, daß hierdurch keinerlei Fragmente des Klartextes gelöscht werden, die ein Textverarbeitungsprogramm häufig auf der Festplatte ablegt, wenn man einen Text eintippt und bearbeitet. Die meisten Textverarbeitungsprogramme erzeugen Backup- und temporäre Dateien. Außerdem wird die Klartext-Datei nur einmal überschrieben. Das ist zwar ausreichend, um ein Lesen des Klartextes mit den üblichen Werkzeugen der Datenwiederherstellung zu verhindern, reicht aber nicht aus, um einen gezielten und ausgefeilten Leseversuch abzuwehren, bei dem eine schwache Restmagnetisierung der überschriebenen Daten mittels spezieller Hardware ausgewertet wird.(*)
pgp -m letter.pgp
Dieser Befehl zeigt den entschlüsselten Klartext am Bildschirm an.(*)
pgp -sem message.txt Empfänger-ID
Wenn die Empfängerin eine so verschlüsselte Nachricht mit ihrem privaten Schlüssel und ihrem Mantra entschlüsselt, wird der Klartext nur auf ihrem Bildschirm angezeigt, aber nicht auf der Festplatte gespeichert. Die Textanzeige erfolgt auf dem Bildschirm so, wie zuvor im Abschnitt Anzeige des entschlüsselten Klartextes am Bildschirm beschrieben. Wenn der Empfänger die Nachricht ein zweites Mal lesen will, muß er die Nachricht erneut entschlüsseln.
Diese Option ist der sicherste Weg, um zu verhindern, daß vertrauliche Nachrichten versehentlich als Klartext auf der Festplatte des Empfängers liegenbleiben. Diese Option wurde in PGP auf Anfrage eines Benutzers eingebaut, der seiner Liebsten intime Nachrichten schicken wollte, aber befürchtete, daß sie unabsichtlich eine entschlüsselte Nachricht auf dem Computer ihres Ehemanns liegen lassen könnte.(*)
Wenn PGP eine Klartext-Datei verschlüsselt, fügt es den originalen Dateinamen dem Klartext vor der Komprimierung bei. Normalerweise verwendet PGP diesen originalen Dateinamen bei der Entschlüsselung nicht, aber bei Bedarf kann PGP angewiesen werden, der entschlüsselten Klartext-Datei diesen Namen zu geben. Das ist sinnvoll, wenn PGP dazu benutzt wird, Dateien zu ver- und entschlüsseln, deren Name von Bedeutung ist.
Um den originalen Namen der Klartext-Datei bei der Entschlüsselung zu erhalten, kann die Option -p verwendet werden:
pgp -p verschlüsselte-datei
Ich benutze diese Option normalerweise nicht, weil andernfalls
ungefähr die Hälfte der an mich gerichteten
E-Mail-Nachrichten den gleichen Dateinamen wie an_phil.txt
oder prz.txt hätten.
Ändern der Benutzer-ID und des Mantra
Ab und zu kann es erforderlich sein, das Mantra zu ändern,
beispielsweise dann, wenn jemand beim Eintippen des Mantra zugeschaut
hat. Oder die Benutzer-ID muß geändert werden, sei es
wegen einer Heirat oder wegen einer geänderten E-Mail-Adresse.
Oder es soll dem Schlüssel eine zweite oder dritte Benutzer-ID
hinzugefügt werden, um mehrere E-Mail-Adressen oder
Berufsbezeichnungen einzutragen. Mit PGP können einem
Schlüssel mehrere Benutzer-IDs hinzugefügt werden, und jede
dieser IDs kann für die Auswahl des Schlüssel aus dem Bund
mit öffentlichen Schlüsseln verwendet werden. Die eigene
Benutzer-ID und das Mantra können mit folgendem Kommando
geändert werden:
pgp -ke Benutzer-ID [Schlüsselbund]
PGP fragt dann nach der neuen Benutzer-ID und dem neuen Mantra. Wenn
der optionale Parameter Schlüsselbund angegeben wird,
muß es sich um einen Bund mit öffentlichen Schlüsseln
handeln, nicht mit geheimen. Der Parameter Benutzer-ID
muß die eigene ID sein. PGP erkennt dies daran, daß diese
ID sowohl im Bund mit öffentlichen Schlüsseln als auch im
Bund mit geheimen Schlüsseln auftaucht. Beide Dateien werden
geändert, auch wenn ein Bund mit öffentlichen
Schlüsseln als Parameter angegeben wurde.
Ändern der Vertrauensparameter für einen
öffentlichen Schlüssel
Manchmal müssen die Vertrauens-Einstellungen für einen
öffentlichen Schlüssel geändert werden. Was diese
Vertrauensparameter sind, steht in Teil I des Handbuchs im Abschnitt
Wie
überprüft PGP, welche Schlüssel gültig
sind?. Mit
folgendem Befehl können die Vertrauensparameter für einen
öffentlichen Schlüssel geändert werden:
pgp -ke Benutzer-ID [Schlüsselbund]
Wenn der optionale Parameter Schlüsselbund angegeben wird, muß es ein Bund mit öffentlichen Schlüsseln sein, nicht mit geheimen Schlüsseln.
pgp -kc
Mit folgendem Befehl prüft PGP die Unterschriften für einen bestimmten öffentlichen Schlüssel:
pgp -kc Benutzer-ID [schlüsselbund]
Weitere Informationen darüber, wie der eigene Schlüssel mit einer Sicherheitskopie verglichen wird, stehen bei der Beschreibung des Parameters BAKRING im Abschnitt Die Konfigurationsdatei.
Eine komplette Überprüfung des Schlüsselbunds kann
auch mit dem Befehl pgp -km durchgeführt werden,
hierbei zeigt PGP auch die Vertrauensketten an.
Telefonische Kontrolle eines öffentlichen
Schlüssels
Es kann vorkommen, daß man einen öffentlichen
Schlüssel bekommt, der nicht von einer anderen
vertrauenswürdigen Person bestätigt ist. Dann stellt sich
die Frage, wie sich die Echtheit dieses Schlüssels feststellen
läßt. Der beste Weg hierfür ist die Kontrolle des
Schlüssels über einen anderen Kanal als den, über den
der Schlüssel geschickt wurde. Wenn man die Person
kennt, der der öffentliche Schlüssel gehört, und
wenn man auch ihre Stimme am Telefon erkennt, besteht eine
einfache und bequeme Lösung des Problems darin, sie anzurufen,
und den Schlüssel im Gespräch zu kontrollieren(*). Hierzu
braucht man sich nicht mühsam den ganzen ASCII-dargestellten
Schlüssel vorzulesen. Es reicht, den
verhältnismäßig kurzen Fingerabdruck des
Schlüssels zu vergleichen. Den Fingerabdruck eines
Schlüssel gibt PGP mit der Option -kvc aus:
pgp -kvc Benutzer-ID [schlüsselbund]
PGP zeigt die Benutzer-ID zusammen mit dem 16 Byte langen Fingerabdruck an. Wenn beide Gesprächspartnerinnen diesen PGP-Befehl ausführen, können sie den Schlüssel anhand des Fingerabdruck kontrollieren.
Wenn die Echtheit sowohl des eigenen öffentlichen
Schlüssels als auch des öffentlichen Schlüssels des
Gesprächspartners überprüft ist, kann die Echtheit der
Schlüssel wechselseitig durch eine Unterschrift bestätigt
werden. Dies ist ein sicherer und komfortabler Weg, um mit dem Aufbau
eines Netzes vertrauenswürdiger Schlüssel innerhalb eines
Kreises von Freunden und Freundinnen zu beginnen.
Ein Wort zu großen öffentlichen
Schlüsselbunden
PGP ist ursprünglich entwickelt worden, um kleine
Schlüsselbunde mit ein paar hundert Schlüsseln zu
verwalten. Mit der Zeit ist PGP aber sehr verbreitet geworden, so
daß viele Leute nun geradezu riesige Schlüsselbunde
verwenden.(*) Hierfür ist PGP gegenwärtig noch nicht
ausgelegt. Für die Aufnahme einiger Tausend Schlüssel in
Ihren persönlichen Schlüsselbund kann PGP erhebliche Zeit
brauchen.
Die richtige Lösung wäre natürlich, PGP so zu
verbessern, daß es geeignete Datenbanktechniken für die
Handhabung großer Schlüsselbunde verwendet. Doch solange
dies nicht geschehen ist, müssen Sie entweder kleinere Dateien
verwenden oder sich mit Geduld wappnen.
PGP als Filterprogramm im Unix-Stil
Unix-Fans sind es gewöhnt, "pipes" zu verwenden, um
Daten zwischen zwei Programmen auszutauschen. Der Output eines
Programms kann mittels einer "pipe" als Input in ein
zweites Programm gelenkt werden. Damit dies funktioniert, müssen
die Programme ihre Daten aus dem standard input lesen und in den
standard output schreiben. PGP kann in dieser Form arbeiten. Falls
Ihnen schleierhaft ist, was obiges zu bedeuten hat, werden Sie diese
Möglichkeit wahrscheinlich auch nicht brauchen, so daß Sie
diesen Abschnitt überlesen können. Wenn die Option
-f verwendet wird, arbeitet PGP als Unix-Filter. Beispiel:
pgp -feast Benutzer-ID <inputfile >outputfile
Diese Option kann die Verwendung von PGP zusammen mit E-Mail-Programmen vereinfachen.
Wenn man PGP als Unix-Filter verwendet, möglicherweise in einem
Unix-Script oder in einer MS-DOS-Batchdatei, kann es sinnvoll sein,
die Umgebungsvariable PGPPASS zu verwenden, um zu
verhindern, daß PGP bei jedem Aufruf das Mantra abfragt.
PGPPASS ist weiter unten beschrieben.
Unterdrückung nicht notwendiger Fragen:
BATCHMODE
Wird in der PGP-Befehlszeile BATCHMODE angegeben, stellt
PGP während des Programmablaufes keinerlei unnötige Fragen.
Beispiel:
pgp +batchmode verschlüsselte_datei
Dies ist sinnvoll, wenn PGP aus Unix Shell-Scripts oder aus einer MS-DOS-Batchdatei aufgerufen wird. Manche PGP-Befehle für die Schlüsselverwaltung brauchen in jedem Fall Eingaben durch die Benutzerin. Sie sollten deshalb in Shell-Scripts vermieden werden.
BATCHMODE kann auch bei der Prüfung der Echtheit
einer Unterschrift verwendet werden. Ist die Unterschrift nicht in
Ordnung, wird als Beendigungscode 1 zurückgegeben. Bei einer
intakten Unterschrift gibt PGP den Wert 0 zurück.
"Ja" als Standardantwort bei Bestätigungsabfragen:
FORCE
FORCE veranlaßt PGP, "ja" als
Standardantwort anzunehmen, wenn es danach fragt, ob eine bereits
existierende Datei überschrieben werden soll, oder ob ein
öffentlicher Schlüssel aus einem Schlüsselbund mit
-kr entfernt werden soll. Beispiel:
pgp +force verschlüsselte_datei
oder:
pgp -kr +force smith
FORCE kann praktisch sein, wenn PGP aus einer
MS-DOS-Batchdatei bzw. einem Unix-Script aufgerufen wird.
Der Beendigungscode von PGP
Um den Betrieb von PGP aus Unix-Scripten oder MS-DOS-Stapeldateien zu
unterstützen, gibt PGP eine Statusmeldung an die aufrufende
Shell zurück. Ein Beendigungscode von Null bedeutet, daß
kein Fehler auftrat; jeder andere Wert signalisiert einen Fehler.
Jeder Fehler erzeugt einen anderen Code.(*)
Unter MS-DOS könnte das Mantra so gesetzt werden:
SET PGPPASS=Zaphod Beeblebrox wird Bundespräsident
Die Eingabe eines Mantra während des Laufes von PGP ist dann nicht mehr erforderlich, vorausgesetzt, daß "Zaphod Beeblebrox wird Bundespräsident" wirklich das richtige Mantra ist.
Die Verwendung von PGPPASS ist einerseits gefährlich, macht aber andererseits die Arbeit mit PGP wesentlich einfacher, wenn man regelmäßig größere Mengen verschlüsselter Nachrichten erhält.
Die Auswertung der Umgebungsvariablen PGPPASS habe ich auf vielfachen Wunsch hin in PGP aufgenommen. Die Verwendung von PGPPASS ist aber gefährlich, weil das Mantra dann nicht nur in Ihrem Gedächtnis, sondern auch irgendwo im Speicher Ihres Rechner steht. Leichtsinnig wäre es, das Mantra in einer Datei auf demselben Rechner zu speichern, auf dem auch Ihre Datei secring.pgp steht. Nicht nur sehr leichtsinnig, sondern einfach dumm wäre es, das Mantra in einer Batchdatei, am Ende gar in autoexec.bat, zu speichern. Jedermann könnte sich in der Mittagspause an Ihren Rechner setzen, und sowohl Ihr Mantra als auch Ihren geheimen Schlüsselbund mitgehen lassen.
Die Gefährlichkeit von PGPPASS kann nicht stark genug betont werden. Bevor Sie sich überlegen, ob Sie PGPPASS trotzdem verwenden, sollten Sie auf jeden Fall die Abschnitte Probleme bei Mehrplatzcomputern, und Öffentliche Schlüssel vor Manipulation schützen, genau lesen.
Falls Sie PGPPASS unbedingt brauchen, ist es am sichersten, das Kommando zum Setzen von PGPPASS unmittelbar vor der Benutzung von PGP einzutippen und unmittelbar nach der Benutzung von PGP PGPPASS wieder zu löschen oder den Computer auszuschalten. Sie sollten PGPPASS auf keinen Fall verwenden, wenn andere Personen Zugang zu Ihrem Computer haben. Es könnte jemand vorbeikommen und Ihr Mantra ganz einfach durch Abfragen der Umgebungsvariablen herausfinden.
PGP stellt noch weitere, weniger bedenkliche Methoden zur Verfügung, mit denen die Eingabe des Mantras automatisiert werden kann. Auch diese sind Sicherheitsrisiken, aber kleinere.
Das Mantra kann mit der Option -z in der Befehlszeile übergeben werden:
pgp -m "-zZaphod Beeblebrox wird Bundespräsident"geheim.pgp
Oder es wird in eine (vor anderen Benutzern geschützte) Datei geschrieben und der Pfad und der Dateiname dieser Datei in der Umgebungsvariablen PGPPASSFD gespeichert.