Probleme, die CA-Zertifikate verstehen

546
Engineer999

Ich habe falsche Vorstellungen bezüglich CA-Zertifikaten (Certificate Authority). Egal wie viele Dinge ich lese, es ist immer noch nicht völlig klar.

Nehmen wir ein Beispiel: Bob greift auf eine Website zu. Damit eine vertrauenswürdige und verschlüsselte Kommunikation zwischen Bob und der Website stattfinden kann, wird auf der Website zunächst ein digitales Zertifikat an Bob ausgegeben, das einen öffentlichen Schlüssel und andere Informationen enthält.

Bob verwendet dann diesen öffentlichen Schlüssel zum Verschlüsseln der Daten, die er an die Website sendet, und die Website verwendet den entsprechenden privaten Schlüssel, um sie zu entschlüsseln. (Betrachten Sie hier nur die Kommunikation in eine Richtung)

Ein Mann in der Mitte könnte so tun, als wäre er die Website und würde Bob das liefern, was er für ein gültiges digitales Zertifikat hält, und dann laufen die Dinge schrecklich schief.

Wenn die Website eine Zertifizierungsstelle verwendet, um dieses Problem zu überprüfen oder ein eigenes Zertifikat zu erstellen, welche meiner Aussagen ist richtig oder beide sind teilweise richtig? :

1) Bob vergleicht lediglich das von der Website erhaltene digitale Zertifikat mit dem von der Zertifizierungsstelle, sodass keine Entschlüsselung durchgeführt wird, sondern nur ein Vergleich? Ist in diesem Fall jedes einzelne CA-Zertifikat der Welt zum Vergleich auf dem lokalen Computer von Bob gespeichert? Wie kommt es dazu.

2) Bob hat nur ein spezielles CA-Zertifikat, mit dem Zertifikate von Standorten entschlüsselt werden. Die Zertifizierungsstelle hat zuvor das digitale Zertifikat der Website, die Bob mit dem privaten Schlüssel der Zertifizierungsstelle verwenden möchte, verschlüsselt. Bob erhält dann das Zertifikat von der Site und entschlüsselt es mit dem öffentlichen Schlüssel der Zertifizierungsstelle aus dem Zertifikat der Zertifizierungsstelle. Wenn das Zertifikat nicht entschlüsselt werden kann, ist es offensichtlich, dass die Zertifizierungsstelle es nicht verschlüsselt hat und daher ungültig ist.

Danke im Voraus.

0
"Ein Mann in der Mitte könnte so tun, als wäre er die Website und würde Bob das liefern, was er für ein gültiges digitales Zertifikat hält, und dann laufen die Dinge schrecklich schief." - Der anfängliche Handshake würde dies verhindern. Bob wäre entweder mit der legitimen Website verbunden, oder der "Mann in der Mitte" könnte zu keinem Zeitpunkt von der legitimen Website auf den "Mann in der Mitte" gewechselt werden, da der "Mann in der Mitte" die Daten nicht entschlüsseln konnte der Server und der Bob. Der anfängliche Handshake identifiziert auch, wem das Zertifikat gehört, entweder der Server oder "man in the middle". Ramhound vor 5 Jahren 0
@Ramhound 5, ich spreche hier nur über den anfänglichen Handschlag Engineer999 vor 5 Jahren 0
Bob musste eine gefälschte Website besuchen, um ein Zertifikat zu erhalten, von dem er dachte, dass es zu der Website gehörte, die er besuchen wollte. Der "Man in the middle" -Angriff, den Sie beschreiben, ist nicht möglich, wenn Bob tatsächlich die Website besucht, die er besuchen wollte (es sei denn, er hat tatsächlich "Man in the middle" -Hardware innerhalb des Netzwerks installiert), aber das versuchen Sie nicht beschreiben. Ramhound vor 5 Jahren 0
AV-Software zum Scannen von HTTPS-Datenverkehr leitet den gesamten HTTPS-Datenverkehr durch den Prozess. Dies erfordert jedoch einen "Man in the middle" -Angriff. Das bedeutet, dass jedes Zertifikat vom AV signiert werden muss. Die Website würde immer noch das korrekte Zertifikat bereitstellen, aber das Zertifikat, das der Browser anzeigt, wäre das gefälschte Zertifikat, das von der AV-Software signiert wurde. Dies ist jedoch nicht der von Ihnen beschriebene Angriff, da die AV-Software von Bob installiert wurde. Ramhound vor 5 Jahren 0

