Zuletzt geändert: 10.06.2009

Keysigning mit caff

Wenn man von einer Keysigningparty zurückkehrt, hat man im Idealfall viele nette und interessante Leute getroffen und sicher auch den ein oder anderen Fingerprint austauschen können. Zu Hause angekomen gilt es, die zu den Fingerprints gehörenden Schlüssel noch zu unterschreiben um damit das Web of Trust zu stärken. Bei ein oder zwei ist es schnell mit dem normalen Textinterface von gpg oder eines netten graphischen Frontends getan. Möchte man aber mehr Schlüssel prüfen und unterschreiben, benötigt man etwas Unterstützung damit es nicht den ganzen Tag dauert. Ein Tool dazu ist caff.

Was is caff

caff ist die Abkürzung von "CA - fire and forget" und ist ein Perl Skript, das einem beim Unterschreiben und anschließenden an den Eigentümer Versenden von PGP-Schlüsseln. Sein Vorteil ist es, dass es eine Liste mit Schlüssel-ID übernehmen kann und diese dann seriell abarbeitet. Dabei ist es mit gpg-agent kombinierbar und spart damit eine Menge Tipparbeit, so dass man sich wirklich auf das Vergleichen der Fingerprints konzentrieren kann. Zusätzlich kann es eine Mail mit den unterschriebenen Schlüssel an die angegebene Adresse senden und so die Existenz der Adresse validieren helfen.

Installation

Unter Debian ist caff im Paket signing-party enthalten und kann dort einfach per apt-get, aptitude oder Synaptic installiert werden.

Für alle die kein Debian oder mit Debian verwandes System zur Verfügung haben, können sich caff zum Beispiel aus dem svn herunterladen.

Konfiguration

caff wird über die Datei .caffrc im Home-Verzeichnis des Users gesteuert. Im Folgenden sind einige Einstellungen genauer erläutert. Dabei reichen meist die ersten vier oder fünf genannten Einstellungen, um caff zum Laufen zu bekommen.

$CONFIG{'owner'} = 'Max Mustermann';
$CONFIG{'email'} = 'mm@example.org';
$CONFIG{'keyid'} = [ qw{01234567890ABCDE} ];

In den beiden Variablen wird der Name, E-Mail-Adresse und die Key-ID des zu verwendenden Schlüssels fest gelegt. In der letzten Einstellung kann auch eine Liste von Schlüsseln stehen.

$CONFIG{'mail-template'} = <<'EOM'
Text der E-Mail
EOM

Diese Variable trägt den Text der E-Mail, die an die Adressaten verschickt wird. Dort kann nahezu beliebiger Text hinein geschrieben werden und auch Variablen lassen sich expandieren. So wird {$owner} durch den oben festgelegten Namen ersetzt, {$key} steht für die Key-ID und {@uids} ist ein Array über alle UIDs. In der Beispieldatei, die mitgeliefert wird, kann man auch ein Beispiel zur Anwendung dieser Variablen finden.

$CONFIG{'mailer-send'} = [ 'smtp', Server => 'mail.example.org', Auth => ['mm', 'GehHeim'] ];

Wenn ein lokaler Mailserver zum Einsatz kommt, dann ist die obige Einstellung nicht nötig. Sie betrifft vielmehr Anwender, die üblicherweise Programme wie Thunderbird, Evolution etc. nutzen und ohne lokalen Mailserver unterwegs sind. Dann hier muss caff wissen, wie es die E-Mails versenden soll. Meist wird zum Versand ein Smarthost des Providers genutzt. Der Name des Mailservers wird oben eingetragen und innerhalb der eckigen Klammern nach Auth werden die Zugangsdaten (Benutzername und Passwort) eingetragen.

$CONFIG{'keyserver'} = 'subkeys.pgp.net';

Sollte ein anderen Keyserver als den obigen standardmäßig eingestellten genutzt werden, sollte subkeys.pgp.net durch den Keyserver der Wahl ersetzt werden. Im Allgemeinen ist dieser aber eine gute Wahl.

Caff bietet noch eine Vielzahl weiterer Möglichkeiten zur individuellen Steuerung. Diese sind in der Handbuchseite zu caff erklärt. Allgemein gilt: Jede Option den Aufbau $CONFIG{'optionsname'} = 'einstellung';.

Danke an Jens für die initiale Zusammenstellung zur Konfiguration, aber der ich ich bedient habe. Das original Posting im Blog gibt es hier.

Verwendung

Caff übernimmt eine Liste mit den zu unterzeichnenden Schlüsseln. Dies kann direkt per Kommandozeile passieren oder wenn an sie in einer Textdatei gespeichert hat, zum Beispiel mit caff `cat keys.txt`. Die Liste mit Schlüssel kann mit

gpg --no-default-keyring --keyring=KEYRINGDATEI \
--with-colons --list-keys | awk -F: '/^pub/ { print $5 }'

erstellt werden.

Zusammen mit gpg-agent

Debian/Ubuntu User können die benötigten Pakete mittels

apt-get install gnupg-agent

sowie dem gewünschten pinentry Pakte installieren.

Im nächsten Schritt muss use-agent in die Datei ~/.caff/gnupghome/gpg.conf. eingetragen werden. Dies sorgt dafür, das der gerade installierte gpg-agent zur Zwischenspeicherung des Passwortes des PGP-Schlüssels genutzt wird.

In der Datei ~/.gnupg/gpg-agent.conf können nun noch Anpassungen vorgenommen werden. Sinnvoll ist es einen ausreichend großen Wert für default-cache-ttl zu setzen sowie das ausgewählte pinentry unter pinentry-program zu setzen. Eine Beispielkonfiguration könnte so aussehen:

default-cache-ttl 600
pinentry-program /usr/bin/pinentry-gtk-2

Nachdem dies abgeschlossen ist, kann der gpg-agent mittels

$ eval `gpg-agent --daemon`

gestartet werden und steht für caff (und anderen Tools zur Verfügung)