Heim >häufiges Problem >Was ist das Prinzip der HTTPS-Kommunikation?

Was ist das Prinzip der HTTPS-Kommunikation?

藏色散人
藏色散人Original
2020-07-02 09:03:404378Durchsuche

Das Kommunikationsprinzip von HTTPS ist: HTTPS ist „HTTP über SSL/TLS“. Im Vergleich zu HTTP verfügt HTTPS über eine zusätzliche Schicht von „SSL/TLS“. HTTPS erfordert zuvor einen Austausch zwischen dem Client und dem Server Übertragen von Daten. Während des Handshake-Vorgangs werden die kryptografischen Informationen festgelegt, die von beiden Parteien zur Verschlüsselung der übertragenen Daten verwendet werden.

Was ist das Prinzip der HTTPS-Kommunikation?

Einführung:

HTTP-Protokoll (HyperText Transfer Protocol, Hypertext Transfer Protocol): Ist der Kunde Ein Kommunikationsprotokoll auf Anwendungsebene zwischen einem Browser oder einem anderen Programm und einem Webserver. HTTPS (vollständiger Name: HyperText Transfer Protocol over Secure Socket Layer) kann als HTTP+SSL/TLS verstanden werden, das heißt, eine SSL-Schicht wird zu HTTP hinzugefügt. Die Sicherheitsgrundlage von HTTPS ist SSL, daher ist für die Verschlüsselungsdetails SSL erforderlich sichere HTTP-Datenübertragung.

Der Unterschied zwischen HTTPS und HTTP:

a Das https-Protokoll erfordert, dass Sie ein Zertifikat von CA beantragen Es gibt nur wenige kostenlose Zertifikate und Sie müssen eine Gebühr zahlen.

b. http ist ein Hypertext-Übertragungsprotokoll und Informationen werden im Klartext übertragen. https ist ein sicheres SSL-verschlüsseltes Übertragungsprotokoll.

c. HTTP und https verwenden völlig unterschiedliche Verbindungsmethoden und verwenden unterschiedliche Ports. Ersteres ist 80 und letzteres ist 443.

d. Die HTTP-Verbindung ist sehr einfach und zustandslos; das HTTPS-Protokoll ist ein Netzwerkprotokoll, das auf dem SSL+HTTP-Protokoll basiert und eine verschlüsselte Übertragung und Identitätsauthentifizierung durchführen kann und sicherer ist als das http-Protokoll.

Die Rolle von HTTPS

Seine Hauptaufgabe kann in zwei Arten unterteilt werden: Die erste besteht darin, einen Informationssicherheitskanal einzurichten, um die Datenübertragung sicherzustellen Sicherheit; die andere besteht darin, die Authentizität der Website zu bestätigen.

 a. Im Allgemeinen bedeutet https, dass der Server über ein Zertifikat verfügt. Der Hauptzweck besteht darin, sicherzustellen, dass der Server der Server ist, für den er sich ausgibt. Dies ist derselbe wie beim ersten Punkt; die gesamte Kommunikation zwischen dem Server und dem Client ist verschlüsselt.

b. Konkret generiert der Client einen symmetrischen Schlüssel und tauscht den Schlüssel über das Serverzertifikat aus, was im Allgemeinen ein Handshake-Prozess ist. Dieser Teil wird im Folgenden ausführlich vorgestellt.

  c. Alle nachfolgenden Informationsaustausche werden verschlüsselt. Selbst wenn ein Dritter es abhört, ist es bedeutungslos, weil er nicht über den Schlüssel verfügt, und es hat natürlich keinen Sinn, daran herumzupfuschen.

 d. In einigen Fällen, in denen Anforderungen an den Client gestellt werden, muss der Client auch über ein Zertifikat verfügen.

Warum das HTTPS-Protokoll benötigt wird:

HTTP-Protokoll ist ein unverschlüsseltes Klartext-Übertragungsprotokoll, wenn der Client (APP, Browser) verwendet HTTP-Übertragung Daten werden durchgesickert und der Übertragungsinhalt kann von Zwischenhändlern gekapert werden, um den Übertragungsinhalt zu ändern. Wie in der folgenden Abbildung dargestellt, wird eine typische APP-HTTP-Kommunikation vom Betreiber gekapert und geändert, und es werden Anzeigen eingefügt:

