Zum Inhalt springen

Grøstl

aus Wikipedia, der freien Enzyklopädie

Vorlage:Infobox Kryptologische Hashfunktion

Grøstl ist eine kryptographische Hashfunktion. Sie wurde von einem Team dänischer und österreichischer Wissenschaftler um den Kryptographen Lars Knudsen entwickelt. Grøstl war einer der Kandidaten im Wettbewerb für den Standard SHA-3. Er wurde im Dezember 2010 als einer von fünf Finalisten ausgewählt.

Benannt wurde es nach dem österreichischen Gericht Gröstl, welches dem US-amerikanischen Hash ähnelt.<ref>Herleitung des Namens</ref>

Aufbau

Die Nachricht wird erweitert durch Anfügen eines 1-Bits, gefolgt von 0-Bits und der Länge <math>t</math> der erweiterten Nachricht in Blöcken. Dann wird sie in Blöcke <math>m_1 \dots m_t</math> von je <math>l</math> Bit geteilt, die nacheinander verarbeitet werden. Ein Block wird zusammen mit einem Verkettungswert <math>v_i</math> von ebenfalls <math>l</math> Bit in eine Kompressionsfunktion eingegeben, die den nächsten Verkettungswert liefert. Der letzte Verkettungswert wird in eine Finalisierungsfunktion eingegeben, die den Hashwert berechnet:

<math>v_i = f(v_{i-1}, m_i); \; i = 1,2,\dots,t</math>
<math>h = g(v_t)</math>.

<math>v_0</math> ist ein Initialisierungsvektor, der die Länge <math>n</math> des zu berechnenden Hashs enthält. Grøstl kann Hashwerte von <math>n=8</math> bis <math>n=512</math> Bit berechnen, in ganzen Byte-Schritten. Mit Grøstl-n bezeichnet man die Variante mit <math>n</math> Bit Hash-Länge. Die Blocklänge <math>l</math> richtet sich nach der Hash-Länge; es ist <math>l = 512</math> für <math>n \le 256</math> und <math>l = 1024</math> für größere Hash-Längen.

Die Kompressions- und die Finalisierungsfunktion beruhen auf zwei Permutationen <math>P,Q</math>, die jeweils eine <math>l</math> Bit-Eingabe auf eine ebenso lange Ausgabe bijektiv abbilden:

<math>f(v,m) = P(v \oplus m) \oplus Q(m) \oplus v</math>
<math>g(v) = \operatorname{trunc}(P(v) \oplus v,n)</math>

<math>\oplus</math> steht für die bitweise XOR-Verknüpfung. Die Funktion <math>\operatorname{trunc}(x,n)</math> liefert (in diesem Fall) die letzten <math>n</math> Bits von <math>x</math> (Trunkierung).

<math>P</math> und <math>Q</math> wenden 10 mal (<math>l=512</math>) bzw. 14 mal (<math>l=1024</math>) eine Rundenfunktion auf den Datenblock an, um dessen Werte zu permutieren. Sie sind sehr ähnlich wie die Blockverschlüsselung AES aufgebaut, unter anderem wird dafür dieselbe S-Box genutzt, sowie eine MixColumns-Operation, die prinzipiell der Rijndael MixColumns gleicht, aber auf acht statt vier Bytes arbeitet.

Sicherheit

Im SHA-3-Auswahlverfahren wurde die – im Vergleich zu anderen Finalisten – geringe Sicherheitsmarge bemängelt, sowie mögliche cache-time attacks, die jedoch abhängig von der Implementierung sind. Als Vorteile galten die intensive Kryptoanalyse und das gute Verständnis aufgrund der Ähnlichkeit zur Blockchiffre AES<ref>National Institute of Standards and Technology: Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition. November 2010. S. 33 {{#invoke:Vorlage:Handle|f|scheme=doi|class=plainlinks|parProblem=Problem|errCat=Wikipedia:Vorlagenfehler/Parameter:DOI|errClasses=error editoronly|errHide=1|errNS=0 4 10 100}}</ref>.

Weblinks

Einzelnachweise

<references />