Notizen zu einem Vortrag über sichere Kommunikation im Internet

Ich habe mir am 07.11.2013 auf der Kryptoparty der Piratenpartei in Hannover einen Vortrag von Dirk Hillbrecht zum Thema Kryptographie angehört. Dabei ging es vor allem um die Verschlüsselung von E-Mails und Dateien mit Hilfe von OpenPGP. Während der Veranstaltung wurden Fragen beantwortet, die ich mir schon lange gestellt hatte. In diesem Artikel liste ich einige dieser Erkenntnisse auf. Wie man Schritt für Schritt seine E-Mails verschlüsseln kann, schreibe ich in einem separaten Artikel.

Einen Punkt den ich vorran stellen möchte: sicher verschlüsseln und signieren kann man nur mit Software, die auf dem eigenen Rechner läuft. Nur dann kann man einigermaßen sicher sein, dass nur einem selbst gewisse Informationen (Passwörter etc.) bekannt sind. Daher scheiden die Nutzung von Webmail-Oberflächen und die derzeit viel umworbene De-Mail von vornherein aus. Hier muss nämlich die Ver- und Entschlüsselung auf den Servern der Anbieter erfolgen.

Mir war zunächst der Unterschied zwischen „signieren“ und „verschlüsseln“ von E-Mails nicht bewusst. Irgendwie hatte sich in meinem Kopf festgesetzt: „entweder beides, oder nichts“. Tatsächlich kann man aber auch „nur verschlüsseln“ oder „nur signieren“.

E-Mails verschlüsseln

  1. Die Verschlüsselung dient dazu, den Inhalt der E-Mail vor dem Zugriff Dritter zu schützen.
  2. E-Mails werden mit dem öffentlichen Schlüssel des Empfängers verschlüsselt.
  3. Nur der Empfänger kann den Inhalt mit seinem privaten Schlüssel wieder entschlüsseln. (asymmetrische Verschlüsselung)

E-Mails signieren

  1. Eine Signatur verschlüsselt nicht den Inhalt einer Mail. Vielmehr stellt die Signatur sicher, dass der Inhalt der E-Mail vom Absender stammt und nach dem Absenden nicht verändert wurde. Der Empfänger kann den Inhalt der E-Mail auch dann lesen, wenn er die Signatur nicht überprüft hat – eventuell handelt es sich dann aber nicht um die Inhalte, die der Absender tatsächlich abgeschickt hat.
  2. Die Signatur wird mit aus dem privaten Schlüssel des Absenders und dem Inhalt der E-Mail errechnet.
  3. Der Empfänger kann die Richtigkit der Signatur mit Hilfe des öffentlichen Schlüssels des Absenders überprüfen.
  4. Man kann E-Mails zunächst signieren und im Anschluss verschlüsseln.

