it-swarm.com.de

Erklärung der Client-Server-Verschlüsselungstechnik (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 128-Bit-Schlüssel)

Ich habe eine Webseite mit https geöffnet.

Als ich mir die Seiteninformationen meines Browsers (Firefox) ansah, sah ich Folgendes:

Verbindung verschlüsselt: Hochwertige Verschlüsselung (TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, 128-Bit-Schlüssel).

Ich habe eine Frage - was bedeutet diese Verschlüsselungstechnik? Um es zu verstehen, habe ich beschlossen, Daten zu jedem Teil davon zu finden:

TLS_ECDHE bedeutet kurzlebige elliptische Kurve Diffie-Hellman und als Wikipedia sagt erlaubt es zwei Parteien ein gemeinsames Geheimnis über einen unsicheren Kanal zu etablieren.

[~ # ~] rsa [~ # ~] wird verwendet, um die Identität des Servers zu beweisen, wie in dieser Artikel beschrieben .

WITH _ AES_128_GCM_SHA256 : Wenn ich das richtig verstehe, ist AES_128_GCM eine Technik, die eine authentifizierte Verschlüsselung bietet, wie auf diese Seite beschrieben.

SHA256 ist ein Hashing-Algorithmus - Einwegfunktion.

Aber jetzt versuche ich zu verstehen, wie man all diese Dinge zusammenfügt. Wie funktioniert es insgesamt und warum wurde es so eingerichtet?

In diesem YouTube-Video verwenden Alice und Bob den Diffie-Helman-Schlüsselaustauschalgorithmus, um einen geheimen Schlüssel zu vereinbaren, den sie verwenden werden (in unserem Fall TLS_ECDHE). Reicht es nicht aus, eine sichere Verbindung herzustellen (abgesehen von dem RSA-Teil, den Alice und Bob nicht gemacht haben)? Warum gibt es auch diesen Teil WITH_AES_128_GCM_SHA256 ?

22
VL-80

Asymmetrische Kryptographie

Das Erstellen einer TLS-Sitzung besteht aus zwei Teilen. Es gibt den Teil asymmetrische Kryptographie , bei dem öffentliche Schlüssel zwischen zwei Punkten ausgetauscht werden. Welches ist, was Sie in Ihrem Alice und Bob Beispiel gesehen haben. Dies ermöglicht nur den Austausch asymmetrischer Schlüssel für asymmetrische Ver-/Entschlüsselung. Dies ist der [~ # ~] ecdhe [~ # ~] Teil. Der Abschnitt [~ # ~] rsa [~ # ~] beschreibt den Signaturalgorithmus , der zur Authentifizierung des Schlüsselaustauschs verwendet wird. Dies wird auch mit asymmetrischer Kryptographie durchgeführt. Die Idee ist, dass Sie die Daten mit Ihrem privaten Schlüssel signieren und dann die andere Partei mit Ihrem öffentlichen Schlüssel überprüfen kann.

Symmetrische Kryptographie

Sie verschlüsseln symmetrische Verschlüsselungs-/Entschlüsselungsschlüssel mit Ihrem asymmetrischen Schlüssel. Die asymmetrische Verschlüsselung ist (relativ gesehen) sehr langsam. Sie möchten nicht ständig damit verschlüsseln müssen. Dafür ist Symmetric Cryptography da. Jetzt sind wir also bei AES_128_GCM .

  • AES ist der symmetrische Algorithmus
  • 128 bezieht sich auf die Schlüsselgröße in Bits
  • GCM ist die Betriebsart

Was genau verschlüsselt unser asymmetrischer Schlüssel? Nun, wir wollen im Wesentlichen den symmetrischen Schlüssel verschlüsseln (in diesem Fall 128 Bit, 16 Bytes). Wenn jemand den symmetrischen Schlüssel kennt, kann er alle unsere Daten entschlüsseln. Bei TLS wird der symmetrische Schlüssel nicht direkt gesendet. Etwas, das als Pre-Master-Geheimnis bezeichnet wird, wird verschlüsselt und gesendet. Aus diesem Wert können Client und Server alle Schlüssel und IVs generieren, die für die Verschlüsselung und Datenintegrität erforderlich sind. Detaillierter Blick auf den TLS-Schlüsselaustausch

Datenintegrität

Datenintegrität wird während dieses Prozesses sowie für den verschlüsselten Kanal benötigt. Wie Sie beim Nachschlagen von GCM gesehen haben, sorgt der Verschlüsselungsmodus selbst für die Integrität der zu verschlüsselnden Daten. Der Handshake mit öffentlichem Schlüssel selbst muss jedoch ebenfalls bestätigt werden. Wenn jemand in der Mitte während der Übertragung Daten geändert hat, wie können wir dann wissen, dass nichts manipuliert wurde? In diesem Fall wird die ausgehandelte Hash-Funktion SHA256 verwendet. Jedes Stück des Handshakes wird zusammen gehasht und der letzte Hash wird zusammen mit dem verschlüsselten Pre-Master-Geheimnis übertragen. Die andere Seite überprüft diesen Hash, um sicherzustellen, dass alle Daten, die gesendet werden sollten, empfangen wurden.

SHA256 wird, wie von einem anderen Poster erwähnt, auch für die Pseudozufallsfunktion (PRF) verwendet. Dies erweitert das zwischen den beiden Teilnehmern gesendete Pre-Master-Geheimnis um die Sitzungsschlüssel, die wir für die Verschlüsselung benötigen.

Für andere Betriebsmodi würde jede Nachricht auch mit diesem Integritätsalgorithmus gehasht. Wenn die Daten entschlüsselt werden, wird der Hash überprüft, bevor der Klartext verwendet wird.

Hier finden Sie eine gute Erklärung, wie diese Ableitungen für verschiedene TLS-Versionen erfolgen.

Setzen Sie all diese Teile zusammen und Sie haben selbst eine sichere Art der Kommunikation!


Sie können alle möglichen von OpenSSL unterstützten Chiffren mit openssl ciphers Auflisten. Sie können noch weiter gehen und die Details jeder dieser Chiffresuiten mit dem -V Drucken.

Zum Beispiel:

$ openssl ciphers -V ECDHE-RSA-AES256-GCM-SHA384
          0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
  • 0xC0,0x30 Stellt die Zwei-Byte-Kennung für die Verschlüsselungssuite dar
  • Kx=ECDH Repräsentiert den Schlüsselaustauschalgorithmus
  • Au=RSA Repräsentiert den Authentifizierungsalgorithmus
  • Enc=AESGCM(256) repräsentiert den symmetrischen Verschlüsselungsalgorithmus
  • Mac=AEAD Stellt den verwendeten Algorithmus zur Überprüfung der Nachrichtenauthentifizierung dar
28
RoraΖ

Sie haben Recht, dass ECDHE für den Schlüsselaustausch und RSA für die Überprüfung der Serveridentität verwendet wird. Was machen Sie jedoch mit dem ausgetauschten Schlüssel? Sie müssen einen bestimmten Algorithmus verwenden, um die Kommunikation mit diesem ausgetauschten Schlüssel zu verschlüsseln/entschlüsseln.

In diesem Fall wird im GCM-Modus 128-Bit-AES verwendet.

Normalerweise wird der Hashing-Algorithmus, in diesem Fall SHA256, für den Hash-basierten Nachrichtenauthentifizierungscode (HMAC) verwendet. Dies dient zur Bereitstellung einer authentifizierten Verschlüsselung. Wie Sie bereits erwähnt haben, bietet AES-GCM jedoch bereits eine authentifizierte Verschlüsselung, sodass es hier nicht verwendet wird.

Seit TLS1.2 wird der am Ende einer Verschlüsselungssuite erwähnte Hashing-Algorithmus auch für die Pseudozufallsfunktion (PRF) in TLS verwendet.

4
abaj