Guten Morgen allerseits, ich habe meinen Artikel eine Weile nicht aktualisiert. Tatsächlich blieb ich während der Epidemie mehr als einen Monat zu Hause und konnte nicht ausgehen, sodass ich viel Zeit hatte. Diese Zeit habe ich auch genutzt, um mehrere neue Artikel zu schreiben. Da jedoch die meisten dieser neu verfassten Artikel mit dem Inhalt des neuen Buches übereinstimmen und sich die Veröffentlichung meines neuen Buches aufgrund der Auswirkungen der Epidemie verzögert hat, konnten diese Artikel nicht veröffentlicht werden, und ich bin sehr besorgt. Ich hoffe, dass die Epidemie bald endet und alle so schnell wie möglich zum normalen Leben zurückkehren können. Deshalb werde ich heute einen technischen Artikel veröffentlichen, der nichts mit Android zu tun hat. Die https-Technologie wird mittlerweile weithin verwendet. Da führende Internetunternehmen wie Apple und Google die Verwendung von https in ihren Betriebssystemen, Browsern und anderen gängigen Produkten vorgeschrieben haben, beginnt für die Abschaffung von http offiziell der Countdown. Tatsächlich gibt es bei https nichts Besonderes, was Client-Entwickler beachten müssen, da sich der Code nicht vom Schreiben von http-Anfragen unterscheidet. Aber genau aus diesem Grund verstehen viele Client-Entwickler https nicht. Sie wissen nur, dass es sich um eine sichere, verschlüsselte Netzwerkübertragung handelt, haben aber keine Ahnung von der spezifischen Funktionsweise. Müssen Client-Entwickler https also wirklich verstehen? Ich denke, es ist immer noch notwendig. Die Beherrschung des Arbeitsprinzips von https kann Ihnen helfen, einige bei Ihrer Arbeit auftretende Probleme besser zu verstehen und zu lösen. Darüber hinaus stellen viele Unternehmen im Vorstellungsgespräch auch gerne einige https-bezogene Fragen. Wenn Sie davon keine Ahnung haben, werden Sie hier leicht aussortiert. Als ich etwas über https lernte, habe ich viele Informationen online nachgeschlagen, aber die meisten Artikel waren nicht leicht zu verstehen, was bei vielen Leuten Angst vor https auslöste. Ich denke, um zu verstehen, wie https funktioniert, muss man nicht unbedingt alle Details kennen (viele Artikel im Internet sind schwer zu verstehen, weil sie zu detailliert geschrieben sind). Tatsächlich muss man nur den gesamten Arbeitsablauf verstehen und herausfinden, warum er die Sicherheit der Netzwerkkommunikation gewährleisten kann. Deshalb werde ich Ihnen heute die verständlichste Erklärung zu https geben. Bevor wir offiziell mit der Erklärung von https beginnen, müssen wir zunächst zwei Konzepte klären: Was ist symmetrische Verschlüsselung und was ist asymmetrische Verschlüsselung? Diese beiden Konzepte gehören zum Grundwissen der Kryptographie und sind eigentlich sehr leicht zu verstehen. Die symmetrische Verschlüsselung ist relativ einfach, d. h. Client und Server teilen sich denselben Schlüssel, mit dem ein Inhalt verschlüsselt und auch entschlüsselt werden kann. Der Vorteil der symmetrischen Verschlüsselung liegt in der hohen Effizienz bei Ver- und Entschlüsselung, allerdings kann es auch zu Sicherheitsproblemen kommen, da die Gefahr besteht, dass der auf dem Client gespeicherte Schlüssel gestohlen wird. Repräsentative Algorithmen für die symmetrische Verschlüsselung sind AES, DES usw. Die asymmetrische Verschlüsselung ist etwas komplizierter. Sie unterteilt den Schlüssel in zwei Typen: öffentlichen und privaten Schlüssel. Der öffentliche Schlüssel wird normalerweise auf dem Client gespeichert und der private Schlüssel normalerweise auf dem Server. Mit dem öffentlichen Schlüssel verschlüsselte Daten können nur mit dem privaten Schlüssel entschlüsselt werden und umgekehrt können mit dem privaten Schlüssel verschlüsselte Daten nur mit dem öffentlichen Schlüssel entschlüsselt werden. Der Vorteil der asymmetrischen Verschlüsselung besteht in ihrer höheren Sicherheit, da die vom Client an den Server gesendeten verschlüsselten Informationen nur mit dem privaten Schlüssel des Servers entschlüsselt werden können und Sie sich daher keine Sorgen machen müssen, dass sie von anderen geknackt werden. Der Nachteil besteht jedoch darin, dass die Effizienz der Ver- und Entschlüsselung viel schlechter ist als bei der symmetrischen Verschlüsselung. Repräsentative Algorithmen der asymmetrischen Verschlüsselung sind RSA, ElGamal usw. Nachdem wir diese beiden Konzepte beherrschen, können wir mit dem Erlernen von https beginnen. Vorab eine Frage, die auch in Vorstellungsgesprächen häufig gestellt wird: Verwendet https zur Gewährleistung der Sicherheit bei der Datenübertragung eine symmetrische oder eine asymmetrische Verschlüsselung? Nach dem Studium dieses Artikels kennen Sie die Antwort. Schauen wir uns zunächst die Probleme an, die bei der herkömmlichen http-Methode während der Netzwerkübertragung auftreten. Da die Informationen bei der Datenübertragung im Klartext vorliegen, können sie leicht überwacht und gestohlen werden. Das schematische Diagramm sieht wie folgt aus: Darüber hinaus besteht die Möglichkeit, dass die übertragenen Daten von Personen mit Hintergedanken manipuliert werden, was zu Inkonsistenzen zwischen den vom Browser gesendeten und empfangenen Inhalten und denen der Website führen kann. Das schematische Diagramm sieht wie folgt aus: Mit anderen Worten: Die Verwendung von http zur Datenübertragung birgt mindestens zwei große Risiken: die Überwachung und die Manipulation der Daten. Daher ist http ein unsicheres Übertragungsprotokoll. Nun, jeder sollte wissen, dass die Lösung darin besteht, https zu verwenden. Lassen Sie uns jedoch zunächst darüber nachdenken, wie die Sicherheit der http-Übertragung gewährleistet werden kann. Anschließend können wir das Funktionsprinzip von https Schritt für Schritt verstehen. Da es nicht sicher ist, Daten im Klartext über das Netzwerk zu übertragen, müssen wir die Daten offensichtlich verschlüsseln. Wie bereits erwähnt, gibt es zwei Hauptverschlüsselungsmethoden: symmetrische Verschlüsselung und asymmetrische Verschlüsselung. Der Vorteil der symmetrischen Verschlüsselung liegt in ihrer hohen Effizienz bei der Verschlüsselung und Entschlüsselung. Wenn wir Daten im Internet übertragen, legen wir großen Wert auf Effizienz, daher ist es offensichtlich, dass hier eine symmetrische Verschlüsselung verwendet werden sollte. Das schematische Diagramm sieht wie folgt aus: Wie Sie sehen, sind alle Daten, die wir im Internet übertragen, verschlüsselt. Daher müssen wir keine Angst haben, dass sie von Lauschern abgefangen werden, da diese den Originaltext nicht kennen können. Nachdem der Browser den Geheimtext erhalten hat, muss er zum Entschlüsseln der Daten nur noch denselben Schlüssel wie die Website verwenden. Dieser Arbeitsmechanismus scheint die Sicherheit der Datenübertragung zu gewährleisten, es gibt jedoch eine große Lücke: Wie einigen sich Browser und Website darauf, welcher Schlüssel verwendet werden soll? Dies ist in der Computerwelt definitiv ein schwieriges Problem. Normalerweise müssen der Browser und die Website denselben Schlüssel zum Verschlüsseln und Entschlüsseln von Daten verwenden. Aber wie kann der Schlüssel nur beiden bekannt sein und nicht etwaigen Lauschern? Sie werden feststellen, dass, egal wie es vereinbart wird, der erste Kommunikationsvorgang zwischen dem Browser und der Website im Klartext erfolgen muss. Dies bedeutet, dass wir mit dem oben beschriebenen Arbeitsablauf immer noch nicht in der Lage sind, einen sicheren symmetrischen Verschlüsselungsschlüssel zu erstellen. Daher scheint es, dass die ausschließliche Verwendung symmetrischer Verschlüsselung dieses Problem nicht lösen wird. Derzeit müssen wir eine asymmetrische Verschlüsselung einführen, um das Problem der fehlenden sicheren Erstellung symmetrischer Verschlüsselungsschlüssel zu lösen. Warum kann asymmetrische Verschlüsselung dieses Problem lösen? Lassen Sie es uns anhand eines schematischen Diagramms verstehen: Wie Sie sehen, können wir einen symmetrischen Verschlüsselungsschlüssel auf sichere Weise erstellen, indem wir ihn vom Browser nach dem Zufallsprinzip generieren lassen. Der generierte Schlüssel kann jedoch nicht direkt im Netzwerk übertragen werden. Stattdessen muss er mit dem von der Website bereitgestellten öffentlichen Schlüssel asymmetrisch verschlüsselt werden. Da mit einem öffentlichen Schlüssel verschlüsselte Daten nur mit einem privaten Schlüssel entschlüsselt werden können, ist die Übertragung dieser Daten über das Netzwerk absolut sicher. Nach dem Empfang der Nachricht muss die Website sie nur mit dem privaten Schlüssel entschlüsseln und den vom Browser generierten Schlüssel abrufen. Darüber hinaus ist bei dieser Methode eine asymmetrische Verschlüsselung nur erforderlich, wenn sich Browser und Website zunächst auf den Schlüssel einigen. Sobald die Website den vom Browser zufällig generierten Schlüssel erhält, können beide Parteien symmetrische Verschlüsselung zur Kommunikation verwenden, sodass die Arbeitseffizienz sehr hoch ist. Glauben Sie also, dass der oben beschriebene Funktionsmechanismus perfekt ist? Eigentlich nicht, denn uns fehlt noch ein ganz entscheidender Schritt: Wie kommt der Browser an den öffentlichen Schlüssel der Website? Obwohl es sich beim öffentlichen Schlüssel um öffentliche Daten handelt und er ohne Angst vor Abhören über das Internet übertragen werden kann, was passiert, wenn der öffentliche Schlüssel von anderen manipuliert wird? Das schematische Diagramm sieht wie folgt aus: Mit anderen Worten: Wenn wir den öffentlichen Schlüssel einer Website aus dem Internet beziehen, besteht das Risiko, dass der öffentliche Schlüssel manipuliert wird. Wenn Sie zum Verschlüsseln von Daten einen gefälschten öffentlichen Schlüssel verwenden, können diese von anderen mit einem gefälschten privaten Schlüssel entschlüsselt werden – mit katastrophalen Folgen. Der Lösungsansatz scheint hier in einer Sackgasse gelandet zu sein, denn an den öffentlichen Schlüssel einer Website kommen wir auf keinen Fall sicher heran und es ist uns offensichtlich unmöglich, die öffentlichen Schlüssel aller Websites der Welt im Betriebssystem vorzubelegen. Um die Sackgasse zu überwinden, muss jetzt ein neues Konzept eingeführt werden: die CA-Agentur. CA-Organisationen werden speziell zum Ausstellen digitaler Zertifikate für verschiedene Websites verwendet und stellen so sicher, dass Browser die öffentlichen Schlüssel verschiedener Websites sicher abrufen können. Wie also bewältigen CA-Organisationen diese schwierige Aufgabe? Beginnen wir mit der Analyse Schritt für Schritt. Zunächst müssen wir als Website-Administrator einen Antrag bei der CA-Agentur stellen und unseren öffentlichen Schlüssel bei der CA-Agentur einreichen. Die CA-Organisation verwendet den von uns übermittelten öffentlichen Schlüssel sowie eine Reihe weiterer Informationen, wie etwa den Domänennamen der Website, die Gültigkeitsdauer usw., um ein Zertifikat zu erstellen. Nachdem das Zertifikat erstellt wurde, verschlüsselt die Zertifizierungsstelle es mit ihrem eigenen privaten Schlüssel und gibt die verschlüsselten Daten an uns zurück. Wir müssen die erhaltenen verschlüsselten Daten nur auf dem Website-Server konfigurieren. Wenn dann ein Browser unsere Website anfordert, werden zunächst die verschlüsselten Daten an den Browser zurückgegeben und der Browser verwendet den öffentlichen Schlüssel der Zertifizierungsstelle, um die Daten zu entschlüsseln. Bei einer erfolgreichen Entschlüsselung können wir uns das von der CA-Organisation ausgestellte Zertifikat für unsere Website holen, welches natürlich auch den öffentlichen Schlüssel unserer Website beinhaltet. Sie können die detaillierten Informationen des Zertifikats anzeigen, indem Sie in der Adressleiste des Browsers auf das kleine Schlosssymbol links neben der URL klicken, wie in der folgenden Abbildung gezeigt. Nach Erhalt des öffentlichen Schlüssels ist der folgende Vorgang derselbe wie im Diagramm gerade beschrieben. Wenn die Entschlüsselung fehlschlägt, bedeutet dies, dass diese verschlüsselten Daten nicht von einer legitimen CA-Organisation mit einem privaten Schlüssel verschlüsselt wurden und möglicherweise manipuliert wurden. Dann wird im Browser eine bekannte abnormale Schnittstelle angezeigt, wie in der folgenden Abbildung dargestellt. Dann fragen Sie sich vielleicht: Ist es bei einer CA-Agentur wirklich sicher? Wir müssen den öffentlichen Schlüssel der Zertifizierungsstelle verwenden, um Daten auf der Browserseite zu entschlüsseln. Wie können wir also den öffentlichen Schlüssel der Zertifizierungsstelle sicher erhalten? Dieses Problem lässt sich leicht lösen, da es weltweit unendlich viele Websites, aber nur wenige CA-Agenturen gibt. In jedem echten Betriebssystem sind die öffentlichen Schlüssel aller gängigen CA-Organisationen integriert, sodass wir sie nicht separat abrufen müssen. Beim Entschlüsseln müssen wir nur die öffentlichen Schlüssel aller im System integrierten CA-Organisationen durchlaufen. Solange ein öffentlicher Schlüssel die Daten normal entschlüsseln kann, ist dies legal. Die integrierten Zertifikate des Windows-Systems sind wie folgt: Doch auch wenn die Daten mit dem öffentlichen Schlüssel der Zertifizierungsstelle normal entschlüsselt werden können, gibt es beim aktuellen Verfahren immer noch Probleme. Da jede Zertifizierungsstelle Zertifikate für Tausende von Websites ausstellt, kann ein Angreifer, wenn er weiß, dass abc.com ein Zertifikat einer bestimmten Zertifizierungsstelle verwendet, auch bei dieser Zertifizierungsstelle ein gültiges Zertifikat beantragen und dann bei der Anforderung von abc.com durch den Browser die zurückgegebenen verschlüsselten Zertifikatsdaten ersetzen. Das schematische Diagramm sieht wie folgt aus: Da das vom Angreifer beantragte Zertifikat ebenfalls von einer regulären CA-Organisation erstellt wurde, ist ersichtlich, dass diese verschlüsselten Daten natürlich erfolgreich entschlüsselt werden können. Aus diesem Grund müssen alle CA-Organisationen neben dem öffentlichen Schlüssel der Website auch viele andere Daten in die von ihnen erstellten Zertifikate aufnehmen, um die Überprüfung zu erleichtern. Beispielsweise ist der Domänenname der Website eines der wichtigen Daten. Wenn im gleichen Beispiel der Domänenname der Website zum Zertifikat hinzugefügt wird, geht der Angreifer mit leeren Händen zurück. Denn selbst wenn die verschlüsselten Daten erfolgreich entschlüsselt werden können, stimmt der im endgültigen entschlüsselten Zertifikat enthaltene Domänenname nicht mit dem vom Browser angeforderten Domänennamen überein, sodass der Browser dennoch eine abnormale Benutzeroberfläche anzeigt. Das schematische Diagramm sieht wie folgt aus: Nun, mit der hier entwickelten Lösung ist unsere Netzwerkübertragung tatsächlich sicher genug. Natürlich funktioniert https tatsächlich so. Kommen wir also zurück zur ursprünglichen Frage: Verwendet https symmetrische oder asymmetrische Verschlüsselung? Die Antwort liegt auf der Hand. https verwendet eine Kombination aus symmetrischer und asymmetrischer Verschlüsselung. Wenn Sie noch tiefer in die Materie eintauchen möchten, gibt es natürlich viele Details in https, die es zu erkunden lohnt. Wenn ich jedoch weiterschreibe, ist dieser Artikel möglicherweise nicht mehr die einfachste Erklärung von https, daher denke ich, dass es an der Zeit ist, hier aufzuhören. Wenn Sie wie ich hauptsächlich in der clientseitigen Entwicklung tätig sind, reicht Ihr umfangreiches Wissen über https aus, um die üblichen Vorstellungsgespräche und Probleme bei der Arbeit zu bewältigen. Dies ist das Ende dieses Artikels über die am einfachsten zu verstehende HTTPS-Erklärung. Weitere relevante HTTPS-Erklärungen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Implementierung einer einfachen Web-Uhr mit JavaScript
Dieser Artikel beschreibt anhand von Beispielen d...
Redis ist eine Open-Source-NoSQL-Datenbank, die i...
Vorwort Dieser Artikel ist ziemlich ausführlich u...
Schritt 1: Bestätigen Sie die Architektur Ihres S...
1. Zunächst müssen Sie wissen, was den vertikalen ...
Voraussetzung: Celery wird in Django eingeführt. ...
Wie wir alle wissen, können wir in Linux ohne den...
Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...
Inhaltsverzeichnis Fertighaus So erstellen Sie ei...
Inhaltsverzeichnis 1. Einleitung 2. Mehrere wicht...
Überblick Bei kleinen und mittelgroßen Projekten ...
Beim Installieren von Paketen auf einem Ubuntu-Se...
Wir alle wissen, dass Docker-Container voneinande...
Geben Sie zunächst einen Code ein für(int i=0;i&l...
Nach Funktion sortierenNN: Gibt an, welche frühere...