Skip to content

EasyPG Assistent für Emacs

Kürzlich hatte ich mit jemanden eine Diskussion über NNTP und Gnus. Dabei fiel mir auf, dass er die Datei, welche unter anderem Passworte enthält, verschlüsselt aufbewahrt. Im Verlauf des Gespräches kamen wir daher auf den EasyPG Assistent zu sprechen. Das ist ein Modus für den Emacs, der gute Unterstützung für GnuPG innerhalb des Editors bietet. Meine ersten Versuche damit liefen recht erfolgversprechend.

Bei Debian, Ubuntu und Co. muss einfach das Paket easypg installiert werden. Debian installiert in /etc/emacs/site-start.d/50easypg.el eine Datei, die den Start des Modus’ übernimmt. Falls das bei dir nicht der Fall ist, kannst du in deiner .emacs die Zeile (require ’(epa-setup)) eintragen. Danach steht dir der Easypg Assistent zur Verfügung.

Das oben angesprochene Verhalten lässt sich erzeugen, in dem man die Endung .gpg an die Datei anhängt. Beim erstmaligen Speichern der Datei fragt der Modus nach dem korrekten Schlüssel:

Select recipents for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m’ to mark a key on the line
- `u’ to unmark a key on the line
[Cancel][OK]

  - E8CBC9EE886DDD89 User 1 <user1@example.org>
  - 3B9D09F31B30974B User 2 <user2@example.com>
  u 547EBEB15774924D Jens Kubieziel <jens.kubieziel@example.org>

Standardmäßig ist der Schlüssel markiert, zu dem es auch einen privaten Schlüssel gibt. Falls du einen anderen wählen willst, gehst du in die entsprechende Zeile und wählst den mit der Taste m aus. Nachdem diese Auswahl mit Enter bestätigt wurde, befindet sich eine verschlüsselte Datei auf deiner Festplatte. Beim späteren Öffnen der Datei wird der Emacs nach dem Passwort fragen und dir den Inhalt anzeigen.

Daneben arbeitet EasyPG sehr gut mit dem Dired-Mode zusammen. Mit zwei Tastendrücken lassen sich Dateien ver-/entschlüsseln, signieren etc. Laut Handbuch ist die Unterstützung für E-Mail ebenfalls gut. Das habe ich nicht getestet und kann dazu nichts sagen.

Insgesamt hat mich EasyPG sofort begeistert und gehört ab sofort zu den Emacs-Modi meiner Wahl.

caff einrichten

Keysigning zur ApacheCon 2006

Das nächste Keysigning steht an und wieder einmal stellt sich für alle Teilnehmer die Frage, wie man am besten alle Schlüssel unterschreibt. Ich nutze dafür caff und will euch im folgenden kurz eine Einführung in die Konfiguration des Programmes geben. Hoffentlich hilft das, leichter und schneller zu Ergebnissen zu kommen.

Die Software gehört bei Debian und darauf basierenden Distributionen zum Umfang der Distribution und wird im Paket signing-party ausgeliefert. Andere Distributionen können die Dateien aus dem Subversion auschecken.

caff wird über die Datei .caffrc 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 legt ihr euren Namen, E-Mail-Adresse und die Key-ID eures Schlüssels fest. In der letzten Einstellung kann auch eine Liste von Schlüsseln stehen. Die Key-ID bzw. den Fingerprint eures Schlüssels erhaltet ihr durch Eingabe des Befehls: gpg --fingerprint emailadresse.

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

Diese Variable trägt den Text der E-Mail, die an die Adressaten verschickt wird. Ihr könnt dort beliebigen Text reinschreiben 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, findet ihr auch ein Beispiel zur Anwendung dieser Variablen.

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

Wenn ihr einen lokalen Mailserver habt, 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 kommen die Zugangsdaten (Benutzername und Passwort).

$CONFIG{’keyserver’} = ‘subkeys.pgp.net’;

Es könnte sein, dass ihr einen anderen Keyserver als den obigen standardmäßig eingestellten Nutzer wollt. Dann solltet ihr subkeys.pgp.net durch den Keyserver eurer Wahl ersetzen. Im Allgemeinen ist dieser aber eine gute Wahl.

Die Software bietet noch eine Vielzahl weiterer Möglichkeiten zur individuellen Steuerung. Diese sind in der Handbuchseite zu caff erklärt. Wie ihr oben schon gesehen habt, hat jede Option den Aufbau $CONFIG{’optionsname’} = ‘einstellung’;. So könnt ihr auch die weiteren in der Manpage genannten Optionen belegen.

Nachdem alle Einstellungen getroffen sind, kannst du dich ans Unterschreiben machen. Das Programm muss mit einer Liste von Key-IDs aufgerufen werden. Doch woher kommen diese? Ich stelle bei den Keysignings, die ich leite, am Ende einen Keyring aller Teilnehmer zur Verfügung. Das macht es einfach, die Key-IDs zu extrahieren:

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

Nun ruft ihr das Programm auf: caff -m yes -u 0x012345 KEYIDS. Die Variable -m steht dafür, die E-Mails ohne Nachfrage zu versenden. Es gibt vier Möglichkeiten, diese zu belegen und wer es will, kann die Einstellungen auch in der .caffrc treffen. Ich persönlich nutze hier lieber die Kommandozeile, um die Option zu übergeben. Mittels -u übergebt ihr die Key-ID eures eigenen Schlüssels. Auch diese Einstellung kann bereits in der .caffrc getroffen werden. Nach einem beherzten Druck auf die Entertaste geht die eigentliche Arbeit los. Ihr werdet Schlüssel für Schlüssel nach eurer Unterschrift gefragt und könnt unterschreiben.

Ich hoffe, diese Anleitung ist für Teilnehmer an einem Keysigning nützlich und hilft, den Aufwand auf ein Minimum zu reduzieren.

Foto von NoirinP.

Keysigning bei den Chemnitzer Linux-Tagen 2009

Die Chemnitzer Linux-Tage 2009 kommen langsam wieder näher. Wer sich im März zu Linux und Co. informieren will, sollte sich das Wochenende unbedingt freihalten. Ich werde wieder die Keysigningparty organisieren. Wenn du daran teilnehmen willst, sende mir den Fingerprint (oder mindestens die Key-ID) deines PGP-Schlüssels. Der Schlüssel sollte auf einem Keyserver verfügbar sein. Ich werde den mit in die Liste der Teilnehmer aufnehmen und du kannst dann, ausgerüstet mit Stift, Ausdruck der Liste und einem Ausweisdokument, am Keysigning teilnehmen.

Viel Spass euch bei den Chemnitzer Linux-Tagen

Tip #14: E-Mails mit mutt automatisch verschlüsseln

Ich sinniere schon seit einiger Zeit, wie ich ausgehende E-Mails weitgehend automatisch verschlüsseln kann. Vor längerer Zeit stiess ich dabei auf das Perlskript von Martin Grandrath. Auf der Seite ist gut beschrieben, wie das einzurichten ist. Das problem am Skript ist die relativ lange Startzeit. Es vergehen in der regel mehrere Sekunden bis mutt einsatzfähig ist.

Vor kurzem unterhielt ich mich mit Jörg Sommer darüber. Er hat eine Lösung mit zsh-Mitteln gebastelt. Diese ist zudem noch wesentlich schneller als die obige Variante:


#!/bin/zsh

hook_name=send-hook
blacklist_file=$HOME/Mail/crypt_blacklist
output_file=$HOME/Mail/crypt_hook_list

setopt extendedglob

gpg_dump=( ${(f)“$(gpg --list-keys --with-colons)”} )

# filter out lines without @
people=( ${(f)"$(for line in ${(M)gpg_dump:#(pub|uid):*@*}; do 
  print ${“${(@s.:.)line}”[10]}; done)"} )

typeset -a -U addresses
# possible bad lines:
# • email@example.com  -- only an address
# • name (<…>) 
addresses=( ${${people%>}##*<} )

[[ -r $blacklist_file ]] &&
  addresses=( ${addresses:#${(j:|:)~${${(f)"$(<$blacklist_file)"}:#\#*}}} )

print -l "$hook_name\t~A\tunset crypt_autoencrypt" \
  "$hook_name\t'~t \""${(j:|:)addresses//./\\\\.}"\"'\tset crypt_autoencrypt" \
  > $output_file

Was macht das Skript? Anfangs werden zunächst ein paar Variablen festgelegt und das erweiterte Globbing der zsh eingeschalten. In der Variable gpg_dump wird alsdann die Ausgabe von gpg --list-keys --with-colons gespeichert. Nun folgt ein wenig zsh-Magic. ;-) Die Anweisung hinter people entspricht in etwa der Shellzeile awk -F: ‘/^(pub|uid)/ { print $10 }’ gpg_dump, d.h. dort liegen dann alle E-Mail-Adressen, die auf den Schlüsseln angegeben waren. Schließlich wird für alle Adressen auf der Blackliste ein enstprechender Eintrag erzeugt und die Konfiguration in die Variable output_file geschrieben.Die Adressen in der Blackliste werden entfernt. Was übrig bleibt, schreibt das Skript in Datei, deren Name in output_file gespeichert ist. Dabei muss man beachten, dass mutt nicht unendlich viele Einträge akzeptiert. Es scheint eine Begrenzung irgendwo bei 200 Einträgen zu geben.

Das ist aus meiner Sicht eine gute Alternative zu Martins Skript. Solltet ihr Anmerkungen, Fragen, Kommentare haben, schreibt mir es unten rein oder schreibt direkt eine E-Mail an Jörg.

Update: Eine Zeile im Beitrag war ungenau formuliert. Nach einem Hinweis von Jörg habe ich das verbessert.

Keysigning beim Magdeburger Open-Source-Tag

Es ist nicht mehr weit, dann startet in Magdeburg der gleichnamige Open-Source-Tag. Es gibt dort viele interessante Vorträge rund um Freie Software. Ihr erfahrt Neues über LaTeX und OpenOffice, lernt wie man sicher mit Tor und GnuPG kommuniziert, wie man mit GNU R Statistiken erstellt und vieles mehr.

Ich habe unter anderem das Keysigning übernommen. Falls ihr teilnehmen wollt, schickt mir euren Schlüssel bzw. die Key-ID per E-Mail und ladet euch dann die Liste der Teilnehmer herunter. Weitere Anwesiungen gibt es dann vor Ort.

Ich wünsche allen viel Spass beim Magdeburger Open-Source-Tag!

Chemnitzer Linux-Tage in Sicht

Eine der größten Veranstaltungen zu GNU/Linux beginnt in etwas mehr als einem Monat: die Chemnitzer Linux-Tage. Dieses Mal wird am ersten Wochenende im März das zehnjährige Jubiläum begangen. Wie all die Jahre zuvor, gibt es eine Reihe interessanter Vorträge und Workshops. Nach dem erfolgreichen Test im letzten Jahr bieten die Organisatoren auch dieses Mal einen Workshop on demand an, d. h. wenn du gern einen Workshop zu einem bestimmten Thema hättest, meldest du diesen an und wenn sich ein Kundiger findet, hält er diesen mit dir. Ich habe im letzten Jahr einen solchen Workshop zu Tor geleitet. Er ist mir in guter Erinnerung geblieben, da ich mit wenigen Leuten detailliert auf deren Fragen eingehen konnte.

“Meine” Veranstaltung ist, wie fast jedes Jahr, das Keysigning. Falls noch nicht geschehen, solltet du dich anmelden, in dem du die KeyID oder den Schlüssel selbst an mich sendest. Ich nehme diesen dann mit in die Liste der Teilnehmer auf. Zum Keysigning bringst du dann einen Ausdruck der Liste, deinen Ausweis sowie einen Stift mit und folgst meinen Anweisungen. ,;-)

Ich wünsche euch viel Spass bei den Chemnitzer Linux-Tagen!

Keysigning bei der LUG Jena

Die LUG Jena trifft sich an diesem Donnerstag, dem 2008-01-17, zum regelmäßigen Stammtisch. Neben verschiedenen Gesprächsthemen ist auch ein größeres Keysigning angesetzt. Falls du dich gerade in Jena befindest und dein Web of Trust erweitern willst, komm um 19:00 Uhr in die Quere No.1 und bring deinen Ausweis, einen Ausdruck deines Fingerprints sowie einen Stift mit.

cronjob