Einige Begriffe

  • Enigmail ist eine Erweiterung für Thunderbird, mit deren Hilfe E-Mails verschlüsselt und signiert werden können (Enigmail Quickstart Guide). Enigmail führt die Verschlüsselung nicht selbst durch, sondern nutzt dazu GnuPGP. (Erweiterungen für andere Programme, z.B. Mircrosoft Outlook, findest Du in der Liste grafischer Benutzeroberflächen für GnuPG).
  • GnuPG (auch: GPG) ist eine Implementierung vom Verschlüsselungsstandard OpenPGP. GnuPG erstellt die Schlüssel anhand des OpenPGP-Standards, verwaltet die Schlüssel, verschlüsselt, entschlüsselt und signiert die E-Mails. (Anleitungen zu GnuPG)
  • Unter Gnome/Unity kann zu Erstellung und Verwaltung der Schlüssel das Programm Seahorse verwendet werden. Mit Seahorse können (wie zuvor mit dem GNOME Schlüsselbund) auch andere Passwörter (z.B. SFTP) auf dem System verwaltet werden.
  • Da Seahorse und Enigmail nur Frontends für GnuPG sind, sind Schlüssel, die mit Hilfe des einen Programmes erstellt wurden, auch im jeweils anderen Programm sichtbar.
  • Neben dem privaten Schlüssel und dem öffentlichen Schlüssel, gibt es ein Passwort (Passphrase) und einen Fingerprint.
    1. Das Passwort (Passphrase) dient dazu, den privaten Schlüssel vor einem Zugriff Dritter zu schützen. Das Passwort muss man immer dann eingeben, wenn man Zugriff auf seinen privaten Schlüssel haben möchte. Das ist der Fall beim Entschlüsseln von E-Mails, sowie für die Errechnung der Signierung einer E-Mail.
    2. Der Fingerprint dient dazu, einen öffentlichen Schlüssel auf seine Korrektheit zu überprüfen. Erhält man z.B. über einen Key-Server einen öffentlichen Schlüssel, so kann man mit dieser Checksumme testen, ob es sich um den richtigen Schlüssel handelt. Den Fingerprint kann man z.B. auf seine Visitenkarten drucken.
  • Der gpg-agent (UbuntuUsers Wiki) ist integraler Bestandteil von GnuPG. Er dient dazu, dass das Passwort für die privaten Schlüssel nicht jedes mal neu eingegeben werden muss.
  • Ein Widerrufszertifikat dient dazu, einen öffentlichen Schlüssel bereits vor Ablauf seiner Gültigkeit als ungültig zu erklären bzw. von den Schlüsselservern (Keyserver) zu entfernen. Das ist insbesondere dann wichtig, wenn:
    1. Andere Leute Zugriff auf den privaten Schlüssel bekommen haben.
    2. Man selbst keinen Zugriff mehr auf seinen privaten Schlüssel hat.

Einige Fragen

Kann man PGP verschlüsselte Nachrichten an mehrere Nutzer gleichzeitig schicken?
Ja. Dazu möchte ich aus dem Wikipedia-Artikel zu PGP zitieren:

Bei PGP wird aber nicht die ganze Nachricht asymmetrisch verschlüsselt, denn dies wäre viel zu rechenintensiv. Stattdessen wird die eigentliche Nachricht symmetrisch und nur der verwendete Schlüssel asymmetrisch verschlüsselt (Hybride Verschlüsselung). Dazu wird jedes Mal ein symmetrischer Schlüssel zufällig erzeugt.

Dieser symmetrische Schlüssel wird dann per RSA- oder Elgamal-Kryptosystem mit dem öffentlichen Schlüssel des Empfängers verschlüsselt und der Nachricht hinzugefügt. Dadurch ist es möglich, eine Nachricht für mehrere Empfänger gleichzeitig zu verschlüsseln. Eine für mehrere Empfänger verschlüsselte Nachricht ….

… enthält also zusätzlich eine Liste, in der für jeden Empfänger der Schlüssel enthalten ist. Dieser Schlüssel wird für jeden Empfänger mit seinem öffentlichen Schlüssel asymmetrisch verschlüsselt.

Kann ich meine gesendeten verschlüsselten Nachrichten im Postausgang noch lesen?
Wenn eine Nachricht mit dem öffentlichen Schlüssel der Empfängers verschlüsselt worden ist, kannst man sie im Prinzip nach dem senden nicht mehr anschauen. Allerdings kann man sich selbst auch als Empfänger der Nachricht eintragen lassen (siehe oben). Bei Enigmail gibt es dazu die Einstellung: „Zusätzlich mit eigenem Schlüssel verschlüsseln“:

Man kann E-Mails nicht nur mit dem öffentlichen Schlüssel des Empfängers, sondern auch mit dem eigenen Schlüssel verschlüsseln. Dadurch kann man die gesendeten und verschlüsselten Nachrichten im Postausgang wie gewohnt lesen.
Man kann E-Mails nicht nur mit dem öffentlichen Schlüssel des Empfängers, sondern auch mit dem eigenen Schlüssel verschlüsseln. Dadurch kann man die gesendeten und verschlüsselten Nachrichten im Postausgang wie gewohnt lesen.
Wie kann ich herausfinden, ob mein Schlüssel bereits auf einen Schlüsselserver hochgeladen wurde?
Dazu kannst Du einfach den Schlüsselserver nach deiner E-Mail-Adresse durchsuchen.

  1. Bei Enigmail geht das über: OpenPGP / Schlüssel verwalten und dann Schlüsselserver / Schlüssel suchen.
  2. Bei Seahorse kannst Du den/die Schlüsselserver durchsuchen, indem du auf Entfernt / Entfernte Schlüssel suchen klickst.
  3. Direkt im Internet kannst Du z.B. den MIT Schlüsselserver durchsuchen.
  4. Eine Liste grafischer Benutzeroberflächen für GnuPG findest Du auf der GnuPG Homepage.

Sichere Internet-Verbindung mit HTTPS und SSH

  • Bei HTTPS wird zunächst sichergestellt, dass die Gegenseite auch tatsächlich diejenige ist, für die sie sich ausgibt (also z.B. die Bank, und kein „Man in the middle„). Das wird mit Hilfe von Zertifikaten und einer Zertifikatskette sichergestellt, die von Zertifizierungsstellen (CA; certification authority) bereitgestellt werden. So lange die privaten Schlüssel der Zertifizierungsstellen nicht in falsche Hände gelangt sind, ist das eine sichere Angelegenheit
  • Im Anschluss werden die Schlüssel für die Verschlüsselung mit Hilfe des Diffie-Hellman-Schlüsselaustausches ausgetauscht. Die Besonderheit dieses Verfahrens ist, dass die eigentlichen Schlüssel nicht über das Internet versendet werden. Im Anschluss werden alle Daten nur noch verschlüsselt versendet.
  • Auch wenn man ein unsicheres Netzwerk verwendet (z.B. am Flughafen oder in einem Café), sind diese HTTPS-Verbindungen sicher.
  • Bei SSH-Verbindungen (z.B. wenn man sich im Terminal auf einen Server einloggt, oder eine SFTP-Verbindung aufbaut), muss man zunächst die Schlüssel über eine sichere Verbindung ausgetauscht haben. Den Fingerprint für die Authentifizierung kann man sich vom Admin geben lassen. Bei jedem Aufbau einer SSH-Verbindung wird anhand des Fingerprints überpüft, ob die gewünschte Gegenstelle (direkt) erreicht wurde. Im Anschluss können alle Daten verschlüsselt ausgetauscht werden.

Daten verschlüsseln mit TrueCrypt

In den letzten Minuten des Vortrags wurde noch das Programm TrueCrypt als gute Möglichkeit zur Verschlüsselung von Dateien vorgestellt.

  • TrueCrypt ist für viele Plattformen verfügbar. Das Programm heißt unter Linux RealCrypt.
  • Man legt sogenannte Volumes an, deren Größe man vorher festlegen muss.
  • Mit Hilfe von TrueCrypt können verschlüsselte Archiv-Dateien erstellt (und im Anschluss verbreitet) werden. Bei eCryptFS soll das scheinbar nicht so gut möglich sein. Damit habe ich mich allerdings noch nicht beschäftigt.
  • Die Dateien können mit einem einfachen Passwort wieder entschlüsselt werden.
  • Scheinbar hat Julian Paul Assange diese Methode verwendet, um die amerikanischen Botschaftsdepeschen zu verschlüsseln und zu vebreiten. Er hat gedroht, dass im Falle seines vorzeitigen Ablebens das Passwort an die Öffentlichkeit geraten würde. In dem Falle würden die verschlüsselten Dateien (die auf vielen Server in der ganzen Welt abgelegt worden waren) für alle einsehbar werden. In seiner Biographie hat Assange allerdings Hinweise auf das Passwort gegeben. Das wurde dann erraten und dadurch wurden alle Botschaftsdepeschen einsehbar – auch solche die nicht veröffentlicht werden sollten.