Entwicklertools · SHA-Hash-Rechner
Eine passende Prüfsumme ist keine Signatur: Integrität vs. Authentizität
· Warum es wichtig ist
sha-256 Kryptographie Sicherheit
Mit einem veröffentlichten SHA-256 können Benutzer einen beschädigten Download erkennen. Wenn der Angreifer jedoch die Seite kontrolliert, kontrolliert er auch die Prüfsumme. Dieser Beitrag trennt Integrität von Authentizität und erklärt, was Signaturen hinzufügen.
Die Prüfsumme auf derselben Seite wie der Download – warum sie vor Korruption schützt, aber nicht vor einem kompromittierten Host
Eine Softwareversion wird mit einer Prüfsumme SHA-256 auf derselben Seite wie der Download veröffentlicht. Benutzer können das Archiv abrufen, hashen und das Ergebnis mit dem veröffentlichten Wert vergleichen. Wenn sie übereinstimmen, ist der Download nicht beschädigt. Dies ist eine Integritätsüberprüfung und eine echte und nützliche Überprüfung. Wenn ein Angreifer jedoch den Webserver kompromittiert, der die Veröffentlichung hostet, kann er die Binärdatei ersetzen, deren SHA-256 neu berechnen und die Prüfsumme auf der Seite aktualisieren. Der Benutzer überprüft die Prüfsumme und die Malware des Angreifers scheint vom Herausgeber zu stammen. Das System funktionierte genau wie geplant, beantwortete jedoch nicht die Frage, die der Benutzer zu stellen glaubte.
Dies ist kein Fehler der Prüfsumme selbst. Es ist eine korrekte Beobachtung darüber, was eine Prüfsumme bewirkt und was nicht. Eine Prüfsumme beweist, dass zwei Kopien von Daten identisch sind. Es ist kein Beweis dafür, wer die Daten erstellt hat. Das ist der Unterschied zwischen Integrität und Authentizität, und ihre Vermischung ist einer der häufigsten Sicherheitsfehler bei der Release-Überprüfung. Viele Systeme sind nicht kaputt, weil ihre Prüfsummen falsch sind, sondern weil Benutzer darauf vertrauen, dass sie Fragen beantworten, die sie nicht beantworten können.
Was für ein Hash beweist – dass zwei Eingaben dieselben Bytes sind und nichts darüber, wer sie erstellt hat
Integrität ist eine Eigenschaft der Daten selbst. Wenn Sie eine Datei und deren SHA-256 haben und die Datei nicht geändert wurde, stimmt der Hash überein. Der Hash beweist, dass jedes Byte seit seiner Berechnung unverändert ist. Wenn die Datei durch einen Übertragungsfehler, einen Festplattenfehler oder ein umgedrehtes Bit an einem Netzwerkkabel beschädigt wurde, stimmt der Hash nicht überein. Genau das leisten Prüfsummen. Sie sind hervorragend darin, Unfälle und zufällige Korruption aufzuspüren. Sie scheitern an einem Gegner, der ebenfalls Hashes berechnen kann.
Authentizität ist eine Eigenschaft des Anspruchs darüber, wer die Daten erstellt hat. Die Frage „stammt diese Datei von dem Herausgeber, dem ich vertraue?“ unterscheidet sich grundlegend von der Frage „Wurde diese Datei geändert?“ Ein Hash allein kann die Authentizitätsfrage nicht beantworten, da jeder einen Hash berechnen kann. Der Angreifer, der die Datei verändert, kann den neuen Hash genauso einfach berechnen und veröffentlichen wie der legitime Herausgeber. Hashing ist symmetrisch; Sowohl der Verteidiger als auch der Angreifer verfügen über die gleichen Rechenfähigkeiten.
Die Anforderung an einen vertrauenswürdigen Kanal – warum eine Prüfsumme nur so vertrauenswürdig ist, wie der Ort, an dem Sie sie erhalten haben
Die Anforderung an einen vertrauenswürdigen Kanal ist die wichtigste Erkenntnis. Eine Prüfsumme ist nur so vertrauenswürdig wie der Kanal, über den sie gesendet wurde. Wenn Sie die Software-Binärdatei vom offiziellen CDN des Herausgebers herunterladen und die Prüfsumme vom selben Server herunterladen, haben sie denselben Weg zurückgelegt. Die Kompromittierung des Servers bedeutet, dass ein Angreifer beide kontrolliert. Die Prüfsumme bietet Schutz vor Beschädigungen während der Übermittlung – eine beschädigte Datei wird nicht abgeglichen –, jedoch nicht vor einem Angreifer, der die Quelle kontrolliert. Die Prüfsumme und die Datei teilen sich einen einzigen Fehlerpunkt.
Wenn die Prüfsumme separat auf einem anderen Server mit unterschiedlichen Zugriffskontrollen veröffentlicht würde, bietet dies einen besseren Schutz. Ein Angreifer, der den primären Standort kompromittiert, müsste beide Standorte kompromittieren, um ein passendes Paar zu fälschen. Das ist besser, aber es ist immer noch darauf angewiesen, dass zwei unabhängige Kontrollpunkte sicher bleiben. Der Angreifer muss nun zwei Systeme statt eines durchbrechen, was die Kosten des Angriffs erhöht. Aber es ist immer noch kein Beweis für die Echtheit; es ist nur ein teurerer Angriff.
Signaturen binden einen Hash an eine Identität – wie das Signieren des Digests mit einem privaten Schlüssel Authentizität hinzufügt
Eine digitale Signatur behebt dieses Problem, indem sie die Daten mithilfe von Kryptografie an eine Identität bindet. Der Herausgeber generiert ein Schlüsselpaar: einen privaten Schlüssel, den er geheim hält, und einen öffentlichen Schlüssel, den er veröffentlicht. Sie signieren die Datei, indem sie einen Digest berechnen und diesen dann mit ihrem privaten Schlüssel verschlüsseln. Das Ergebnis ist die Signatur. Ein Benutzer überprüft die Signatur, indem er sie mit dem öffentlichen Schlüssel des Herausgebers entschlüsselt und prüft, ob das Ergebnis mit dem berechneten Digest der empfangenen Datei übereinstimmt. Durch die Kryptographie entsteht eine Asymmetrie, die die Prüfsumme nicht erreichen kann.
Wenn dies funktioniert, sind zwei Dinge bewiesen: Die Daten stimmen mit dem vom Herausgeber signierten Digest überein, und der zum Signieren verwendete private Schlüssel stimmt mit dem veröffentlichten öffentlichen Schlüssel überein. Das beweist, dass der Herausgeber es erstellt hat und nicht nur, dass ein Angreifer es getan hat. Der öffentliche Schlüssel muss über einen sicheren Kanal übermittelt werden – normalerweise ein Zertifikat einer vertrauenswürdigen Zertifizierungsstelle – aber sobald Sie den öffentlichen Schlüssel haben, können Sie die Signaturen dieses Herausgebers auf unbestimmte Zeit überprüfen. Der Angriff erfordert nun den Diebstahl des privaten Schlüssels, was weitaus schwieriger ist als die Kompromittierung eines Webservers.
Ausgearbeitetes Beispiel – drei Bedrohungsszenarien (beschädigter Spiegel, kompromittierte Seite, böswilliger Insider) und welche Prüfsumme und Signatur sie jeweils erfassen
Drei Bedrohungsszenarien verdeutlichen den Unterschied. Szenario eins: Der Download-Spiegel ist durch einen zufälligen Fehler beschädigt. Die Prüfsumme fängt es auf; die Signatur fängt es auf. Beide funktionieren gleich gut, da keiner einen Angreifer besiegen muss. Szenario zwei: Der Spiegel wird von einem Angreifer kompromittiert, der die Datei und die Prüfsumme ersetzt. Die Prüfsumme bietet keinen Schutz; Die Signatur funktioniert immer noch, da der Angreifer nicht über den privaten Schlüssel verfügt und keine gültige Signatur fälschen kann. Der Angreifer kann alles veröffentlichen, aber die Signatur beweist, dass es nicht vom Herausgeber stammt.
Szenario drei: Das CDN ist kompromittiert, aber die Signatur wurde über einen anderen Kanal veröffentlicht. Der Prüfsumme im CDN kann nicht vertraut werden, aber die Überprüfung der Signatur funktioniert trotzdem, da die Integritätsprüfung kryptografisch an den Schlüssel des Herausgebers und nicht an den Kanal gebunden ist. Der Angreifer muss nun eine Signatur fälschen, wofür der private Schlüssel erforderlich ist. Die Signatur ist die einzige Verifizierung, die eine Serverkompromittierung übersteht. Aus diesem Grund sind Signaturen für die Authentizität notwendig; Sie sind das einzige Tool, das trotz Kanalkompromittierung die Identität nachweist.
Die Rolle von TLS und seine Grenzen – Transportsicherheit schützt den Download während der Übertragung, nicht den Server des Herausgebers
Transportsicherheit schützt die Verbindung zu dem durch das Zertifikat benannten Host. Es kann einen Beobachter auf dem Pfad daran hindern, Download-Bytes zu ersetzen, aber es kann einen kompromittierten Herausgeberursprung nicht ehrlich machen. Wenn dieser Ursprung ein geändertes Archiv und eine neu berechnete Prüfsumme über gültiges TLS bereitstellt, kommen beide intakt an und beschreiben weiterhin vom Angreifer kontrollierte Inhalte.
Aus diesem Grund sind Transport, Integrität und Authentizität getrennte Ebenen. TLS sichert einen Kanal, ein Digest vergleicht Bytes und eine Signatur verknüpft ein Verifizierungsergebnis mit der Kontrolle eines privaten Schlüssels. Keine Ebene sollte als Beweis für die von einer anderen bereitgestellte Eigenschaft beschrieben werden, selbst wenn ein Release-Workflow alle drei sinnvoll kombiniert.
Was dies nicht abdeckt – Schlüsselverteilung und Vertrauenswurzeln, die den schwierigen Teil von Signaturen ausmachen
Die Schlüsselverteilung ist die harte Grenze, die dieser Digest-Rechner nicht überschreitet. Ein Signaturprüfer benötigt weiterhin einen authentischen öffentlichen Schlüssel oder eine authentische Zertifikatskette sowie eine Richtlinie für Rotation, Widerruf und akzeptable Algorithmen. Eine mathematisch gültige Signatur unter einem nicht vertrauenswürdigen Schlüssel beweist nur, dass der Inhaber dieses nicht vertrauenswürdigen Schlüssels die Bytes signiert hat.
Dementsprechend enden die bearbeiteten Szenarien dort, wo bereits ein vertrauenswürdiger Schlüssel verfügbar ist. Sie schreiben kein Zertifikat-Pinning, keine Public-Key-Infrastruktur oder Freigabezeremonien vor. Für diese Bereitstellungsoptionen ist ein eigenes, überprüftes Design erforderlich. ToolAcre stellt den einfachen Digest bereit, der signiert werden kann, nicht den Vertrauensstamm, der zur Validierung einer Identität verwendet wird.
Takeaway: Prüfsummen für Integrität, Signaturen für Authentizität – der ToolAcre SHA-Hash-Rechner berechnet Digests; Die Überprüfung, wer sie veröffentlicht hat, ist ein separater Schritt
Der ToolAcre SHA-Hash-Rechner berechnet die Integritätsseite dieser Überprüfung. Verwenden Sie es, um die heruntergeladene Datei zu hashen und mit einem veröffentlichten Wert zu vergleichen. Wenn sie übereinstimmen, ist der Download nicht beschädigt. Wenn sie jedoch übereinstimmen, weil ein Angreifer beide umgeschrieben hat, kann die Integritätsprüfung allein sie nicht erkennen. Das Tool ist ehrlich zu dieser Einschränkung und erhebt nicht den Anspruch, die Authentizität zu überprüfen. Nur aus Gründen der Integrität sind Prüfsummen schnell und gut. Für die Authentizität benötigen Sie Unterschriften. TLS bietet Transportsicherheit für den Download selbst. Die Verbindung zum Server ist verschlüsselt und authentifiziert, sodass ein Angreifer im Netzwerk die Datei während der Übertragung nicht ändern kann. Allerdings hilft TLS nicht, wenn der Server selbst kompromittiert ist. Ein kompromittierter Server kann jede Datei über jede sichere TLS-Verbindung bereitstellen. Aus diesem Grund ist die Verifizierung auf Anwendungsebene – Prüfsummen und Signaturen – unabhängig von der Transportsicherheit wichtig.
Ein gängiges Muster bei Software-Releases ist die Veröffentlichung sowohl von Prüfsummen als auch von Signaturen. Prüfsummen sind praktisch; Benutzer können sie schnell mit einem einzeiligen Shell-Befehl überprüfen. Signaturen bieten Authentizität für Benutzer, die über den öffentlichen Schlüssel des Herausgebers verfügen. Ein Benutzer überprüft möglicherweise zunächst die Prüfsumme für einen schnellen Integritätsdurchlauf und überprüft dann die Signatur anhand eines in seinem GPG-Schlüsselbund gespeicherten Schlüssels auf Authentizität. Die beiden Kontrollen dienen unterschiedlichen Zwecken und können zur Tiefenverteidigung geschichtet werden. Der schwierige Teil von Signaturen ist die Schlüsselverteilung und das Vertrauen. Sie benötigen den öffentlichen Schlüssel des Herausgebers und müssen darauf vertrauen können, dass es sich tatsächlich um den Schlüssel des Herausgebers handelt. Dies ist das Problem, das Zertifizierungsstellen lösen müssen: Sie signieren Herausgeberzertifikate und die Root-CA-Zertifikate sind in Browsern und Betriebssystemen vorinstalliert. Für ein kleineres Projekt könnten Sie einen GPG-Schlüssel auf einer separaten, gehärteten Website oder auf einem öffentlichen Schlüsselserver veröffentlichen. Die Überprüfung der Prüfsumme ist kostengünstig; Signaturen erfordern die Verwaltung von Vertrauenswurzeln. Die zusätzliche Komplexität ist der Preis der Authentizität.