2 Antworten auf die Frage

0
harrymc

Sie haben ein Missverständnis. Tatsächlich sind beide Szenarien falsch.

Zunächst wird ein digitales Zertifikat von einer Zertifizierungsstelle (Certificate Authority, CA) ausgestellt, das den öffentlichen Schlüssel für die digitale Signatur enthält und die Identität des Unterzeichners angibt. Das Zertifikat wird verwendet, um zu bestätigen, dass der öffentliche Schlüssel dem Unterzeichner gehört, wobei die Zertifizierungsstelle als Garant fungiert.

Das Zertifikat wird gegenüber der Zertifizierungsstelle über das Internet und nicht lokal hinsichtlich der Gültigkeit des Zertifikats überprüft. Dabei wird der öffentliche Schlüssel von der Zertifizierungsstelle abgerufen.

Mit dem öffentlichen Schlüssel wird mithilfe eines Hash-Algorithmus überprüft, ob das signierte Objekt wirklich das signierte Objekt war und in keiner Weise geändert wurde.

Ein Bild sagt mehr als tausend Worte:

enter image description here

Quelle: Digitale Signaturen verstehen .

"Das Zertifikat wird gegen die Zertifizierungsstelle über das Internet und nicht lokal geprüft" - Ich bin nicht sicher, ob Sie hier von OCSP sprechen? Die Signaturprüfung wird immer offline durchgeführt. Der einzige Netzwerkverkehr besteht in der Regel darin, zu prüfen, ob das Zertifikat noch nicht gesperrt wurde. grawity vor 5 Jahren 1
Dazu kommen auch die verschiedenen lokalen Zertifikatspeicher (z. B. Trusted Root Store, Intermediate Root Store usw.). In Ihrem Posting werden außerdem nicht SSL / TLS und / oder Server-Server im Vergleich zu gegenseitiger Authentifizierung in SSL / TLS behandelt. thepip3r vor 5 Jahren 0
@ grawity: Die Signatur wird oben beschrieben. Die Zertifikatsüberprüfung erfolgt online. Es gibt immer etwas Zwischenspeichern, aber es ist nur eine Optimierung. harrymc vor 5 Jahren 0
@ thepip3r: Wenn bekannte Zertifizierungsstellen gespeichert werden, ob Zertifikate zwischengespeichert werden und das Internetprotokoll für die Kommunikation verwendet wird, sind dies nur Ergänzungen zum Betreff, wodurch Zertifikate verarbeitet werden. Bei diesem Posting wurde kein Vertrag über den gesamten Berechtigungsgegenstand gefordert, der ein Buch leicht füllen kann. harrymc vor 5 Jahren 0
Die Zertifikate auf Ihren Maschinen sind keine "CAs", sondern Zertifikatsspeicher. In diesem Bereich definieren Sie oder Ihre Organisation die vertrauenswürdigen Zertifizierungsstellen. Beispiel: Wenn Sie eine Website besuchen, deren SSL-Zertifikat von Verisign bereitgestellt wird, Ihr lokaler Computer jedoch nicht der Verisign-Zertifizierungsstelle vertraut, die an die Website "Someebsite.com" ausgestellt wurde, gibt Ihr Browser einen Überprüfungsfehler aus. In seiner Frage wurde speziell nach webbasierten Zertifikaten gefragt, so dass zumindest der SSL / TLS-Handshake relevant ist. thepip3r vor 5 Jahren 0
0
grawity

