Skip to content

Vorsicht vor gefälschten PGP-Schlüsseln

Wer mir eine OpenPGP-verschlüsselte E-Mail schicken will, sollte demnächst doppelt vorsichtig sein. Ich entdeckte heute, dass es zur Key-ID 0xEA3E4D61 zwei Schlüssel gibt. Einer der beiden wurde vermutlich automatisch erzeugt und gehört mir nicht! Der Fingerabdruck meines derzeitig aktiven Schlüssels ist:

pub   4096R/0x65B3F094EA3E4D61 2010-01-15
Schl.-Fingerabdruck = 60D8 5B8D 9A1C D2D1 355E  BE9F 65B3 F094 EA3E 4D61
uid                  Jens Kubieziel <jens@kubieziel.de>
uid                  Jens Kubieziel <jens@freie-re.de>
uid                  Jens Kubieziel <kubieziel@gmx.de>
uid                  Jens Kubieziel <lugjena@kubieziel.de>
uid                  Jens Kubieziel <jens@torservers.net>
sub   4096R/0x7A0A527D47FFDBE1 2010-01-15

Wenn ihr mir eine verschlüsselte E-Mail schicken wollt, vergleicht unbedingt die obige zweite Zeile. Im Allgemeinen empfiehlt es sich in der Konfigurationsdatei von GnuPG die Variable keyid-format 0xlong oder gleich long zu setzen. Die kurze Key-ID ist, wie oben zu sehen, leicht zu fälschen.

Update: Das Problem betrifft nicht nur mich. Auf Twitter war von mehreren Fällen zu lesen und auch die Kernel-Entwickler sind betroffen.

Keysigning bei den Chemnitzer Linux-Tagen 2016

Am 19. und 20. März fanden in Chemnitz wieder die Chemnitzer Linux-Tage statt. Einer alten Tradition folgend organisierte ich das Keysigning. Das heißt, Leute mit einem OpenPGP-Schlüssel können teilnehmen und sich gegenseitig ihre Identität bestätigen. Durch die Prüfung und Signatur wird das Vertrauensnetz (Web of Trust) gestärkt.

In den letzten Jahren stellten wir uns dazu in einer Reihe auf. Die erste Person bewegte sich dann zur zweiten und anschließend zur dritten, vierten usw. Nachdem die erste Person vorbei war, fing die zweite an. So sah das ungefähr aus:

Startaufstellung:

1 2 3 4 5 6 7 8 9 10

Erste Person startet:

2 3 4 5 6 7 8 9 10
1

Zweite Person startet:

3 4 5 6 7 8 9 10
2 1

Nach einer Weile startet die sechste Person:

7 8 9 10 1
6 5 4 3 2

Das heißt, die erste Person reiht sich wieder ans das Ende ein. Eine Reihe zeigt jeweils den Ausweis und die andere Reihe vergleicht.

Bei dem Verfahren ist nun der Nachteil, dass anfangs sehr viele Leute im Leerlauf sind. Sie müssen warten, bis die erste Person endlich bei denen angekommen ist. Um dies ein wenig zu beschleunigen, haben wir die Reihe dieses Jahr direkt gefaltet. Nach der Sortierung in eine Reihe stellten sich alle gegenüber auf:

1 2 3 4 5
10 9 8 7 6

Die Idee war, dass wieder eine Reihe prüft und die andere den Ausweis zeigt. Leider habe ich das wohl nicht genau genug erklärt und es wurde parallel von beiden Seiten gemacht. Als die Reihe nun zur Hälfte abgearbeitet war, kamen die Teilnehmer bei ursprünglichen Gegenüber wieder an und nahmen an, alle erwischt zu haben. Dies ist aber nicht der Fall:

2 3 4 5 6
1 10 9 8 7

