GPG (Gnu Privacy Guard) 

Software Download 

Die Software ist zu beziehen von der: GnuPG Homepage

Die deutschsprachige Dokumentation ist zu finden unter: GPGMiniHowto.pdf

Eine Windows Version mittels grafischem Zugriff auf GnuPG sowie die portable Version ist erhältlich von der: GnuPT Homepage

Schlüssel erzeugen, exportieren, importieren, widerrufen ... 

Schlüssel erzeugen 

Erzeugen eines neuen Schlüsselpaares.

gpg --gen-key

Als Erstes wird man nach dem zu verwendenden Algorithmen gefragt. Genaueres zu den Algorithmen steht in der PGP DH vs. RSA FAQ oder in Schneier (1996). Man kann (und sollte) einfach den default Wert (DSA/ ElGamal) nehmen. Bei der Schlüssellänge muss man zwischen Sicherheit und Rechenzeit abwägen. Je länger ein Schlüssel, desto sicherer ist er, desto länger dauern aber auch Operationen mit ihm. Bei der Rechenzeit muss man aber berücksichtigen, dass der Schlüssel möglicherweise auch noch in einigen Jahren benutzt werden soll, wenn die durchschnittliche Rechenleistung stark angewachsen sein wird. GnuPG fragt ab einer Schlüssellänge von mehr als 1536 Bits, ob ein so großer Schlüssel wirklich nötig sei, andere Leute empfehlen mindestens 2048 Bits. Für DSA ist 1024 Bits Standard.
Dann wird nach Namen, Kommentar und Email Adresse gefragt. Anhand dieser Angaben wird der Schlüssel identifiziert. Man kann die Angaben aber später noch ändern beziehungsweise ergänzen. Man sollte eine länger gültige Email Adresse wählen, da die komplette Benutzerkennung unterschrieben wird. Wird dann etwas geändert, gelten die Unterschriften unter die geänderten Angaben nicht mehr.
Als letztes wird nach dem Passwort (beziehungsweise Passsatz (in der deutschen Übersetzung: Mantra) denn es können Leerzeichen vorkommen) gefragt, mit dem der private Schlüssel gesichert werden soll. Verwenden Sie ein gutes Mantra.
Ein gutes Mantra ist:

  • nicht zu kurz,
  • enthält Sonderzeichen,
  • ist kein Name und nicht mit Kenntnis des Benutzers leicht zu erraten (wie Telefonnummer, Bankleitzahl, Name und Anzahl der Kinder, ...)

Man kann durch willkürlich eingestreute GRoß/KlEinSchReibung und Leerzeichen weitere Sicherheit erhalten.

Außerdem muss man es sich merken können, da der geheime Schlüssel ohne Mantra wertlos ist.

Es kann in diesem Zusammenhang ein guter Gedanke sein, gleich ein Rückrufzertifikat zu erstellen.

Exportieren eines Schlüssels (mit der User ID UID.) 

gpg --export [UID]

Wird keine UID angegeben, so wird der ganze Schlüsselbund exportiert. Voreingestellt ist die Ausgabe auf stdout, man kann aber mit der Option -o Datei in eine Datei ausgeben. Es empfiehlt sich noch, mit der Option -a (--armor) zu arbeiten, da ich andernfalls Probleme hatte. Mit dieser Option werden die Schlüssel nicht im Binärformat ausgegeben, sondern als ASCII (7 Bit) Dateien.

Den exportierten Schlüssel kann man dann in der Welt verbreiten, wahlweise auf der Homepage, via finger, über Keyserver, ... .

Importieren von Schlüssel 

Wenn man von irgendwoher einen öffentlichen Schlüssel bekommen hat, sollte man ihn in sein Schlüsselbund aufnehmen.

gpg --import [Datei]

Wenn man den Dateinamen weglässt, wird von stdin gelesen.

Widerrufen von Schlüssel 

Es gibt verschiedene Gründe, einen alten Schlüssel zu widerrufen:

  • Er könnte in fremde Hände geraten sein
  • die UID stimmt nicht mehr
  • er ist einfach zu klein geworden
  • ...

In all diesen Fällen ist der Befehl der Wahl

gpg --gen-revoke

Damit wird ein Schlüsselwiderruf-Zertifikat erzeugt. Dafür braucht man den privaten Schlüssel, denn sonst könnten solche Zertifikate auch von Fremden erzeugt werden. Das hat aber einen Nachteil: Ein Schlüssel, dessen Mantra ich nicht weiß, ist offensichtlich nutzlos. Aber weil ich das Mantra nicht weiß, kann ich ihn nicht widerrufen. Deshalb ist es geschickt, sich gleich bei der Erzeugung des Schlüssels ein Widerruf-Zertifikat zu erzeugen. Das sollte dann aber sicher verwahrt werden, am besten auf Diskette und auf Papier, damit es nicht in falsche Hände gerät.

Schlüsselbund verwalten 

