Am ersten Tag des Jahres 2016 beendete Mozilla die Unterstützung für eine schwächende Sicherheitstechnologie namens SHA-1 im Firefox-Webbrowser. Fast sofort hoben sie ihre Entscheidung auf, da dies den Zugang zu einigen älteren Websites einschränken würde. Aber im Februar 2017 haben sich ihre Befürchtungen endlich erfüllt: Forscher haben SHA-1 durch die Schaffung gebrochen der erste reale Kollisionsangriff . Das alles bedeutet Folgendes:
Was ist SHA-1?
Die SHA in SHA-1 steht für Sicherer Hash-Algorithmus , und einfach ausgedrückt, Sie können sich das als eine Art mathematisches Problem oder eine Methode vorstellen, die verschlüsselt die darin enthaltenen Daten . Es 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 vielleicht schon 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 tief in die Mathematik und Informatik einer der SHA-Funktionen eintauchen, aber hier ist die Grundidee. Ein "Hash" ist Ein eindeutiger Code, der auf der Eingabe von Daten basiert . Selbst kleine, zufällige Buchstabenfolgen, die in eine Hash-Funktion wie SHA-1 eingegeben werden, geben eine lange, festgelegte Anzahl von Zeichen zurück, sodass es (möglicherweise) unmöglich ist, die Zeichenfolge auf die ursprünglichen Daten zurückzusetzen. So funktioniert das Speichern von Passwörtern normalerweise. Wenn Sie ein Kennwort erstellen, wird Ihre Kennworteingabe vom Server gehasht und gespeichert. Wenn Sie bei Ihrer Rückkehr Ihr Passwort eingeben, wird es erneut gehasht. Wenn es mit dem ursprünglichen Hash übereinstimmt, kann davon ausgegangen werden, dass die Eingabe identisch 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, kann der Hash die Originaldaten (auch als „Schlüssel“ bezeichnet) kaum umkehren und wiederherstellen. Dies ist ein bisschen anders als "Verschlüsselung", deren Zweck darin besteht, Daten zu verschlüsseln, um sie später zu entschlüsseln mit Chiffren und geheimen Schlüsseln. Hashes sollen lediglich die Datenintegrität gewährleisten - um sicherzustellen, dass alles gleich ist. Git, die Versionskontroll- und Distributionssoftware für Open Source Code, verwendet aus diesem Grund SHA-1-Hashes .
Das sind viele technische Informationen, aber um es einfach auszudrücken: Ein Hash ist nicht dasselbe wie Verschlüsselung, da 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 Verschlüsselung, um die von Ihnen gesendeten Daten privat zu halten. Eine professionelle Website bietet Verschlüsselung, indem sie ein Zertifikat von einer vertrauenswürdigen Behörde erhält - einem Dritten, dem vertraut wird, um sicherzustellen, dass die Verschlüsselung auf der Ebene erfolgt, die zwischen der Website und dem Benutzer privat ist und von keiner anderen Partei ausspioniert wird. Diese Beziehung zum Dritten heißt Zertifizierungsstellen , oder DAS ist von entscheidender Bedeutung, da jeder Benutzer ein "selbstsigniertes" Zertifikat erstellen kann - Sie können es sogar Machen Sie es selbst auf einem Computer unter Linux mit Openssl . Symantec und Digicert sind beispielsweise zwei bekannte CA-Unternehmen.
Lassen Sie uns ein theoretisches Szenario durchgehen: How-To Geek möchte die Sitzungen der Benutzer mit Verschlüsselung privat halten, sodass eine Zertifizierungsstelle wie Symantec mit einem Petitionsantrag versehen wird Zertifikatsignierungsanforderung , oder CSR . Sie schaffen eine Öffentlicher Schlüssel und Privat Schlüssel zum Ver- und Entschlüsseln von Daten, die über das Internet gesendet werden. Die CSR-Anfrage sendet den öffentlichen Schlüssel zusammen mit Informationen über die Website an Symantec. Symantec vergleicht den Schlüssel mit seinem Datensatz, um sicherzustellen, dass die Daten von allen Parteien unverändert bleiben, da jede kleine Änderung der Daten den Hash radikal verändert.
Diese öffentlichen Schlüssel und digitalen Zertifikate werden von Hash-Funktionen signiert, da die Ausgabe dieser Funktionen leicht zu sehen ist. Ein öffentlicher Schlüssel und ein Zertifikat mit einem verifizierten Hash von Symantec (in unserem Beispiel), einer Behörde, versichern einem Benutzer von How-To Geek, dass der Schlüssel unverändert ist und nicht von einer böswilligen Person gesendet wird.
Da der Hash leicht zu überwachen und unmöglich (einige würden sagen "schwierig") rückgängig zu machen ist, bedeutet die korrekte, überprüfte Hash-Signatur, dass das Zertifikat und die Verbindung vertrauenswürdig sind und vereinbart werden kann, dass Daten von Ende zu Ende verschlüsselt gesendet werden . Aber was ist, wenn der Hash war eigentlich nicht einzigartig ?
Was ist ein Kollisionsangriff und ist er in der realen Welt möglich?
Sie haben vielleicht von der gehört "Geburtstagsproblem" in der Mathematik , obwohl Sie vielleicht nicht gewusst haben, wie es genannt wurde. Die Grundidee ist, dass wenn Sie eine ausreichend große Gruppe von Menschen zusammenbringen, die Chancen ziemlich hoch sind, dass zwei oder mehr Menschen denselben Geburtstag haben. Tatsächlich höher als erwartet - genug, dass es wie ein seltsamer Zufall erscheint. In einer Gruppe von nur 23 Personen besteht eine 50% ige Chance, dass zwei Personen Geburtstag haben.
Dies ist die inhärente Schwäche aller Hashes, einschließlich SHA-1. Theoretisch sollte die SHA-Funktion einen eindeutigen Hash für alle darin enthaltenen Daten erstellen. Mit zunehmender Anzahl von Hashes wird es jedoch wahrscheinlicher, dass verschiedene Datenpaare denselben Hash erstellen können. Man könnte also ein nicht vertrauenswürdiges Zertifikat mit einem identischen Hash wie ein vertrauenswürdiges Zertifikat erstellen. Wenn Sie dieses nicht vertrauenswürdige Zertifikat installieren müssen, kann es sich als vertrauenswürdig tarnen und schädliche Daten verbreiten.
Das Finden übereinstimmender Hashes in zwei Dateien wird als a bezeichnet Kollisionsangriff . Es ist bekannt, dass mindestens ein Kollisionsangriff in großem Maßstab bereits für MD5-Hashes stattgefunden hat. Aber am 27. Februar 2017 gab Google bekannt Zerschlagen , die erste Kollision für SHA-1. Google konnte eine PDF-Datei erstellen, die trotz unterschiedlicher Inhalte denselben SHA-1-Hash wie eine andere PDF-Datei hatte.
SHAttered wurde an einer PDF-Datei durchgeführt. PDFs sind ein relativ loses Dateiformat. Es können viele kleine Änderungen auf Bitebene vorgenommen werden, ohne dass die Leser sie öffnen oder sichtbare Unterschiede verursachen können. PDFs werden häufig auch zur Bereitstellung von Malware verwendet. Während SHAttered mit anderen Dateitypen wie ISOs arbeiten könnte, sind Zertifikate streng spezifiziert, was einen solchen Angriff unwahrscheinlich macht.
Wie einfach ist dieser Angriff? SHAttered basierte auf a Methode 2012 von Marc Stevens entdeckt, für den mehr als 2 ^ 60,3 (9,223 Billionen) SHA-1-Operationen erforderlich waren - eine erstaunliche Zahl. Diese Methode ist jedoch immer noch 100.000-mal weniger Operationen als erforderlich, um das gleiche Ergebnis mit roher Gewalt zu erzielen. Google stellte fest, dass bei 110 parallel arbeitenden High-End-Grafikkarten die Kollision ungefähr ein Jahr dauern würde. Das Mieten dieser Rechenzeit bei Amazon AWS würde etwa 110.000 US-Dollar kosten. Denken Sie daran, dass Angriffe wie SHAttered leichter fallen, wenn die Preise für Computerteile fallen und Sie mehr Leistung für weniger erhalten.
110.000 US-Dollar scheinen viel zu sein, liegen jedoch für einige Unternehmen im Bereich der Erschwinglichkeit. Dies bedeutet, dass echte Cybervillianer digitale Dokumentensignaturen fälschen, Backup- und Versionskontrollsysteme wie Git und SVN stören oder eine böswillige Linux-ISO als legitim erscheinen lassen können.
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 zur Verfügung, und sowohl Chrome als auch Firefox haben die Unterstützung für diese eingestellt. Linux-Distributionen werden in der Regel häufiger als einmal pro Jahr veröffentlicht, sodass es für einen Angreifer unpraktisch ist, eine schädliche Version zu erstellen und dann eine gepolsterte Version mit demselben SHA-1-Hash zu generieren.
Auf der anderen Seite finden einige Angriffe, die auf SHAttered basieren, bereits in der realen Welt statt. Das SVN-Versionskontrollsystem verwendet SHA-1 zur Unterscheidung von Dateien. Das Hochladen der beiden PDFs mit identischen SHA-1-Hashes in ein SVN-Repository führt dazu zu korrumpieren .
Wie kann ich mich vor SHA-1-Angriffen schützen?
Für den typischen Benutzer gibt es nicht viel zu 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 Entwickler sind, sollten Sie auch modernere Hashing-Algorithmen wie SHA-2, SHA-3 oder bcrypt verwenden. Wenn Sie befürchten, dass SHAttered verwendet wurde, um zwei unterschiedlichen Dateien denselben Hash zuzuweisen, hat Google ein Tool für das Programm veröffentlicht SHAttered Site das kann für dich überprüfen.
Bildnachweis: Lego Firefox , Viel Hash , Bitte verletzen Sie den unbekannten Webautor nicht. Google .