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.

OpenSSL 1.0 ist fertig

Man höre und staune: Heute wurde OpenSSL 1.0 veröffentlicht. Aus der Meldung:

The OpenSSL project team is pleased to announce the release of version 1.0.0 of our open source toolkit for SSL/TLS. This new OpenSSL version is a major release and incorporates many new features as well as major fixes compared to 0.9.8n. For a complete list of changes, please see http://www.openssl.org/source/exp/CHANGES.

The most significant changes are:

  • RFC3280 path validation: sufficient to process PKITS tests.
  • Integrated support for PVK files and keyblobs.
  • Change default private key format to PKCS#8.
  • CMS support: able to process all examples in RFC4134
  • Streaming ASN1 encode support for PKCS#7 and CMS.
  • Multiple signer and signer add support for PKCS#7 and CMS.
  • ASN1 printing support.
  • Whirlpool hash algorithm added.
  • RFC3161 time stamp support.
  • New generalised public key API supporting ENGINE based algorithms.
  • New generalised public key API utilities.
  • New ENGINE supporting GOST algorithms.
  • SSL/TLS GOST ciphersuite support.
  • PKCS#7 and CMS GOST support.
  • RFC4279 PSK ciphersuite support.
  • Supported points format extension for ECC ciphersuites.
  • ecdsa-with-SHA224/256/384/512 signature types.
  • dsa-with-SHA224 and dsa-with-SHA256 signature types.
  • Opaque PRF Input TLS extension support.
  • Updated time routines to avoid OS limitations.

Vortrag zu git und Keysigning bei der LUG Jena

Nebenan im Ereignisblog ist es schon zu lesen. Die Linux User Group in Jena startet am Donnerstag mit einem Vortrag oder besser Workshop zu git. Wir wollen dort ein wenig über die Einführungsthemen hinaus schauen und diskutieren, wie man git effektiv einsetzt.

Danach ist ab ca. 21:00 Uhr Stammtisch. Thomas hat angeregt, ein Keysigning zu machen. Bringt also Ausdrucke eurer PGP-Schlüssel mit und vergleicht. :-)

Ausarbeitung zum AES-Vortrag

Ich hatte meine Vortragsunterlagen zu einem Seminarvortrag kürzlich verbloggt. Mittlerweile ist auch die dazugehörige Ausarbeitung fertig. Die 257 kB große PDF-Datei behandelt den AES-Algorithmus und Public-Key-Verfahren (RSA und Diffie-Hellman-Schlüsseltausch). Vielleicht ist es für den einen oder anderen von Nutzen.

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.

Mails über Mails

Kürzlich mietete ich einen Rootserver und wollte den natürlich auch in Betrieb nehmen. Nach der Installation des MTA war ich doch ziemlich verwundert, dass es gleich massenhaft Verbindungsversuche gab. Auf den ersten Blick betrafen die allesamt die Domain whiskey-soda.de und wurden mit Relay access denied abgewiesen. Warum bekomme ich deren E-Mails? Ich warf einen Blick auf den MX-Eintrag und staunte nicht schlecht:

jens@nysaino: dig -t MX whiskey-soda.de
;; ANSWER SECTION:
whiskey-soda.de.        46300   IN      MX      10  aeon.zeitguys.de.

Der A-Record von aeon.zeitguys.de zeigt auf meinen Rechenr. Alles klar! :-(

Dadurch kamen täglich um die 4 000 E-Mails an. Also schreibe ich die Firma an und fordere sie auf, den Eintrag zu ändern. Keine Reaktion! Der whois-Eintrag hat noch eine Telefonnummer. Dort erfahre ich, dass die Firma früher unter der Nummer erreichbar war. Seit 2007 existiert Zeitguys angeblich nicht mehr. Ansprechpartner sind keine bekannt und weitere Kontaktmöglichkeiten scheint es nicht zu geben. Aber E-Mails kamen nach wie vor unentwegt. Was tun? Mögliche, sinnvolle LARTs wollten mir nicht einfallen.

Schließlich brachte eine Kontaktaufnahme mit deren Provider DD24 den erhofften Erfolg. Die Ansprechpartner der betreffenden Firma bekamen eine Frist gesetzt und der DNS-Eintrag wurde zu Fristende geändert. Jetzt lässt die Mailflut auch wieder nach und ich muss den Speicherplatz der Festplatte nicht mehr für sinnlose Logeinträge verschwenden. :-)

cronjob