Der Schlüsselbund ist eine Datei, in der alle Schlüssel mit den dazugehörigen Informationen (bis auf die Ownertrust Werte, was das ist steht in Schlüssel signieren gespeichert werden.

Listen des öffentlichen Schlüsselbundes. 

gpg --list-keys

zeigt alle Schlüssel des öffentlichen Schlüsselbundes an.

gpg --list-sigs

zeigt zusätzlich noch die Signaturen an (siehe Schlüssel signieren).

Listen der Schlüssel mit ihren "Fingerabdrücken" 

gpg --fingerprint

listet die Schlüssel mit ihren "Fingerabdrücken" auf. Das sind (verhältnismäßig) kurze Zahlenfolgen, an denen sich der Schlüssel identifizieren lässt. Das kann praktisch sein, um sich über Telefon zu vergewissern, dass ein öffentlicher Schlüssel vom Gesprächspartner stammt. Fingerabdrücke im Abspann von Email oder Usenet Artikeln zu verschicken ist übrigens nicht sinnvoll.

Listen der Schlüssel des privaten Schlüsselbundes 

gpg --list-secret-keys

listet die Schlüssel des privaten Schlüsselbundes auf. Unterschriften und Fingerabdrücke von privaten Schlüsseln haben keinen Informationswert.

Schlüssel löschen 

gpg --delete-key UID

bzw.

gpg --delete-secret-key

löscht Schlüssel aus dem entsprechenden Schlüsselbund.

Schlüssel editieren 

gpg --edit-key UID

In dem Menü kann man unter anderem das Mantra und das Verfallsdatum ändern, Fingerabdrücke anzeigen lassen und Schlüssel signieren.

Schlüssel signieren 

Nachdem man mit:

gpg --edit-key UID

den zu unterzeichnenden Schlüssel ausgewählt hat, kann man ihn mit dem Kommando sign unterschreiben.

Keyserver benutzen 

Keyserver sind große Datenbanken mit öffentlichen Schlüsseln. GnuPG kann von Haus aus Schlüssel von Keyservern importieren und zu Keyservern exportieren. GnuPG kommuniziert mit dem Keyserver über HTTP, benutzt aber den Port 11371. Man muss darauf achten, dass eine eventuell vorhandene Firewall diesen Port nicht blockiert.
Die Adresse des Keyservers übergibt man mit der Option --keyserver beim Aufruf auf der Kommandozeile, man kann den Eintrag aber auch in Konfigurationsdatei der Datei ~/.gnupg/options anlegen:
# Tragen Sie hier Ihren Lieblingserver ein (z.B.):
keyserver search.keyserver.net

Den Server gibt es übrigens wirklich. Hat man nun dafür gesorgt, dass GnuPG weiß, wo die Schlüssel zu finden sind, importiert man mittels

gpg --recv-keys UID

und exportiert mittels

gpg --send-key UID

Verschlüsseln und entschlüsseln 

Falls man mehrere private Schlüssel hat, kann man mit der Option -u UID oder --local-user UID
einen (oder mehrere) Schlüssel nach seiner UID auswählen. Diese Auswahl ersetzt den im Konfigurationsfile mit dem Befehl:

gpg --default-key KeyID

standardmäßig ausgewählten Schlüssel.
Mit -r UID oder --recipient UID kann man den Empfänger in der Kommandozeile auswählen.

Verschlüsseln 

Das Kommando zum Verschlüsseln lautet

gpg -e Empfänger [Datei]

oder

gpg --encrypt Empfänger [Datei]

Es ist sinnvoll, die Dateien auch zu signieren, genaueres siehe Signieren und Signaturen prüfen.

Entschlüsseln 

Das Kommando zum Entschlüsseln lautet

gpg [-d] [Datei]

oder

gpg [--decrypt] [Datei]

Auch hier gilt: Voreingestellt ist Ausgabe auf stdout, man kann aber mit der Option -o Datei in eine Datei ausgeben.

Signieren und Signaturen prüfen 

Mit dem Befehl

gpg -s (oder --sign)[Datei]

unterschreibt man eine Datei mit seinem privaten Schlüssel. Sie wird dabei gleichzeitig komprimiert, ist dann also nicht mehr ohne weiteres lesbar.

Mit:

gpg --clearsign [Datei]

belässt man die Datei lesbar.

Mit:

gpg -b (oder --detach-sign) [Datei]

erzeugt man eine Unterschrift in einer separaten Datei. Letzteres ist insbesondere zum signieren von Binärdateien wie Archiven zu empfehlen. Auch bei diesen Befehlen kann die Option --armor nützlich sein.

Üblicherweise wird sowohl signiert als auch verschlüsselt, der Befehl lautet dann vollständig

gpg [-u Sender] [-r Empfänger] [--armor] --sign --encrypt [Datei]

oder

gpg [--local Sender] [--recipient Empfänger] [--armor] --sign --encrypt [Datei]

funktionieren wie oben beschrieben ebenfalls.
Wenn eine verschlüsselte Datei signiert ist, so wird beim Entschlüsseln die Signatur mitgeprüft. Die Signatur einer unverschlüsselten Datei prüft man mit:

gpg [--verify] [Datei]

immer natürlich vorausgesetzt, dass man im Besitz des entsprechenden öffentlichen Schlüssels ist.