Vorbereitungen
Solltet ihr noch kein GPG-Schlüsselpaar (öffentlicher und privater Teil eines digitalen Schlüssels) besitzen, dann lest bitte weiter. Wir wollen versuchen, euch einige Tipps zur Erstellung eines GPG-Schlüsselpaares unter Linux zu geben.
In welcher Version liegt gpg vor?
benutzer@computer:> gpg --version gpg (GnuPG) 1.4.6 Copyright (C) 2006 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. Home: ~/.gnupg Supported algorithms: Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2
Um mit GnuPG einen DSA/Elgamal-Schlüssel mit einer Länge >1024 Bit erzeugen zu können, muss in der Datei ./gnupg/gpg.conf die Zeile enable-dsa2 eingetragen sein. Diese Option funktioniert mit gpg ab Version 1.4.4.
DSA/Elgamal-Schlüsselpaar erzeugen
benutzer@computer:> gpg --gen-key Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (Sign only) Your selection?
Eingabe: 1
DSA keys may be between 1024 and 3072 bits long. What keysize do you want? (1024)
Eingabe: 2048
Requested keysize is 2048 bits ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
Eingabe: 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Eingabe: 0
Key does not expire at all Is this correct? (y/N)
Eingabe: y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name:
Eingaben:
<Vorname> <Nachname>
Bitte hier unbedingt den richtigen (amtlichen), vollständigen Namen lt. Personalausweis angeben, denn sonst ist später eine Überprüfung z. B. im Rahmen einer Keysignig-Party nicht möglich. Den Vor- und Nachnamen OHNE An- " und Abführungszeichen " eingeben.
<EMail-Adresse>
Die EMail-Adresse muss gültig sein. Die spitzen Klammern "<" und ">" werden automatisch ergänzt.
<Kommentar>
Bei der Angaben des Kommentars sollte man sich auf wenige Buchstaben beschränken, beispielsweise Arbeit, Privat, Verein etc. Bei der Eingabe bitte keine "(" und ")" eingeben, dieses Klammernpaar wird automatisch hinzugefügt.
Beispiel: (aus Loriot)
Real name: Karl-Heinz Melzer
Email address: direktor@vetgmbh.com
Comment: Vereinigte Europa-Trikotagen GmbH und Co.
You selected this USER-ID:
"Karl-Heinz Melzer (Vereinigte Europa-Trikotagen GmbH und Co.) <direktor@vetgmbh.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
Eingabe: o oder Buchstabe des Feldes, das korrigiert werden soll.
You need a Passphrase to protect your secret key.
Eingabe: <Kennwort>
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. +++++++++++++++.+++++++++++++++.+++++...++++++++++++++++++++.+++++.+++++.. ++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++.+++++++++++++++... +++++..+++++...+++++>+++++++++++++++++++++++++++++++++++++++++++++>+++++....>++++
Jetzt ist es an der Zeit, für etwas Entropie zu sorgen. Startet einen Film auf deinem Rechner oder höre dir ein Musikstück an.
gpg: key DBA1A518 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0 valid: 1 signed: 1 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2007-07-27
pub 2048D/DBA1A518 2007-07-09
Key fingerprint = D1DB 3B71 D261 3452 C901 64A1 AE0B FB53 DBA1 A518
uid Karl-Heinz Melzer (Vereinigte Europa-Trikotagen GmbH und Co.) <direktor@vetgmbh.com>
sub 2048g/B2445E3F 2007-07-09
Geschafft, unser Schlüssel DBA1A518 wurde erzeugt!
benutzer@computer:> gpg --edit-key DBA1A518
Secret key is available.
pub 2048D/DBA1A518 created: 2007-07-09 expires: never usage: SC
trust: ultimate validity: ultimate
sub 2048g/B2445E3F created: 2007-07-09 expires: never usage: E
[ultimate] (1). Karl-Heinz Melzer (Vereinigte Europa-Trikotagen GmbH und Co.) <direktor@vetgmbh.com>
Command>
Eingabe: fpr um den Fingerabdruck ausgeben zu lassen.
Command> fpr pub 2048D/DBA1A518 2007-07-09 Karl-Heinz Melzer (Vereinigte Europa-Trikotagen GmbH und Co.) <direktor@vetgmbh.com> Primary key fingerprint: D1DB 3B71 D261 3452 C901 64A1 AE0B FB53 DBA1 A518 Command>
Solange Command> angezeigt wird, befindet man sich im interaktiven Dialog-Modus von gpg. Durch die Eingabe von ? erhält man Angaben zu möglichen Befehle bei der Schlüsselbearbeitung.
Command> ? quit quit this menu save save and quit help show this help fpr show key fingerprint list list key and user IDs uid select user ID N key select subkey N check check signatures sign sign selected user IDs [* see below for related commands] lsign sign selected user IDs locally tsign sign selected user IDs with a trust signature nrsign sign selected user IDs with a non-revocable signature adduid add a user ID addphoto add a photo ID deluid delete selected user IDs addkey add a subkey addcardkey add a key to a smartcard keytocard move a key to a smartcard bkuptocard move a backup key to a smartcard delkey delete selected subkeys addrevoker add a revocation key delsig delete signatures from the selected user IDs expire change the expiration date for the key or selected subkeys primary flag the selected user ID as primary toggle toggle between the secret and public key listings pref list preferences (expert) showpref list preferences (verbose) setpref set preference list for the selected user IDs keyserver set the preferred keyserver URL for the selected user IDs notation set a notation for the selected user IDs passwd change the passphrase trust change the ownertrust revsig revoke signatures on the selected user IDs revuid revoke selected user IDs revkey revoke key or selected subkeys enable enable key disable disable key showphoto show selected photo IDs clean compact unusable user IDs and remove unusable signatures from key minimize compact unusable user IDs and remove all signatures from key * The `sign' command may be prefixed with an `l' for local signatures (lsign), a `t' for trust signatures (tsign), an `nr' for non-revocable signatures (nrsign), or any combination thereof (ltsign, tnrsign, etc.). Command>
Beispiele: Kennwort ändern
Command> passwd
Eine weitere User-ID an den Schlüssel anhängen
Command> adduid
Zum Verlassen des Dialogs wird save eingegeben.
Eindeutigkeit des öffentlichen Schlüssels überprüfen
Leider passiert es immer wieder, dass Schlüssel nicht einzigartig sind, d. h. es gibt bereits einen oder gar mehrere Schlüssel, die auf den verschiedenen Keyservern abgelegt wurden.
Deshalb muss man unbedingt durch eine akribische Überprüfung dafür Sorge tragen, dass ein gerade generierter Schlüssel nicht schon exisitiert. Am einfachsten erreicht man dies durch eine Abfrage auf einem/allen der hier angegebenen Schlüssel-Server:
Auf diesen Seiten einfach im Search:-Feld die Schlüssel-ID mit vorangestelltem 0x eintragen und SEARCH betätigen. In unserem Fall müßte also nach einem Schlüssel 0xDBA1A518 gesucht werden. Diese Abfragen sollte man an 1-2 Tagen wiederholen, nur um vor dem Hochladen des eigenen Schlüssels einigermaßen sicher zu sein, dass kein weiterer Schlüssel mit diesem Namen exisitiert.
Bei einer Meldung der Form
Error handling request Error handling request: No keys found
kann mit dem nächsten Schritt fortgefahren werden.
Wiederufzertifikat erzeugen
Falls Du vermutest, dass dein geheimer Schlüssel kompromitiert wurde, solltest Du deinen öffentlichen Schlüssel unverzüglich widerrufen. Das Widerrufen eines Schlüssels funktioniert durch das Hinzufügen einer Widerruf-Signatur (Revoke-Certificate) auf dem öffentlichen Schlüssel.
Das Widerrufen eines Schlüssels schlägt vor, dass ein Schlüssel nicht mehr gültig (sicher) ist und nicht verwendet werden sollte. Wenn ein Widerruf-Zertifikat angewendet wird, kann es nichtmehr zurückgenommen werden.
Da dein GPG-Schlüssel an Leute verteilt (sprich verbreitet) wird, anstatt von einer zentralen Stelle jedesmal verteilt wird, wenn darauf zugegriffen wird, musst Du dein Widerruf-Zertifikat auf die selbe Art verteilen oder verbreiten, wie Du deinen öffentlichen Schlüssel verbreitet hast. Die Verbreitung des Widerruf-Zertifikats auf die selbe Art wie die Verbreitung deiens öffentlichen Schlüssels bedeutet üblicherweise, das Widerruf-Zertifikat in das Keyserver-Netzwerk hochzuladen.
Falls Du deinen öffentlichen Schlüssel aus Sicherheitsgründen nicht hochgeladen hast, möchtest Du dein Widerruf-Zertifikat jedoch trotzdem auf den Keyserver hochladen. In diesem Fall kannst Du einen Kompromiss zwischen der geringen Reduktion der Sicherheit, die durch das Veröffentlichen des öffentlichen Schlüssels ensteht, und der Sicherheitseinbuße ziehen, die dadurch entsteht, wenn jemand möglicherweise nicht bemerkt, dass dein Schlüssel widerrufen wurde.
Ein Wiederruf-Zertifikat, beispielsweise für den o. a. Schlüssel erstellen:
benutzer@comuter:> gpg --output DBA1A518.asc --gen-revoke DBA1A518
Diese Datei bitte unbedingt aufheben und an einem sicheren Ort aufbewahren!
Ablegen eines Schlüssels auf einem öffentlichen Keyserver
benutzer@computer:> gpg --armor --output Karl-HeinzMelzer.asc --export dba1a518
Die Option --armor bewirkt die Ausgabe des Schlüssels in lesbarem ASCII-Format. Eine solche Datei läßt sich fehlerfrei mit jedem Editor betrachten und mittels Kopieren/Einfügen auf Keyservern wie beispielsweise
im dortigen Eingabefeld einfügen. Ein klick auf Submit bzw. Senden erledigt dann den Rest.
So sieht unser gerade erzeugter GPG-Schlüssel aus:
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) 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 =BUy7 -----END PGP PUBLIC KEY BLOCK-----
Natürlich läßt sich der Schlüssel auch direkt versenden, z. B. so auf verschiedene Keyserver
gpg --keyserver subkeys.pgp.net --send-keys DBA1A518 gpg --keyserver keyserver.rootbash.com --send-keys DBA1A518 gpg --keyserver random.sks.keyserver.penguin.de --send-keys DBA1A518 gpg --keyserver pgp.surfnet.nl --send-keys DBA1A518 gpg --keyserver pgpkeys.pca.dfn.de --send-keys DBA1A518