Um die Informationssicherheit der Benutzer zu schützen, ihre Geschäftsinteressen zu schützen und die Angriffsfläche zu verringern, müssen wir die Sicherheit der Kommunikationskanäle gewährleisten Verwenden Sie HTTPS, das einfach zu entwickeln ist.

HTTPS-Kommunikationsprinzip

HTTPS ist HTTP über SSL/TLS, HTTP ist das Protokoll der Anwendungsschicht, TCP ist das Protokoll der Transportschicht, zwischen der Anwendungsschicht und dem Transport Schicht, eine sichere Socket-Schicht SSL/TLS hinzugefügt:

Wie in der Abbildung oben gezeigt, verfügt HTTPS über eine zusätzliche Schicht Im Vergleich zu HTTP ist die SSL/TLS-Schicht für die Aushandlung des Verschlüsselungs- und Entschlüsselungsalgorithmus, den Schlüsselaustausch und den Aufbau von Kommunikationsverbindungen zwischen dem Client und dem Server verantwortlich.

HTTPS erfordert einen Handshake zwischen dem Client (Browser) und dem Server (Website), bevor Daten übertragen werden. Während des Handshake-Prozesses werden die Passwortinformationen für beide Parteien zur Verschlüsselung der übertragenen Daten gespeichert gegründet. Das TLS/SSL-Protokoll ist nicht nur eine Reihe verschlüsselter Übertragungsprotokolle, sondern auch ein sorgfältig von einem Künstler entworfenes Kunstwerk. TLS/SSL verwendet asymmetrische Verschlüsselung, symmetrische Verschlüsselung und HASH-Algorithmen. Der Handshake-Prozess ist wie folgt:

(1).client_hello

Der Client initiiert eine Anfrage und überträgt die Anfrageinformationen im Klartext. einschließlich Versionsinformationen und Verschlüsselungssuite. Die relevanten Informationen lauten wie folgt:

• Die höchste unterstützte TSL-Protokollversion , von niedrig nach hoch, SSLv2 SSLv3 TLSv1 TLSv1 .1 TLSv1.2, Versionen niedriger als TLSv1 werden grundsätzlich nicht mehr verwendet

• Liste der vom Client unterstützten Verschlüsselungssammlungen, jede Verschlüsselung Suite entspricht den Cipher Suites im bisherigen TLS-Prinzip. Eine Kombination aus vier Funktionen: Authentifizierungsalgorithmus Au (Identitätsüberprüfung), Schlüsselaustauschalgorithmus KeyExchange (Schlüsselaushandlung), symmetrischer Verschlüsselungsalgorithmus Enc (Informationsverschlüsselung) und Information Digest Mac (Integritätsüberprüfung). ;

• Liste der unterstützten Komprimierungsmethoden, die für die anschließende Informationskomprimierung und -übertragung verwendet werden

• Zufallszahl random_C, die für die anschließende Schlüsselgenerierung verwendet wird; ;

• Erweiterungsfelderweiterungen, die relevante Parameter von Protokollen und Algorithmen sowie andere Hilfsinformationen usw. unterstützen. Common SNI ist ein Erweiterungsfeld, und die Rolle dieses Felds wird später separat besprochen .

(2).server_hello+server_certificate+sever_hello_done

• server_hello, der Server gibt die Ergebnisse der Verhandlungsinformationen zurück, einschließlich der ausgewählten Protokollversion Verwenden Sie die Version, die ausgewählte Verschlüsselungssuite, die ausgewählte Komprimierungsmethode für den Komprimierungsalgorithmus, die Zufallszahl random_S usw., wobei die Zufallszahl für die nachfolgende Schlüsselaushandlung verwendet wird

• server_certificates, server-; Nebenkonfiguration Entsprechende Zertifikatskette, die zur Identitätsüberprüfung und zum Schlüsselaustausch verwendet wird; • server_hello_done, benachrichtigt den Client, dass die server_hello-Informationen gesendet wurden; 🎜>( 3).Zertifikatsüberprüfung

Wenn die Überprüfung bestanden wird, erfolgt eine anschließende Kommunikation. Andernfalls werden Eingabeaufforderungen und Vorgänge durchgeführt Die Überprüfung der Legalität umfasst Folgendes:

• Der vertrauenswürdige Zertifikatspfad von [Zertifikatskette], die Methode ist wie oben erwähnt;