Die Aufstellung oben ist nach dem ersten Wechsel. In der initialen Aufstellung verglich beispielsweise Teilnehmer 3 mit Teilnehmer 8 die Daten. In obigem Schritt vergleicht 3 mit 10 usw. Nach fünf Schritten stehen sich 3 und 8 wieder gegenüber. Teilnehmer 3 hat dann die Identität der Teilnehmer 8, 10, 2, 4 und 6 verifiziert. Was ist mit 1, 5, 7 und 9? Diese fehlen offensichtlich. Es kostete mich einige Mühe die Teilnehmer zu überzeugen, dass der Lauf noch nicht beendet ist. Hoffentlich kann ich alle dann im nächsten Jahr auf diese Seite verweisen und die Überzeugungsarbeit wird einfacher. :-)

Wer sich für den Stand des Web of Trust interessiert:

Web of Trust @ CLT 16

Welche Abgeordneten nutzen PGP?

Im letzten Jahr hatte ich die Abgeordneten des Thüringer Landtages befragt, ob diese denn PGP und SSL/TLS nutzen. Neben der Fraktion der Linken waren es Katharina König und Dirk Adams, die PGP einsetzten. Nun ist die neue Regierung mehr als 100 Tage im Amt. Also wollte ich einen zweiten Rundruf starten. Nach einem ersten Zwischenergebnis hat sich die Zahl der Abgeordneten wie auch die Zahl der Fraktionen mit einem PGP-Schlüssel verdoppelt. Die SPD-Fraktion und Dorothea Marx (SPD) sowie Steffen Dittes (Linke) kamen hinzu. Aber das sind Vorergebnisse.

Nun fragte ich mich, wie das wohl in anderen Landtagen aussieht. Alexander Morlang gab den Hinweis, auf den Keyservern nach dem Wort Fraktion zu suchen. Also legte ich eine Google-Docs-Tabelle an und fragte um Hilfe.

Mittlerweile gibt es einige Einträge. Überraschend fand ich, dass es in Bayern ein CDU-Mitglied mit einem Schlüssel gibt. Ansonsten dominieren derzeit die Piraten in den Landtagen.

Sind eure Abgeordneten in der Liste enthalten? Falls nicht, so schreibt denen doch mal eine E-Mail und fragt, ob sie einen Schlüssel besitzen oder wer in der Fraktion einen Schlüssel besitzt. Ich würde mich freuen, wenn ihr mir das Ergebnis zuschickt, hier kommentiert oder direkt in die Tabelle schreibt.

Update: Ich habe jetzt alle Fraktionen in den diversen Landtagen und Bürgerschaften angeschrieben. Dort fragte ich, ob bekannt ist, wer PGP/SSL/TLS oder anderes nutzt. Ich aktualisiere die Tabelle, sobald ich Antworten erhalte.

Wie funktioniert eigentlich Heartbleed

Lest ihr regelmäßig Bugreports oder Meldungen über Schwachstellen bei SSL/TLS? Wie fühlt ihr euch so? Zur Erinnerung:

SSL added and removed here!
Ausschnitt aus einer Folie aus dem MUSCULAR-Programm der NSA

Das heißt, drei Monate in Folge gab es schwere Sicherheitslücken in Software zur Verschlüsselung. Ganz unwillkürlich fühlt man sich an die Folien aus dem NSA-Programm MUSCULAR erinnert.

Die letztgenannte Schwachstelle ist vermutlich die bislang schwerste. Denn damit ist es möglich, den Arbeitsspeicher eines Computers auszulesen. Dies funktioniert sowohl auf der Seite des Servers wie auch beim Clientprogramm. Dazu ist es notwendig, dass das Programm OpenSSL verwendet und eine Erweiterung von SSL namens Heartbeat aktiviert hat. Dies ist beispielsweise bei Android in der Version 4.1.1 der Fall. Mozilla Firefox hingegen nutzt die NSS-Bibliothek und ist nicht betroffen. Die Webserver nutzen hingegen recht oft die OpenSSL-Bibliothek und sind damit betroffen, falls die Version 1.0.1 bis 1.0.1f von OpenSSL verwendet wird. Sollte jemand von euch die Software nutzen, so upgraded auf mindestens 1.0.1g oder deaktiviert Heartbeat in OpenSSL. Gerade letzteres kann man aus meiner Sicht problemlos tun. Denn bisher fand ich keinen sinnvollen Anwendungsfall für Heartbeat.