Zunächst müssen Sie ein von einer Zertifizierungsstelle ausgestelltes Zertifikat in zwei Schritten überprüfen:

  1. Wird dieser bestimmten Zertifizierungsstelle die Ausgabe von Zertifikaten als vertrauenswürdig eingestuft?
  2. Wurde dieses Zertifikat wirklich von der Zertifizierungsstelle ausgestellt, von der behauptet wird, dass sie es ist?

Beide Beschreibungen sind für eine Hälfte des gesamten Prozesses nahezu richtig, die andere Hälfte jedoch vollständig ignoriert. Kombinieren Sie die beiden, und Sie sind auf der richtigen Spur.

Der zweite Punkt: In dieser Situation wird überhaupt keine Verschlüsselung verwendet, und Zertifikate (die öffentliche Schlüssel enthalten) können zum Verschlüsseln von Daten verwendet werden, nicht jedoch zum Entschlüsseln. Was durchgeführt wird, ist die Signaturprüfung.

(Ich vermute, dass einige Ihrer Verwirrung dadurch verursacht werden, dass Sie irgendwo gelesen haben, dass "in RSA Verschlüsselung und Signieren dasselbe sind". Vergessen Sie das. Obwohl dies meistens im mathematischen Sinne korrekt ist, ist es in der Praxis unglaublich irreführend, so wie es beabsichtigt ist völlig gegensätzlich. Wenn Sie also ein Dokument lesen, in dem es um das Signieren geht, gehen Sie nicht davon aus, dass es gleichbedeutend mit dem Verschlüsseln ist.)


"Wurde das Zertifikat dieser Website wirklich von der Zertifizierungsstelle ausgestellt, von der behauptet wird, dass sie es ist?"

Variante Nr. 2 ist in dieser Hinsicht fast richtig. Es sind mindestens zwei Zertifikate beteiligt - eines für die Website (das "Serverzertifikat") und eines für die Zertifizierungsstelle selbst ("CA-Zertifikat" oder "Root-Zertifikat").

Das eigene Zertifikat der Website wird nicht mit dem privaten Schlüssel der Zertifizierungsstelle verschlüsselt . Es ist mit dem privaten Schlüssel der Zertifizierungsstelle signiert . Wenn die Signatur nicht verifiziert werden kann, ist es offensichtlich, dass die Zertifizierungsstelle das Beanstandete nicht wirklich unterschrieben hat.

(In der Praxis ist die Kette normalerweise etwas länger und besteht aus mindestens drei Zertifikaten - der Mechanismus ist jedoch immer noch derselbe; jeder unterschreibt den nächsten in der Kette.)

Aber wo bekommt Bob dieses "spezielle CA-Zertifikat" überhaupt? Siehe unten.

"Wird dieser Zertifizierungsstelle die Ausgabe von Zertifikaten im Allgemeinen als vertrauenswürdig eingestuft?"

Das empfangene CA-Zertifikat wird mit einer Liste "vertrauenswürdiger Stammdaten" verglichen, die auf dem lokalen Computer gespeichert sind.

Das ist ähnlich zu dem, was Sie in Variante 1 beschrieben haben, mit der Ausnahme, dass der Computer nicht alle von Zertifizierungsstellen ausgestellten Zertifikate speichert. Stattdessen speichert er nur die Zertifikate der Zertifizierungsstellen selbst, dh die "speziellen Zertifizierungsstellenzertifikate" in Variante 1.

Auf den meisten Systemen sind ungefähr 50 bis 100 "Stammzertifikate" installiert - nicht wirklich "jede einzelne Zertifizierungsstelle auf der Welt", aber es deckt viele größere und kleinere Unternehmen ab. (Es kostet ziemlich viel, in die Liste aufgenommen zu werden.)