Wie die meisten unserer Vorfahren halten wir uns für eine moderne Gesellschaft. Allerdings können wir uns dessen zumindest in technischer Sicht recht sicher sein, denn wir umgeben uns im Alltag mit unzähligen Dingen, die weit über dem Verständnishorizont des Einzelnen liegen: Wie funktioniert eine Mikrowelle? Oder das ESP im Auto? Oder das Internet? Niemand durchschaut alle technischen Applikationen des Alltags (oder auch nur die, die sich gerade in einem Meter um mich herum befinden) bis auf die tiefste Ebene. In vielen Dingen ist das kein Problem – wir sind der Anwender, und der Entwickler hat die Mikrowelle hoffentlich so gebaut, dass sie nicht explodiert, und das Auto so, dass es steuerbar bleibt, wenn man in der Bedienungsanleitung nach dem Vorwort aufgegeben hat. Das Internet allerdings ist eher wie ein öffentliches Gewässer – Baden auf eigene Gefahr. Der Unterschied ist der, dass die meisten Leute es wissen, wenn sie nicht schwimmen können.
Auch wenn viele nur ein bisschen planschen wollen, teilen wir doch immer mehr Bereiche unseres Lebens online mit Freunden und Nachbarn, aber auch mit Konzernen, Regierungen, Script-Kiddies und professionellen Cyberkriminellen. Sobald eine Information das private Netzwerk verlässt, könnte sie überallhin kopiert werden, ohne Möglichkeit für mich oder den Empfänger, dies zu bemerken. Dass wir dennoch online Bankgeschäfte tätigen, Kreditkartendaten hinterlegen oder sensible Korrespondenzen führen, verdanken wir der Kryptographie. Und unserem Leichtsinn. Eigentlich mehr dem Leichtsinn, denn wer interessiert sich schon dafür, ob und wie sie gerade zum Einsatz kommt? Nur Leute, die mit sensiblen Informationen hantieren. Im heutigen Internet also alle. Herzlich willkommen zum Kryptographie-Seepferdchen-Kurs!
Wo man ihr begegnet
Bei Kryptographie geht es um Verschlüsselung von Information. Das betrifft Inhalte menschlicher und maschineller Nachrichten (WhatsApp, Signal, E-Mail, HTTPS-Verkehr), aber kann auch eingesetzt werden, um Manipulation zu vermeiden (Hashing, Blockchain), oder über geheimes Wissen die eigene Identität zu verifizieren (Domain-Zertifikate, PGP-Signatur, E-Government, Chip-TAN).
In einer perfekten Welt wäre sie immer aktiv und sicher, allerdings ist sie das nicht, aus verschiedenen Gründen:
- E-Mail wurde sehr simpel konzipiert. Nachträgliche Versuche einer flächendeckenden Verschlüsselung (PGP) waren nicht komfortabel genug, um breite Akzeptanz zu erlangen.
- In Instant Messengern standen und stehen oftmals geschäftliche Interessen einem voll verschlüsselten Austausch entgegen, und auch in der Politik werden immer wieder Forderungen nach systematischer Schwächung der Verschlüsselungstechnik laut. Spätestens mit dem Signal-Protokoll (Signal Messenger oder WhatsApp) sind jedoch komfortable und hochsichere Möglichkeiten des Nachrichtenaustauschs für jedermann gegeben.
- Bei Webseiten ist man auf einem guten Weg: HTTPS nimmt an Verbreitung zu und Browser werden immer strenger in der Anwendung der damit verbundenen Regeln, die für einen solide verschlüsselten Datenaustausch sorgen und den Domainnamen verifizieren. Was noch fehlt ist, dass die Nutzer auch auf die Informationen achten, die der Browser zur gerade genutzten Seite liefert.
Konzepte
Ende-zu-Ende
So bezeichnete Dienste zum Austausch von Nachrichten halten den Inhalt auf dem gesamten Weg zwischen Sender und Empfänger verschlüsselt – ohne Ausnahme. Jede Abweichung von diesem Konzept bedeutet, dass man jeder Zwischeninstanz (z.B. dem Betreiber der Server einer Messenger-App), in der die Daten entschlüsselt vorliegen können, vertrauen muss. Dieses Vertrauen beschränkt sich dabei nicht nur auf deren unerlaubte Nutzung oder Weitergabe der Daten, sondern betrifft auch deren Fähigkeiten zur Abwehr von Datendiebstahl. Ein solches Vertrauen ist schwierig herzustellen, je nach Jurisdiktion sogar unmöglich, da illegal. Bedenkt man, dass Daten sehr langlebig sein können und die Basis für Vertrauen über die komplette Lebenszeit erforderlich ist, leuchtet ein, warum Ende-zu-Ende-Verschlüsselung von vielen geradezu als Notwendigkeit betrachtet wird. Sie findet heute in einigen – aber längst nicht allen – Messengern (u.a. Signal, Threema, WhatsApp), sowie beispielsweise der De-Mail Anwendung.
Schlüsselpaare
Die typische Vorstellung von Verschlüsselung ist, dass man Information als eine Zahlenkette begreift, auf die eine mathematische Operation angewendet wird (Verschlüsselung, z.B. x+5), wodurch die Kette keine erkennbare Information mehr enthält. Erst wenn man eine inverse Operation durchführt (Entschlüsselung, also x-5), entsteht wieder der Urzustand. Die Operationen selbst sind bekannt, aber sie beinhalten eine Zeichenkette, die variiert werden kann: den Schlüssel (hier 5). Zwar ist diese symmetrische Verschlüsselung (selber Schlüssel für beide Richtungen) oft im Einsatz, jedoch gibt es auch sogenannte asymmetrische Verschlüsselungsverfahren, die ein Schlüsselpaar mit einer besonderen Eigenschaft benötigt: Wird mit einem Schlüssel verschlüsselt, kann man nur mit dem anderen entschlüsseln. Das hat eine Reihe interessanter Konsequenzen:
- Statt einen Schlüssel zwischen Sender und Empfänger auszutauschen, der unterwegs kopiert werden kann, verschickt der Empfänger einen seiner Schlüssel, mit dem Nachrichten an ihn verschlüsselt werden (public key), und hält den anderen streng geheim (private key).
- Jeder darf den öffentlichen Schlüssel kennen.
- Wenn Nachrichten mit öffentlichen Schlüssel entschlüsselt werden können, muss der Autor im Besitz des privaten Schlüssels sein, er kann sich also zuverlässig als Urheber identifizieren.
Schlüsselpaare kommen auch bei Ende-zu-Ende-Verschlüsselung zum Einsatz, da so keine geheimen Schlüssel übermittelt werden müssen. Die beste Chance, Nachrichten unbefugt mitzulesen, besteht dann entweder auf den Endgeräten (Stichwort: Staatstrojaner), oder im Unterjubeln eigener öffentlicher Schlüssel unter falschem Namen. Deshalb bieten derartige Dienste oft die Möglichkeit, die Schlüssel der eigenen Kontakte beispielsweise über QR-Codes zu verifizieren.
Hashes
Hashes sind eine fortgeschrittene Art von Prüfsummen, d.h. Umrechnungen, die nur in eine Richtung funktionieren und aus einer Eingabe beliebiger Länge reproduzierbar eine Zeichenfolge bestimmter Länge erzeugen. Quasi eine Quersumme auf Steroiden. Man kann damit beispielsweise den Inhalt eines größeren Dokumentes verifizieren, oder ein Passwort mit einer Vorgabe vergleichen, ohne es selbst zu übermitteln, oder im Zielsystem zu speichern. Auch in TAN-Generatoren oder im PAYMILL-Bezahlprozess kommen Hashes zum Einsatz, die auf den Zahlungsdetails beruhen, ohne konkrete Informationen preiszugeben oder manipulierbar zu machen.
Übrigens sind sie auch eine Kernkomponente der Blockchain: Die Verkettung besteht darin, dass jedes Element als gehashter Wert in das nächste Element einfließt. Wer ein Element manipulieren will, muss somit auch alle folgenden Elemente manipulieren, was ungleich aufwändiger ist.
Ein Hashing-Verfahren muss aber viele Kriterien erfüllen, um gegen Manipulation gesichert zu sein. Man darf aus einem gegebenen Hash mit endlichen Ressourcen (d.h. Googles Rechenzentrum in 15 Jahren) keinesfalls ein gültiges Ausgangsdokument generieren oder erraten können. Mehrere populäre Hashing-Algorithmen wurden in der Vergangenheit im Nachhinein für zu schwach befunden (MD5, SHA-1).
Zertifikate
Eine Anwendung der Schlüsselpaare findet sich in der Kommunikation mit Webservern. In einem sogenannten Zertifikat stellt der Webserver einen öffentlichen Schlüssel zusammen mit weiteren Informationen wie der Domain oder der Gültigkeitsdauer bereit. Da nur der Server seinen privaten Schlüssel kennt, kann der Client ihn eindeutig identifizieren, wenn er dem Zertifikat vertraut. D.h. wenn jemand meinen Router manipuliert, und meine Daten beim Bezahlvorgang statt zu PAYMILL zu seinem eigenen Server umleitet, um sich ein bisschen was dazu zu verdienen, hat dieser Server zwei Möglichkeiten:
- Wenn er das echte PAYMILL-Zertifikat nutzt, kennt er den privaten Schlüssel nicht, und mein Browser wird direkt bemerken, dass das Zertifikat nicht zum Server passt.
- Wenn er aber selbst ein Schlüsselpaar erzeugt und dieses ins Zertifikat einbaut, startet – wie beim richtigen Server – eine Vertrauensprüfung: Zertifikate werden nur akzeptiert, wenn sie signiert sind, d.h. über Hashing (=keine Manipulation des Inhalts) und Verschlüsselung mit privatem Schlüssel (=Identifikation des Signierenden) durch eine dritte Instanz bestätigt diese, dass das vorliegende Zertifikat vertrauenswürdig ist. Falls der Browser auch diese Instanz nicht kennt, kann sich dies in einer Kette fortführen, bis er auf eine signierende Instanz stößt, der er vertraut. Dies sind i.d.R. sogenannte Root-CAs (Root Certification Authorities), von denen der Browser schon eine ganze Menge kennt. Vertrauenswürdig sind sie, da sie von Unternehmen oder Einrichtungen stammen, die die Signierung von Zertifikaten an strengen Regeln knüpfen. Bei Regelverstoß können Root-CAs Zertifikate auch im Nachhinein widerrufen, oder im Extremfall können Browser ganzen Root-CAs das Vertrauen entziehen, wie kürzlich geschehen.
Um sich also als echter PAYMILL-Server auszugeben, muss ein Angreifer also gleichzeitig den PAYMILL-Datenverkehr zu seinem Server umleiten, und eine CA davon überzeugen, dass er die echten PAYMILL-Server betreibt, sonst stellt sich der Browser des Käufers quer.
HTTPS
Bei HTTPS (wie HTTP, aber Secure) kommt alles zusammen und immer mehr Webseiten stellen auf diese Technik um. Wird eine HTTPS-Verbindung zu einem Server geöffnet, prüft der Browser nicht nur die Gültigkeit des Zertifikats, sondern besteht auch auf gültige HTTPS-Verbindungen aller eingebetteter Inhalte. Benutzt ein Händler also HTTPS für seinen Webshop, wird auch ein Pay-Frame zwingend von HTTPS-Servern bezogen für die dieselben strengen Regeln gelten.
Nicht nur die Identität des Servers wird durch HTTPS verifiziert, sondern auch der Datenverkehr abgesichert: Mit Hilfe der Schlüsselpaare wird ein neues Passwort für die Kommunikation ausgehandelt, damit diese auch geheim bleibt, wenn jemand die Verbindung abhört und zu einem späteren Zeitpunkt an einen privaten Schlüssel gelangt.
Dass man sich auf einer validen HTTPS-Seite befindet, erkennt man je nach Browser beispielsweise an einem grünen Symbol neben der Adressleiste. Auch dieser Blog gehört dazu, also schauen Sie jetzt nach oben und identifizieren Sie es! Wenn Sie wissen, wie es aussieht, und in Zukunft darauf achten – zumindest bei sensiblen Vorgängen wie Online-Banking, Bezahlvorgängen oder Passworteingaben – sind Sie einen großen Schritt näher daran, auf keine gefälschten oder unsicheren Seiten mehr herein zu fallen.
Ausblick
Die Kryptographie hat es nicht leicht: Sie ist ein sehr komplexes Feld, das nur wenige in der Tiefe verstehen, und ihre Notwendigkeit wird oft leichtsinnig ignoriert. Ihre Bedeutung wird aber noch weiter zunehmen, denn nicht nur werden Cyberkriminelle raffinierter, es gibt auch immer mehr Angriffsfläche – neben E-Commerce auch das Internet of Things, das nicht nur in der Industrie, sondern auch in unseren immer smarteren Heimen Einzug hält.
Die hier gezeigten Grundlagen ermöglichen aber zumindest etwas Verständnis für die mit Kryptographie verbundenen Verfahren und ein Erkennen bestimmter Merkmale abgesicherter Umgebungen. Dies ist auch notwendig, denn Security by Design entspricht leider nur selten der Realität und es bleibt letztlich am Käufer bzw. Endanwender hängen, Sicherheit im Internet zu erkennen und zu fordern.