• Unabhängig davon, ob das Zertifikat widerrufen wurde oder nicht, gibt es zwei Methoden: Offline-CRL und Online-OCSP. Verschiedene Clients verhalten sich unterschiedlich;

• Gültigkeitsdatum, ob Das Zertifikat befindet sich im gültigen Zeitbereich.

• Domänenname, Überprüfung, ob der Domänenname des Zertifikats mit dem aktuellen Zugriffsdomänennamen übereinstimmt, und anschließende Analyse der Übereinstimmungsregeln 🎜>

(4 ).client_key_exchange+change_cipher_spec+encrypted_handshake_message

(a) client_key_exchange, nach bestandener Legalitätsprüfung berechnet und generiert der Client eine Zufallszahl. Master, verschlüsselt es mit dem öffentlichen Schlüssel des Zertifikats und sendet es an den Server

(b) Zu diesem Zeitpunkt hat der Client alle Informationen erhalten, die zur Berechnung des Aushandlungsschlüssels erforderlich sind: zwei Klartext-Zufallszahlen random_C und random_S und der durch eigene Berechnung generierte Pre-Master;

enc_key=Fuc(random_C, random_S, Pre-Master)

(c) change_cipher_spec, der Client benachrichtigt den Server zur Nachverfolgung. Alle Kommunikationen verwenden ausgehandelte Kommunikationsschlüssel und Verschlüsselungsalgorithmen für verschlüsselte Kommunikation

(d) Encrypted_handshake_message , kombiniert die Hash-Werte aller vorherigen Kommunikationsparameter und andere verwandte Informationen, um ein Datenelement zu generieren. Das ausgehandelte Schlüsselsitzungsgeheimnis wird mit dem Algorithmus verschlüsselt und dann zur Daten- und Handshake-Überprüfung an den Server gesendet 🎜>

(5).change_cipher_spec+encrypted_handshake_message

(a) Der Server entschlüsselt die verschlüsselten Pre-Master-Daten mit dem privaten Schlüssel und berechnet den Verhandlungsschlüssel basierend auf den beiden zuvor ausgetauschten Klartext-Zufallszahlen random_C und random_S: enc_key=Fuc(random_C, random_S, Pre-Master);

(b) Berechnen Sie den Hash-Wert aller zuvor empfangenen Nachrichten, Entschlüsseln Sie dann die vom Client gesendete verschlüsselte Handshake-Nachricht und überprüfen Sie die Richtigkeit der Daten und des Schlüssels.

(c) change_cipher_spec. Nach bestandener Überprüfung sendet der Server auch change_cipher_spec, um den Client zu informieren dass nachfolgende Kommunikationen den ausgehandelten Schlüssel und Algorithmus für die verschlüsselte Kommunikation verwenden werden; Der ausgehandelte Schlüssel enc_key und der Algorithmus werden an den Client gesendet.

(6) Der Handshake wird beendet aller empfangenen Nachrichten, entschlüsselt die verschlüsselte_Handshake_Nachricht mit dem ausgehandelten Schlüssel und überprüft die vom Server gesendeten Daten und Schlüssel. Wenn die Überprüfung erfolgreich ist, ist der Handshake abgeschlossen

(7) . Verschlüsselte Kommunikation

Verwenden Sie ausgehandelte Schlüssel und Algorithmen für die verschlüsselte Kommunikation. Das Zeitdiagramm lautet wie folgt:

Verifizierungszertifikat

Bei der Zertifikatsüberprüfung überprüft der Client das vom Server gesendete Zertifikat unten im Detail Arbeit wurde erledigt

Überprüfen Sie den Aussteller und den Gültigkeitszeitraum

Überprüfen Sie, ob er in der Vertrauensliste enthalten ist

2. Überprüfen Sie die Rechtmäßigkeit

Bei der Überprüfung des Zertifikats liest der Client die relevanten Klartextinformationen im Zertifikat und verwendet zur Berechnung dieselbe Hash-Funktion Die Informationen auswerten und dann den öffentlichen Schlüssel der entsprechenden Zertifizierungsstelle (lokal abgerufen) verwenden, um die Signaturdaten zu entschlüsseln und die Informationsauswertung des Zertifikats zu vergleichen. Wenn sie konsistent sind, kann die Legitimität des Zertifikats bestätigt werden. der öffentliche Schlüssel ist legitim;

