Was ist SHAttered? SHA-1-Kollisionsangriffe, erklärt
Am ersten Tag des Jahres 2016 hat Mozilla die Unterstützung für eine schwächere Sicherheitstechnologie namens SHA-1 im Firefox-Webbrowser eingestellt. Fast sofort haben sie ihre Entscheidung rückgängig gemacht, da dadurch der Zugang zu älteren Websites eingeschränkt würde. Im Februar 2017 wurden ihre Befürchtungen endlich wahr: Die Forscher brachen SHA-1, indem sie den ersten realen Kollisionsangriff auslösten. Hier ist was das alles bedeutet.
Was ist SHA-1??
Der SHA in SHA-1 steht für Sicherer Hash-Algorithmus, und, einfach gesagt, können Sie sich das als eine Art mathematisches Problem oder eine Methode vorstellen verschlüsselt die darin enthaltenen Daten. Sie wurde von der US-amerikanischen NSA entwickelt und ist eine Kernkomponente vieler Technologien, mit denen wichtige Übertragungen im Internet verschlüsselt werden. Gängige Verschlüsselungsmethoden SSL und TLS, von denen Sie möglicherweise gehört haben, können eine Hash-Funktion wie SHA-1 verwenden, um die signierten Zertifikate zu erstellen, die in Ihrer Browser-Symbolleiste angezeigt werden.
Wir werden nicht weiter auf die Mathematik und Informatik der SHA-Funktionen eingehen, aber hier ist die Grundidee. Ein "Hash" ist ein eindeutiger Code, der auf der Eingabe beliebiger Daten basiert. Sogar eine kleine zufällige Buchstabenfolge, die in eine Hash-Funktion wie SHA-1 eingegeben wird, gibt eine lange, festgelegte Anzahl von Zeichen zurück, wodurch es (möglicherweise) unmöglich ist, die Zeichenfolge auf die ursprünglichen Daten zurückzusetzen. So funktioniert das Speichern von Kennwörtern normalerweise. Wenn Sie ein Passwort erstellen, wird Ihr Passwort vom Server gehasht und gespeichert. Nach Ihrer Rückkehr wird Ihr Passwort erneut eingegeben, wenn Sie Ihr Passwort eingeben. Wenn es mit dem ursprünglichen Hash übereinstimmt, kann davon ausgegangen werden, dass die Eingabe dieselbe ist, und Sie erhalten Zugriff auf Ihre Daten.
Hash-Funktionen sind vor allem deshalb nützlich, weil sie leicht erkennen lassen, ob sich die Eingabe, beispielsweise eine Datei oder ein Kennwort, geändert hat. Wenn die Eingabedaten wie ein Kennwort geheim sind, ist es nahezu unmöglich, die ursprünglichen Daten (auch als "Schlüssel" bezeichnet) umzukehren und wiederherzustellen. Dies unterscheidet sich ein wenig von "Verschlüsselung", deren Zweck darin besteht, Daten zu verschlüsseln, um sie später mit Hilfe von Verschlüsselungscodes und geheimen Schlüsseln zu entschlüsseln. Hashes dienen lediglich der Sicherstellung der Datenintegrität, um sicherzustellen, dass alles gleich ist. Git, die Versionskontroll- und Verteilungssoftware für Open Source-Code, verwendet aus diesem Grund SHA-1-Hashes.
Das ist eine Menge technischer Informationen, aber um es einfach auszudrücken: Ein Hash ist nicht dasselbe wie Verschlüsselung Es wird verwendet, um festzustellen, ob sich eine Datei geändert hat.
Wie wirkt sich diese Technologie auf mich aus??
Angenommen, Sie müssen eine Website privat besuchen. Ihre Bank, Ihre E-Mail-Adresse und sogar Ihr Facebook-Konto verwenden alle eine Verschlüsselung, um die von Ihnen gesendeten Daten geheim zu halten. Eine professionelle Website stellt eine Verschlüsselung bereit, indem sie ein Zertifikat von einer vertrauenswürdigen Behörde - einem Dritten - erhält, das vertrauenswürdig ist, um sicherzustellen, dass die Verschlüsselung auf einer Ebene ist, die zwischen Website und Benutzer privat ist und von keiner anderen Partei ausspioniert wird. Diese Beziehung zum Dritten, genannt Zertifizierungsstellen, oder CA, Dies ist äußerst wichtig, da jeder Benutzer ein selbstsigniertes Zertifikat erstellen kann. Sie können es sogar selbst auf einem Computer mit Linux und Open SSL ausführen. Symantec und Digicert sind beispielsweise zwei weithin bekannte CA-Unternehmen.
Lassen Sie uns ein theoretisches Szenario durchgehen: How-To Geek möchte, dass angemeldete Benutzersitzungen mit Verschlüsselung privat bleiben, und bittet eine Zertifizierungsstelle wie Symantec um eine Zertifikat-Signaturanforderung, oder CSR. Sie schaffen eine Öffentlicher Schlüssel und Privat Schlüssel zum Ver- und Entschlüsseln von über das Internet gesendeten Daten. Die CSR-Anforderung sendet den öffentlichen Schlüssel zusammen mit Informationen zur Website an Symantec. Symantec vergleicht den Schlüssel mit seinem Datensatz, um sicherzustellen, dass die Daten von allen Parteien unverändert sind, da jede kleine Änderung der Daten den Hash grundlegend unterscheidet.
Diese öffentlichen Schlüssel und digitalen Zertifikate werden durch Hash-Funktionen signiert, da die Ausgabe dieser Funktionen leicht erkennbar ist. Ein öffentlicher Schlüssel und ein Zertifikat mit einem verifizierten Hash von Symantec (in unserem Beispiel), einer Behörde, versichert einem Benutzer von How-To-Geek, dass der Schlüssel unverändert ist und nicht von böswilligen Personen gesendet wird.
Da der Hash einfach zu überwachen ist und es unmöglich ist (manche sagen "schwierig"), umzukehren, bedeutet die korrekte, verifizierte Hash-Signatur, dass das Zertifikat und die Verbindung vertrauenswürdig sind und die Daten verschlüsselt werden können . Aber was ist, wenn der Haschisch? war eigentlich nicht einzigartig?
Was ist ein Kollisionsangriff und ist in der realen Welt möglich??
Sie haben vielleicht von dem „Geburtstagsproblem“ in der Mathematik gehört, obwohl Sie nicht gewusst haben, wie es heißt. Die Grundidee ist, dass, wenn Sie eine ausreichend große Gruppe von Menschen zusammenbringen, die Chancen ziemlich hoch sind, dass zwei oder mehr Personen den gleichen Geburtstag haben. Höher als man erwartet hätte - tatsächlich - genug, dass es wie ein seltsamer Zufall erscheint. In einer Gruppe von nur 23 Personen besteht eine Chance von 50%, dass zwei einen Geburtstag haben.
Dies ist die inhärente Schwäche in allen Hashes, einschließlich SHA-1. Theoretisch sollte die SHA-Funktion einen eindeutigen Hash für alle darin enthaltenen Daten erstellen. Mit zunehmender Anzahl der Hashwerte wird es jedoch wahrscheinlicher, dass unterschiedliche Datenpaare denselben Hash erzeugen können. So könnte man ein nicht vertrauenswürdiges Zertifikat mit einem identischen Hash zu einem vertrauenswürdigen Zertifikat erstellen. Wenn Sie dieses nicht vertrauenswürdige Zertifikat installieren, könnte es sich als vertrauenswürdig erweisen und schädliche Daten verteilen.
Die Suche nach übereinstimmenden Hashwerten in zwei Dateien wird als a bezeichnet Kollisionsangriff. Es ist bekannt, dass mindestens ein Massenangriff für MD5-Hashes bereits stattgefunden hat. Aber am 27. Februar 2017 kündigte Google SHAttered an, die erste Kollision für SHA-1. Google konnte eine PDF-Datei erstellen, die trotz unterschiedlicher Inhalte den gleichen SHA-1-Hashwert hatte wie eine andere PDF-Datei.
SHAttered wurde in einer PDF-Datei durchgeführt. PDFs sind ein relativ lockeres Dateiformat. Es können viele kleine Änderungen auf Bit-Ebene vorgenommen werden, ohne dass der Leser das Öffnen des Fensters verhindert oder sichtbare Unterschiede verursacht. PDFs werden häufig auch zur Bereitstellung von Malware verwendet. Während SHAttered für andere Dateitypen wie ISOs funktionieren könnte, werden Zertifikate streng spezifiziert, was einen solchen Angriff unwahrscheinlich macht.
Wie leicht lässt sich dieser Angriff durchführen? SHAttered basierte auf einer von Marc Stevens im Jahr 2012 entdeckten Methode, bei der SHA-1-Operationen von mehr als 60,3 (9,223 Fünftel) Operationen erforderlich waren - eine erstaunliche Anzahl. Bei diesem Verfahren sind jedoch immer noch 100.000 Mal weniger Operationen erforderlich, als bei brachialer Kraft erforderlich wären. Google fand heraus, dass es bei 110 parallel arbeitenden High-End-Grafikkarten etwa ein Jahr dauern würde, um eine Kollision zu erzeugen. Das Mieten dieser Rechenzeit von Amazon AWS würde ungefähr $ 110.000 kosten. Vergessen Sie nicht, dass Angriffe wie SHAttered mit abnehmenden Preisen für Computerteile und weniger Strom immer einfacher werden.
110.000 US-Dollar mögen viel erscheinen, aber für einige Organisationen ist dies im Rahmen der Erschwinglichkeit. Dies bedeutet, dass Cybervillianer digitale Signaturen für Dokumente erstellen, Backup- und Versionskontrollsysteme wie Git und SVN stören oder eine schädliche Linux-ISO als legitim erscheinen lassen.
Glücklicherweise gibt es mildernde Faktoren, die solche Angriffe verhindern. SHA-1 wird selten mehr für digitale Signaturen verwendet. Zertifizierungsstellen stellen keine mit SHA-1 signierten Zertifikate mehr bereit, und sowohl Chrome als auch Firefox haben die Unterstützung für sie eingestellt. Linux-Distributionen werden in der Regel häufiger als einmal pro Jahr veröffentlicht. Daher ist es für einen Angreifer nicht praktikabel, eine schädliche Version zu erstellen und dann eine Version zu erstellen, die denselben SHA-1-Hash enthält.
Auf der anderen Seite gibt es bereits einige Angriffe auf Basis von SHAttered in der realen Welt. Das SVN-Versionskontrollsystem verwendet SHA-1, um Dateien zu unterscheiden. Durch das Hochladen der beiden PDF-Dateien mit identischen SHA-1-Hashes in ein SVN-Repository wird es beschädigt.
Wie kann ich mich vor SHA-1-Angriffen schützen??
Der typische Benutzer muss nicht viel tun. Wenn Sie zum Vergleichen von Dateien Prüfsummen verwenden, sollten Sie SHA-2 (SHA-256) oder SHA-3 anstelle von SHA-1 oder MD5 verwenden. Wenn Sie ein Entwickler sind, sollten Sie auch modernere Hash-Algorithmen wie SHA-2, SHA-3 oder bcrypt verwenden. Wenn Sie befürchten, dass SHAttered verwendet wurde, um zwei verschiedenen Dateien denselben Hashwert zuzuweisen, hat Google auf der SHAttered-Website ein Tool veröffentlicht, das Sie überprüfen kann.
Bildnachweise: Lego Firefox, viel Hash, bitte den Web-Autor nicht kennen, unbekannt, Google.