R3s1stanc3

Ich bin root, ich darf das!

Sichere Kommunikation

Wie mittlerweile auch der letzte Hinterwäldler mitbekommen haben sollte, werden wir alle von den Amis, den Briten und bestimmt noch 20 anderen Staaten komplett überwacht. Vielleicht sehen ein paar Leute das ja als Indikator, auf eine sichere, verschlüsselte Kommunikation umzusteigen. Wenn ihr eure Nachrichten gut verschlüsselt, kann der Anbieter und die Regierung so viel mitlesen wie sie wollen, an den Inhalt der Nachricht werden sie nicht kommen. Ich werde hier über verschlüsselte EMails mit GnuPG und verschlüsslete Chats über Jabber mit OTR schreiben. Auch wenn es darüber schon viele Tutorials gibt, kann es einfach nicht genug geben.

EMails mit GnuPG verschlüsseln:

Ich fang erstmal mit den verschlüsselten Mails an (Damit nehme ich glaube ich auch hoohead evtl ein bisschen Arbeit abnehmen, da er im nerd-fon 34 angekündigt hatte, eine Anleitung hierzu zu schreiben).

Theorie:

Erstmal schreib ich etwas über die Theorie von GPG. Hierbei handelt es sich um ein asymmetrisches Verfahren, das heißt man hat zum ver- und entschlüsseln verschiedene Schlüssel. Am Anfang werden die beiden Schlüssel generiert und man erhält einen privaten Schlüssel (private Key) und einen öffentlichen Schlüssel (public Key; desshalb auch manchmal “public-Key-Verfahren”). Der öffentliche Schlüssel wird möglichst weit verbreitet (Keyserver, auf der eigenen Webseite, …). Eine Nachricht/Datei, die mit dem privaten Schlüssel verschlüsselt wird, kann nur mit den öffentlichen Schlüssel wieder entschlüsselt werden und umgekehrt. Wenn euch jemand eine verschlüsselte Nachricht schreiben will, nimmt er euren öffentlichen Schlüssel und verschlüsselt die Nachricht damit. Er kann sich dadurch sicher sein, dass nur ihr die Nachricht wieder entschlüsseln könnt. Des Weiteren gibt es noch die möglichkeit, Nachrichten oder Dateien zu unterschreiben. Das läuft so ab: ihr lässt eine Unterschrift für eine Nachricht erzeugen und hängt diese noch an den Text an. Dann könnt ihr die Mail mit dem öffentlichen Schlüssel verschlüsseln und versenden. Der Emfänger kann sich dadurch sicher sein, dass nur er die Nachricht lesen kann und dass sie sicher von euch kommt (vorrausgesetzt, die Schlüssel wurden verifiziert; dazu komme später noch mal).

Praxis:

Was wird benötigt:

Ich bezieh mich jetzt in diesem Tutorial nur auf Linux, da ich kein Windows und Mac hab.

Wenn alles installiert ist, geht ihr in Thunderbird auf

1
2
OpenPGP -> Schlüssel verwalten
Erzeugen -> Neues Schlüsselpaar...

Ihr sucht die EMail Adresse aus, für die ihr ein Schlüsselpaar generieren wollt, gebt ein sicheres Passwort ein (falls der private Schlüssel mal geklaut wird). Den Hacken bei “Schlüssel läuft nie ab” setzen, unter “Erweitert” die stärkste Schlüsselstärke auswählen und ich benutze als Algorithmus “DSA & El Gamal” (falls ein Algorithmus geknackt werden solle, hält immer nich der andere). Jetzt die Schlüssel erzeugen lassen und am besten die Maus wild bewegen, da Informationen für den Zufallsgenerator gesammelt werden. Wenn ihr fertig seid, müsst ihr im “Schlüssel verwalten” Fenster den Hacken bei “Standardmäßig alle Schlüssel anzeigen” setzen, dann seht ihr euren Schlüssel in der Liste (fettgedruckt == privater Schlüssel; normal == öffentlicher Schlüssel). Jetzt kann man einfach öffentliche Schlüssel sammeln und importieren.

EMails schreiben:

Jetzt geht es dran, eine verschlüsselte EMail zu schreiben. Dafür müsst ihr den öffentlichen Schlüssel vom Empfänger schon importiert haben. Ihr schreibt also eure Mail und wählt im OpenPGP Menü “Nachricht unterschreiben” und “Nachricht verschlüsseln” aus. Wenn ihr die Mail dann sendet werdet ihr gefragt, den Schlüssel des Empfängers aus der Liste auszuwählen (dies geschieht meistens automatisch anhand der EMail Adresse) und bestätigen. Dann müsst ihr nur noch euer Passwort für euren privaten Schlüssel eingeben und fertig. Das entschlüsseln läuft automatisch ab. Euch wird angezeigt, mit welchem Schlüssel unterschrieben wurde und daran könnt ihr erkennen, ob ihr der Mail vertrauen wollt.

Web-of-Trust:

