Ratgeber

TLS/SSL: Fragen und Antworten

Escher-Hand

Apps tauschen häufig Informationen mit Anbietern im Internet aus. Dritte sollen diese Kommunikation nicht belauschen können. Seriöse Apps setzen deshalb auf Transportverschlüsselung. Wir geben einen Überblick über deren Funktionsweise.


Es gibt verschiedene Arten, Kommunikation im Internet zu verschlüsseln. Die aktuell am häufigsten eingesetzte Vorgehensweise nennt man TLS. Hier beantworten wir häufig gestellte Fragen zur Funktionsweise von TLS und den dazugehörigen TLS-Zertifikaten.

Was ist TLS?

Wenn Daten über das Internet zwischen einem Webserver und einem Endgerät übertragen werden, sind diese standardmäßig unverschlüsselt. Für Angreifer ist es dann leicht, diese Daten abzufangen. Damit das nicht passieren kann, senden und empfangen manche Webserver nur verschlüsselte Daten.

Webserver und Endgerät müssen dazu einen Schlüssel austauschen, mit dem die Daten ver- und entschlüsselt werden können. Die Regeln und Vorgehensweisen dafür sind in einem sogenannten Protokoll festgeschrieben. Dieses Protokoll heißt TLS. TLS steht für Transport Layer Security.

Warum ist oft von TLS/SSL die Rede?

SSL war der Vorläufer von TLS. Die älteste Version von SSL, auch SSLv3 (v3 steht für Version 3) genannt, war der ersten Version von TLS sehr ähnlich. Deshalb werden SSLv3 und TLS manchmal synonym verwendet.

Wo in meinem Computer/Smartphone wird der TLS-Prozess organisiert?

Üblicherweise tauchen TLS-Verbindungen beim Aufrufen von Internetseiten auf. Die Verschlüsselung wickelt dann ein Browser ab, zum Beispiel Chrome oder Firefox. Aber auch E-Mail-Verbindungen werden heute standardmäßig verschlüsselt. Auf dem Smartphone bauen nicht nur Browser TLS-Verbindungen auf, sondern auch andere Apps, wenn diese eine Verbindung ins Internet herstellen.

Was hat TLS mit HTTPS zu tun?

Die meisten Adressen von Webseiten im Internet beginnen mit HTTP. Wenn die Adresszeile mit HTTPS beginnt, wird für die Kommunikation zwischen dem Webserver, auf dem die Webseite liegt, und dem Gerät des Nutzers TLS-Verschlüsselung eingesetzt. Das S in HTTPS steht für Sicherheit, oder Security.

Wann kommt ein TLS-Zertifikat zum Einsatz?

Bevor Webserver und Endgerät sich auf einen gemeinsamen Schlüssel einigen, mit dem die verschlüsselte Verbindung aufgebaut wird, übermittelt der Webserver dem Endgerät einen Datensatz, mit dem er sich authentifiziert, also zu erkennen gibt. Dieser Datensatz ist das TLS-Zertifikat.

Dieser Schritt soll verhindern, dass sich ein Angreifer als der Webserver ausgeben kann, zu dem ein Nutzer gerade eine verschlüsselte Verbindung aufbauen will. Und auch ein Angreifer, der sich zwischen Webserver und Endgerät schaltet, um den Schlüsselaustausch abzufangen, soll damit ausgesperrt werden.

Was steht in einem TLS-Zertifikat?

Um die Funktion des Zertifikats zu verstehen, sind vier Bestandteile aus dem TLS-Zertifikat wichtig:

  • Der Gültigkeitszeitraum. Darin ist definiert, bis wann das Zertifikat gültig ist.
  • Die Internet-Adresse, auch Domain genannt, auf die das Zertifikat ausgestellt ist. Das Endgerät gleicht die Adresse auf dem Zertifikat mit der Adresse ab, die es gerade aufruft, und kann damit sicher sein, dass es mit dem richtigen Webserver verbunden ist.
  • Der öffentliche Schlüssel des Zertifikat-Inhabers. Der Inhaber ist derjenige, dem die Internet-Adresse gehört, auf die das Zertifikat ausgestellt ist. Was öffentliche und private Schlüssel sind, erklären wir in der nächsten Frage.
  • Die digitale Unterschrift der Zertifizierungsstelle. Eine solche Unterschrift macht das unterschriebene Zertifikat theoretisch fälschungssicher.

