Wie funktioniert Browser symmetrische Schlüssel während SSL-Handshake erzeugen
-
30-09-2019 - |
Frage
Ich habe eine kleine Verwirrung über SSL-Handshake zwischen Browser und Server in einem typischen https Web-Szenario:
Was ich bisher verstanden, dass im Prozess des SSL-Handshake, Client (Browser in diesem Fall) verschlüsselt einen zufällig ausgewählten symmetrischen Schlüssel mit dem öffentlichen Schlüssel (Zertifikat vom Server empfängt). Dies wird an den Server zurückgesendet, Server entschlüsselt (symmetrische Schlüssel) mit dem privaten Schlüssel. Dieser symmetrische Schlüssel wird nun während des Restes der Sitzung zum Verschlüsseln / Entschlüsseln der Nachrichten an beiden Enden eingesetzt. Einer der wichtigsten Gründe, dies zu tun, ist eine schnellere Verschlüsselung mit symmetrischen Schlüsseln gegeben.
Fragen
1) Wie Browser auswählen und generiert diese „zufällig“ ausgewählt symmetrischen Schlüssel?
2) Do-Entwickler (oder / und Browser-Benutzer) hat die Kontrolle über diesen Mechanismus der symmetrischen Schlüssel zu erzeugen?
Lösung
Hier ist eine sehr gute Beschreibung wie HTTPS Verbindungsaufbau funktioniert. Ich werde Zusammenfassung geben, wie Sitzungsschlüssel von beiden Seiten (Client und Server) erworben wird, ist dieser Prozess als „ein Schlüsselvereinbarungsprotokoll“ bekannt ist, hier, wie es funktioniert:
- Der Client erzeugt den 48-Byte „pre-master secret“ Zufallswert.
- Die Client-Pads diese Bytes mit Zufallsdaten um die Eingabe zu machen gleich 128 Bytes.
- Der Client verschlüsselt sie mit dem Server den öffentlichen Schlüssel und sendet sie an den Server.
-
Dann Hauptschlüssel von beiden Seiten in folgenden Weise hergestellt:
master_secret = PRF( pre_master_secret, "master secret", ClientHello.random + ServerHello.random )
Die PRF ist die „Pseudo-Zufalls-Funktion“, die auch in der definiert ist und spec ist ziemlich clever. Es verbindet das Geheimnis, das ASCII-Label, und die Samen Daten, die wir geben, indem die Schlüssel-Hash der Nachricht unter Verwendung von Authentication Code (HMAC) Versionen von MD5 und SHA-1-Hash Funktionen. Die Hälfte des Eingangs mit jeder Hashfunktion gesendet. Es ist klug, weil es ist ziemlich beständig, selbst im Angesicht Angriff von Schwächen bei der MD5 und SHA-1. Dieser Prozess kann Feedback über sich selbst und Iterierte immer so viele Bytes zu erzeugen, wie wir brauchen.
Nach diesem Verfahren erhält man eine 48 Byte „master secret“.
Andere Tipps
Zitiert aus diesem großen Video-on-Netzwerk-Video, Minute 01.18.07
Nun wo Sie Zufälligkeit auf Ihrem Computer erhalten, weil Ihre Computer ist ein determinis Gerät?
Nun sammelt es Entropien wie Maus Hubbewegungen, Ihren Schlüssel Hubbewegungen und der Zeitpunkt der Festplatte, versucht, es zu sammeln dass alle Zufälligkeit aus dem Universum in einen Zug, so dass es nur für zufällige Schlüssel erzeugen kann eine Verbindung [diese session] . Und wenn das Zufälligkeit gebrochen und seine oft passiert in den letzten 30 Jahren, dann keines dieser Werke. Wenn der Gegner kann Figur, was Ihre Zufälligkeit kann dann sie Ihre Schlüssel erraten. So gut Zufälligkeit verwenden.
Hinweis: Die Schlüssel werden erstellt pro Sitzung .