Das grüne Vorhängeschloss entmystifiziert: Wie funktioniert der SSL-Handshake?

Veröffentlicht: 2022-08-16

Jeden Tag, wenn Sie sicher im Internet surfen, denken Sie an das berühmte grüne Vorhängeschloss in der Nähe der URL-Adresse der Website in Ihrem Browser und an die HTTPS-Version des Datenübertragungsprotokolls. In diesem Artikel erfahren Sie, warum HTTPS wirklich sicher ist und wie die Kommunikation vor dem Abhören durch Dritte geschützt wird.

Zunächst stellen wir kurz die beiden grundlegenden kryptografischen Konzepte vor: digitale Signatur und Verschlüsselung. Wir tauchen in einen Prozess namens SSL-Handshake ein, der ausgeführt wird, bevor Client und Server mit dem Austausch der Kommunikation beginnen, und zum Herstellen eines sicheren kryptografischen Kontexts verwendet werden. Wir schließen mit Informationen darüber, wie Sie die Sicherheit mit einem optionalen Schritt namens Client-Zertifikatsauthentifizierung noch weiter erhöhen können.

Public-Key-Kryptographie 101: Schlüsselpaar

Lernen Sie Alice und Bob kennen, zwei Personen, die sich entschieden haben, kryptografische Methoden zu verwenden, um ihre privaten Nachrichten sicher auszutauschen. Die erste Wahl, die sie treffen müssen, ist zwischen zwei verschiedenen Kryptografietypen: symmetrischer und asymmetrischer Schlüsselkryptografie (auch Public-Key-Krypto genannt).

Aber warten Sie, was sind das für Schlüssel ? Grundsätzlich können wir vereinfachen, dass ein Schlüssel eine zufällige Folge von Zeichen ist. Wir können diese Sequenz verwenden, um eine Nachricht zu transformieren (eine bestimmte kryptografische Operation durchzuführen) – wir werden uns gleich damit befassen.

Kryptografie mit symmetrischen Schlüsseln

Bei der Verwendung von Krypto mit symmetrischem Schlüssel generiert ein Sender einen Schlüssel und dupliziert ihn dann für den Empfänger. Der Absender speichert den Originalschlüssel und ein Duplikat wird dem Empfänger zugestellt. Derselbe Schlüssel wird für Kryptooperationen an beiden Enden der Kommunikation verwendet.

Und was sind die wichtigsten Vor- und Nachteile der Kryptografie mit symmetrischen Schlüsseln?

Vorteile Nachteile
schnellere Kryptooperationen – es wird nur ein Schlüssel verwendet Der sensible Schlüssel läuft Gefahr, bei der Übertragung vom Sender zum Empfänger abgefangen zu werden
einfachere Einrichtung, leichter zu verstehen Sobald der Schlüssel kompromittiert ist, ist auch die Kommunikation an beiden Enden kompromittiert
Vor- und Nachteile der Kryptografie mit symmetrischen Schlüsseln

Asymmetrische Schlüsselkryptographie

Bei der Verwendung von Asymmetric Key Crypto generieren sowohl Sender als auch Empfänger ein Schlüsselpaar – einen öffentlichen Schlüssel und einen privaten Schlüssel. Die Schlüssel sind mathematisch miteinander gekoppelt, um in verschiedenen Kryptooperationen zusammenzuarbeiten. Sowohl der Sender als auch der Empfänger speichern ihre privaten Schlüssel sicher, aber sie können öffentliche Schlüssel ohne besondere Vorkehrungen austauschen. Sie können sogar eine Art „Gelbe Seiten für öffentliche Schlüssel“ verwenden – einen Server für öffentliche Schlüssel, um ihre öffentlichen Schlüssel zu senden, damit sie für jedermann zugänglich sind.

Was sind die Vor- und Nachteile der Kryptografie mit asymmetrischen Schlüsseln?

Vorteile Nachteile
Der sensible private Schlüssel verlässt niemals die Umgebung des Absenders geringere Leistung von Kryptooperationen
Wenn ein privater Schlüssel an einem Ende der Kommunikation kompromittiert wird, ist das andere immer noch sicher Spiel vorbei, wenn der private Schlüssel verloren geht
mehr kryptografische Operationen verfügbar
Vor- und Nachteile der Kryptografie mit asymmetrischen Schlüsseln

