Am ersten Tag des Jahres 2016 hat Mozilla die Unterstützung für eine schwächere Sicherheitstechnologie namens SHA-1 im Firefox-Webbrowser beendet. Beinahe sofort haben sie ihre Entscheidung umgekehrt, da sie den Zugang zu einigen älteren Websites einschränken würden. Doch im Februar 2017 wurden ihre Befürchtungen endlich wahr: Forscher brachen SHA-1 durch den ersten realen Kollisionsangriff. Hier ist, was das alles bedeutet.
Der SHA in SHA-1 steht für Secure Hash Algorithm , und man kann es einfach als eine Art von mathematisches Problem oder Methode, die die Daten verwirrte, die in sie eingefügt wurden . Diese von der NSA der USA entwickelte Technologie ist eine Kernkomponente vieler Technologien, die zur Verschlüsselung wichtiger Übertragungen im Internet verwendet werden. Die üblichen 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 Sie in Ihrer Browser-Symbolleiste sehen.
Wir werden nicht tief in die Mathematik und Informatik einsteigen von irgendwelchen der SHA-Funktionen, 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, so dass es (möglicherweise) unmöglich ist, die Zeichenkette wieder auf die ursprünglichen Daten zurückzusetzen. So funktioniert der Passwortspeicher normalerweise. Wenn Sie ein Passwort erstellen, wird Ihre Passworteingabe vom Server gehasht und gespeichert. Wenn Sie nach der Rückkehr Ihr Passwort eingeben, wird es erneut gehasht. Wenn es mit dem ursprünglichen Hash übereinstimmt, kann angenommen werden, dass die Eingabe identisch ist, und Sie erhalten Zugriff auf Ihre Daten.
Hash-Funktionen sind in erster Linie nützlich, weil sie es einfach machen zu erkennen, ob die Eingabe zum Beispiel eine Datei oder ein Passwort, hat sich geändert. Wenn die Eingabedaten geheim sind, wie ein Kennwort, ist es nahezu unmöglich, die ursprünglichen Daten (die auch als "Schlüssel" bezeichnet werden) umzukehren und wiederherzustellen. Dies ist ein bisschen anders als "Verschlüsselung", deren Zweck das Verschlüsseln von Daten zum Zweck der späteren Entschlüsselung unter Verwendung von Chiffren und geheimen Schlüsseln ist. 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 das Gleiche wie Verschlüsselung wird verwendet, um festzustellen, ob sich eine Datei geändert hat .
Nehmen wir an, Sie müssen eine Website privat besuchen. Ihre Bank, Ihre E-Mail, sogar Ihr Facebook-Konto - alle verwenden Verschlüsselung, um die Daten, die Sie ihnen senden, privat zu halten. Eine professionelle Website stellt eine Verschlüsselung bereit, indem sie ein Zertifikat von einer vertrauenswürdigen Stelle einholt - einer Drittpartei, die darauf vertraut, dass die Verschlüsselung auf der Ebene zwischen der Website und dem Benutzer privat ist und von keiner anderen Partei ausgespäht wird. Diese Beziehung mit der dritten Partei, genannt Certificate Authorities oder CA , ist entscheidend, da jeder Benutzer ein "selbstsigniertes" Zertifikat erstellen kann - Sie können es sogar selbst auf einer Maschine, auf der Linux mit Open SSL läuft. Symantec und Digicert sind beispielsweise zwei weithin bekannte CA-Unternehmen.
Lassen Sie uns ein theoretisches Szenario durchgehen: How-To Geek möchte die Sitzungen der angemeldeten Benutzer privat mit Verschlüsselung beibehalten, also bittet es eine Zertifizierungsstelle wie Symantec um ein Zertifikatsignierungsanforderung oder CSR . Sie erstellen einen öffentlichen Schlüssel und einen privaten Schlüssel zum Verschlüsseln und Entschlüsseln von Daten, die über das Internet gesendet werden. Die CSR-Anforderung sendet den öffentlichen Schlüssel zusammen mit Informationen zur Website an Symantec. Symantec überprüft den Schlüssel auf seinen Datensatz, um zu verifizieren, dass die Daten von allen Parteien unverändert sind, da jede kleine Änderung in den Daten den Hash radikal verändert.
Diese öffentlichen Schlüssel und digitalen Zertifikate werden von Hashfunktionen signiert, da die Ausgabe von Diese Funktionen sind leicht zu sehen. Ein öffentlicher Schlüssel und ein Zertifikat mit einem verifizierten Hash von Symantec (in unserem Beispiel), einer Autorität, stellen einem Benutzer von How-To Geek sicher, dass der Schlüssel unverändert ist und nicht von jemandem gesendet wird, der böswillig ist.
Da der Hash einfach zu überwachen und unmöglich zu implementieren ist (einige würden "schwierig" sagen), bedeutet die korrekte, verifizierte Hash-Signatur, dass das Zertifikat und die Verbindung vertrauenswürdig sind und dass die Daten verschlüsselt von Ende zu Ende gesendet werden können . Was aber, wenn der Hash nicht wirklich eindeutig ist?
Vielleicht haben Sie in Mathematik von dem "Geburtstagsproblem" gehört obwohl du vielleicht nicht gewusst hast, wie es heißt. Die Grundidee ist, dass, wenn Sie eine ausreichend große Gruppe von Menschen zusammenbringen, die Wahrscheinlichkeit hoch ist, dass zwei oder mehr Personen denselben Geburtstag haben. Höher als Sie es erwarten würden - genug, dass es wie ein merkwürdiger Zufall aussieht. In einer Gruppe von nur 23 Personen gibt es eine 50% ige Chance, dass zwei einen 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 Daten erstellen, die in sie eingefügt werden. Wenn die Anzahl der Hashwerte jedoch zunimmt, wird es wahrscheinlicher, dass verschiedene Datenpaare den gleichen Hashwert erzeugen. So könnte man ein nicht vertrauenswürdiges Zertifikat mit einem identischen Hash zu einem vertrauenswürdigen Zertifikat erstellen. Wenn Sie das nicht vertrauenswürdige Zertifikat installieren, könnte es sich als vertrauenswürdig tarnen und schädliche Daten verteilen.
Das Finden übereinstimmender Hashwerte in zwei Dateien wird als -Kollisionsangriff bezeichnet. Es ist bekannt, dass bereits mindestens ein groß angelegter Kollisionsangriff für MD5-Hashes aufgetreten ist. Aber am 27. Februar 2017 kündigte Google SHAtered an, die erste Kollision für SHA-1. Google konnte trotz unterschiedlichem Inhalt eine PDF-Datei erstellen, die denselben SHA-1-Hash wie eine andere PDF-Datei enthielt.
SHAtered wurde für eine PDF-Datei ausgeführt. PDFs sind ein relativ loses Dateiformat; Viele kleine Änderungen auf Bit-Ebene können vorgenommen werden, ohne dass die Leser daran gehindert werden, sie zu öffnen oder sichtbare Unterschiede zu verursachen. PDFs werden häufig auch zur Bereitstellung von Malware verwendet. Während SHAtered an anderen Dateitypen, wie ISOs, arbeiten kann, sind Zertifikate streng spezifiziert, was einen solchen Angriff unwahrscheinlich macht.
Wie einfach ist es, diesen Angriff auszuführen? SHAtered basierte auf einer 2012 von Marc Stevens entdeckten Methode, die über 2 ^ 60.3 (9.223 Trillionen) SHA-1-Operationen erforderte - eine erstaunliche Zahl. Diese Methode ist jedoch immer noch 100.000-mal weniger Operationen erforderlich, als mit Brute-Force das gleiche Ergebnis erzielen würde. Google stellte fest, dass bei 110 parallel arbeitenden High-End-Grafikkarten die Kollision etwa ein Jahr dauern würde. Das Mieten dieser Rechenzeit von Amazon AWS würde ungefähr $ 110.000 kosten. Denken Sie daran, dass Angriffe wie SHAtered einfacher werden, wenn die Preise für Computerteile sinken und Sie mehr Leistung für weniger erhalten.
110.000 $ mögen viel erscheinen, aber für einige Organisationen ist es erschwinglich bedeutet, dass Cybervillianer im realen Leben digitale Dokumentensignaturen fälschen können, Backup- und Versionskontrollsysteme wie Git und SVN stören oder ein bösartiges 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 zur Verfügung, und sowohl Chrome als auch Firefox haben die Unterstützung für sie abgelehnt. Linux-Distributionen werden in der Regel häufiger als einmal pro Jahr veröffentlicht, was es für einen Angreifer unpraktisch macht, eine bösartige Version zu erstellen und dann eine solche für den gleichen SHA-1-Hash zu generieren.
Andererseits sind einige Angriffe basierend auf SHAtered bereits in der realen Welt passiert. Das SVN-Versionskontrollsystem verwendet SHA-1, um Dateien zu unterscheiden. Das Hochladen der zwei PDFs mit identischen SHA-1-Hashes in ein SVN-Repository führt dazu, dass es beschädigt wird.
Es gibt nicht viel für den typischen Benutzer. Wenn Sie Prüfsummen zum Vergleichen von Dateien 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 Hash-Algorithmen wie SHA-2, SHA-3 oder bcrypt verwenden. Wenn Sie befürchten, dass SHAtered verwendet wurde, um zwei verschiedene Dateien mit demselben Hash zu versehen, hat Google ein Tool auf der SHAtered-Site veröffentlicht, das nach Ihnen suchen kann.
Bild-Credits: Lego Firefox, viel Hash, bitte nicht verletzen das Web Autor unbekannt, Google.
So stoppen Sie Spotify von der Wiedergabe aller Songs mit der gleichen Lautstärke
Wenn Toningenieure ein Album mischen, entscheiden sie, wie laut sie jede Spur haben möchten. Je nachdem, was die Absichten des Künstlers sind, möchten sie vielleicht, dass ein Track etwas leiser ist als ein anderer, um die Gesamtatmosphäre zu erhöhen. Der Effekt ist noch stärker zwischen Alben, besonders aus verschiedenen Epochen.
Mit der Wallet-App auf dem iPhone können Sie alle Ihre Kundenkarten, Bordkarten, Kinokarten und mehr direkt auf Ihrem Gerät. Leider unterstützt es offiziell nur eine Handvoll Geschäfte und Marken. Zum Glück gibt es eine Möglichkeit, diese Apps mit einem Barcode zu versehen, unabhängig davon, ob dieser offiziell unterstützt wird oder nicht.