Noch ein paar Sätze zum vertrauen und unterschreiben von Schlüsseln. GPG bietet die Möglichkeit, öffentliche Schlüssel zu unterschreiben. Das sieht so aus, dass man sich im Reallife mit dem Besitzer des Schlüssels trifft, sich versichert, dass er auch der Besitzer des Schlüssels ist. Dann kann man dem Schlüssel vertrauen und ihn unterschreiben. Den unterschriebenen Schlüssel dann auf einen Keyserver hochladen (die syncen fast alle untereinander). Wenn dann jemand den Schlüssel vom Keyserver holt, sieht er, dass ihr den Schlüssel unterschrieben habt. Wenn dieser jemand eurem Schlüssel vertraut, kann er davon ausgehen, dass er dem 3. Schlüssel auch vertrauen kann. Wer dazu mehr wissen will, sollte sich den Wiki Artikel dazu durchlesen: Web-of-Trust Wikipedia.

Sichere Chats

Alle gängigen Chat Systeme kann man eigentlich vergessen. Skype besucht alle SSL Links, unbekanntes Protokoll, … ICQ liest auch mit, Facebook kann man eh in die Tonne treten. Hier kommt XMPP ins Spiel. XMPP (aka Jabber) ist ein offenes Protokoll, das für Instant Messaging verwendet wird. Es gibt eine Menge Clienten, die mit XMPP umgehen können: Pidgin, PSI, Jitsi um nur ein paar zu nennen. Ich werde mich in diesem Tutorial auf Pidgin beschränken.

Über XMPP

Da wir hier von einem offenen Protokoll reden, gibt es jede Menge Server, die einen Jabber Service anbieten. Dadurch hat man keinen zentralen Anbieter, der alles loggen könnte. Man kann natürlich auch mit Leuten chatten, die bei einem anderen Server ihren Account haben. Die “Benutzernamen” (in diesem Fall Jabber-ID, kurz: JID) sind so aufgebaut:

1
2
username@jabberservice.tld
poll7979@jabber.ccc.de

Ich nenne hier jetzt mal ein paar Jabber Server nennen, werde für dieses Tutorial aber den des CCC verwenden:

Über OTR

Wir haben jetzt viele Server zur Auswahl, trotzdem wollen wir ihnen nicht vertrauen müssen (Könnte ja genauso sein, wie bei den Piraten). Also wollen wir unsere Chats verschlüsseln. Hier benutzen wir Off-the-Record (kurz: OTR; “an der Aufnahme vorbei”). Die oben genannten Clienten haben entweder OTR schon implementiert oder ein Plugin dafür (für pidgin heißt das Packet bei den meisten Distros “pidgin-otr”). OTR arbeitet mit dem Diffie-Hellman-Schlüsseltausch (für die Interessierten). Dabei werden ein paar Zahlen unverschlüsselt ausgetauscht und durch eine Mathematische Einweg-Funktion ein Schlüssel für die Session berechnet. Ein Man-in-the-Middle kann nur mit den Zahlen nichts anfangen. Ist der Schlüssel bei beiden Partnern generiert, werden die Nachrichten mit AES verschlüsselt. Auch hier kann man den Partnern das Vertrauen aussprechen, das könnt ihr euch dann aber selber anschauen ;)

Jabber Account erstellen

Jetzt kommt wieder der Praxisteil. Ich gehe davon aus, dass Pidgin und OTR installiert ist. Beim ersten start werdet ihr gefragt, ob ihr ein Konto einrichten wollt oder ihr kommt über “Konten” –> “Konten verwalten” –> “Hinzufügen” zum entsprechenden Dialog. Als Protokoll wählt ihr XMPP, als Benutzer euren gewünschten Benutzernamen, Domäne: den Jabber Service den ihr benutzen wollt und euer Passwort. Dann setzt ihr den Hacken bei “Dieses Konto neu auf dem Server anlegen”. Wenn ihr wollt könnt ihr dann auch über einen Proxy verbinden. Jetzt könnt ihr auf Hinzufügen klicken und der Account wird erstellt. Bezüglich des Proxys kann ich zum Jabber Server des CCC noch anmerken, dass es einen Hidden Service gibt. Ihr könnt also Tor als Proxy einstellen und dann unter “Erweitert” –> “Verbindungs-Server” folgende Adresse benutzen: “okj7xc6j2szr2y75.onion”. Jetzt habt ihr einen Jabber Account und könnt auch noch sicher verschlüsselt chatten.

VoIP über XMPP

Es gibt die möglichkeit, über XMPP zu telefonieren. Ich hab damit noch nicht so viel Erfahrung, um ein Tutorial darüber zu schreiben. Hierfür kann ich aber Jitsi als Client empfehlen, da hier auch die Telefonate verschlüsselt werden.

Wenn ihr eure Mail und Chats so verschlüsselt kann niemand (auch keine Regierung) eure Kommunikation abhören. Das Problem ist, dass kaum jemand auf diese Kommunikationswege umsteigt und die Regierungen schön weiter mithören können. Die Diskussion über “ich hab nichts zu verbergen” werde ich jetzt nicht aufrollen, das wurde schon oft genug gemacht. Ich hoffe einfach, dass das Tutorial einigermaßen verständlich ist und wenigstens ein paar Leute umsteigen.