Heim > System-Tutorial > LINUX > Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

PHPz
Freigeben: 2024-06-16 10:52:26
Original
362 Leute haben es durchsucht
1. HTTPS-Verbindungsprozess und Man-in-the-Middle-Angriffsprinzip

https-Protokoll ist http+ssl-Protokoll. Der Verbindungsprozess ist in der folgenden Abbildung dargestellt:
Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

1.https-Anfrage

Der Client sendet eine https-Anfrage an den Server;

2. Öffentliche und private Schlüssel generieren

Nach Erhalt der Anfrage generiert der Server den öffentlichen Schlüssel und den privaten Schlüssel. Der öffentliche Schlüssel entspricht einem Schloss und der private Schlüssel entspricht einem Schlüssel. Nur der private Schlüssel kann den durch den öffentlichen Schlüssel gesperrten Inhalt öffnen

3. Geben Sie den öffentlichen Schlüssel zurück
Der Server gibt den öffentlichen Schlüssel (Zertifikat) an den Client zurück. Der öffentliche Schlüssel enthält viele Informationen, wie z. B. die ausstellende Behörde des Zertifikats, die Ablaufzeit usw.;

4. Öffentlicher Schlüssel zur Kundenüberprüfung Nachdem der Client den öffentlichen Schlüssel erhalten hat, überprüft er zunächst, ob er gültig ist, z. B. die ausstellende Behörde oder die Ablaufzeit usw. Wenn ein Problem festgestellt wird, wird eine Ausnahme ausgelöst, die darauf hinweist, dass ein Problem mit dem Zertifikat vorliegt . Wenn es kein Problem gibt, generieren Sie einen Zufallswert als Schlüssel des Clients und verschlüsseln Sie ihn dann mit dem öffentlichen Schlüssel des Servers

5.Kundenschlüssel senden Der Client verschlüsselt den Schlüssel mit dem öffentlichen Schlüssel des Servers und sendet ihn dann an den Server.

6. Der Server erhält den Schlüssel und verschlüsselt den Inhalt symmetrisch Der Server empfängt den verschlüsselten Schlüssel und entschlüsselt ihn dann mit dem privaten Schlüssel, um den Schlüssel des Clients zu erhalten. Anschließend verschlüsselt der Server den zu übertragenden Inhalt und den Schlüssel des Clients symmetrisch, sodass er nicht wissen kann, was vorliegt übermittelt.

7. Verschlüsselte Übertragung Der Server übermittelt den verschlüsselten Inhalt an den Client.

8. Holen Sie sich verschlüsselte Inhalte und entschlüsseln Sie sie Nachdem der Client den verschlüsselten Inhalt erhalten hat, verwendet er den zuvor generierten Schlüssel, um ihn zu entschlüsseln und den Inhalt abzurufen.

Man-in-the-Middle-Entführungsangriff
https ist nicht absolut sicher. Wie in der Abbildung unten gezeigt, handelt es sich um einen Man-in-the-Middle-Hijacking-Angriff. Der Man-in-the-Middle kann alle Kommunikationsinhalte zwischen dem Client und dem Server abrufen.


Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -HijackingsDer Mittelsmann fängt die vom Client an den Server gesendete Anfrage ab und gibt dann vor, der Client zu sein, um mit dem Server zu kommunizieren. Er sendet den vom Server an den Client zurückgegebenen Inhalt und gibt vor, der Server zu sein, mit dem er kommuniziert der Kunde.

Auf diese Weise können alle Inhalte der Kommunikation zwischen Client und Server abgerufen werden.

Um einen Man-in-the-Middle-Angriff nutzen zu können, muss der Client dem Zertifikat des Mittelsmanns vertrauen. Wenn der Client diesem nicht vertraut, funktioniert diese Angriffsmethode nicht.

2. Prävention von Man-in-the-Middle-Angriffen

Der Grund für Man-in-the-Middle-Hijacking besteht darin, dass das Serverzertifikat und der Domänenname nicht überprüft werden oder die Überprüfung unvollständig ist. Der Einfachheit halber wird die Standardüberprüfungsmethode des Open-Source-Frameworks direkt für https-Anfragen verwendet