Da ein asymmetrisches Krypto-Setup sicherer ist, haben sich Alice und Bob dafür entschieden! Jetzt können sie dies nutzen und darüber nachdenken, die Sicherheit und Integrität der Kommunikation zu gewährleisten.

Public-Key-Kryptographie 101: Verschlüsselung

Wenn Alice eine Nachricht an Bob sendet, möchte sie sicher sein, dass niemand sonst den Inhalt sehen kann. Sie beschließt, die Nachricht zu verschlüsseln. Um dies zu erreichen, muss Alice zuerst Bobs öffentlichen Schlüssel entweder von einem Schlüsselserver oder direkt von Bob über einen Kommunikationskanal erhalten. Nachdem Alice den Schlüssel erhalten hat, kann sie einen Verschlüsselungsvorgang mit Bobs öffentlichem Schlüssel auf die Nachricht anwenden , die sie senden möchte.

Im Allgemeinen wird bei diesem Prozess die Nachricht von einem kryptografischen Algorithmus (auch bekannt als Chiffre) in Blöcken (am häufigsten) aufgenommen und einige Bitoperationen zwischen der Nachricht und dem Schlüssel werden durchgeführt, wodurch eine Ausgabe erzeugt wird, die die verschlüsselte Nachricht (auch bekannt als Chiffretext) ist. . Wenn Bob die verschlüsselte Nachricht erhält, ist er die einzige Person, die sie mit seinem privaten Schlüssel entschlüsseln kann.

Notiz:

  • Nachrichtenverschlüsselung – Der Absender verschlüsselt eine Nachricht mit dem öffentlichen Schlüssel des Empfängers
  • Nachrichtenentschlüsselung – Der Empfänger entschlüsselt eine Nachricht mit seinem privaten Schlüssel

Public-Key-Kryptographie 101: Signatur

Abgesehen davon, dass der Nachrichteninhalt nicht preisgegeben wird, ist es ebenso wichtig, die Identität des Absenders bestätigen zu können und zu überprüfen, ob die Nachricht nicht geändert wurde. Eine digitale Signatur (ein separates Objekt, das an die Nachricht angehängt wird) wird genau aus diesen beiden Gründen verwendet.

Alice verwendet zunächst einen Hash-Algorithmus, um einen Nachrichten-Hash zu entwickeln, um ihre Signatur zu generieren. Beim Hashing wird eine mathematische Einwegfunktion für eine Nachricht berechnet, die eine kürzere Ausgabe mit festem Wert erzeugt – unterschiedlich für eine andere Eingabe. Dann verwendet sie ihren privaten Schlüssel , um den generierten Hash zu verschlüsseln (signieren).

Als nächstes, wenn Bob die Nachricht und die Signatur erhält, kann er zuerst die Signatur mit dem öffentlichen Schlüssel von Alice entschlüsseln . Wenn das gelingt, weiß er, dass die Signatur wirklich von Alice generiert wurde (andernfalls würde die Entschlüsselung mit ihrem öffentlichen Schlüssel fehlschlagen).

Zweitens kann Bob die Nachricht nehmen und sie mit demselben Algorithmus hashen, den Alice zuvor hatte, und bestätigen, dass sein Hash der Nachricht derselbe ist wie der von Alice generierte. Wenn Hashes übereinstimmen, weiß er, dass die Nachricht nicht manipuliert wurde.

Notiz:

  • Signatur erzeugen – Der Absender verschlüsselt (signiert) den Nachrichten-Hash mit seinem privaten Schlüssel und erstellt eine Signatur
  • Überprüfung der Signatur – Der Empfänger entschlüsselt zuerst den Nachrichten-Hash aus der Signatur und prüft, ob ein von ihm berechneter Hash mit dem aus der Signatur übereinstimmt
  • Verschlüsselung und Signatur können separat verwendet werden , aber für die höchste Sicherheit werden sie normalerweise kombiniert. Daher heißen die meisten Kryptofunktionen, denen Sie begegnen können, encryptSignMessage() , decryptVerifyMessage() , etc.

Ich hoffe, Sie haben keine Probleme, mit der Geschichte von Alice & Bob Schritt zu halten. Lassen Sie mich den gesamten Ablauf noch einmal veranschaulichen, um sicherzustellen, dass alles klar ist, und um die Dinge zusammenzufassen.

