Ich bin neu in der Kryptographie und habe erfahren, dass SHA-3
(Secure Hash Algorithm 3) das neueste Mitglied von ist Die von NIST veröffentlichte Secure Hash Algorithm-Standardfamilie.
Aber ich habe kürzlich SHA-256
gesehen, aber ich verstehe nicht, was es im Vergleich zu SHA-3
?
Kommentare
- SHA-256 ist SHA-2 mit 256-Bit-Ausgabe. SHA-2 ist der Vorgänger von SHA-3. Sie teilen nur sehr wenig über den Namen hinaus.
- Aber der Name erfasst die Essenz. Wenn Sie keine Kryptografie durchführen, sind dies alles sichere Hash-Algorithmen. Die Vertrags- und Sicherheitsansprüche sind nahezu identisch .
- @MeirMaor Angesichts der Existenz von SHA-1, die eine kühne Aussage zu sein scheint.
- @Maeher, SHA1 wurde mit im Wesentlichen denselben Anforderungen erstellt, wir wissen jetzt, dass dies nicht der Fall ist div id = „6e74f3d0e9“>
erfüllen sie nicht. Zumindest die Anforderungen an die Kollisionsfestigkeit. Es hat auch eine kleinere Ausgangsgröße während SHA3 hat möglicherweise dieselbe Ausgabegröße wie SHA2.
Antwort
Die Hauptunterschiede zwischen dem älteren SHA-256 der SHA-2-Familie von FIPS 180 und der neueren SHA3-256 der SHA-3-Familie von FIPS 202 sind:
-
Widerstand gegen Längenerweiterungsangriffe. Mit SHA-256 wird $ H (m) $ angegeben, aber nicht $ m $ ist es leicht, $ H (m \ mathbin \ | zu finden m „) $ für bestimmte Suffixe $ m“ $ . Nicht so bei einer der SHA-3-Funktionen.
Dies bedeutet, z. B. , dass $ m \ mapsto H (k \ mathbin) \ | m) $ ist kein sicherer Authentifizierungscode für Nachrichten unter dem Schlüssel $ k $ , wenn $ H $ ist SHA-256, da Sie den Authentifikator in einer Nachricht kennen, wenn Sie den Authentifikator in einer Nachricht kennen. Die Längenerweiterungseigenschaft hat die Entwicklung von HMAC teilweise beeinflusst.
Im Gegensatz dazu ist die Schlüsselpräfixkonstruktion als MAC sicher, wenn $ H $ ist eine der SHA-3-Funktionen – oder eine der neueren SHA-2-Funktionen SHA-512/224 und SHA-512/256. Für SHA-224, bei dem es sich im Wesentlichen um die 224-Bit-Kürzung von SHA-256 handelt (jedoch mit einer anderen IV), hat der Gegner eine $ 2 ^ {- 32} $ Chance die verworfenen Ausgabebits in einem einzigen Versuch zu erraten – klein, aber nicht vernachlässigbar.
-
Leistung. Die SHA-2-Funktionen – insbesondere SHA-512, SHA-512/224 und SHA-512/256 – weisen im Allgemeinen eine höhere Leistung als die SHA-3-Funktionen auf. Dies war teilweise auf Paranoia und politische Gründe im SHA-3-Entwurfsprozess zurückzuführen.
(Als Reaktion darauf wurde einer der SHA-3-Finalisten in die viel schnellere BLAKE2 , das heute auch im Internet weit verbreitet ist, und der SHA-3-Gewinner Keccak wurden in das viel schnellere KangarooTwelve verwandelt. )
-
Völlig anderes internes Design. SHA-2 verwendet den Davies –Meyer-Struktur, eine Instanz der Merkle-Damgård-Struktur mit einer Blockverschlüsselung (manchmal auch SHACAL-2 genannt), die aus einem ARX-Netzwerk wie MD4 aufgebaut ist; SHA-3 verwendet die Schwammstruktur mit der Keccak-Permutation.
Hier gibt es keinen vom Benutzer sichtbaren Unterschied, aber es hat das Vertrauen der Kryptographen in die Designs nach vielen DM verändert / ARX-Designs, die auf MD4 basieren, wurden in den späten 90ern und frühen 2000ern gebrochen.
Geschichte. In FIPS 180, dem Secure Hash Standard und später in FIPS 202¸, dem SHA-3 Standard: Permutationsbasierte und erweiterbare Ausgabe, gab es eine lange Reihe von Hash-Funktionen, die von NIST standardisiert wurden Funktionen. Weitere Details und Verlauf, einschließlich der zugehörigen MD4- und MD5-Hash-Funktionen, auf denen SHA-0, SHA-1 und SHA-2 – jedoch nicht SHA-3 – basieren:
\ begin {Gleichung} \ begin {Array} {ccc} \ text {Hash} & \ text {year} & \ text {coll. res.} & \ text {size (bits)} & \ text {design} & \ text {kaputt?} \\ \ hline \ text {MD4} & 1990 & 64 & 128 & \ text {32-Bit-ARX-DM} & 1995 \\ \ text {SHA-0 (SHA)} & 1993 & 80 & 160 & \ text {32 -bit ARX DM} & 1998 \\ \ text {MD5} & 1993 & 64 & 128 & \ text {32-Bit-ARX-DM} & 2004 \\ \ text {SHA-1} & 1995 & 80 & 160 & \ text {32-Bit-ARX-DM} & 2005 \\ \ hline \ text {SHA-256 (SHA-2)} & 2002 & 128 & 256 & \ text { 32-Bit-ARX-DM} & \\ \ te xt {SHA-384 (SHA-2)} & 2002 & 192 & 384 & \ text {64-Bit-ARX-DM} & \\ \ text {SHA-512 (SHA-2)} & 2002 & 256 & 512 & \ text {64-Bit-ARX-DM} & \\ \ hline \ text {SHA-224 (SHA-2)} & 2008 & 112 & 224 & \ text {32-Bit-ARX DM} & \\ \ text {SHA-512/224} & 2012 & 112 & 224 & \ text {64-Bit-ARX-DM} & \\ \ text {SHA-512/256 } & 2012 & 128 & 256 & \ text {64-Bit-ARX-DM} & \\ \ hli ne \ text {SHA3-224} & 2013 & 112 & 224 & \ text {64-Bit-Keccak-Schwamm} & \\ \ text {SHA3-256} & 2013 & 128 & 256 & \ text {64-Bit-Keccak-Schwamm} & \\ \ text {SHA3-384} & 2013 & 192 & 384 & \ text {64-Bit-Keccak-Schwamm} & \\ \ text {SHA3-512 } & 2013 & 256 & 512 & \ text {64-Bit-Keccak-Schwamm} & \\ \ text {SHAKE128} & 2013 & {\ leq} 128 & \ text {any} & \ text {64-Bit-Keccak-Schwamm} \\ \ text {SHAKE256} & 2013 & {\ leq} 256 & \ text {any} & \ text {64-Bit-Keccak-Schwamm} \ end {array} \ end {Gleichung}
-
1993 veröffentlichte NIST FIPS 180 , den Secure Hash Standard, der SHA-0 , ursprünglich nur SHA für den sicheren Hash-Algorithmus, zur Verwendung mit der neu veröffentlichten DSA vorgesehen. SHA-0 ist eine einzelne 160-Bit-Hash-Funktion, die auf 80-Bit-Kollisionssicherheit abzielt (und jetzt vollständig defekt ist) über das relativ neue und schnelle Design von MD4 im Jahr 1990.
-
1995 zog NIST FIPS 180 stillschweigend zurück und ersetzte es durch FIPS 180-1 definiert SHA-1 , was sich von SHA-0 durch die Aufnahme eines einzelnen unterscheidet -Bit-Rotation. Wie SHA-0 ist SHA-1 eine einzelne 160-Bit-Hash-Funktion, die auf 80-Bit-Kollisionssicherheit abzielt (und jetzt vollständig fehlerhaft ist).
Es wurde keine öffentliche Erklärung für die Änderung gegeben, aber es dauerte nicht lange, bis Eli Biham eine differenzielle Kryptoanalyse veröffentlicht hatte und die akademische Gemeinschaft erkannte, dass die NSA Änderungen an den DES-S-Boxen vorgenommen hatte In den 1970er Jahren wurde die Sicherheit tatsächlich verbessert (egal, dass die 128-Bit-Schlüsselgröße von Lucifer für DES auf 56 Bit reduziert wurde, wodurch gleichzeitig die Sicherheit vollständig zerstört wurde). Im selben Jahr brach Dobbertin MD4 [1] und im nächsten Jahr MD5 [2] schwer beschädigt. Nicht lange danach, 1998, Florent Chabaud und Antoine Joux meldete einen $ 2 ^ {61} $ -Kosten-Kollisionsangriff auf SHA-0 [3] .
-
Im Jahr 2002 veröffentlichte NIST FIPS 180-2 und definierte SHA-2 , eine Familie verwandter Hash-Funktionen mit unterschiedlichen Größen: SHA- 256, SHA-384 und SHA-512, benannt nach ihren Ausgangsgrößen und mit einem Kollisionswiderstand von 112, 128, 192 und 256 Bit. Der SHA -2 Funktionen setzten die Konstruktionsprinzipien von MD4, MD5, SHA-0 und SHA-1 mit mehr Runden und größerem Zustand fort. Nicht lange danach, im Jahr 2004, meldete das Team von Xiaoyun Wang vollständige Kollisionen mit MD5 und anderen Hash-Funktionen [4] und veröffentlichte 2005 eine $ 2 ^ {69} $ -Kostenangriff auf SHA-1 [5] , wesentlich billiger als generisch. Da viele der auf MD4 basierenden Designs jetzt kaputt sind, wurden alle nervös wegen dieses Designs, also…
-
2007 startete NIST den SHA-3-Wettbewerb, um a zu entwerfen Nachfolger von SHA-2, falls sich das Design als schlecht herausstellen sollte. Der Wettbewerb würde über mehrere Jahre stattfinden.
-
In der Zwischenzeit hat NIST 2008 den Secure Hash Standard aktualisiert Fügen Sie mit FIPS 180-3 SHA-224 hinzu für die SHA-2-Familie, und 2012 aktualisierte NIST sie erneut mit FIPS 180-4 (2012) und fügte SHA-512/224 und SHA-512/256 , schnellere 256-Bit- und 384-Bit-Hash-Funktionen auf 64-Bit-Computern mit Widerstand gegen Längenerweiterungsangriffe, mit denen man rechnen kann $ H (m \ mathbin \ | m „) $ gegeben $ H (m) $ und bestimmte $ m“ $ ohne $ m $ kennen.
-
2013 endete der SHA-3-Wettbewerb mit Keccak als NIST-Gewinner , die sie in FIPS 202 veröffentlicht haben. SHA-3 enthält vier Hash-Funktionen mit fester Größe: SHA3-224, SHA3-256, SHA3-384, SHA3-512 und zwei Hash-Funktionen mit erweiterbarer Ausgabe SHAKE128 und SHAKE256 , die bis zu 128 Bit oder 256 erreichen -bit Sicherheitsstufe, wenn die Ausgabe lang genug ist.
Das Design von SHA-3 unterscheidet sich vollständig von SHA-2, was die Gewissheit gibt, dass kryptoanalytische Durchbrüche bei auf MD4 basierenden Designs wahrscheinlich keine Auswirkungen haben SHA-3, obwohl es anderthalb Jahrzehnte nach dem Blutbad der frühen 2000er Jahre keine Biene gibt Auch bei SHA-2 gibt es keine großen Fortschritte. Die für die SHA-3-Funktionen mit fester Größe ausgewählten Parameter wurden aus politischen Gründen versehentlich überarbeitet. [6] , also sind SHA-3-Funktionen wie SHA3-256 langsamer als nötig, und Sie sollten im Allgemeinen nur SHAKE128 oder SHAKE256 verwenden.
Kommentare
- Wenn Sie Sagen Sie “ vollständig defekt “ Soweit ich es verstehe, ist es möglich, m1 ,
m2 , so dass H ( m1 ) = H ( m2 ). Es ist jedoch noch niemandem gelungen, bei einer festen Nachricht M eine Nachricht m (ungleich M ) so zu berechnen, dass H ( M ) = H ( m ). - @MartinBonner Ja, ich ‚ spreche von Kollisionsfestigkeit hier, weshalb die beiden Wörter kurz vor „und jetzt völlig gebrochen“ „Kollisionssicherheit“ sind. Ich ‚ spreche hier nicht den Vorbildwiderstand an, da die sichere Verwendung einer vorbildresistenten aber nicht kollisionsresistenten Hash-Funktion sehr subtil und ich ‚ versuche, keine Fallen für unachtsame Leser zu hinterlassen ;; Ich spreche den Status von MD5 ‚ s Vorbildwiderstand an anderer Stelle an, wenn es ‚ wird speziell gefragt.
Antwort
Unterschied zwischen SHA256 und SHA3
Der Hauptunterschied zwischen SHA256 und SHA3 ist das interne Algorithmusdesign .
SHA2 (und SHA1) werden mit der Merkle-Damgård-Struktur erstellt.
SHA3 wird dagegen mit einer Schwammfunktion und gehört zur Keccak-Familie.
Der Name könnte irreführend sein, wenn man denkt, dass SHA3 im Vergleich zu SHA2 nur eine neuere “ Version des Algorithmus. Wie SEJPM sagte: “ […] Sie teilen nur sehr wenig über den Namen hinaus.“ Der Name wird nur von NIST angegeben und bedeutet “ Sicherer Hashing-Algorithmus „, eine Familie offizieller Standards.
Ausgabe
SHA256 gibt einen 256-Bit-Hash aus.
SHA3 ermöglicht Ausgaben von
- 224-Bit
- 256-Bit
- 384-Bit
- 512-Bit
-Hash, obwohl die SHA2-Varianten (SHA256 ist eine dieser Varianten) diese Längen ebenfalls berücksichtigen.
SHA3-Algorithmen können auf “ SHAKE “ Algorithmen ermöglichen eine Ausgabe beliebiger Länge. Weitere Informationen finden Sie unter diese zuvor gestellte Frage .
Sicherheit
Hashes, die nur die Merkle-Damgård-Struktur verwenden und ihre volle Leistung erbringen l (oder fast voll) Status sind anfällig für Längenerweiterungsangriffe .
SHAKE-Algorithmen sind auch für Optimale asymmetrische Verschlüsselungsauffüllung .
Hier (wikipedia) a können Sie einen direkten Vergleich anzeigen >.
Kommentare
- Genau genommen “ Hashes, die den Merkle-Damg å Die rd-Struktur ist anfällig für Längenerweiterungsangriffe. “ ist falsch. Gegenbeispiele sind SHA-512/256 und SHA-384, da sie nicht ihren vollständigen Zustand ausgeben. Ein anderes ist SHA-256d, definiert als SHA-256d (m) = SHA-256 (SHA-256 (m)), da es den Status des ersten Hashs verbirgt. Was gilt ist, dass “ Hashes, die nur die Merkle-Damg å rd-Struktur verwenden und geben ihren vollen (oder fast vollen) Zustand aus sind anfällig für Längenerweiterungsangriffe „. ‚ gibt es einen weiteren Unterschied zwischen SHA-2 und SHA-3: Letzteres ist einfacher als MAC zu verwenden.
- Was meinen Sie mit “ einfacher zu verwenden “ als MAC? Sicherer / schneller / Implementierung?
- Wir können einen MAC mit einem Sicherheitsargument aus SHA-3 als $ \ text {SHA-3} (K \ | M) $ (für eine Länge von $ K $) erstellen das hängt von der SHA-3-Variante ab und sollte äh sein, ich weiß nicht ‚ nicht sicher); Wenn wir ‚ kein solches Argument mit SHA-2 haben (auch wenn die Längenerweiterungseigenschaft nicht gilt). Siehe Abschnitt 5.1.12 von Funktionen für kryptografische Schwämme .