Doch wie funktioniert diese Lücke eigentlich? Heartbeat (RFC 6520) ist eine Erweiterung für TLS. Ein Teilnehmer einer Verbindung sendet beliebige Daten an den Empfänger. Dieser antwortet mit einer Kopie dieser Daten und zeigt somit, dass die Verbindung noch steht und alles in Ordnung ist. Das Problem dabei ist, dass in einer Anfrage zwei Längenfelder vorhanden sind. Ein Angreifer sendet einfach ein Byte Daten und behauptet, er hätte 64 kB gesendet. OpenSSL liest nun die 64 kB aus dem eigenen Puffer und sendet die Daten zurück an den Angreifer. Der Angreifer kann den Angriff immer und immer wieder starten und erhält so eventuell immer wieder ein neues Stück Arbeitsspeicher (siehe Kommentar von Florian Diesch). Bruce Schneier hat mit seinen Worten vollkommen recht:

Catastrophic" is the right word. On the scale of 1 to 10, this is an 11.
https://www.schneier.com/blog/archives/2014/04/heartbleed.html

Ich hatte in meinem 30C3-Vortrag schon ein OpenSSL-Beispiel reingenommen. Das sollte zeigen, wie kompliziert es sein kann, mit der Software sicheren Code zu schreiben. Auch andere sind, über die Codequalität gestolpert. Daher sind Leute gefragt, die einen detaillierten Blick auf OpenSSL werfen und die Software verbessern. Dazu zählt auch die bessere Lesbarkeit des Codes oder gute Dokumentation.

Wenn ihr wissen wollt, ob ihr betroffen seit, schaut lokal auf die OpenSSL-Version, nutzt die Zeile openssl s_client -connect example.com:443 -tlsextdebug 2>&1| grep ‘server extension “heartbeat” (id=15)’ || echo safe oder verwendet den Testservice von Lutz Donnerhacke oder Filippo Valsorda.

Weiterlesen:

Passwort und Nutzername im Dump der Daten von Yahoo! Mail

mutt will jede E-Mail entschlüsseln

E-Mail in muttMein Mailprogramm mutt brachte mich kürzlich zur Verzweiflung. Denn beim Öffnen eines Mailordners wollte die Software jede E-Mail öffnen. Insbesondere bei verschlüsselten Mails wurde immer wieder nach dem Passwort gefragt. Enthielt der Ordner mal keine verschlüsselte E-Mail, so erschien immer noch die Meldung Kann keinen Mailcap-Eintrag für [MIME-Typ] finden.. Der MIME-Typ hängt vom eventuellen Anhang der Mail ab. Beispiele sind image/png, application/pdf oder anderes. Wie lässt sich das Problem nun lösen?

Immerhin wusste ich, dass die Probleme nach einem Update auf Ubuntu 12.04 begannen. Also vermutete ich das Problem bei Ubuntu. Allerdings zeigte ein Debian mit derselben Konfiguration gleiches Verhalten. In der Manpage von mutt suchte ich nach einem Debugging-Schalter. Den gibt es nicht. Jedoch lassen sich systemweite und lokale Variablen deaktivieren.

  1. mutt -n -F /dev/null war der erste Versuch. Der Schalter -n umgeht die systemweite Konfiguration und -F /dev/null legt den Ort der lokalen Konfiguration fest. In dem Fall bekommt mutt ein Dateiendezeichen (EOF) und nutzt also keine Konfiguration. Mit den Einstellungen trat das Verhalten nicht auf. Also zum nächsten Versuch
  2. mutt -F /dev/null nutzt nur die Systemkonfiguration. Auch hier trat das Verhalten nicht auf.
  3. mutt -n nutzt nur die lokale Konfiguration. Also war klar, dass ich in meinen Einstellungen weiter suchen muss.

