|
Keil Gerücht veröffentlichte Crusher vor ein paar Tagen: "Wird Internetzugang mit öffentlichem WLAN die Sicherheit von Bankkonten gefährden? Der Artikel führt einige Situationen bei der Nutzung von HTTPS für netzwerkverschlüsselte Übertragungen ein, und der Antwort nach gibt es weiterhin Streitigkeiten. Da das Internet immer beliebter wird, wird die Anwendung immer verbreiteter, und einige Netzwerksicherheitsprobleme werden auch immer mehr Aufmerksamkeit von Internetnutzern auf sich ziehen. Hier sprechen wir über TLS/SSL, das wir oft HTTPS nennen, vom Prinzip bis zur eigentlichen Anwendung, um zu sehen, was es ist, und welche Probleme bei der Verwendung von HTTPS und verwandten Sicherheitstechniken beachtet werden sollten. Cybersicherheit ist ein ganzheitliches Ereignis, das die Sicherheit von Personal Computern, Protokollen, Datenübertragung sowie Softwareentwicklungsunternehmen und -websites umfasst. Ich hoffe, dass durch die schrittweise Erklärung sicherheitsbezogener Probleme in Zukunft mehr Menschen die Netzwerksicherheit verstehen können, damit sie das Netzwerk sicherer nutzen können. Der Artikel wird lang sein und soll vorerst in drei Teile unterteilt werden: Der erste Teil beschreibt hauptsächlich das Prinzip von HTTPS; Der zweite Teil beschreibt hauptsächlich den Prozess der SSL-Zertifikatsverifizierung und einige Vorsichtsmaßnahmen zur Anwendung. Der dritte Teil stellt einige Beispiele für HTTPS-Angriffe vor. 1. Was ist HTTPS?Bevor wir über HTTPS sprechen, wollen wir darüber sprechen, was HTTP ist, ein Protokoll, das wir normalerweise beim Surfen im Web verwenden. Die vom HTTP-Protokoll übertragenen Daten sind unverschlüsselt, also im Klartext, daher ist es sehr unsicher, private Informationen über das HTTP-Protokoll zu übertragen. Um sicherzustellen, dass diese privaten Daten verschlüsselt und übertragen werden können, entwarf Netscape das SSL-Protokoll (Secure Sockets Layer), das die vom HTTP-Protokoll übertragenen Daten verschlüsselt, womit HTTPS entstand. Die aktuelle Version von SSL ist 3.0, die in RFC 6101 von der IETF (Internet Engineering Task Force) definiert ist, und anschließend aktualisierte die IETF SSL 3.0, was zu TLS (Transport Layer Security) 1.0 führte, definiert in RFC 2246. Tatsächlich ist unser aktuelles HTTPS das TLS-Protokoll, aber da SSL relativ früh auftauchte und von aktuellen Browsern noch unterstützt wird, ist SSL weiterhin gleichbedeutend mit HTTPS, aber ob TLS oder SSL ist, stammt aus dem letzten Jahrhundert, die letzte Version von SSL ist 3.0, und TLS wird uns auch in Zukunft weiterhin Verschlüsselungsdienste bieten. Die aktuelle Version von TLS ist 1.2, definiert in RFC 5246, und wird noch nicht weit verbreitet verwendet. Für Geschichte-Interessierte können Sie sich auf die http://en.wikipedia.org/wiki/Transport_Layer_Security beziehen, die eine detaillierte Beschreibung von TLS/SSL enthält.
2. Ist HTTPS sicher?Die Antwort ist ja, es ist sicher. In den kommenden Wochen wird Google HTTPS für alle lokalen Domains weltweit aktivieren, Nutzer müssen sich nur mit ihrem Google-Konto anmelden, bevor sie suchen, und alle Suchoperationen werden mit dem TLS-Protokoll verschlüsselt, siehe: http://thenextweb.com/google/2012/03/05/google-calls-for-a-more-secure-web-expands-ssl-encryption-to-local-domains/。
3. Wie HTTPS funktioniertHTTPS erfordert einen Handschlag zwischen Client (Browser) und Server (Website), bevor die Daten übertragen werden, und die Passwortinformationen beider Parteien werden während des Handshake-Vorgangs festgelegt. Das TLS/SSL-Protokoll ist nicht nur eine Sammlung verschlüsselter Übertragungsprotokolle, sondern auch ein von Künstlern sorgfältig entworfenes Kunstwerk, das asymmetrische Verschlüsselung, symmetrische Verschlüsselung und HASH-Algorithmen verwendet. Eine einfache Beschreibung des Handschlagprozesses lautet wie folgt:
- Der Browser sendet eine Reihe von Verschlüsselungsregeln, die er unterstützt, an die Website.
- Die Website wählt daraus eine Reihe von Verschlüsselungsalgorithmen und HASH-Algorithmen aus und sendet ihre Identitätsinformationen in Form eines Zertifikats an den Browser zurück. Das Zertifikat enthält Informationen wie die Website-Adresse, den öffentlichen Verschlüsselungsschlüssel und den Aussteller des Zertifikats.
- Nach Erhalt eines Website-Zertifikats tut der Browser Folgendes:
- Überprüfen Sie die Legitimität des Zertifikats (ob die Autorität, die das Zertifikat ausstellt, legitim ist, ob die im Zertifikat enthaltene Website-Adresse mit der besuchten Adresse übereinstimmt usw.), wenn das Zertifikat vertrauenswürdig ist, wird ein kleines Schloss in der Browserleiste angezeigt, andernfalls wird eine Aufforderung gegeben, dass das Zertifikat nicht vertrauenswürdig ist.
- Wenn das Zertifikat vertrauenswürdig ist oder der Benutzer ein nicht vertrauenswürdiges Zertifikat akzeptiert, generiert der Browser eine zufällige Anzahl von Passwörtern und verschlüsselt diese mit dem öffentlichen Schlüssel, der im Zertifikat angegeben ist.
- Die Handshake-Nachricht wird mit dem vereinbarten HASH berechnet, die Nachricht wird mit der generierten Zufallszahl verschlüsselt, und schließlich werden alle zuvor generierten Informationen an die Website gesendet.
4. Nach Erhalt der Daten vom Browser tut die Website Folgendes: - Verwenden Sie Ihren eigenen privaten Schlüssel, um das Passwort zu entschlüsseln, verwenden Sie das Passwort, um die vom Browser gesendete Handshake-Nachricht zu entschlüsseln, und überprüfen Sie, ob der HASH derselbe ist wie der vom Browser gesendete.
- Eine Handshake-Nachricht wird mit einem Passwort verschlüsselt und an den Browser gesendet.
5. Der Browser entschlüsselt und berechnet den HASH der Handshake-Nachricht; wenn dieser mit dem vom Server gesendeten HASH übereinstimmt, endet der Handshake-Prozess, und dann werden alle Kommunikationsdaten durch das zufällig vom vorherigen Browser generierte Passwort und mit dem symmetrischen Verschlüsselungsalgorithmus verschlüsselt.
Hier senden sich Browser und Website gegenseitig eine verschlüsselte Handshake-Nachricht und überprüfen, um sicherzustellen, dass beide Parteien dasselbe Passwort erhalten haben, die Daten normal verschlüsseln und entschlüsseln können und einen Test für die anschließende Übertragung der echten Daten durchführen. Darüber hinaus sind die von HTTPS üblicherweise verwendeten Verschlüsselungs- und HASH-Algorithmen wie folgt: - Asymmetrische Verschlüsselungsalgorithmen: RSA, DSA/DSS
- Symmetrische Verschlüsselungsalgorithmen: AES, RC4, 3DES
- HASH-Algorithmus: MD5, SHA1, SHA256
Dazu gehört, dass der asymmetrische Verschlüsselungsalgorithmus das erzeugte Passwort während des Handshake-Prozesses verschlüsselt, der symmetrische Verschlüsselungsalgorithmus die tatsächlich übertragenen Daten verschlüsselt und der HASH-Algorithmus die Integrität der Daten überprüft. Da das vom Browser generierte Passwort der Schlüssel zur Verschlüsselung der gesamten Daten ist, wird es während der Übertragung mit einem asymmetrischen Verschlüsselungsalgorithmus verschlüsselt. Der asymmetrische Verschlüsselungsalgorithmus erzeugt öffentliche und private Schlüssel, öffentliche Schlüssel können nur zur Verschlüsselung von Daten verwendet werden, sodass sie nach Belieben übertragen werden können, und die privaten Schlüssel der Website werden zur Entschlüsselung der Daten verwendet, sodass die Website ihren privaten Schlüssel sehr sorgfältig aufbewahrt, um Lecks zu verhindern. Jeder Fehler während des TLS-Handshake-Prozesses kann die verschlüsselte Verbindung unterbrechen und so die Übertragung privater Informationen verhindern. Gerade weil HTTPS sehr sicher ist, können Angreifer keinen Ausgangspunkt finden, weshalb sie gefälschte Zertifikate verwenden, um Clients zu täuschen und Klartextinformationen zu erhalten, aber diese Methoden können identifiziert werden, worüber ich in einem weiteren Artikel sprechen werde. Im Jahr 2010 entdeckten Sicherheitsexperten jedoch eine Schwachstelle im Umgang mit dem TLS-1.0-Protokoll: http://www.theregister.co.uk/2011/09/19/beast_exploits_paypal_ssl/ tatsächlich wurde diese Angriffsmethode namens BEAST bereits 2002 von Sicherheitsexperten entdeckt, aber nicht öffentlich gemacht. Microsoft und Google haben diese Schwachstelle behoben. Siehe: http://support.microsoft.com/kb/2643584/en-us https://src.chromium.org/viewvc/chrome?view=rev&revision=90643 Die vereinfachte Version von HTTPS funktioniert ebenfalls in symmetrischer Verschlüsselung vs. asymmetrischer Verschlüsselung. |