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>

<EMail-Adresse>

<Kommentar>

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

DaTeX: DaTeX-GnuPG HowTo (zuletzt geändert am 2007-07-25 13:12:36 durch KarlheinzGeyer)