Bei knapp 100 kB an Konfigurationsdateien ist suchen natürlich leichter gesagt als getan. Glücklicherweise habe ich die Dateien mit source eingebunden. So kam ich vergleichsweise schnell auf eine Datei, die sich um die Farbgestaltung der Einträge im Index kümmert. Mit klassischer Binärsuche ging es dann weiter und nach etwa zehn Schritten fand ich den Übeltäter.

color index black black   “! ~b .”

Dieser Eintrag macht bestimmte E-Mails »unsichtbar«. Ich erhalte immermal wieder Spam, der keinerlei Text im Nachrichtenteil enthält. Die obige Regel weist mutt an, den Body (~b) zu durchsuchen. Der Punkt trifft auf ein beliebiges Zeichen zu und das Ausrufezeichen negiert das Ganze. Insgesamt passt diese Regel also auf E-Mail, die keine Zeichen im Body haben. Alle diese E-Mails werden schwarz auf schwarzem Hintergrund gezeichnet.

Jetzt ist also klar, warum mutt unbedingt in diverse E-Mails schauen wollte. Denn nur so kann diese Regel angewendet werden. Also habe ich die zunächst rausgeschmissen. Sven Guckes wies mich später darauf hin, dass mit ~G PGP-Nachrichten ausgeschlossen werden können.

Ich bin mit meinem Mailprogramm nun wieder glücklich und freue mich auf neue E-Mails. :-) 

Spamschutz bei S9Y

Im Hintergrund tut Serendipity oder kurz S9Y seinen Dienst. Vor mehr als sieben Jahren stieg ich von Wordpress auf die Software um. Die Software tut im wesentlichen ihren Dienst. Außer, wenn wie heute, ein Plugin merkwürdige Sachen macht.

Ich hatte bis heute abend das Autosave-Plugin installiert. Das speichert die Einträge zwischen und soll eigentlich vor Datenverlust schützen. Bei mir sorgte es dafür, dass die Rezension mehrfach verschwand. Der Grund war, dass ich auf Speichern im Artikelfenster drückte und das Fenster offen liess. Das Plugin wollte einfach alte Werte speichern und löschte so den Beitrag.

Seit dem Jahreswechsel bereitet mir nicht die Blogsoftware Kopfschmerzen, sondern der Spam der eintrudelt. Anfangs hatte ich den Spamschutz aktiviert, den S9Y von Haus aus mitbringt. Dazu setzte ich ein paar Worte auf die Blacklist. Das reichte aus. Nebenan im Datenkanal habe ich noch das Bayes-Plugin im Einsatz. Das wurde von Beginn an angelernt und verrichtet gute Dienste.

Das S9Y Infocamp hat sich nun dem Thema Spamschutz bei S9Y angenommen. In dem Podcast besprechen sie verschiedene Mechanismen. Dabei kommt die Rede auf die SpamBee. Die arbeitet unter anderem mit versteckten CAPTCHAs. Die vier Podcaster sind voll das Lobes. Ich habe den Podcast glücklicherweise zur rechten Zeit gehört. Denn direkt nachdem ich die Biene hier installierte, traf das Blog eine Spamwelle. Von den Lesern hat das vermutlich niemand bemerkt. Die Spambiene hat den Spam wirklich sehr gut abgefangen. Wer also da draußen mit Spam bei S9Y zu kämpfen hat, sollte unbedingt SpamBee probieren. Vermutlich bringt das Plugin Linderung.

Fingerprints von SSL-Seiten prüfen

Das Desaster um die niederländische Zertifizierungsstelle DigiNotar zieht derzeit immer noch seine Kreise. Mir scheint es noch zu früh, um hier etwas dazu zu schreiben. Vielmehr will ich ein paar Worte verlieren, wie ich „meine eigene CA betreibe“. Denn schon seit längerem vertraue ich nicht, den von den Browsern mitgelieferten Zertifizierungsstellen (CA). Zumeist lösche ich alle und gebe dann einzeln Vertrauen.

