it-swarm.com.de

Warum war der private Schlüssel des Superfish-Zertifikats so einfach zu extrahieren?

Robert Graham beschrieb auf dem Errata Security-Blog , wie er den privaten Schlüssel des Superfish-Zertifikats erhalten konnte. Ich verstehe, dass Angreifer diesen Schlüssel jetzt verwenden können, um eigene Zertifikate zu generieren, die von der Superfish CA signiert werden.

Funktioniert der gleiche Angriff nicht auf andere Stammzertifikate, die sich bereits auf einem Computer befinden? Warum war der private Schlüssel überhaupt auf dem Computer?

62
iamme

Sie müssen sich keine Sorgen machen, es sei denn, die Superfish-Malware wurde auf Ihrem System installiert (was beim Kauf eines Lenovo-Computers der Fall sein könnte). Dieser Angriff funktionierte, weil das Geheimnis, das er enthüllte, notwendig war, damit die Malware die Daten entführen konnte. Es ist kein Teil davon, wie legitime Zertifikate authentifiziert werden.

Es hilft, die Beziehungen zwischen einem Zertifikat, einem öffentlichen Schlüssel und einem privaten Schlüssel zu verstehen. Ein privater Schlüssel ist eine Geheimnummer, die zum Signieren von Nachrichten mit digitalen Signaturen (oder zum Verschlüsseln des Webverkehrs) verwendet wird. Er verfügt über einen passenden öffentlichen Schlüssel, mit dem diese Signaturen überprüft werden können. Ein Zertifikat ist ein öffentliches Dokument, das einen öffentlichen Schlüssel enthält. Websitebesitzer legen ihre öffentlichen Schlüssel auf Zertifikate und senden sie an Unternehmen namens Certificate Authorities (CAs), die sie digital signieren, um zu beweisen, dass ihre Zertifikate echt sind. Die digitalen Signaturen stellen sicher, dass das Dokument nicht geändert wurde, und stellen sicher, dass der darin enthaltene öffentliche Schlüssel der echte Schlüssel der Website ist, die Sie besuchen.

Zertifizierungsstellen sind Unternehmen, denen alle vertrauen, dass sie nur Zertifikate aus legitimen Quellen signieren. Sie haben auch ein privates und ein öffentliches Schlüsselpaar. Sie halten den privaten Schlüssel sehr geheim, in einem sicheren kryptografischen Gerät namens Hardware Security Module (HSM) eingeschlossen und beschränken den Zugriff darauf, sodass er nur zum Signieren eines Kundenzertifikats verwendet werden kann, wenn der Kunde einen neuen Schlüssel generiert. Um jedoch nützlich zu sein, muss jeder im Web seine öffentlichen Schlüssel kennen. Diese Zertifizierungsstellen setzen also ihren eigenen öffentlichen Schlüssel auf ein spezielles Zertifikat und signieren es mit ihrem eigenen privaten Schlüssel ("selbstsignierend"). Anschließend senden sie diese selbstsignierten "Stammzertifikate" an die Browser- und Betriebssystemanbieter, die sie in ihre Produkte aufnehmen. Eine echte Zertifizierungsstelle würde niemals ihre privaten Schlüssel versenden!

Die Stammzertifikate der vertrauenswürdigen Behörde sind die Dokumente, die alle Zertifikate aller Verbindungen überprüfen, die Ihr Computer herstellt. Ihr Computer muss ihnen also vertrauen. Diese Malware installiert ein nicht vertrauenswürdiges Zertifikat in einer Position des ultimativen Vertrauens und gefährdet die Sicherheit des Computers, indem jeder, der diesen Schlüssel kennt, ein Zertifikat für eine beliebige Site fälschen kann, um Hinweise auf Manipulationen zu verbergen.

Die Malware missbraucht ihre Position, indem sie für jede von Ihnen besuchte Site falsche öffentliche und private Schlüssel generiert. Nachdem Sie eine Verbindung hergestellt haben, wird die Nutzlast in die Seite der Website eingefügt. Damit Ihr Browser diesen falschen Schlüsseln vertraut und Sie nicht warnt, generiert die Malware ein gefälschtes Zertifikat, das Ihren Browser dazu verleitet, die Schlüssel für legitim zu halten. Wie bei jedem Zertifikat muss die Fälschung jedoch von einer vertrauenswürdigen Zertifizierungsstelle signiert werden. Zum Signieren benötigt die Malware einen öffentlichen und einen privaten Schlüssel, genau wie eine echte Zertifizierungsstelle. Da die falsche Zertifizierungsstelle diese Zertifikate direkt in Ihrem Computer fälscht, muss sich der private Schlüssel auch in Ihrem Computer befinden. Es ist unmöglich, solche Dinge vor dem Besitzer des Computers geheim zu halten, aber sie haben versucht, sie durch rudimentäre Schritte zu verbergen. In dem Blog, auf den Sie verlinkt haben, wurde beschrieben, wie er das Geheimnis aufgedeckt hat.

