GPG/OpenPGP Keysigning

OpenPGP ist ein Public-Key-Kryptosystem, um Nachrichten verschlüsselt, etwa via eMail, zu versenden. GnuPG ist eine freie Implementierung von OpenPGP.

Das Keysigning dient dazu, die Echtheit von Schlüsseln zu überprüfen. Durch signierung eines Schlüssels bestätigt man, dass der im Schlüssel angegebene Name tatsächlich zur entsprechenden Person gehört.

(Ich gehe im folgenden von der Kommandozeilenversion von GnuPG aus, es gibt eine Vielzahl von grafischen Oberflächen, auf die ich nicht eingehen werde, die Benutzung sollte jedoch im allgemeinen trivial sein.)

Schlüsselerstellung

Ein Schlüsselpaar erstellt man mit dem Befehl

gpg --gen-key

Anschließend bekommt man eine Reihe von Fragen gestellt (Schlüssellänge, Verfallsdatum, Name, eMail, Passwort). Nun kann man seinen öffentlichen Schlüssel auf einen Keyserver hochladen, um ihn öffentlich Verfügbar zu machen (die Keyserver synchronisieren sich untereinander, deshalb reicht es üblicherweise, den Schlüssel auf einen Keyserver hochzuladen):

gpg --keyserver keys.gnupg.net --send-key [eigene KeyID]

(Hinweis: Problem Spam, natürlich stellt man hiermit seine Mailadresse öffentlich zur Verfügung, jedoch funktioniert das GPG-Web-of-Trust kaum ohne öffentliche Keyserver)

Vorgehensweise Keysigning mit Fingerprint

Üblicherweise überprüft man die Echtheit eines Schlüssels über einen Fingerprint und ein passendes Ausweisdokument. Hierfür druckt man sich Zettel mit dem eigenen Fingerprint und Namen aus. Ein solcher Zettel könnte etwa so aussehen:

Johannes Boeck <mail@hboeck.de> (2003-01-29) (3DBD3B20) (D) (1024) pub
1DD1 19A8 A6E3 D623 8940  2F17 AF64 24B1 3DBD 3B20

Die letzten beiden Blöcke des Fingerprints geben die sogenannte KeyID an.

Zum Ausdrucken der Zettel gibt es verschiedene geeignete Skripte, sie können aber auch mit jeder beliebigen anderen Anwendung erstellt werden.

Bash-Skript (erstellt PS-Ausgabe)
LaTeX-Visitenkartenvorlage mit vorgesehenem Feld für GPG-Fingerprints

Beim Keysigning gibt man seinem Gegenüber ein Ausweisdokument mit Bild, sowie einen Zettel mit Name und Fingerprint. Anschließend überprüft man, ob der Name auf dem Ausweis mit dem auf dem Zettel übereinstimmt, ob der Ausweis zur Person passt und behält den Zettel mit dem Fingerprint.

Beim Keysigning sollte man eine ausreichende Zahl an Zetteln (etwa 30) bereithalten.

Signierung

Anschließend hat man eine große Anzahl Zettel mit überprüften Fingerprints und Namen. Man läd sich jeden Schlüssel vom Keyserver:

gpg --keyserver keys.gnupg.net --recv-key [KeyID]

Anschließend signiert man den Schlüssel:

gpg --sign-key [KeyID]

Nun bekommt man den Fingerprint angezeigt, vergleicht diesen mit dem Zettel und bestätigt diese mit dem zum eigenen Key gehörenden Passwort. Anschließend schickt man den signierten Schlüssel wieder auf den Keyserver:

gpg --keyserver subkeys.pgp.net --send-key [KeyID]

Interessante Link

Einige interessante Links hierzu:

PGP Pathfinder - Trust-Pfade zwischen Keys finden
Top 1000-Liste und Statistiken über Web-of-Trust

CAcert

CAcert ist eine unkommerzielle, mit einem Web-of-Trust arbeitende Zertifizierungsstelle, die für verschiedene Zwecke Zertifikate ausstellt (S/MIME, SSL, PGP). CAcert ist insbesondere interessant für Menschen, die eigene Netzdienste über ssl (https, pop3s, smtps, imaps, jabbers etc.) anbieten wollen.

Das CAcert-Rootzertifikat ist im Moment leider nicht in den üblichen Browsern integriert. Es kann jedoch auf einfache Weise aufgenommen werden.

Will man an CAcert teilnehmen, sollte man sich vor der Veranstaltung auf der CAcert-Homepage registrieren und entsprechende Formulare (etwa 5) ausdrucken und vorausfüllen. Der Signierungsprozess bei CAcert ist deutlich formalisierter als bei PGP.

Bei CAcert kann ein Assurer Punkte an andere Teilnehmer vergeben. Ich kann maximal 35 Punkte vergeben. Mit 100 Punkten kann man selbst Assuren, mehr Punkte (bis zu 150) erhält man dann, indem man andere Menschen assurt.

Links zu CAcert

Mozilla-Bug zur Zertifikatsaufnahme
KDE-Bug zur Zertifikatsaufnahme

Vorgehensweise beim Keysigning

Beim PGP-Keysigning sollte "jeder-mit-jedem" signieren. Dafür gruppiert man sich praktikablerweise in zwei etwa gleichgroßen Reihe und läuft aneinander vorbei. Jeder tauscht mit seinem jeweiligen Gegenüber Fingerprint-Zettel.

Das CAcert-Signing sollte erst nach vollständiger fertigstellung des PGP-Keysignings anfangen. Wenn ca. 3-5 aktive CAcert-Mitglieder Punkte vergeben, sollte dies ausreichen.

Fragen, Anmerkungen, Fehler etc.: Hanno Böck

CC0