Der beste Weg, um einem SSL-Zertifikat zu vertrauen, wäre, sich bei dem Betreiber zu melden und über einen sicheren Kanal den Fingerprint des Zertifikats zu klären. Mein Browser zeigt mit für die Seite Wikipedia-SSL-Seite den Fingerprint (SHA-1) BA:8A:BE:34:B1:34:3B:AF:06:05:4B:48:A9:27:AA:D9:B4:75:45:6E an. Wenn ich bei der Wikipedia anrufe und diese mir denselben nennen, so habe ich das korrekte Zertifikat. Dabei nehme ich natürlich an, dass das Telefon ein sicherer Weg zum Austausch der Informationen ist. Aber beispielsweise druckt die lokale Sparkasse eben diesen Fingerprint auf ihre Dokumente. Damit kann ich das als Kunde leicht verifizieren.

Wie das Beispiel Wikipedia aber schon zeigt, ergibt sich da ein Problem.Woher bekomme ich den Fingerprint? Muss ich bei Jimmy Wales direkt anrufen oder gar nach FloridaKalifornien¹ reisen? Hier kam nun meine Idee ins Spiel.

Ich habe auf diversen Servern einen Zugang, d.h. ich kann mich von der Ferne einloggen und dann dort arbeiten. Die Rechner stehen in verschiedenen Netzen und zum Teil auf verschiedenen Kontinenten. Nun logge ich mich auf den Servern ein, lade das Zertifikat herunter und lasse mir den Fingerprint anzeigen. Wenn dieser auf allen Rechner gleich ist, dann gehe ich davon aus, dass ich das korrekte Zertifikat angezeigt bekomme. In dem Fall akzeptiere ich das und vertraue dem. Sollten die Fingerprints abweichen, dann akzeptiere ich das nicht und recherchiere dem in der Regel ein wenig hinterher.

Jörg Sommer hat das nun ein wenig automatisiert und ein zsh-Skript (Quelltext weiter unten) geschrieben. Das wird folgendermaßen aufgerufen:

ssl-fp-check [-l] sslsi.te[:port] ssh1 [ssh2] [ssh3] ...

Dabei ist sslsi.te die Webseite, die geprüft werden soll. Ohne die Angabe eines Ports verwendet das Skript standardmäßig 443. Danach wird eine oder mehrere SSH-Verbindungen angegeben. Das Skript wird nun versuchen, sich überall einzuloggen und gibt dann den Fingerprint aus. Für den Fall, dass es auf dem Zielsystem kein OpenSSL gibt, existiert die Option -l. Dabei wird dann ein Tunnel gebaut und das lokale installierte OpenSSL verwendet.

Also für Wikimedia habe ich folgendes eingeben:

ssl-fp-check secure.wikimedia.org a b c d
a: SHA1 Fingerprint=BA:8A:BE:34:B1:34:3B:AF:06:05:4B:48:A9:27:AA:D9:B4:75:45:6E
b: SHA1 Fingerprint=BA:8A:BE:34:B1:34:3B:AF:06:05:4B:48:A9:27:AA:D9:B4:75:45:6E
c: SHA1 Fingerprint=BA:8A:BE:34:B1:34:3B:AF:06:05:4B:48:A9:27:AA:D9:B4:75:45:6E
d: SHA1 Fingerprint=BA:8A:BE:34:B1:34:3B:AF:06:05:4B:48:A9:27:AA:D9:B4:75:45:6E

Die SSH-Server a, b, c und d gaben also denselben Fingerprint aus. Also würde ich dem ganzen doch vertrauen. :-)

Ich werde das Skript jetzt wahrscheinlich immer verwenden. Es macht das Leben doch deutlich einfacher.

Continue reading "Fingerprints von SSL-Seiten prüfen"
tweetbackcheck