Verschlüsselter Kommunikationsfluss
  1. Alice möchte Bob eine Nachricht schicken
  2. Alice nimmt ihren privaten Schlüssel und generiert eine Signatur
  3. Alice nimmt Bobs öffentlichen Schlüssel und verschlüsselt die Nachricht
  4. Alice sendet die Nachricht an Bob
  5. Bob nimmt den öffentlichen Schlüssel von Alice und verifiziert die Signatur
  6. Bob verwendet seinen privaten Schlüssel, um die Nachricht zu entschlüsseln

Okay, das ist genug Theorie. Sehen wir uns nun an, wie all dies in HTTPS verwendet wird!

SSL-Handshake

Sag hallo bitte

Wenn ein Client eine Verbindung zu einem Server initiiert, ist es zunächst wichtig, eine ordnungsgemäße Einführung vorzunehmen, um einen kryptografischen Kontext für den Rest der Kommunikation herzustellen. Dies kann im Schritt HTTPS CONNECT erfolgen, lange vor dem Parsen von Headern und Anforderungstexten. Alles beginnt damit, dass der Client eine Client-Hallo-Nachricht sendet .

Am wichtigsten ist, dass die Nachricht die Kryptoalgorithmen enthält, die der Client versteht, und zusätzliches Material, wie unterstützte Komprimierungsalgorithmen, Protokollversionen, Sitzungs-ID usw. Da der Server gerne höflich ist, antwortet er auch mit einer Server-Hallo-Nachricht , was am bemerkenswertesten ist enthält das Serverzertifikat mit dem öffentlichen Schlüssel des Servers (ja, der Prozess basiert auf Public-Key-Kryptographie – dieselbe Methode, die Alice und Bob gewählt haben).

Zertifizierungsstelle

Jetzt ist es an der Zeit, unseren nächsten Gast auf der Bühne zu begrüßen: eine Zertifizierungsstelle (CA). Der Name klingt seriös – ist aber nur ein Drittanbieter mit viel Straßenkredit, der im Grunde weltweit als vertrauenswürdig gilt. Eine solche Entität kann die Identität eines Servers validieren und ihre digitale Signatur zusammen mit dem Serverzertifikat platzieren (ähnlich wie Alice beim Versenden von Nachrichten an Bob).

Zertifikatsüberprüfung

Betrachten wir nun endlich das grüne Vorhängeschloss neben der URL-Adresse Ihres Browsers.

Jeder Webclient verfügt über eine gebündelte Liste der öffentlichen Schlüssel bekannter und vertrauenswürdiger Zertifizierungsstellen . Sie erinnern sich vielleicht, dass ich am Anfang des Artikels erwähnt habe, dass die Signatur mit dem privaten Schlüssel eines Absenders generiert wird und mit dem öffentlichen Schlüssel eines Absenders verifiziert werden kann. Nun, genau das tut der Kunde . Es geht die gebündelte Liste der vertrauenswürdigen CAs durch und prüft, ob die Signatur des Serverzertifikats zu einer der vertrauenswürdigen CAs gehört. Ist dies der Fall, akzeptiert er das Zertifikat – und in diesem Moment wird das Vorhängeschloss grün .

Aber das ist nur ein erster Schritt, der noch nichts mit Sicherheit zu tun hat. Jeder kann ein beliebiges Public-Key-Zertifikat kopieren, es auf einem Server ablegen und einem sich verbindenden Client präsentieren, richtig?

Nachdem der Client das Serverzertifikat überprüft hat, erstellt er einen symmetrischen Schlüssel zum Verschlüsseln der Kommunikation. Aber, wie ich eingangs erwähnt habe, besteht das Problem mit symmetrischen Schlüsseln darin, dass sie anfällig dafür sind, während des Transports abgefangen zu werden. In diesem Schritt haben Client und Server keinen gemeinsamen kryptografischen Kontext. Der Client sendet also den symmetrischen Schlüssel an den Server, verschlüsselt ihn aber zunächst mit dem öffentlichen Schlüssel des Servers. Dann empfängt der Server es und muss es entschlüsseln können, um eine sichere Verbindung herzustellen.

Selbst wenn also jemand ein gestohlenes Public-Key-Zertifikat vorlegen würde, wäre dies der Schritt, an dem er scheitern würde. Ein gültiger privater Schlüssel, der an den öffentlichen Schlüssel des Serverzertifikats gebunden ist, ist wesentlich, um den symmetrischen Schlüssel zu entschlüsseln. Dies ist natürlich kein Problem für einen legitimen Server, da der private Schlüssel sicher gespeichert ist. Es kann verwendet werden, um den symmetrischen Schlüssel zu entschlüsseln und die weitere Kommunikation zu verschlüsseln.

Zusammenfassend lässt sich sagen, dass ein SSL-Handshake ein Prozess ist, bei dem sowohl symmetrische als auch asymmetrische Kryptografietypen verwendet werden . Zunächst initiiert das asymmetrische Schlüsselpaar die Verbindung und bietet dem symmetrischen Schlüssel eine sichere Übertragungsmöglichkeit. Wie wir zu Beginn betont haben, sind die symmetrischen Kryptografieoperationen schneller, daher ist es vorteilhaft, sie für die gesamte Kommunikation nach der Einrichtung zu verwenden. Sobald eine sichere Verbindung hergestellt ist, wird sie bis zum Ablauf wiederverwendet, sodass die Einrichtung des asymmetrischen Schlüssels nicht vor jeder Clientanforderung durchgeführt wird.

Erwähnenswert ist auch, dass die Zertifikate im wirklichen Leben nicht direkt von den bekanntesten vertrauenswürdigen CAs ( Roots genannt) signiert werden. Dennoch signieren die Root-CAs Zwischenzertifikate, die dann schließlich das Serverzertifikat signieren – so entsteht eine Kette von Zertifikaten, die der verbindende Client prüft, bis eine gültige Signatur vorliegt. Es bietet sicherlich mehr Sicherheit – wenn eine der Zwischenzertifizierungsstellen kompromittiert wird, betrifft dies weniger Personen.

Validierung des Client-Zertifikats

Nun, es gibt einen optionalen Schritt, den wir kurz erwähnen können, da wir alle notwendigen Kenntnisse haben, um ihn zu verstehen. Ein Server kann so konfiguriert werden, dass er nach dem Aufbau einer sicheren Verbindung ein Client-Zertifikat anfordert und validiert, um zusätzliche Sicherheit zu erreichen.

Das funktioniert auf die gleiche Weise – aber dieses Mal sendet der Client sein Zertifikat , und der Server geht seine Liste der vertrauenswürdigen Zertifizierungsstellen durch und verifiziert es. Es ist auch erwähnenswert, dass der Server unter der Kontrolle der Entwickler steht (im Gegensatz zu einem Client, dh einem Webbrowser oder einem mobilen Betriebssystem), sodass die Backend-Entwickler die Liste der vertrauenswürdigen Zertifikate einfach ändern können.

Unternehmensnetzwerke verwenden häufig diesen Mechanismus. Am häufigsten werden die Client-Zertifikate von einem auf dem Mitarbeitergerät installierten Geräteverwaltungssystem generiert und mit einem vom Unternehmen generierten Stammzertifikat signiert. Dasselbe Zertifikat wird auch der Back-End-Umgebung hinzugefügt. Auf diese Weise kann das Unternehmens-Backend das Zertifikat einfach überprüfen, wenn der Client eine Verbindung herstellt.

Sehen wir uns unsere Backend-Lösungen an

Weiterlesen

Lassen Sie uns nun zusammenfassend ein Diagramm für den gesamten Fluss sehen:

Client- und Server-Überprüfungsablauf

Zusammenfassung

Sie haben das Ende des Artikels erreicht! Hoffentlich verstehen Sie bereits den Implementierungsmechanismus des Verschlüsselungs-Setups in HTTPS und die Anwendungsmethoden von Signier- und Verschlüsselungsprozessen.

Da Sie wissen, wie die Dinge funktionieren, sollten Sie sich in Bezug auf die Datenverschlüsselung sicher sicherer fühlen. Beachten Sie jedoch unbedingt, dass ein grünes Vorhängeschloss in Ihrem Browser noch keine Sicherheit garantiert . Im sicherheitssensiblen Kontext sollten Sie auch das Zertifikat genau unter die Lupe nehmen. Wie heißt es so schön: Vorgewarnt ist gewappnet!