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.

Webseite komplett herunterladen

Informationen im Internet sind kurzlebig und können nur abgerufen werden, sofern ein Internet-Anschluss verfügbar ist. Problematisch wird es also, wenn Websites gelöscht werden, oder man gerade keinen Zugriff auf das Internet hat (z.B. auf Reisen).

Gelöschte oder ältere Versionen von Websites findet man in Internet Archiven wie der WayBackMachine. Man kann sich die Webseiten allerdings auch selbst zum offline lesen herunterladen.

Ein beliebtes Programm dafür ist wget:

wget -r -k -E -l 8 http://de.wikipedia.org

Mit diesem Befehl würde man die deutsche Version der Wikipedia herunterladen. Die verwendeten Optionen haben folgende Bedeutungen:

-r Websites zum Herunterladen rekursiv durchlaufen.
-l 8 Bei der Rekursion maximal 8 Ebenen („Ordner“) tief vordringen (Standard ist 5)
-k Konvertiere Links, damit sie lokal funktionieren.
-E Erzwinge die Dateiendung „.html“; Das ist besonders dann nützlich, wenn man „.php“ oder „.asp“-Dateien herunterlädt.

Weietere Optionen und Informationen findest Du im Wiki von UbuntuUsers.

Falls Du diesen Befehl häufiger verwenden, Du Dir aber die ganzen Optionen nicht merken möchtest, kannst Du Dir einen Alias anlegen. Solltest Du die bash als Standard-Terminal (Shell) verwenden, musst Du dazu lediglich folgende Zeile in die Datei .bashrc in Deinem Home-Verzeichnis eintragen:

alias wdown='wget -r -k -E -l 8'

Im Anschluss steht Dir der Terminal-Befehl wdown zur Verfügung und Du könntest Dir die deutsche Wikipedia folgendermaßen herunterladen:

wdown http://de.wikipedia.org

Bevor Du allerdings Seite herunterlädst, solltest Du Dich mit den Urheberrechten auseinander setzen.

Screenshot einer kompletten Webseite machen.

Manchmal möchte man einen Screenshot (Bildschirmfoto) von einer kompletten Webseite erstellen. Oftmals sind Webseiten aber größer als der im Browserfenster dargestellte Bereich. Dadurch kann man die Homepage nicht mit dem im Betreibssystem integrierten Screenshot-Programm „ablichten“ und speichern, da diese nur den aktuell dargestellten Bereich abfotografieren.

Bildschirmfoto vom 2013-08-23 02:09:18
Oftmals sind Webseiten größer als der aktuell im Browser dargestellte Bereich. Daher kann man nicht ohne Weiteres ein Foto der gesamten Seite erstellen (hier ist der untere Bereich abgeschnitten).
Browser Add-ons ermöglichen es, eine Webseite in ihrer vollen Größe "abzulichten".
Browser Add-ons ermöglichen es, eine Webseite in ihrer vollen Größe „abzulichten“.

Für den Browser Firefox gibt es diverse Add-Ons, die in der Lage sind komplette Webseiten abzulichten. Awesome Screenshot Plus und Fireshot (Fireshot ist nicht für Linux verfügbar) bieten darüber hinaus die Möglichkeit, das erstellte Bildschirmfoto vor dem Speichern zu bearbeiten.

Das Firefox Add-On "Awesome Screenshot Plus" ermöglicht es auch unter Linux ein Bildschirmfoto eine kompleten Webseite (oder auch Teilen davon) zu erstellen. Im Anschluss kann das Foto direkt bearbeitet werden
Das Firefox Add-On „Awesome Screenshot Plus“ ermöglicht es (auch unter Linux!) ein Bildschirmfoto einer kompletten Webseite (oder auch Teilen davon) zu erstellen. Im Anschluss kann das Foto direkt bearbeitet werden.

 

Passwörter im Mozilla Firefox werden nicht gespeichert?

Viele Seiten im Internet erfordern eine Anmeldung mit einem Nutzernamen und einem Passwort. Im Optimalfall hat man für jede Seite ein eigenes (und sicheres) Passwort. Dadurch sammeln sich über die Zeit viele Passwörter an, die man nicht jedes mal neu eingeben möchte (oder kann, weil man sie vergessen hat).

Mozilla Firefox bietet daher die Möglichkit Passwörter zu speichern. Wie auf der deutschsprachigen Hilfeseite von Firefox beschrieben, macht Firefox dies bereits standardmäßg. Man sollte allerdings zusätzlich ein Master-Passwort vergeben, um unberechtigten Personen den Zugriff auf die Passwörter zu erschweren.

Unter Umständen kann es passieren, dass man nicht gefragt wird, ob man ein neues Passwort speichern möchte. Zudem kann man in den Sicherheitseinstellungen das Feld „Passwörter speichern“ nicht aktivieren.

Screen shot 2013-08-21 at 12.23.14_cut
Wenn man in den Datenschutzeinstellungen „immer den privaten Modus verwenden“ aktiviert hat, kann man in den Sicherheitseinstellungen das Feld „Passwörter speichern“ nicht aktivieren.

Die Ursache hierfür kann sein, dass man in den Datenschutz-Einstellungen „immer den privaten Modus verwenden“ aktiviert hat. In dem Falle ist es nicht möglich, das Feld „Passwörter speichern“ zu aktivieren. Dieser und andere Gründe für nicht gespeicherte Passwörter, werden auf der englischsprachigen Mozilla Hilfeseite diskutiert.

Um dennoch ein Passwort zu speichern, kann man den privaten Modus in den Datenschutzeinstellungen kurzzeitig deaktivieren (das erfordert einen Neustart des Browsers) und nach der erfolgreichen Speicherung des neuen Passwortes den Modus wieder aktivieren.