Wie Volley

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

OKhttp3.0

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

Präventionsmethoden:

Es gibt zwei Präventionsmethoden

1. Bei Apps mit relativ hohen Sicherheitsanforderungen kann das Zertifikat durch Voreinbettung auf der Client-Seite gesperrt werden. Die Kommunikation ist jedoch nur dann zulässig, wenn das Client-Zertifikat und das Server-Zertifikat vollständig konsistent sind Bei dieser Methode besteht ein Problem, nämlich das Zertifikatablaufproblem. Da das Zertifikat eine bestimmte Gültigkeitsdauer hat, kann es nach Ablauf des vorab eingebetteten Zertifikats nur dadurch gelöst werden, dass die Aktualisierung erzwungen wird oder der Benutzer das Zertifikat herunterladen muss.

Nehmen Sie Volley als Beispiel: Die Verifizierung wird wie folgt implementiert

Erstellen Sie SSLSocketFactory über ein vorab eingebettetes Zertifikat;

private static SSLSocketFactory buildSSLSocketFactory(Context context,
                                                      int certRawResId) {
    KeyStore keyStore = null;
    try {
        keyStore = buildKeyStore(context, certRawResId);
    } catch (KeyStoreException e) {
        e.printStackTrace();
    } catch (CertificateException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
    TrustManagerFactory tmf = null;
    try {
        tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
        tmf.init(keyStore);

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (KeyStoreException e) {
        e.printStackTrace();
    }

    SSLContext sslContext = null;
    try {
        sslContext = SSLContext.getInstance("TLS");
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    try {
        sslContext.init(null, tmf.getTrustManagers(), null);
    } catch (KeyManagementException e) {
        e.printStackTrace();
    }

    return sslContext.getSocketFactory();
Nach dem Login kopieren
Erstellen Sie eine Verbindung, die durch SSL und Domänennamen verifiziert wurde


Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

2 Bei Apps mit allgemeinen Sicherheitsanforderungen können Sie den Domänennamen, die Gültigkeit des Zertifikats, die Informationen zum Zertifikatsschlüssel und die Zertifikatskette überprüfen

Nehmen Sie Volley als Beispiel, schreiben Sie die checkServerTrusted-Methode in HTTPSTrustManager neu und aktivieren Sie die starke Überprüfung des Domänennamens

Drei HTTPS-Sicherheit für Webview
Viele Anwendungen verwenden derzeit Webview zum Laden von H5-Seiten. Wenn ein Zertifikatsfehler auftritt, rufen Sie handler.proceed () auf. ignoriert den Fehler und lädt die Seite mit dem Zertifikatsproblem weiter. Wenn handler.cancel() aufgerufen wird, kann das Laden der Seite mit dem Zertifikatsproblem abgebrochen werden Wird nach Risiken gefragt und lässt den Benutzer entscheiden, ob er laden möchte oder nicht. Wenn die Sicherheit erforderlich ist, kann das Laden der Seite direkt beendet werden, wodurch der Benutzer darauf hingewiesen wird, dass die Netzwerkumgebung riskant ist:

Detaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings

Es wird nicht empfohlen, handler.proceed() direkt zu verwenden. Wenn die Webansicht beim Laden von https eine starke Überprüfung des Serverzertifikats erfordert, können Sie HttpsURLConnection verwenden, um das Zertifikat in onPageStarted() stark zu überprüfen, um das Serverzertifikat zu überprüfen. Wenn die Überprüfung nicht erfolgreich ist, beenden Sie das Laden der Webseite. Dies verlangsamt natürlich die Ladegeschwindigkeit der Webseite und erfordert eine weitere Optimierung. Die spezifischen Optimierungsmethoden gehen über den Rahmen dieser Diskussion hinaus und werden hier nicht im Detail erläutert.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des HTTPS-Verbindungsprozesses sowie des Man-in-the-Middle-Angriffs und -Hijackings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:linuxprobe.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage