Frage:
Welche Beziehung besteht zwischen "SHA-2" und "SHA-256"?
Mike B
2015-04-29 22:01:56 UTC
view on stackexchange narkive permalink

Ich bin verwirrt über den Unterschied zwischen SHA-2 und SHA-256 und höre oft, wie sie austauschbar verwendet werden (was wirklich falsch zu sein scheint). Ich denke, SHA-2 ist eine "Familie" von Hash-Algorithmen und SHA-256 ein spezifischer Algorithmus in dieser Familie.

Ist das richtig? Kann jemand bitte klarstellen?

Zwei antworten:
Steffen Ullrich
2015-04-29 22:08:06 UTC
view on stackexchange narkive permalink

Nur um Wikipedia zu zitieren: http://en.wikipedia.org/wiki/SHA-2:

Die SHA-2-Familie besteht aus sechs Hashs Funktionen mit Digests (Hash-Werten) mit 224, 256, 384 oder 512 Bit: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.

Ja, SHA-2 ist eine Reihe von Hash-Funktionen und enthält SHA-256.

In Anbetracht von SHA-3 wäre es besser, wenn die SHA-2-Varianten "SHA2-224", "SHA2-256" usw. heißen würden, wie dies bei den SHA-3-Varianten der Fall war, aber sie sind nicht üblich. also na ja. SHA-1 gibt es nicht in mehreren Größen, daher bedeutet SHA- * n *, wobei * n * groß ist, immer SHA-2 mit einer Größe von * n *.
kasperd
2015-04-30 14:58:37 UTC
view on stackexchange narkive permalink

Die SHA-2-Familie besteht aus mehreren eng verwandten Hash-Funktionen. Es handelt sich im Wesentlichen um einen einzelnen Algorithmus, bei dem sich einige kleinere Parameter zwischen den Varianten unterscheiden.

Die anfängliche Spezifikation umfasste vier Varianten mit Ausgabegrößen von 224, 256, 384 und 512 Bit.

Der wichtigste Unterschied zwischen den Varianten besteht darin, dass einige für 32-Bit-Register und andere für 64-Bit-Register ausgelegt sind. In Bezug auf die Leistung ist dies der einzige entscheidende Unterschied.

Auf einer 32-Bit-CPU sind SHA-224 und SHA-256 viel schneller als die anderen Varianten, da sie die einzigen 32-Bit-Varianten in der sind SHA-2 Familie. Das Ausführen der 64-Bit-Varianten auf einer 32-Bit-CPU ist aufgrund der zusätzlichen Komplexität der Ausführung von 64-Bit-Operationen auf einer 32-Bit-CPU langsam.

Auf einer 64-Bit-CPU sind SHA-224 und SHA-256 etwas langsamer als die anderen Varianten. Dies liegt daran, dass aufgrund der gleichzeitigen Verarbeitung von nur 32 Bit mehr Operationen ausgeführt werden müssen, um die gleiche Anzahl von Bytes zu durchlaufen. Durch das Umschalten auf eine 64-Bit-Variante wird die Geschwindigkeit nicht verdoppelt, da die 64-Bit-Varianten eine größere Anzahl von Runden aufweisen als die 32-Bit-Varianten.

Der interne Status ist für 256 Bit groß die zwei 32-Bit-Varianten und 512-Bit-Größe für alle vier 64-Bit-Varianten. Die Anzahl der möglichen Größen für den internen Zustand ist also geringer als die Anzahl der möglichen Größen für die endgültige Ausgabe. Der Wechsel von einem großen internen Zustand zu einem kleineren Ausgang kann je nach Ihrer Sichtweise gut oder schlecht sein.

Wenn Sie die Ausgabegröße beibehalten, ist im Allgemeinen zu erwarten, dass der interne Zustand vergrößert wird wird die Sicherheit verbessern. Wenn Sie die Größe des internen Status beibehalten und die Größe der Ausgabe verringern, werden Kollisionen wahrscheinlicher, aber Angriffe auf Längenerweiterungen können einfacher werden. Es wäre sinnlos, die Ausgabegröße größer als den internen Zustand zu machen.

Da die 64-Bit-Varianten sowohl schneller (auf 64-Bit-CPUs) als auch wahrscheinlich sicherer (aufgrund eines größeren internen Status) sind, wurden zwei neue Varianten mit 64-Bit-Wörtern und kürzeren Ausgaben eingeführt. Dies sind die als 512/224 und 512/256 bekannten.

Die Gründe für den Wunsch nach Varianten mit einer Ausgabe, die viel kürzer als der interne Zustand ist, sind normalerweise entweder, dass es für einige Verwendungen unpraktisch ist, eine so lange zu verwenden Ausgabe oder dass die Ausgabe als Schlüssel für einen Algorithmus verwendet werden muss, der eine Eingabe einer bestimmten Größe verwendet.

Es ist auch möglich, die endgültige Ausgabe einfach auf die gewünschte Länge zu kürzen. Beispielsweise spezifiziert eine HMAC-Konstruktion das Abschneiden der endgültigen Hash-Ausgabe auf die gewünschte MAC-Länge. Da die HMAC die Ausgabe eines Aufrufs des Hash als Eingabe für einen anderen Aufruf speist, bedeutet dies, dass die Verwendung eines Hash mit kürzerer Ausgabe zu einer HMAC mit weniger internem Status führt. Aus diesem Grund ist es wahrscheinlich etwas sicherer, HMAC-SHA-512 zu verwenden und die Ausgabe auf 384 Bit zu kürzen als HMAC-SHA-384.

Die endgültige Ausgabe von SHA-2 ist einfach Der interne Zustand (nach erweiterter Verarbeitung der Verarbeitungslänge) wurde auf die gewünschte Anzahl von Ausgangsbits abgeschnitten. Der Grund, warum SHA-384 und SHA-512 am selben Eingang so unterschiedlich aussehen, ist, dass für jede der Varianten eine andere IV angegeben wird.



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...