Keine legitime Zertifizierungsstelle würde jemals zulassen, dass ihr privater Schlüssel durchgesickert ist, geschweige denn, dass er an eine Reihe zufälliger Computerbesitzer gesendet wird. Es gab einen Fall, in dem eine Zertifizierungsstelle ihren geheimen Schlüssel durchgesickert hatte; ihr Ruf wurde ruiniert und sie gingen in einem Monat bankrott. Da Ihr Computer dort nicht die privaten Schlüssel der legitimen Zertifizierungsstellen enthält ist kein Geheimnis für einen Angreifer zu knacken.

59
John Deters

Aufgrund der Funktionsweise von Superfish können das Zertifikat und sein privater Schlüssel muss leicht extrahiert werden.

Superfish erstellt im laufenden Betrieb signierte Zertifikate für die abgefangenen Netzwerkverbindungen, ohne einen zentralen Server zu kontaktieren. Dazu muss der private Schlüssel für die Superfish-Zertifizierungsstelle in einer benutzerfreundlichen Form in die Software eingebettet werden. Jetzt mussten sie keine Klartext-PEM-Datei erstellen, aber selbst die beste Sicherheit hätte einen ernsthaften Reverse-Engineering-Aufwand nicht um mehr als ein oder zwei Tage verlangsamt.

Sie können kein Geheimnis mit der ganzen Welt teilen und nicht erwarten, dass jemand es findet. Real Zertifizierungsstellen schützen ihren privaten Schlüssel viel besser, indem sie sicherstellen, dass er ihren zertifikatsignierenden Computer niemals verlässt.

31
Mark

Superfish fungiert als Mann in der Mitte. Es generiert dynamisch Schlüssel, denen Ihr Browser für von Ihnen besuchte Domains vertraut. Um diese Schlüssel zu generieren, benötigt es das private Zertifikat, und obwohl eine weitere Verschleierung möglich ist, kann es diesen Schlüssel am Ende nicht verbergen.

Sie können jedoch auf jedem Computer, auf dem die Software installiert ist, ein eindeutiges Schlüsselpaar für das Zertifikatspaar generieren. Dies würde bedeuten, dass das Extrahieren des Schlüssels, der für die auf einem Computer installierte Stammzertifizierungsstelle verwendet wird, keinen Zugriff auf die Kommunikation eines anderen Computers mit der installierten Software ermöglicht. Dies ist nicht gerade Raketenwissenschaft, und es ist unentschuldbar, dass Komodia es nicht tut.

Ich würde gerne wissen, ob andere Unternehmen, die diese Art von MITM betreiben, eindeutige Schlüssel herausgeben. Z.B. lokal habe ich Zertifikate für "Skype Click to Call" und "avast! WEb/Mail Shield" gefunden, die vermutlich ähnlich funktionieren. Ich habe überprüft, ob mein Browser bei einem Besuch von https://www.google.com/ ein vom avast-Schlüssel signiertes Zertifikat sieht.

2
mc0e

Wenn Sie beim Schutz privater Schlüssel von Stammzertifikaten bewährte Methoden befolgen, wäre dies mit Sicherheit nicht so einfach gewesen.

Wenn ich Roberts Blog richtig verstehe, wurde das Kennwort, das den privaten Schlüssel schützte, als Zeichenfolge in die Adware-Binärdateien eingebettet, die mit den Laptops geliefert wurden. Dies ist so, als würden Sie Ihren Safe zusammen mit Ihrem Schlüssel verschicken, der dunkel auf den Boden des Safes geklebt ist. Keine gute Idee! Das Passwort war auch nicht sehr sicher, was bedeutet, dass eine entschlossene Person mit Wissen und Ressourcen in der Lage sein könnte, es in angemessener Zeit zu knacken, selbst wenn es nicht für jedermann sichtbar in die Adware eingebettet wäre.

Das Kennwort zum Extrahieren des privaten Schlüssels wurde höchstwahrscheinlich in die Adware eingebettet, damit die Adware den vom Superfish-Stammzertifikat signierten Datenverkehr im laufenden Betrieb entschlüsseln kann, um das Werbemarkup einzufügen, das der Benutzer schließlich auf der Webseite sehen würde.

Dies wäre bei den zuständigen Zertifizierungsstellen niemals der Fall, und ich bin mir ziemlich sicher, dass eine Zertifizierungsstelle bestimmte Standards oder sogar Gesetze einhalten muss, die sie daran hindern würden, so etwas zu tun.

Wenn es so einfach gewesen wäre, die privaten Schlüssel aller Stammzertifikate zu erhalten, hätte PKI keinen Zweck erfüllt und absolut beachtet.

2
ilikebeets