Was sind öffentliche und private Schlüssel?

Sie gehören zur asymmetrischen Verschlüsselung. Dabei wird zunächst ein Schlüsselpaar erzeugt. Die Schlüssel sind so gewählt, dass eine Zeichenfolge, zum Beispiel ein Passwort, nur mit dem ersten Schlüssel verschlüsselt werden kann, und nur mit dem zweiten Schlüssel wieder entschlüsselt werden kann. Der erste Schlüssel ist daher der öffentliche Schlüssel. Er muss nicht geheim gehalten werden. Der zweite Schlüssel ist der private, oder auch geheime Schlüssel. Nun kann jeder Fremde eine Nachricht mit dem öffentlichen Schlüssel verschlüsseln. Aber nur der Besitzer des dazugehörigen privaten Schlüssels kann sie auch wieder entschlüsseln. Auf dieser Tatsache beruht die Sicherung von TLS-Zertifikaten und auch Teile der verschlüsselten Kommunikation.

Warum steht auf dem Zertifikat der öffentliche Schlüssel des Zertifikat-Inhabers?

Damit kann das Endgerät verschlüsselte Nachrichten an den Webserver schicken, der ja dem Inhaber des Zertifikats gehört. Nur der Inhaber kann die Nachricht entschlüsseln, da er auch den zugehörigen privaten Schlüssel hat. Das ist für den darauf folgenden Schlüsselaustausch wichtig.

Was passiert beim Schlüsselaustausch?

Bei der TLS-Verschlüsselung kommen nacheinander zwei verschiedene Schlüsselarten zum Einsatz. Der Datenaustausch um den es eigentlich geht, wird symmetrisch verschlüsselt. Das bedeutet, Empfänger und Sender haben den gleichen Schlüssel und verschlüsseln damit die Kommunikation. Zuvor muss jedoch der symmetrische Schlüssel abgestimmt werden. Diese Abstimmung wird asymmetrisch verschlüsselt. Dafür schickt der Webserver seinen öffentlichen Schlüssel im Zertifikat an das Endgerät. Mit diesem kann das Endgerät nun den eigentlichen (symmetrischen) Schlüssel verschlüsselt an den Webserver schicken. Für die Entschlüsselung benötigt man den zugehörigen privaten Schlüssel, welchen nur der Webserver kennt.

Was nützt die Unterschrift der Zertifizierungsstelle?

Wenn ein Angreifer das Zertifikat unterwegs manipulieren würde, wäre die Unterschrift von der Zertifizierungsstelle nicht mehr gültig. Warum? In der Kryptographie bedeutet Unterschreiben (vereinfacht) folgendes: Die Daten in dem Zertifikat werden diesmal mit dem privaten Schlüssel der Zertifizierungsstelle verschlüsselt – also umgekehrt wie bei der Verschlüsselung. Unter dem lesbaren Zertifikat befindet sich also der Inhalt des Zertifikats nochmal, nur in verschlüsselter Form. Diese verschlüsselten Zeichen lassen sich nur mit dem zugehörigen öffentlichen Schlüssel wieder entschlüsseln.

Ein Angreifer könnte zwar den lesbaren Inhalt des Zertifikates ändern. Aber wenn der Empfänger dann die Unterschrift mit dem öffentlichen Schlüssel der Zertifizierungsstelle entschlüsselt, wird die Information, die er daraus erhält, nicht mit dem (manipulierten) Inhalt des Zertifikates übereinstimmen. In der Folge würde der Empfänger – beispielsweise der Webbrowser des Nutzers – den Betrug bemerken und eine Warnmeldung ausgeben. Wie es in der Vergangenheit trotzdem immer wieder zu gefälschten Zertifikaten kam, erklären wir weiter unten.

Kann ich das TLS-Zertifikat von einem Webserver sehen?