Zertifikatsinhalt:

Öffentlicher Schlüssel des Antragstellers, organisatorische Informationen und persönliche Informationen des Antragstellers, CA-Informationen der ausstellenden Behörde, Gültigkeit Uhrzeit, Zertifikatsseriennummer und andere Informationen im Klartext, gleichzeitig enthält eine Signatur

Signaturgenerierung: Verwenden Sie eine Hash-Funktion, um den Informationsauszug der öffentlichen Klartextinformationen zu berechnen. Verwenden Sie dann den privaten Schlüssel der Zertifizierungsstelle, um den Informationsauszug zu verschlüsseln, und der Chiffretext ist die Signatur.

 


Tipps;

1. Der Client verwendet den vom Server gesendeten öffentlichen Schlüssel, um die Daten zu verschlüsseln, und sendet die verschlüsselten Daten an den Server. Der Server verwendet den privaten Schlüssel zum Entschlüsseln, was einer asymmetrischen Verschlüsselung entspricht >

2. Wenn sowohl Client als auch Server den Aushandlungsschlüssel enc_key beherrschen, verwenden beide Parteien den Schlüssel zum Verschlüsseln und Entschlüsseln, was einer symmetrischen Verschlüsselung entspricht

Übersicht über Verschlüsselungsalgorithmen

Die Funktionsimplementierung von TLS/SSL basiert hauptsächlich auf drei Arten grundlegender Algorithmen: Hash-Funktion Hash, symmetrische Verschlüsselung und asymmetrische Verschlüsselung, die verwendet werden asymmetrische Verschlüsselung zur Identitätsauthentifizierung und Schlüsselaushandlung. Der symmetrische Verschlüsselungsalgorithmus verwendet den ausgehandelten Schlüssel zum Verschlüsseln von Daten und überprüft die Integrität der Informationen anhand der Hash-Funktion.


1. Symmetrische Verschlüsselung

Es gibt zwei Arten: Streaming und Gruppierung. Für die Verschlüsselung und Entschlüsselung wird derselbe Schlüssel verwendet.

Zum Beispiel: DES, AES-GCM, ChaCha20-Poly1305 usw.

2. Asymmetrische Verschlüsselung

Der für die Verschlüsselung verwendete Schlüssel und der für die Entschlüsselung verwendete Schlüssel sind unterschiedlich und werden jeweils als öffentlicher Schlüssel, privater Schlüssel und öffentlicher Schlüssel bezeichnet Der Algorithmus ist öffentlich und der private Schlüssel wird geheim gehalten. Der asymmetrische Verschlüsselungsalgorithmus weist eine geringe Leistung auf, ist aber sehr sicher. Aufgrund seiner Verschlüsselungseigenschaften ist auch die Länge der Daten, die der asymmetrische Verschlüsselungsalgorithmus verschlüsseln kann, begrenzt.

Zum Beispiel: RSA, DSA, ECDSA, DH, ECDHE

3. Hash-Algorithmus

Konvertieren Sie Informationen beliebiger Länge in einen kürzeren Wert fester Länge. Normalerweise ist ihre Länge viel kleiner als die Informationen und der Algorithmus ist irreversibel.

Zum Beispiel: MD5, SHA-1, SHA-2, SHA-256 usw.

Digitale Signatur

Eine Signatur besteht darin, nach den Informationen einen Inhalt (den Wert der Informationen nach dem Hashing) hinzuzufügen, der beweisen kann, dass die Informationen nicht geändert wurden. Der Hash-Wert wird in der Regel verschlüsselt (also signiert) und dann zusammen mit der Nachricht versendet, um sicherzustellen, dass der Hash-Wert nicht verändert wird.

Zwei-Wege-Authentifizierung:

Der Server kann auch eine Verifizierung des Clients anfordern, das heißt, der Client kann dies tun Senden Sie in Prozess 2 die Informationen „client_certificate_request“. In Prozess 4 werden zuerst die Informationen „client_certificate“ und „certificate_verify_message“ gesendet. Die Verifizierungsmethode des Zertifikats ist grundsätzlich dieselbe. Der Server kann den entsprechenden öffentlichen Schlüssel verwenden, um ihn zu entschlüsseln und zu überprüfen.

Das obige ist der detaillierte Inhalt vonWas ist das Prinzip der HTTPS-Kommunikation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn