Anmerkungen und Hinweise zum GnuPG-Workshop/-Vortrag

Ich habe bei verschiedenen Linuxtagen Vorträge bzw. Workshops zur Einführung in GnuPG gehalten. Unten findet ihr eine Zusammenstellung der Hinweise und Kommentare, die ich hierzu gegeben habe. Zuletzt hielt ich einen Vortrag bei den Chemnitzer Linuxtagen. Wenn ihr Anregungen, Fragen oder Kommentare hierzu habt, hinterlasst bitte einen Eintrag im Blog. Ich werde dann darauf antworten.

Schlüssel erzeugen

Nach einigen einführenden Worten wurde auf der Kommandozeile ein Schlüssel erzeugt:

gpg --gen-key

Im folgenden besprach ich die einzelnen Punkte des Menus genauer:

Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
   (1) DSA und ElGamal (voreingestellt)
   (2) DSA (nur signieren/beglaubigen)
   (4) RSA (nur signieren/beglaubigen)
Ihre Auswahl?

Wir wählten die Voreinstellung, da der zu erzeugende Schlüssel sowohl einen Signatur (DSA)- als auch ein Verschlüsselungsschlüssel (ElGamal) sein sollte. Der Signaturschlüssel ist laut Standard 1024 bit groß. Der ElGamal-Schlüssel hingegen kann unterschiedliche Größen besitzen.

Es wird ein neues ELG-E Schlüsselpaar erzeugt.
              kleinste Schlüssellänge ist  768 Bit
              standard Schlüssellänge ist 1024 Bit
      größte sinnvolle Schlüssellänge ist 2048 Bit
Welche Schlüssellänge wünschen Sie? (1024)

Der Schlüssellänge für den Verschlüsselungsschlüssel ist auf 1024bit eingestellt. Nach Arbeiten einiger Kryptographen (siehe hier die Empfehlungen zu Schlüssellängen von Kai Raven) ist anzunehmen, dass 1024bit für die Zukunft zu klein sein könnte. Daher sollte man für neue Schlüssel lieber einen 2048bit-Schlüssel einsetzen.

Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
         0 = Schlüssel verfällt nie
      <n>  = Schlüssel verfällt nach n Tagen
      <n>w = Schlüssel verfällt nach n Wochen
      <n>m = Schlüssel verfällt nach n Monaten
      <n>y = Schlüssel verfällt nach n Jahren
Wie lange bleibt der Schlüssel gültig? (0)

Bei der Wahl der Gültigkeit des Schlüssels sollte jeder für sich entscheiden, wie lange dieser gültig sein soll. In meinen Augen gibt es keine allgemeingültige Regel zur Festlegung der Laufzeit. Während des Workshops beim Linux-Info-Tag Dresden wurde diskutiert, inwieweit es sinnvoll sein sollte, einen Schlüssel zu erzeugen, der nur einige wenige Tage gültig ist. Leider konnten wir hier kein sinnvolles Beispiel finden. Falls du eine Idee hast, schreibe mir doch eine E-Mail.

Danach sind Name, E-Mailadresse und eventuell ein Kommentar einzugeben und zu bestätigen. Wenn dies abgeschlossen ist, wird nach einer Passphrase gefragt. Von der Sicherheit dieser Passphrase hängt natürlich auch die Sicherheit des gesamten Schlüssels ab. Insbesondere sollte der Schlüssels keine persönlichen Merkmale wie Name, Vorname, Namen von Verwandten/Freunden, Geburtsdaten etc. tragen. Weiterhin ist folgendes extrem wichtig:

Wenn ihr keine Idee habt, wie man sich sinnvoll einen solchen Schlüssel merken kann, will ich euch folgendes empfehlen:
Denkt euch zunächst einen Satz aus:

Am 30.10. besuchte ich den GnuPG-Workshop während
des Linux-Info-Tag in Dresden.

Dann nehmt ihr nur die Anfangsbuchstaben der Wörter:

A30.10.bidG-WwdL-I-TiD.

Hier verfremdet ihr dann noch einzelne Zeichen:

@30.1o.b|dG-\/wdL_I_Ti).

Die Sicherheit der obenstehenden Passphrase sollte hinreichend groß sein. Nach meinen Berechnungen könnte man auch noch bis zu vier Zeichen entfernen und hätte immer noch ausreichende Sicherheit.

Lest euch auch nochmal die Mantra-FAQ und die Empfehlungen zur Sicherheit des geheimen Schlüssels durch.

Wenn die Passphrase dann eingeben ist, wird der Schlüssel erzeugt und es erscheint eine Ausgabe:

pub  1024D/E481289A 2004-11-03 Hans Muster <hans.muster@example.org>
  Schl.-Fingerabdruck = F12B CD03 7F7F 196D 525F  122B A50A DAFE E481 289A
sub  2048g/2326B573 2004-11-03

Widerrufszertifikat erzeugen

Direkt nachdem der Schlüssel erzeugt worden ist, sollte ihr mittels:

gpg --gen-revoke

ein Widerrufzertifikat erzeugen. Dieses druckt ihr am besten aus. Alternativ kann man es auch noch an anderen Orten speichern. Wichtig ist hierbei, dass es mind. eine Sicherheitskopie ausserhalb des eigenen Rechners geben sollte. Das Zertifikat werdet ihr brauchen, wenn ihr trotz aller Vorsicht vielleicht die Passphrase vergessen habt oder wenn euer Rechner kompromittiert wurde.

Eigenschaften des Schlüssels anzeigen oder anpassen

Viele Nutzer besitzen mehrere E-Mailadressen. Dies wird beim Anlegen des Schlüssels nicht mit berücksichtigt. Gleichwohl muss man nicht für jede E-Mailadresse einen neuen Schlüssel anlegen. Hierzu reicht es, eine neue UID anzulegen. Dazu gibt man gpg --edit-key $NAME ein und kommt auf eine GnuPG-eigene Shell. Um alle Befehle anzuzeigen, kann der Nutzer help eingeben und erhält eine Liste mit Kurzbeschreibung. Um eine neue E-Mailadresse einzufügen, existiert der Befehl adduid. In den folgenden Dialogen werden Name, E-Mail und der Kommentar abgefragt. Wenn diese Eingaben in Ordnung sind, müssen sie mit der Passphrase bestätigt werden. Die neue E-Mailadresse wird normalerweise die primäre (zu sehen an den Punkt neben der Nummer). Wer dies ändern möchte, wählt mittels uid 1 beispielsweise die erste Adresse aus und gibt dann primary ein. Nach einer erneuten Eingabe der Passphrase wird die Zuordnung geändert.

Schlüssel exportieren bzw. an Keyserver senden

Nachdem der Schlüssel erzeugt wurde, muss er der Welt natürlich bekannt gemacht werden. Hierzu könnt ihr ihn an Freunde und Bekannte senden oder ihn auf eurer Webseite veröffentlichen. Ein weiterer, sehr sinnvoller Weg ist, den Schlüssel zu einem speziellen sog. Keyserver zu senden. Der Server verwaltet die Schlüssel und jeder kann dort nachfragen, ob es einen speziellen Schlüssel zu einer speziellen Person gibt.

Es existieren weltweit sehr viele solcher Keyserver. Die meisten gleichen sich untereinander ab. Jason Harris verwaltet eine Liste von Keyservern und beschreibt jeweils inwieweit sie sich untereinander austauschen. Ich halte es für eine gute Idee, die Keyserver subkeys.pgp.net bzw. random.sks.keyserver.penguin.de zu nutzen. Hinter beiden versteckt sich ein großes und leistungsfähiges Netz von vielen kleinen Keyservern.

Der Export des Schlüssels erfolgt mit:

gpg --send-keys $NAME

$NAME kann der Name sein, den ihr angegeben habt oder eure E-Mailadresse oder auch die Key-Id. Unter Umständen kann dies auch fehlschlagen. Dann müsst ihr einen Blick in die Datei ~/.gnupg/gpg.conf werfen und dort die Variable keyserver aktivieren.

Weitere Aktivitäten

Im Workshop bin ich dann noch auf Keysignings und das Signieren anderer Schlüssel eingegangen. Dies ist insbesondere wichtig, um ein Web of Trust aufzubauen bzw. dieses zu stärken. Einen anderen Schlüssel signieren kann man mittels gpg --sign-key $KEY-ID bzw. gpg --edit-key $KEY-ID und dem Befehl sign. Wenn man sich dann einen Pfad vom eigenen Schlüssel zu einem anderen anzeigen lassen möchte, kann man Wotsap verwenden.

Im letzten Teil des Keysignings zeigte ich dann die Integration von GnuPG in verschiedenen Mailprogrammen und demonstrierte wie man mit Hilfe derer signierte und verschlüsselte E-Mails versenden kann.

Literaturhinweise

Wenn ihr euch noch ein wenig belesen wollt, kann ich anfänglich

empfehlen. Weitere interessante Seiten sind in diesen Dokumenten verlinkt. Ihr könnt aber auch unter meinen Kryptolinks evtl. noch etwas weiterführendes finden.

Ich hoffe, ihr hattet alle Spaß beim Workshop und habt etwas gelernt. Falls ihr noch Fragen dazu habt, stehe ich euch gern zur Verfügung.

Jens