Es gibt verschiedene Möglichkeiten, das Zertifikat sichtbar zu machen. Bei https-Verbindungen kann im Webbrowser wie Firefox oder Chrome durch einen Klick auf das grüne kleine Schloss in der Adresszeile das Zertifikat eingesehen werden. Es gibt auch Prüfseiten im Internet, zum Beispiel von Symantec. Dort kann man einfach die gewünschte Adresse eingeben.

Schwieriger wird es bei TLS-Verbindungen, die von Apps auf Smartphone oder Tablet aufgebaut werden. Normalerweise bekommen die Nutzer von diesen Verbindungen nichts mit, denn es öffnet sich kein Browserfenster oder ähnliches. Das TLS-Zertifikat lässt sich nicht einsehen – der Nutzer ist hier auf die Sorgfalt der App-Anbieter angewiesen.

Woher hat der Webserver das Zertifikat?

Wer zum Beispiel eine Website betreibt, und dabei Daten TLS-verschlüsselt übertragen will, muss sich ein TLS-Zertifikat besorgen. Das bekommt er von einer Zertifizierungsstelle, auf Englisch auch Certificate Authority, oder kurz CA genannt. Es gibt weltweit über tausend solcher Stellen. Die Preise, die diese Stellen für ihre Zertifikate aufrufen, sind sehr unterschiedlich: von (einigen wenigen) ganz kostenlosen Zertifikaten bis zu 2.500 Euro pro Domain bei den renommierten Zertifizierungsstellen ist auf dem Markt fast alles geboten.

Was macht die Zertifizierungsstelle?

Die Zertifizierungsstelle prüft, ob der Kunde, der ein Zertifikat kaufen will, auch legitimer Inhaber der Internet-Adresse (Domain) ist, auf die das Zertifikat ausgestellt werden soll. Wie genau diese Prüfung abläuft, kann die Zertifizierungsstelle selber entscheiden. Entsprechend unterschiedlich sind die Verfahren.

Dann stellt die Zertifizierungsstelle ein TLS-Zertifikat aus, in dem unter anderem Inhaber und Domain festgeschrieben sind, und unterschreibt es mit ihrem privaten Schlüssel. Das unterschriebene Zertifikat baut der Inhaber dann in seine Website ein.

Wer darf Zertifikate ausgeben?

In Deutschland werden die Zertifizierungsstellen von der Bundesnetzagentur überwacht und müssen sich dort melden, bevor sie den Betrieb aufnehmen.

In anderen Ländern ist das anders geregelt. Drei Viertel aller Zertifikate werden von nur drei renommierten Zertifizierungsstellen beglaubigt. Daneben gibt es sehr viele kleine Zertifizierungsstellen, die nach sehr unterschiedlichen Kriterien arbeiten.

Was ist die Vertrauenskette, die „Chain of Trust“?

Jede Zertifizierungsstelle kann ihrerseits Unter-Zertifizierungsstellen ernennen. Die Vertrauenswürdigkeit dieser Unter-Stellen garantiert dann die jeweils darüberliegende Zertifizierungsstelle mit einem Zertifikat. Der Webserver übergibt dem Endgerät beim Zertifikat-Austausch nicht nur sein Zertifikat, sondern auch die Zertifikate der darüberliegenden CAs bis zum Root-Zertifikat. Der Browser überprüft die Unterschrift des ersten Zertifikats mit dem öffentlichen Schlüssel auf dem darüberliegenden, bis zur obersten Zertifizierungsstelle. Von dieser obersten Stelle sollte bei ihm ein Root-Zertifikat hinterlegt sein. Sonst wird der Browser das Zertifikat ablehnen.

Was ist ein Root-Zertifikat

Normalerweise enthält ein Zertifikat den öffentlichen Schlüssel des Inhabers, und ist mit dem privaten Schlüssel von jemand anderem (der Zertifizierungsstelle) unterschrieben. Root-Zertifikate stehen am Ende der Vertrauenskette, und sind „self-signed“, auf Deutsch: Selbst unterschrieben. Sie enthalten einen öffentlichen Schlüssel, der mit dem dazugehörigen privaten Schlüssel unterschrieben ist. Das Vertrauen in Root-Zertifikate muss daher auf einem anderen Weg hergestellt werden.

