Aktualisierungen als RSS-Feed oder
auf unserem Twitter Account @PrHdb

Privacy-Handbuch

Dass Metadaten (z.B. Absender und Empfänger einer E-Mail) für die Überwachung eine große Rolle spielen, ist seit den Veröffentlichungen von Snowden/Greenwald allgm. bekannt. Leser des Privacy-Handbuches haben es evtl. vorher gewusst (siehe: Kommunikationsanalyse).

Kontaktformulare bieten eine Möglichkeit, diese Metadaten zu verschleiern. Wer ein Blog oder eine Webseite betreibt, kann recht einfach ein Kontaktformular zur Verfügung stellen. Es gibt Wordpress Plug-ins für Kontaktformulare, einfache PHP-Scripte oder fertige Perl-CGI Scripte. Man kann eine individuell passende Lösung wählen. Dabei sollte man auf folgendes achten:
  1. Das Kontaktformular sollte den Absender nicht zur Eingabe seiner E-Mail Adresse zwingen. Als work-around kann man im HTML-Code des Formulares das Feld für die Absender E-Mail Adresse als "hidden" deklarieren und einen Standardwert setzen.
  2. Das Script sollte die IP-Adresse des Absenders nicht in den Header der E-Mail einfügen. Einige Scripte für Kontaktformulare wollen damit den Spam-Schutz verbessern. Einfach ausprobieren.
  3. Das Kontaktformular sollte immer via HTTPS (SSL-verschlüsselt) aufgerufen werden. Wenn die Webseite auch via plain HTTP erreichbar ist, sollten alle Links auf der Webseite zum Kontaktformular mit der vollständigen URL angegeben werden: <a href="https://www.server.tld/kontakt.html">Kontakt</a> Jeder gute Webhoster bietet inzwischen SSL-Verschlüsselung für einen kleinen Auf­preis für alle Kunden, Wordpress.com hat es standardmäßig für alle Kunden aktiviert.
Im folgenden möchte ich einige Möglichkeiten vorstellen, wie man ein Kontaktformular mit OpenPGP-Verschlüsselung aufmotzen könnte.

Hinweis: Bei allen Varianten handelt es sich um "server based crypto", die nicht die gleiche Sicherheit wie richtige Ende-zu-Ende Verschlüsselung gewährleisten kann.

1: Ganz einfach ohne Programmierung

Man kann einen guten E-Mail Provider nutzen, der TLS-Verschlüsselung für eingehende E-Mails erzwingen kann und ein verschlüsseltes Postfach bietet (bisher kenne ich nur Mailbox.org als einzigen Provider, der diese Anforderungen erfüllt). Vom Browser des Absenders wird die Nachricht SSL-verschlüsselt zum Webserver über­tragen. Von dort wird sie über eine TLS-verschlüsselte Verbindung an Mailbox.org gesendet und auf dem Mailserver mit OpenPGP verschlüsselt.

Diese Variante schützt den Inhalt der Nachrichten gegen den allgemeinen Überwachungswahn und bei Beschlagnahmung von Daten. Sie schützt nicht gegen eine TKÜ nach §100 a/b StPO beim Hoster des Kontaktformulars oder beim E-Mail Provider, da der Inhalt als Plain-Text an diesen Stellen mitgelesen werden kann.

2: Mit Javascript im Browser des Absenders

Diese Variante erfordert HTML-Kenntnisse, um einige Anpassungen im HTML-Code des Kontaktformulars vorzunehmen und die Bibliothek OpenPGPjs einzubinden.
  1. Die aktuelle Version der Bibliothek "openpgp.min.js" von github.com Projektwebseite herunter laden und auf den eigenen Webserver kopieren.
  2. Das Javascript encrypt_message.js herunter laden und auf den Webserver kopieren.

    Dieses Javascript Schnipselchen verschlüsselt das Textarea Feld mit der ID "message". Wenn das Textarea im Formular eine andere ID hat, ist die Zeilen 3 anzupassen: var message = document.getElementById("message");
  3. Im HTML-Header der Webseite des Formulares sind beide Scripte zu laden: ...
    <script src="/openpgp.min.js" type="text/javascript">
    <script src="/encrypt_message.js" type="text/javascript">
    ...
  4. Im HTML-Code des Formulares im FORM-Tag die Funktion "encrypt_message()" hin­zu­fügen, so dass die Funktion automatisch beim Versand der Daten ausgeführt wird und zuerst das Textfeld mit der ID "message" verschlüsselt: <FORM name="contact" method="post" action="https://server.tld/...."
       onsubmit="return encrypt_message();">

    <textarea id="message" ...> </textarea>

    </form>
  5. Außerdem ist der eigenen OpenPGP public Key als versteckter DIV-Container mit der ID "pubkey" im HTML-Code einzubauen. <div id="pubkey" hidden="true">
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    ....
    -----END PGP PUBLIC KEY BLOCK-----
    </div>
  6. Für Surfer, die Javascript standardmäßig deaktivieren kann man ein Hinweis einfügen, dass Javascript für die Funktion des Formulares nötig ist: <NOSCRIPT>
       Bitte aktivieren Sie Javascript für die Verschlüsselung der Nachricht!
    </NOSCRIPT>
Hinweise: Einige ältere Browser können keine krypto-tauglichen Zufallszahlen mit Javascript erzeugen. Das kann die Verschlüsselung deutlich schwächen. Deshalb ist es mit diesen Browsern nicht möglich, das Formular zu nutzen. Außerdem kann die Verschlüsselung auf dem Server durch unbemerkte Modifikationen am Javascript Code angegriffen werden. Trotzdem ist es besser, als keine Verschlüsselung zu verwenden.

3: Eine Variante für Nerds

Wer einen eigenen Server vollständig selbst kontrolliert und ein bisschen programmieren kann, kann gnupg bei der Verarbeitung der Formulardaten aufrufen. Ein Perl-CGI Script könnte dafür das Module GnuPG Interface nutzen. Wer einen eigenen Webserver sicher administrieren kann, der kann anhand der Anleitung und des Beispiels die OpenPGP-Verschlüsselung selbst einbinden und auch Dateianhänge verschlüsseln.
Lizenz: Public Domain