Wichtige Seiten Hilfestellungen Externe Links Alle Inhalte dieses Wikis, soweit nicht anders angegeben, unter Creative Commons CC-BY-SA |
TLSDas Thema Sicherheit wird in den heutigen Tagen wieder sehr heiß diskutiert. Dabei fallen unter anderem in regelmäßigem Turnus Schlagworte wie HTTPS, SSL und TLS. Denn den größten Berührungspunkt, den der Otto-Normalanwender mit dem Bereich Kryptographie hat, ist beim Surfen im Web. Dabei ist aber die bloße Anwesenheit des Schlosssymbols in der Browserleiste allerdings kein Garant für eine wirklich sichere Verbindung. Denn viele Admins vernachlässigen die Pflege eines einmal eingerichteten Webservers, wodurch z.B. danach entdeckte Sicherheitslücken nicht mehr durch Updates geschlossen werden. Deshalb möchte ich von diesem Punkt aus einen kleinen Exkurs in die praktische Kryptographie starten, damit wir am Ende uns selbst ein Urteil darüber bilden können, wie sicher nun eine SSL-Verbindung wirklich ist. Um die oben genannten Begrifflichkeiten vorab einmal zu klären: TLS steht für 'Transport Layer Security' und ist der Nachfolger von SSL (Secure Socket Layer), wobei TLS 1.0 der SSL Version 3.1 entspricht. Dabei handelt es sich um ein Protokoll, welches auf OSI-Layer 4 agiert. Somit liegt es unterhalb der Anwendungsschicht. Dieser Umstand macht es möglich, zunächst unsichere Protokolle, wie HTTP nachträglich via SSL/TLS zu sichern. In diesem Fall spricht man von HTTPS. Analog können beispielsweise auch FTP oder andere Protokolle der darüberliegenen Schichten mit SSL/TLS gesichert werden. Erste SchritteUm einmal ein Gefühl dafür zu bekommen, um was es sich bei TLS eigentlich handelt, können wir uns im Firefox die Informationen zu einer bestehenden TLS-Verbindung anzeigen lassen. Dafür klicken wir auf das Schloss in der Browser-Leiste → Weitere Informationen... → Sicherheit Was hier dargestellt wird, ist die benutzte Cipher Suite. Cipher Suites sind im SSL/TLS-Standard festgelegte Kombinationen von kryptographischen Funktionen, die für die Verschlüsselung und Integritätsschutz der Daten zuständig sind. Ohne großes Vorwissen möchte ich nun einmal die einzelnen Teile der hier gezeigten Cipher Suite aufschlüsseln:
Damit haben wir eigentlich schon die Grundbausteine, die wir neben anderen Faktoren untersuchen müssen, um eine Einschätzung abgeben zu können, wie sicher wir surfen. SSL/TLS-VersionEs mag zunächst trivial erscheinen, eine Protokoll-Version zu überprüfen. Tut man es doch, so muss man feststellen, dass bereits hier die Sicherheit grundlegend zerstört werden kann. Insgesamt gibt es 6 verschiedene SSL/TLS Versionen, wobei SSL 1.0 jedoch nie veröffentlicht wurde. Die restlichen 5 sind:
Recherchiert man ein wenig zu diesen Versionen, so stößt man relativ schnell auf die BEAST-Attacke. 2012 konnte diese Angriffsmethode erstmals offiziell ausgenutzt werden, um die SSL-Verschlüsselung zu knacken. Betroffen sind die Versionen SSL 2.0 bis einschließlich TLS 1.0. Man kann dieses Problem zwar prinzipiell umschiffen, doch letztendlich bleiben diese Versionen unsicher und sollten nicht mehr benutzt werden. TLS 1.1 bietet laut Bundesamt für die Sicherheit in der Informationstechnik (BSI) ausreichende Sicherheit. Es wird aber angeraten, lieber TLS 1.2 einzustezen, da hier aktuellere Hashfunktionen verwendet werden und unsichere Cipher Suites wie DES gar nicht mehr angeboten werden. Wollen wir die aktuell verwendete Version überprüfen, so stoßen wir schon auf die ersten größeren Hürden. Firefox bietet uns nicht direkt die Möglichkeit die SSL/TLS Protokoll-Version anzuzeigen. Sind wir im eigenen Heimnetz, so können wir ein Analysetool wie Wireshark nutzen. Dazu zeichnen wir den Verkehr auf dem zu benutzenden Interface auf, während wir beispielsweise die Seite der Deutschen Bank (deutsche-bank.de) öffnen. Danach setzen wir den Filter auf ssl. Wenn wir nun das Client hello Paket öffnen und den Secure Sockets Layer öffnen, wird uns die TLS Version angezeigt. In meinem Fall TLSv1.2. Das aktuelle Minimum im Firefox ist TLS 1.0. Das bedeutet, dass unsere Verbindungen prinzipiell gefährdet sind, wenn eben jene Version eingesetzt wird. Da wir natürlich sicherheitsbewusste Menschen sind, stellt sich uns natürlich die Frage, wie wir dieses Minimum anheben können. Vorweg sei gesagt, dass das BSI die Version 1.0 derzeit noch als Übergangslösung akzeptiert und damit möglicherweise Probleme bei einigen Seiten auftreten können, die noch keine höhere Protokollversion unterstützen. Das bedeutet, dass ggf. anstatt der gewünschten Seite eine Fehlermeldung erscheint. In diesem Fall wäre wohl eine nette E-Mail an den Betreiber angebracht. Dreh- und Angelpunkt aller tiefer gehenden Sicherheitskonfigurationen ist die Konfigurationsschnittstelle about:config . Geben wir diese Adresse in die Adresszeile ein und versichern Firefox, dass wir wissen was wir tun, kommen wir an die vollständige Konfiguration des Browsers. Die Einstellung, die wir suchen nennt sich security.tls.version.min Diese tippen wir in die Suchleiste ein. Mit einem Rechtsklick auf das Suchergebnis → Bearbeiten können wir einen neuen Wert als Mindestversion angeben. Dabei richtet sich Firefox nach folgender Tabelle:
Also geben wir eine „2“ in das erscheinende Fenster ein. Juhu, wieder ein wenig sicherer! Wie funktioniert TLS überhaupt?Wozu zwei verschiedene Verschlüsselungssysteme?Um zu verstehen, warum wir zwei verschiedene Arten von kryptographischen Methoden bei TLS benötigen, müssen wir ein wenig tiefer in die Materie gehen. Auch vor dem Computerzeitalter gab es Verschlüsselungssysteme. Jeder von uns kennt wahrscheinlich das Caesar-System, bei dem die Buchstaben um eine festgelegte Anzahl von Positionen im Alphabet verschoben werden. Im zweiten Weltkrieg wurde die Enigma-Maschine zur verschlüsselten Kommunikation benutzt. Beiden gemein ist, dass sie zu den sogenannten symmetrischen Verschlüsselungsverfahren gehören. Denn beide haben einen festgelegten Schlüssel, den Sender und Empfänger kennen müssen, um die Nachricht lesen zu können. Bei Caesar ist es die Anzahl der zu verschiebenden Positionen; bei der Enigma das Codebuch, welches ständig mitgeführt werden musste. Das Internet ist ein unsicheres Netzwerk. Denn sobald die Daten unser sicheres Zuhause verlassen, wandern sie oft einmal um die halbe Welt, um an ihren Bestimmungsort zu gelangen. Dabei gehen sie durch viele Hände, womit auch viele Personen die Daten zu Gesicht bekommen. Würden wir unseren geheimen Schlüssel über das Netz zu unserem Partner schicken, damit er unsere Nachrichten lesen kann, brächte uns das rein gar nichts. Denn andere Personen könnten diesen Schlüssel leicht abfangen und anschließend alle Nachrichten entschlüsseln. Dieses Problem löst die asymmetrische Verschlüsselung, auch Public-Key Verfahren genannt. Sie basiert auf einem Schlüsselpaar, bestehend aus öffentlichen und privaten Teil. Zunächst wird der privater Schlüssel erzeugt. Von diesem abgeleitet wird ein öffentlicher Schlüssel generiert. Wie die Namensgebung schon verrät ist der öffentliche Schlüssel prinzipiell jedem zugänglich. Mit ihm werden Nachrichten verschlüsselt. Der private Schlüssel hingegen sollte geheim bleiben. Mit ihm können die Nachrichten wieder entschlüsselt werden. Eigentlich bräuchten wir mit diesem supercoolen System doch gar keine symmetrische Verschlüsselung mehr - wenn da nicht die Geschwindigkeit wäre. Denn RSA (asymmetrisch) beispielsweise ist um den Faktor 1000 langsamer, als AES (symmetrisch). Da aber niemand Einbußen in Kauf nehmen möchte, nur um ein wenig sicherer auf der Welt zu sein (Eigentlich eine paradoxe Sichtweise, wenn flächendeckende Massenüberwachung wegen ein paar wenigen Terroristen eingeführt werden soll...), hat man sich nun gedacht, dass man doch einfach den symmetrischen Schlüssel via eines asymmetrischen Verfahrens verschlüsselt über das unsichere Internet schicken kann. Damit wäre der symmetrische Schlüssel geschützt und trotzdem könnten wir mit angenehmer Geschwindigkeit das World Wide Web erobern. Und genau das tut man dann auch. Symmetrische VerschlüsselungSymmetrische Verschlüsselungssysteme verwenden vergleichsweise simple mathematische Operationen um Daten zu verschlüsseln. Dazu gehören beispielsweise die Rotationen und XOR-Verknüpfungen. Aufgrund ihres „einfachen“ Designs sind sie, im Gegensatz zu asymmetrischen Verfahren, deutlich leichter zu implementieren und ermöglichen gute Geschwindigkeiten. Symmetrische Verfahren sind in zwei Grundtypen zu Gliedern:
Worauf muss man achten?Symmetrische Verschlüsselungsverfahren bieten einige variable Stellschrauben mit denen man die Balance zwischen Performance und Sicherheit regeln kann, die so genannten Sicherheitsparameter. SchlüssellängeDer offensichtlichste Parameter auf den man achten sollte ist die Schlüssellänge. Denn nur mit diesem Schlüssel lässt sich die Nachricht lesen. Gelangt ein Angreifer an den Schlüssel, so ist jedes weitere kryptographische Bemühen vergebens. Deshalb muss dieser Schlüssel so lang sein, dass ihn niemand in einer absehbaren Zeit erraten oder anderweitig in Erfahrung bringen kann. Für symmetrische Schlüssel hat Klaus Schmeh einmal eine Tabelle mit den Berechnungszeiten je Schlüssellänge erstellt. Dabei geht er von dem derzeitigen Weltrekord aus, mit dem eine DES-Verschlüsselung offiziell geknackt wurde:
RundenzahlBlockchiffren arbeiten in Runden. Das bedeutet, dass ein festgelegter Vorgang mehrere Male wiederholt wird, um mit jedem Durchlauf die Schwierigkeit einer Kryptoanalyse zu erhöhen. Diese Methode macht es möglich, dass sich diese symmetrische Verfahren auch effizient in Hardware (bspw. SmartCards) implementieren lassen. Vereinfacht lässt sich sagen: „Je höher die Rundenzahl, umso besser“ - aber auch umso langsamer, was jedoch bei modernen Prozessoren kaum noch ins Gewicht fällt. Blocklänge (bei Blockchiffren)Mit der XLS-Attacke besteht zumindest eine theoretische Angriffsmöglichkeit auf Blockchiffren. Sie zielt auf die Lösung von quadratischen Gleichungen ab, deren Anzahl von der Blocklänge abhängt. Bisher ist dieser Angriff aber noch nicht in der Praxis anwendbar. Prinzipiell gilt auch hier: „Je größer die Blocklänge, umso besser“. VerschlüsselungsmodusDer Verschlüsselungsmodus ist eine Art Erweiterung der Grundverschlüsselung. Sie stellt eine Rückkopplung mit dem zuvor verschlüsselten Text her. Hiermit kann man verhindern, dass zwei gleiche Klartexte in Verwendung mit dem selben Schlüssel den selben Geheimtext ergeben. Auf Seiten der Blockchiffren sind u.a. die Modi CBC und der GCM anzutreffen. CBC sollte nur in der TLS Version 1.2 verwendet werden. In allen vorherigen ist er für die BEAST-Attacke anfällig. Auf Seiten der Stromchiffren ist OFB die meistgenutzte Variante. Welche Algorithmen werden in TLS 1.2 eingesetzt
RC4 – Was ist da los?Anfang 2013 veröffentlichte ein Forscherteam eine Untersuchung des RC4-Algorithmus. Heraus kam, dass die zufällige Verteilung von Bitfolgen im Geheimtext gar nicht so willkürlich ist, wie sie sein sollte. Sondern es konnten statistische Muster ausgemacht werden, welche ein theoretisches Angriffsziel bieten. Bereits in den Jahren zuvor waren Korrelationen entdeckt worden, die dann für Angriffe auf die WEP-Verschlüsselung bei WLANs genutzt worden sind. Im Zuge der NSA-Veröffentlichungen äußerte Jakob Appelbaum die Vermutung, dass der amerikanische Geheimdienst RC4 verschlüsselte Nachrichten in Echtzeit entschlüsseln könnte. Auch der Sicherheitsexperte Bruce Schneier hält dieses Szenario für durchaus realistisch. RC4 ist ein sehr performantes Verschlüsselungsverfahren, wodurch es beispielsweise im Einsatz auf Webservern enorme Ressourcen sparen kann. Im Zuge der BEAST-Attacke schwenkten außerdem viele Administratoren auf RC4 um, da es einen anderen Verschlüsselungsmodus als CBC einsetzt. Trotz der bekannten Schwäche setzen dennoch viele Webseitenbetreiber auf diesen als gebrochen geltenden Algorithmus. Selbst Banken, wie die Deutsche Bank, oder die Postbank finden scheinbar noch Gefallen an dieser unsicheren Verschlüsselung. Da RC4 leider noch in der TLS 1.2 Spezifikation als Cipher Suite definiert ist, reicht hier das Erhöhen der minimalen Protokollversion, wie wir sie bereits oben vorgenommen haben, nicht aus. Also müssen wir einmal mehr einen Abstecher in die about:config unseres Firefoxes machen. Dort filtern wir die Einstellungen auf „RC4“. Die 4 erscheinenden Cipher Suites können wir nun mit einem Rechtsklick → Umschalten deaktivieren. Bewertung von symmetrischen VerschlüsselungsverfahrenSymmetrische Verschlüsselungsverfahren sind existieren schon länger. Durch diesen Umstand sind sie schon sehr gut von vielen Menschen untersucht worden. Ihre einfachen mathematischen Operationen machen die Untersuchung eines Algorithmus verhältnismäßig einfach. Mit der theoretischen Möglichkeit von stabilen Quantencomputern könnte der Grover-Algorithmus eingesetzt werden, welcher die effektive Schlüssellänge praktisch halbiert. Aus diesem Gesichtspunkt sind Schlüssellängen größer oder gleich 256 Bit auch in der Zukunft vermutlich sicherer. Asymmetrische VerschlüsselungAsymmetrische Verschlüsselungssysteme basieren auf schwierigen mathematischen Problemen wie dem diskreten Logarithmus oder dem Faktorisierungsproblem. Ein Computer kann also zum Beispiel zwei Primzahlen miteinander leicht Multiplizieren. Allerdings fällt es ihm schwer ein beliebiges Produkt in die benutzten Multiplikatoren zu zerlegen. Dieses Phänomen nennt man Einwegfunktion. Damit kann man zunächst eigentlich relativ wenig anfangen. Denn wir wollen ja nicht nur sicher verschlüsseln, sondern das ganze auch auf der anderen Seite wieder entschlüsseln. Glücklicherweise gibt es sogenannte Falltürfunktionen. Das sind mathematische Abkürzungen, die die Berechnung erheblich vereinfachen. Diese Zusatzinformationen bilden den privaten Schlüssel. Wie bereits erwähnt dient der Einsatz von asymmetrischen Verschlüsselungssystemen bei SSL/TLS „nur“ dem Schlüsselaustausch. Die Wichtigkeit sollte deshalb aber keinesfalls unterschätzt werden. Denn sollte es einem Angreifer gelingen, die Verschlüsselung an diesem Punkt zu brechen, ist der weitere Verkehr gefährdet, da irgendwann ja der symmetrische Schlüssel damit übertragen wird. Worauf muss geachtet werden?Asymmetrische Verschlüsselungssysteme sind sehr viel „statischer“, als symmetrische Verschlüsselungsverfahren. Als selbst zu wählenden Parameter gibt es nur die Schlüssellänge. SchlüssellängeAsymmetrische Systeme basieren auf komplexen mathematischen Problemen. Da, je komplexer ein Verfahren ist, auch immer mehr Angriffspunkte auftreten, geben sich diese Algorithmen nicht mit geringen Schlüssellängen zufrieden. Welche Algorithmen werden in TLS 1.2 eingesetzt
Bewertung von asymmetrischen VerschlüsselungsverfahrenWie bereits erwähnt, basieren asymmetrische Verschlüsselungsverfahren auf mathematischen Problemen. Diese ragen in Teilbereiche der Mathematik hinein, welche eigentlich gar nichts mit der ursprünglichen Kryptographie zu tun haben und sehr komplex sind. Deshalb sind diese Probleme noch nicht allzu sehr auf kryptographisch relevante Schwächen hin abgeklopft worden, wie es bei symmetrischen Verfahren der Fall ist. Es kann gut sein, dass sich eines Tages ein schlauer Kopf findet, der Stärken in beiden Bereichen hat und dadurch einen praktikablen Weg der Lösung findet. Mit dem Shor-Algorithmus existiert bereits eine theoretische Formel mit dessen Hilfe sich sowohl das Faktorisierungsproblem, als auch der diskrete Logarithmus einfacher lösen lassen. Dieser ist aber nur auf derzeit utopischen Quantencomputern anwendbar. Bis dahin gelten die hier vorgestellten Verfahren mit einer ausreichenden Schlüssellänge zunächst als sicher. Perfect Forward SecrecyForward Secrecy bietet die Möglichkeit für jede TLS-Session einen neuen Private-Key zur Übermittlung des symmetrischen Schlüssels zu verwenden. Damit lassen sich mitgeschnittene Daten auch nach Diebstahl des privaten Schlüssels nicht entschlüsseln. Hierfür wird die DHE Schlüsselaustauschmethode verwendet, welche jedes Mal neue Parameter generiert. Das „e“ steht deshalb für ephemeral (flüchtig). Eine Abwandlung hiervon ist ECDHE, welches eine Abwandlung von DHE auf Grundlage von Elliptischen Kurven ist. Durch diese Methode können sehr viel kleinere Zahlen als Parameter genutzt werden. So kann man statt 1024 Bit unter DH die Länge auf 200 Bit bei gleichbleibender Sicherheit verkürzen. Trotz alledem rät Bruce Schneier von der Verwendung von ECDHE ab, weil elliptische Kurven ein relativ neues Gebiet der Kryptographie und damit teilweise noch nicht richtig verstanden sind. Außerdem stehen bei manchen Verfahren noch Patente sowie komplexe und damit anfälligere Implementierungen im Wege. Besonders in Anbetracht des Heartbleed-Bugs, welcher dieser Tage bekannt wurde, sollte vor allem Banken und Internetshops klar werden, dass kryptographische Sicherheitsmaßnahmen nicht nur für Paranoiker mit Aluhut relevant sind, sondern ein deutliches Mehr an Sicherheit bieten, welches auch durchaus einmal benötigt werden kann. HashalgorithmenVerschlüsselte Nachrichten sind gut. Denn sie stellen sicher, dass nur derjenige, für den die Nachricht bestimmt ist, sie auch lesen kann. Andererseits könnte aber auch ein Dritter diese Nachrichten verändern, ohne den Inhalt unbedingt vollständig kennen zu müssen. Oder aber im Namen eines Anderen Nachrichten schreiben. Um diesem entgegenzuwirken wird bei TLS/SSL ein Message Authentication Code mitgeschickt. Ähnlich einer digitalen Signatur wird hierfür ein Hash-Wert der Nachricht gebildet und anschießend verschlüsselt. Anders als bei der Signierung bspw. mit RSA Schlüsseln wird hier aber ein symmetrischer Schlüssel verwendet. Damit kann nur der bestimmte Empfänger die Nachricht auf ihre Echtheit prüfen. In TLS 1.2 sind drei Hashalgorithmen definiert, welche verwendet werden dürfen:
Diese Hashverfahren bieten jedoch keine Möglichkeit einen Schlüssel mit in den Output einfließen zu lassen. Deshalb basiert die Generierung auf HMAC, einem Verfahren, welches mit gängigen Hashalgorithmen zusammenarbeitet. MD5 und SHA gelten mittlerweile als gebrochen. Tückische SoftwareWie wir bereits gesehen haben, gibt es einige theoretische Möglichkeiten die in TLS eingesetzten Verschlüsselungsalgorithmen anzugreifen. Doch wie bereits Lucky13, BEAST und Heartbleed gezeigt haben, sind es meist nicht die eingesetzten Algorithmen, die geknackt werden, sondern es sind ihre Implementierungen in Software oder die Protokolle an sich, die schwächeln. Das liegt vor allem am Faktor Mensch, der absichtlich oder unabsichtlich gern einmal einen Fehler übersieht. Es ist anzunehmen, dass in vielen Produkten noch etliche Schwächen auf ihre Entdeckung warten. Trotz der Kritik, in die Open Source Projekte wie OpenSSL geraten sind, liegt meiner Meinung nach immer noch hier die beste Möglichkeit möglichst schnell Sicherheitslücken aufzudecken. Denn sie sind transparent. Jeder, der möchte kann das Programm auf Sicherheitslücken prüfen. Eingereichte Änderungen und vor allem ihre Autoren sind schnell einsehbar. Und wird eine Sicherheitslücke gefunden, wird dies auch öffentlich bekannt, sodass jeder Administrator sich direkt um die Behebung kümmert bzw. kümmern sollte. Anstatt, dass es Monate dauert, bis ein klammheimlich eingefügter Patch in ein kleines Update turnusmäßig auf den Servern eingespielt wird. Wenn überhaupt... Was tun, wenn man Langeweile hat?Wie mit diesem sehr oberflächlichen Überblick vielleicht klar wurde, ist Kryptographie, so einfach es uns durch die Programme gemacht wird, ein sehr komplexes Thema. Bei keinem der hier vorgestellten Algorithmen konnte mathematisch bewiesen werden, dass sie perfekt sind. Im Gegenteil, zu allen Methoden bestehen bereits theoretische Angriffsmöglichkeiten. Wer sich also auch in Zukunft halbwegs sicher im Internet bewegen möchte, sollte nach dieser Einführung keinesfalls das Kapitel Kryptographie abhaken. Sondern die Tür zumindest einen Spalt breit offen halten und lauschen, was an Neuigkeiten heraus kommt. Will man Webseiten, wie zum Beispiel seine Online-Bank, seinen Online-Händler oder seinen bevorzugten Blog einmal unter den Rock schauen und testen, ob er SSL/TLS so sauber einsetzt, wie man es auf den ersten Blick vermutet, so bieten Qualys SSL Labs mit ihrem Webtool SSL Server Test eine schöne Möglichkeit, dies zu tun. Hier bekommt man neben den einzelnen Testergebnissen auch eine Gesamtwertung angezeigt, die einem eine Einschätzung der Sicherheit durchaus erleichtern kann. Das Browser-Plugin SSleuth zeigt einem direkt neben dem Schlüsselsymbol in der Adressleiste eine Bewertung der SSL/TLS-Verbindung an. Die Protokollversion fließt allerdings nicht in das Ranking ein. Des weiteren ist es auch wichtig die Funktionsweise von Zertifikaten und dem daraus resultierenden Problem mit den Certificate Authorities zu verstehen, die zum Benutzen von SSL/TLS notwendig sind. Möchte man ein wenig tiefer in das Thema SSL/TLS eindringen, könnte ein erster Schritt sein, das TLS Handshake Protocol, das Kernstück von TLS, zu verstehen. Einen sehr guten Einstieg in das Thema Kryptographie im allgemeinen bietet Klaus Schmehs Buch „Kryptografie – Verfahren, Protokolle, Infrastrukturen“, 2013 erschienen im dpunkt.verlag. Andererseits existiert mit dem „Handbook of Applied Cryptography“ ein anspruchsvolles Standardwerk für alle, die tiefer in die Geheimnisse der Kryptografie einsteigen wollen. Alle Kapitel können mittlerweile von dieser Seite heruntergeladen werden. |