Woher hat mein Browser oder meine App die Root-Zertifikate?

Die Hersteller des Browsers geben dem Browser eine Liste mit Zertifizierungsstellen (CAs) mit, die sie für vertrauenswürdig halten. Die großen Browser vertrauen standardmäßig meist mehr als hundert verschiedenen CAs. Von jeder dieser CA besitzt der Browser standardmäßig ein Root-Zertifikat.

Der Browser kann nun die Unterschrift auf dem TLS-Zertifikat mit dem öffentlichen Schlüssel vom zugehörigen Root-Zertifikat validieren. Das heißt, er entschlüsselt die Unterschrift, und sieht, ob das Ergebnis mit dem Inhalt des lesbaren Zertifikates übereinstimmt. Nutzer können auch manuell Root-Zertifikate von Zertifizierungsstellen installieren, wenn sie wollen, dass der Browser deren Zertifikate akzeptiert.

Wie konnte es immer wieder zu gefälschten Zertifikaten kommen?

In den letzten Jahren gab es immer wieder Fälle von gefälschten Zertifikaten, so dass das Zertifizierungssystem in die Kritik geriet. Zum einen fanden Einbrüche in renommierte Zertifizierungsstellen statt, bei denen über einen längeren Zeitraum unbemerkt der private Schlüssel der Zertifizierungsstelle kopiert wurde und damit Fälschungen unkompliziert möglich waren.

Andere Sicherheitsschwächen sind die Zertifizierungsstellen selbst: Es gibt schwarze Schafe unter ihnen, denen entweder grobe Fahrlässigkeit in der Sicherheit oder willentliche Zusammenarbeit mit Geheimdiensten oder anderen unautorisierten Akteuren nachgewiesen werden konnte.

So wurden 2015 massenhaft Zertifikate entdeckt, deren Inhaber angeblich Google war. Sie wurden von der chinesischen Zertifizierungsstelle CNNIC ausgestellt. Formal waren diese Zertifikat gültig, das heißt, die Unterschrift der Zertifizierungsstelle passte zum Zertifikat. Daher wurde es von vielen Browsern akzeptiert. Aber die Internetadressen auf den Zertifikaten gehörten gar nicht Google. Jemand versuchte sich, als vertrauenswürdiger Google-Server auszugeben.

Um dem entgegen zu wirken, wird das aktuelle Zertifizierungssystem derzeit reformiert.

Was ist „Certificate Pinning“?

In manchen Apps ist festgelegt, von welcher Zertifizierungsstelle ein Zertifikat abstammen muss, damit es als gültig akzeptiert wird. Damit können die geschilderten Probleme mit gefälschten Zertifikaten vermieden werden. Dieses Vorgehen nennt man Certificate Pinning (zu Deutsch soviel wie „Zertifikate festnageln“).

Wie funktioniert Certificate Pinning?

Aus dem öffentlichen Schlüssel der betreffenden Zertifizierungsstelle wird eine Prüfziffer (der Pin) berechnet und vom Entwickler in der App hinterlegt. Verbindet sich die App später über TLS mit dem Server, kann sie prüfen, ob sich die gewünschte Zertifizierungsstelle in der Vertrauenskette befindet, und sonst die Verbindung ablehnen. Es ist auch möglich, direkt den öffentlichen Schlüssel des Kommunikationspartners zu pinnen.

Können auch Browser Certificate Pinning?

Webbrowser können auch Certificate Pinning betreiben. Dort wird vorausgesetzt, dass die erste Verbindung vertrauenswürdig ist. Aus dem Zertifikat, welches beim ersten Kontakt übertragen wird, berechnet das Endgerät dann eine Prüfziffer und legt sie im Browser dauerhaft ab. So kann sich bei späteren Kontakten niemand dazwischen mogeln.

 

Sie haben einen Fehler entdeckt oder vermissen einen Artikel zu einem bestimmten Thema?
Schreiben Sie uns eine E-Mail an hinweis@mobilsicher.de!