Frage:
Ist sha1sum noch sicher für die Signatur herunterladbarer Softwarepakete?
Michael
2015-09-02 15:00:14 UTC
view on stackexchange narkive permalink

Wir verwenden sha1sum , um den SHA-1-Hashwert unserer Pakete zu berechnen.

Erläuterungen zur Verwendung: Wir vertreiben einige Softwarepakete und Wir möchten, dass Benutzer bis zum letzten Bit überprüfen können, ob das heruntergeladene Paket das richtige ist.

Der kryptografische SHA-1-Hash-Algorithmus wurde durch SHA-2 ersetzt, da SHA-1 bekanntermaßen erheblich schwächer ist.

Können wir weiterhin sha1sum code verwenden? >?

Oder sollten wir es durch sha256sum oder sha512sum ersetzen?

Verwenden Sie es für welchen Zweck? Welche Recherchen haben Sie durchgeführt? Haben Sie https://en.wikipedia.org/wiki/SHA-1 und http://security.stackexchange.com/q/64049/971 gelesen? Es wird über die bekannten Schwachstellen in SHA-1 und Angriffe darauf sowie über die verschiedenen Arten von Sicherheitszielen diskutiert, die Anwendungen möglicherweise benötigen. Was genau ist Ihre Verwirrung, die nicht bereits in diesem Wikipedia-Artikel und anderen Artikeln hier auf dieser Website behandelt wird? Siehe auch http://security.stackexchange.com/q/94690/971 und [tag: sha].
Meine Frage bezieht sich nicht auf SHA1. Meine Frage bezieht sich auf sha1sum. Tom Leek versteht es sehr richtig und ich akzeptiere seine Antwort.
Ihre Frage ist auch eine Frage zu SHA1 - ich habe keine Ahnung, warum Sie denken würden, dass dies nicht der Fall ist. Die Frage, ob "sha1sum" sicher ist, bedeutet zu fragen, ob der SHA1-Algorithmus sicher ist, da "sha1sum" nur den SHA1-Algorithmus berechnet.
Sieben antworten:
Tom Leek
2015-09-02 17:32:50 UTC
view on stackexchange narkive permalink

Ich nehme an, Sie "verwenden sha1sum " im folgenden Kontext: Sie verteilen einige Softwarepakete, und Sie möchten, dass Benutzer bis zum letzten Mal überprüfen können, ob das heruntergeladene Paket das richtige ist bisschen. Dies setzt voraus, dass Sie eine Möglichkeit haben, den mit SHA-1 berechneten Hash-Wert "unveränderlich" zu übermitteln (z. B. als Teil einer Webseite, die über HTTPS bereitgestellt wird).

Ich nehme auch an dass es sich hier um Angriffe handelt, dh um eine böswillige Person, die das Paket beim Herunterladen irgendwie ändern kann und Änderungen vornehmen möchte, die unentdeckt bleiben.

Die Die Sicherheitseigenschaft, die die verwendete Hash-Funktion hier bieten sollte, ist Widerstand gegen Zweitvorbilder . Am wichtigsten ist, dass dies nicht mit dem Widerstand gegen Kollisionen identisch ist. Eine Kollision liegt vor, wenn der Angreifer zwei unterschiedliche Nachrichten m und m ' erstellen kann, die denselben Wert haben. Ein zweites Vorbild ist, wenn der Angreifer ein festes m erhält und aufgefordert wird, ein eindeutiges m ' zu finden, das auf denselben Wert hasht.

Zweitvorbilder sind viel schwieriger zu erhalten als Kollisionen. Für eine "perfekte" Hash-Funktion mit Ausgabegröße n Bits beträgt der Rechenaufwand zum Finden einer Kollision etwa 2 n / 2 sup> Aufrufe der Hash-Funktion; Für ein zweites Vorbild ist dies 2 n sup>. Darüber hinaus gelten strukturelle Schwächen, die einen schnelleren Kollisionsangriff ermöglichen, nicht unbedingt für einen Angriff mit einem zweiten Vorbild. Dies gilt insbesondere für die bekannten Schwächen von SHA-1: Derzeit (September 2015) sind einige theoretische Schwächen von SHA-1 bekannt, die die Berechnung einer Kollision in weniger als dem Ideal 2 ermöglichen sollten 80 sup> Aufwand (dies ist immer noch ein großer Aufwand, ungefähr 2 61 sup>, daher wurde er noch nicht tatsächlich demonstriert); Bei diesen Schwächen handelt es sich jedoch um unterschiedliche Pfade, bei denen der Angreifer sowohl m als auch m ' erstellen muss. Daher übertragen sie keine zweiten Vorbilder.

Derzeit ist kein zweiter Vorbildangriff auf SHA-1 bekannt, der sogar theoretisch oder akademisch schneller wäre als der generische Angriff, mit Kosten von 2 160, die weit über die technologische Machbarkeit hinausgehen Ein langer Schuss.

Fazit: SHA-1 ist im Kontext dessen, was Sie versuchen, sicher und wird wahrscheinlich bleiben für einige Zeit sicher (sogar MD5 wäre immer noch angemessen).

Ein weiterer Grund für die Verwendung von sha1sum ist die Verfügbarkeit clientseitiger Tools: insbesondere des Befehlszeilen-Hashing-Tools Von Microsoft für Windows bereitgestellt ( FCIV genannt) kennt MD5 und SHA-1, aber nicht SHA-256 (zumindest in der Dokumentation) (*).

Windows 7 und höher enthält auch ein Befehlszeilentool namens "certutil", mit dem SHA-256-Hashes berechnet werden können der Unterbefehl "-hashfile". Dies ist nicht allgemein bekannt, kann aber manchmal zweckmäßig sein. Sup>


Abgesehen davon ist ein starker Grund gegen die Verwendung von SHA-1 der von image : Es ist derzeit sehr im Trend, jede Verwendung von SHA-1 zu buhen und zu verspotten. Die Menge schreit nach Entfernung, Anathema, Verhaftung und öffentlicher Hinrichtung. Mit SHA-1 sagen Sie der Welt, dass Sie definitiv kein Hipster sind. Aus geschäftlicher Sicht ist es selten gut, der Mode du jour nicht nachzugeben. Daher sollten Sie eine der SHA-2-Funktionen verwenden, z. SHA-256 oder SHA-512.

Es gibt keinen starken Grund, SHA-256 SHA-512 vorzuziehen oder umgekehrt. Einige kleine 32-Bit-Architekturen sind mit SHA-256 besser vertraut, dies ist jedoch in der Praxis selten von Bedeutung (selbst eine 32-Bit-Implementierung von SHA-512 kann bei einer Anämie immer noch mehrere Dutzend Megabyte Daten pro Sekunde hashen Laptop und sogar im 32-Bit-Modus verfügt eine nicht zu alte x86-CPU über einige Fähigkeiten bei 64-Bit-Berechnungen mit SSE2, die SHA-512 einen guten Schub verleihen. Jeder Marketingexperte würde Ihnen empfehlen, SHA-512 nur dann zu verwenden, wenn 512 größer als 256 ist. "Es muss also besser sein" auf irgendeine (magische) Weise.

Wenn es sich um eine Download-Überprüfung handelt, können Sie auch beides anbieten.
Es gibt einen guten Grund, SHA-256 die meiste Zeit zu bevorzugen: SHA-512-Digests sind sehr lang.
Herzlichen Glückwunsch zum Geburtstag Ihres Vertreters Mr 100k Leek :-)
In diesem Zusammenhang ist ein Kollisionsangriff auf den Hash ziemlich schwierig. Dies ist ein Insider, der das Paket manipulieren kann, aber nicht vermeiden kann, dass es vor der Unterzeichnung einer Qualitätssicherung unterzogen wird. Wenn sie eine Kollision haben, können sie einen der beiden zur Unterzeichnung an die Qualitätssicherung senden und später veranlassen, dass jemand den anderen (böswilligen) erhält. Jemand in dieser Position kann jedoch wahrscheinlich alle Arten von Tricks anwenden, um hinterhältigen Code durch die Qualitätssicherung zu schleichen. In der Praxis wäre es ein absoluter letzter Ausweg, mit der Unterzeichnung herumzuspielen, und es ist daher durchaus vernünftig, sie vom Bedrohungsmodell IMO auszuschließen.
@minitech Es gibt auch SHA-384, das mehr oder weniger nur ein abgeschnittenes SHA-512 ist.
Die Verwendung von SHA-1 für Zertifikate, die jetzt auslaufen, ist ein sehr vernünftiger Schritt. Tun Sie es jetzt besser, als zu warten, bis es so kaputt ist wie bei MD5. Es gibt Anwendungsfälle, in denen SHA-1 und sogar MD5 noch sicher sein können. Aber für diejenigen, die mit all dem nicht Schritt halten können, ist es besser, SHA-2 überall zu verwenden, als SHA-1 oder MD5.
@SteveJessop, mit Software, die von einem vorgelagerten Projekt abhängt, müsste nicht einmal ein Insider des tatsächlichen Produkts sein. Z.B. Wenn bekannt ist, dass libfoo in die Software eingebettet ist, kann der Entwickler von libfoo eine Kollision zwischen einer legitimen gepatchten Version von libfoo und einer bösartigen Version feststellen, die legitime Version als neue Version zur Aufnahme in die Software veröffentlichen und sie dann ersetzen mit dem böswilligen ohne Hash-Änderung. Ein großes Projekt kann viele solcher Bibliotheken enthalten.
@otus In der Praxis kompilieren Linux-Distributoren die Software normalerweise aus dem Quellcode mit ihren spezifischen Flags, manchmal Abhängigkeiten usw. neu. Einige Distributionen (Gentoo, ich sehe Sie an) bieten dem Benutzer (Administrator) ein hohes Maß an Kontrolle über diesen Prozess . Ein solcher Angriff müsste also sorgfältig angepasst werden, * und * dann müsste der Angreifer (libfoo-Entwickler) einen Weg finden, um die libfoo-Binärdateien im Paket-Repository der Distribution zu ersetzen. Möglich? Technisch ja. Praktisch? Zweifelhaft.
@MichaelKjörling, wenn es keine Möglichkeit gäbe, das Softwarepaket zu ersetzen, wäre der Hash überhaupt nicht erforderlich. Ja, der von mir skizzierte Angriff ist schwierig und möglicherweise nicht praktikabel, aber ich würde mich mit einem kollisionssicheren Hash immer noch wohler fühlen.
paj28
2015-09-02 15:34:47 UTC
view on stackexchange narkive permalink

Sie sollten SHA-256 oder SHA-512 verwenden.

Wenn Sie nur selbst signierte Pakete signieren, ist SHA-1 für diesen Zweck technisch immer noch sicher. Die Eigenschaft, die jetzt geschwächt ist, ist "Kollisionsbeständigkeit", auf die Sie sich nicht strikt verlassen. Die Sicherheit von SHA-1 wird sich jedoch mit der Zeit nur verschlechtern. Daher ist es sinnvoll, jetzt fortzufahren.

-1, weil Kollisionen immer noch ein Problem sein können, selbst wenn Sie derjenige sind, der sie signiert.Wenn jemand Ihren privaten Schlüssel stiehlt, kann er zwei Versionen derselben Software mit passenden Digests erstellen.Sie können eine gutartige Version verteilen, die die Leute analysieren und daraus schließen können, dass sie sicher ist, und dann die böswillige Version herausgeben.
@forest - Wenn jemand Ihren privaten Schlüssel stiehlt, kann er alles unterschreiben, was er will.
Ja, aber sie können nicht zwei verschiedene Versionen einiger Daten mit derselben Signatur, aber unterschiedlichen Inhalten veröffentlichen.Wenn ich den Hash von etwas überprüfe, das ich heruntergeladen habe, und mir tatsächlich ansehe, was ich herunterlade, möchte ich nicht, dass ich ihn beim zweiten Herunterladen durchschaue, auch wenn der Hash bereits übereinstimmt.Sobald ich den Quellcode (zum Beispiel) einmal überprüft habe, sollte für alles andere mit demselben Hash keine weitere Prüfung erforderlich sein.
@forest - Ok.Tatsächlich könnte das von Ihnen beschriebene Problem auch ohne gestohlenen Schlüssel ein Problem sein - der rechtmäßige Eigentümer könnte eine harmlose und böswillige Version herausgeben.Sie verwirren tatsächlich Hashes und Signaturen.Während eine Signatur einen Hash enthält, endet die Ähnlichkeit dort.Wenn Sie Ihre eigene Prüfung durchführen, können Sie den von Ihnen geprüften Code mit einem beliebigen Algorithmus hashen.Wenn Sie die Signatur verwenden, entscheiden Sie normalerweise: "Ich vertraue diesem Schlüssel, ich vertraue dem, was von ihm signiert ist."
@forest - Warum haben Sie auch die Antwort von Tom Leek nicht abgelehnt, die dasselbe sagt?
Ein guter Punkt, um den von Ihnen geprüften Code mit einem beliebigen Hash zu hashen.Das ist eine Lösung, an die ich nicht gedacht habe und die die Sicherheitsanforderungen vollständig auf die der Bildresistenz beschränkt.Mein DV war verfrüht, da ich das nicht berücksichtigt habe.Ich kann den DV entfernen, sobald der Beitrag bearbeitet wurde, um meine Stimme freizuschalten.
Cort Ammon
2015-09-03 19:59:04 UTC
view on stackexchange narkive permalink

Tom Leak hat eine schöne Antwort (weshalb sie akzeptiert wird). Es befasst sich mit den mathematisch nachweisbaren Fakten hinter der Verwendung von SHA-1. Es gibt einen zweiten Ansatz, der weniger auf Fakten basiert, aber wertvolle heuristische Informationen liefern kann. Ich habe diesen Ansatz durch das Lesen von Bruce Schneiers Meinungen gelernt, aber ich kann die Links nicht sofort finden, so dass Bruce sich mit meinem Namedropping befassen muss.

Theoretisch wird ein Algorithmus erst dann kaputt gemacht, wenn er kaputt ist. Bis jemand einen Weg gefunden hat, X zu tun, wobei X etwas ist, das rechnerisch nicht durchführbar sein sollte, wird es nicht als "kaputt" betrachtet. 1 sup> Dies erweist sich jedoch als von begrenztem Wert für seine praktische Anwendung in Kryptographie. Kryptografen würden wirklich lieber eine kleine Benachrichtigung erhalten, bevor ihre Produkte auseinanderfallen, nicht danach.

Historisch gesehen wurde festgestellt, dass Algorithmen selten in einem großen Schritt gebrochen werden. Ja, es kann passieren, und ein Kryptograf muss das planen, aber empirisch wurde festgestellt, dass sie normalerweise im Laufe der Zeit Papier für Papier weggeschnitten werden. Es wurde festgestellt, dass das Beobachten der Schwierigkeit, eine Kollision zu erzeugen, eine einigermaßen gute Metrik ist, um zu schätzen, wann der Algorithmus tatsächlich gebrochen wird. Wenn Tom darauf hinweist, dass die Kollision 2 sup> 80 sup> -Operationen und jetzt 2 61 sup> dauern sollte, ist es sehr wichtig, wie er darauf hinzuweisen, dass die 2 61 sup> -Operationen sind theoretisch, da sie immer noch zu groß sind, um einen Versuch zu rechtfertigen. Es ist jedoch auch gültig, es als "den Algorithmus hat eine Verringerung der Stärke um 19 Bit Leistung erfahren" zu betrachten und dies als Faustregel eines armen Mannes zu verwenden, um vorwärts zu projizieren und abzuschätzen, wann dies zu einem Problem werden wird / p>

Diese Art des Denkens ist der Grund, warum es jetzt einen SHA-3 gibt, obwohl SHA-1 theoretisch immer noch nicht vollständig kaputt ist. Die an der Entwicklung und dem Testen von SHA-3 beteiligten Kryptographen wissen, dass es eine Weile dauern wird, bis das Vertrauen in SHA-3 aufgebaut ist, und sie möchten sicherstellen, dass das Vertrauen vorhanden ist, bevor SHA-1 bricht, und nicht danach. P. >

1. sup> Mir ist bewusst, dass die technisch strengste Definition eines "kaputten" Hashs nur eine ist, bei der ein Angreifer besser als Brute Force sein kann, als wenn es tatsächlich rechnerisch machbar wird. Diese letztere Definition wird jedoch typischer verwendet, wenn die praktische Seite des Hashings diskutiert wird

user219861
2015-09-02 15:40:58 UTC
view on stackexchange narkive permalink

Auch wenn Sie nicht für die Bundesregierung arbeiten, ist der Link zum folgenden Dokument ein guter Hinweis darauf, wie lange Personen Hash-Schlüssellängen bis zu zukünftigen Daten für bestimmte Aufgaben wie die Authentifizierung einer Signatur verwenden sollten. Für die Paketauthentifizierung würde ich auch eine Größe angeben, die das Erstellen einer Kollision erheblich erschwert (geändertes Paket, das demselben Hash entspricht). Warum sollten Sie nicht sowohl SHA1 als auch SHA512 verwenden (wenn die Rechenzeit nicht so aufwändig ist)? Berücksichtigen Sie auch die asymmetrische Schlüssellänge, mit der der angegebene Hash signiert wird. Während es großartig ist, dass Sie darüber nachdenken, gibt es wahrscheinlich andere Integritätsprobleme, die dringlicher sind, wie beispielsweise sicherzustellen, dass eine Person keinen gefälschten Hash zum Vergleich erhält und die Quelle aller Ihrer eingeschlossenen Bibliotheken, von denen mehr wäre ein Risiko.

P.S. Wenn Sie über Zertifikate für einen Browser nachdenken, werden sowohl Chrome als auch IE die Benutzeroberfläche für den Sonnenuntergang bei der Verwendung von SHA1 festlegen. Wenn Sie Passwörter speichern, achten Sie auf gesalzene (und möglicherweise gepfefferte) Hashes mit PBKDF2.

http://csrc.nist.gov/publications/nistpubs/800-131A/sp800-131A.pdf http://googleonlinesecurity.blogspot.com/ 2014/09 / allmählich-Sonnenuntergang-sha-1.html https://en.wikipedia.org/wiki/PBKDF2

Damon
2015-09-03 21:03:12 UTC
view on stackexchange narkive permalink

Für den beabsichtigten Zweck lautet die praktische Antwort "Ja, natürlich". Aus Gründen des Prestiges sollten Sie jedoch auch einen neueren Hash (wie SHA-3) veröffentlichen.
Wenn dies nicht der Fall ist Bei viel "Gestank" könnten Sie im Prinzip immer noch MD5 verwenden (abgesehen von Leuten, die Sie anschreien, funktioniert sogar MD5 für diese Anwendung einwandfrei).

Die Verwendung von SHA-1 zur Überprüfung von Downloads war noch nie "sicher". und soll in erster Linie nicht sein. Der Hauptzweck der Bereitstellung eines Hash (jeglicher Art) besteht darin, Bitfehler, teilweise Downloads oder das versehentliche Herunterladen der falschen ausführbaren Datei zu erkennen (klicken Sie auf die Zeile oben oder unten in der Liste und bemerken Sie dies nicht).

Böswillige Änderungen sind ein Problem, das mit einem Hash nicht sehr gut behoben wird, da ein Angreifer, der über ausreichenden Zugriff auf den Server verfügt, um die Binärdatei ersetzen zu können, normalerweise auch den Hash ersetzen kann.
Wohl, Sie tun etwas Sicherheit, wenn Sie ein CDN verwenden, da jemand, der Zugriff auf einen Knoten im CDN erhält, die Binärdatei auf diesem Knoten ohne den Benutzer (der den Hash vom Server herunterlädt, der nur Sie steuern) bemerken.

Wenn Sie jedoch etwas benötigen, das "sicher" und widerstandsfähig gegen böswillige Änderungen sein muss, sollten Sie Ihre ausführbaren Dateien auf jeden Fall digital signieren und beispielsweise einschließen eine GPG-Signatur. Ein Hash reicht nicht aus.

SHA-3 wurde zu diesem Zeitpunkt erst seit einigen Wochen standardisiert ([Wikipedia] (https://en.wikipedia.org/wiki/SHA-3) veröffentlicht am 5. August 2015 die NIST-Standardversion). Dies bedeutet, dass die Softwareunterstützung, insbesondere unter dem Namen SHA-3, äußerst gering ist. SHA-2 ist wahrscheinlich * vorerst * besser, aber einen Plan für den zukünftigen Wechsel von Hash-Algorithmen zu haben, ist wahrscheinlich trotzdem eine gute Idee.
TheJulyPlot
2015-09-02 15:15:56 UTC
view on stackexchange narkive permalink

Können Sie es weiterhin verwenden? .. Ja, können Sie, aber sha-1 ist anfällig für Kollisionsangriffe und wurde von einer Reihe von Browsern veraltet.

Wenn die Frage lautete, sollten Sie es weiterhin verwenden , dann würde ich nein sagen, du solltest nicht, du solltest zu sha-2 und sha256sum wechseln.

Smit Johnth
2018-07-25 06:14:58 UTC
view on stackexchange narkive permalink

Es gibt bessere Möglichkeiten als SHA2. Blake2 ist zum Beispiel Finalist des SHA3-Wettbewerbs, und Blake2-256 ist so schnell wie SHA1 und viel schneller als SHA2. Es kann als Prüfsummenalgorithmus in Winrar 5 verwendet werden. Wie MD5 und SHA1 basiert SHA2 auf der Merkle-Damgard-Struktur und weist möglicherweise ähnliche Schwachstellen auf. SHA3 ​​ist nicht anfällig, aber SHA3-224 ist ca. 8-mal langsamer als SHA1.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...