Unsicher verschlüsseln mit PGP/GPG

Wer PGP/GPG oder andere Public-Key-Verschlüsselungsverfahren (wie z.B. OTR) nutzt, muss den Fingerprint prüfen, sonst ist die Verschlüsselung angreifbar.

Wieso eigentlich?

Schön ist, dass immer mehr Leute ihre Mails verschlüsseln. Es hat sich herumgesprochen, dass unverschlüsselte Mails so sicher sind wie Postkarten: Alle, die sie in die Finger kriegen, können sie lesen. Und das sind viele: Die Mitbewohner_innen mit denen man das WLAN teilt, der Internet-Provider, die beteiligten Mail-Dienste, die Server, die die Mail transportieren — und natürlich auch interessierte Dienste, die an irgendeiner dieser Stellen die Daten abgreifen können.

Dagegen hilft Ende-Zu-Ende-Verschlüsselung: Die Mail wird auf dem Rechner der Absenderin veschlüsselt und auf dem Rechner der Empfängerin entschlüsselt. Früher nutzte man dafür symmetrische Verschlüsselung: Die Nachricht wurde mit dem selben Schlüssel ver- und auch entschlüsselt. Das Problem war: Der Schlüssel musste über einen sicheren Kanal transportiert werden. Nun stellt sich aber die Frage: Wenn man schon einen sicheren Kanal hat, wieso transportiert man dann nicht gleich die Nachricht über diesen Kanal?

Public-Key-Verschlüsselung wie sie PGP/GPG nutzt, löst dieses Problem: Das Programm erzeugt nämlich nicht nur einen, sondern zwei Schlüssel: Den öffentlichen Schlüssel (Public Key) zum Verschlüsseln und den privaten Schlüssel zum Entschlüsseln. Der Public Key kann bedenkenlos überall verteilt werden — es sollen ja möglichst viele Menschen die Möglichkeit haben, ihn zu nutzen. Der private Schlüssel wird mit einer Passphrase geschützt und bleibt möglichst sicher verwahrt auf dem Rechner der Empfängerin. So lange der Rechner sicher ist, ist auch die Kommunikation sicher. Und das ist doch schon mal was, ist es doch viel aufwändiger, einen Rechner zu hacken, als Mails mitzuschneiden. Ebenso sind die juristischen Hürden dafür, einen Rechner zu beschlagnahmen und die Herausgabe des Schlüssels zu erzwingen weitaus höher als die, Internetverkehr mitzuschneiden. Public-Key-Verfahren sind aber nur sicher, so lange man sicher sein kann, dass der öffentliche Schlüssel auch wirklich zu der Person gehört, mit der man kommunizieren möchte.

Wieso das?

Gehen wir davon aus, dass Anna an Christoph ihren privaten Schlüssel schickt. Annas Mitbewohner Bert ist neugierig. Er fängt die Mail ab und erzeugt seinerseits zwei Schlüssel, Anna2 und Christoph2. Er sendet Arhur den gefälschten Schlüssel Anna2 und wartet, bis Christoph seinen Schlüssel an Anna sendet. Diese Mail fängt er ab und sendet Anna den gefälschten Schlüssel Christoph2. Anna und Christoph denken nun, sie haben ihre jeweiligen Schlüssel und sind sicher. Aber weit gefehlt: Beide haben nur gefälschte Schlüssel von Bert, der nach wie vor die Mails zwischen beiden abfängt, entschlüsselt, ließt und wieder verschlüsselt. Berts Man-in-the-Middle-Angriff war erfolgreich.

Damit haben wir bei Public-Key-Verfahren wieder das selbe Problem wie bei symmetrischen Verfahren: Damit die Identität der Absenderin gesichert ist, muss der Public Key durch einen sicheren Kanal übertragen werden.

Zum Glück haben die Leute bei PGP dieses Problem vorausgesehen. Es gibt die Möglichkeit, aus einem Public Key einen Fingerabdruck (Fingerprint) zu generieren. Der Fingerprint wird aus dem Schlüssel errechnet, er ist aber selbst viel kürzer als der Schlüssel. Dadurch ist er viel leichter durch einen sicheren Kanal zu transportieren als ein ganzer Schlüssel. Anna und Christoph können so nach dem Austausch der Schlüssel kurz telefonieren und den Fingerprint abgleichen. Weil es praktisch unmöglich ist, einen Fingerprint zu fälschen, wäre ihnen dabei sofort aufgefallen, das etwas bei der Übertragung schiefgegangen ist.

Den Fingerprint kriegt man raus, indem man in der Schlüsselverwaltung mit der rechten Maustaste auf den Schlüssel klickt und die Schlüsseleigenschaften anzeigen lässt. Auf der Konsole geht dasselbe mit dem Kommando gpg --fingerprint [schlüsselname].

Eine weitere Möglichkeit besteht im Signieren von Schlüsseln: Wenn Anna und Christoph ihren Schlüssel sicher ausgetauscht haben, können sie sich signierte Schlüssel senden: Anna bekommt den Schlüssel von Chloe. Sie prüft den Fingerprint und signiert danach Chloes Schlüssel. Den kann sie dann an Christoph senden, der durch Annas Signatur sicher sein kann, dass der Schlüssel auf dem Weg von Anna zu ihm nicht verändert wurde. So entsteht mit mehreren Leuten nach und nach ein Netz des Vertrauens, ein Web of Trust.

Bleibt die Frage: Was soll der Scheiß? Warum der Aufwand? Die einfachste Antwort darauf ist: Weil scheinbare Sicherheit am Ende gefährlicher ist als Unsicherheit.