Whirlpool (Hash-Funktion) - Whirlpool (hash function)

Whirlpool
Allgemeines
Designer Vincent Rijmen , Paulo SLM Barreto
Erstmals veröffentlicht 2000, 2001, 2003
Abgeleitet von Platz , AES
Zertifizierung NESSIE
Detail
Digestgrößen 512 Bit
Sicherheitsansprüche Große Hashsum-Größe
Struktur Miyaguchi-Preneel
Runden 10
Beste öffentliche Kryptoanalyse
Im Jahr 2009 wurde ein Rebound-Angriff angekündigt, der vollständige Kollisionen gegen 4,5 Whirlpool-Runden in 2 120 Operationen, halbfreie Startkollisionen gegen 5,5 Runden in 2 120 Zeit und halbfreie Startkollisionen gegen 7,5 Runden in 2 128 zeigt Zeit.

In der Informatik und Kryptographie ist Whirlpool (manchmal auch als WHIRLPOOL bezeichnet ) eine kryptografische Hash-Funktion . Es wurde von Vincent Rijmen (Mitentwickler des Advanced Encryption Standard ) und Paulo SLM Barreto entworfen , die es erstmals im Jahr 2000 beschrieben haben.

Der Hash wurde vom NESSIE- Projekt empfohlen . Es wurde auch von der Internationalen Organisation für Normung (ISO) und der Internationalen Elektrotechnischen Kommission (IEC) als Teil der gemeinsamen internationalen Norm ISO / IEC 10118-3 übernommen .

Design-Merkmale

Die Whirlpool-Galaxie (M51), die den Namen des Algorithmus inspirierte.

Whirlpool ist ein Hash, der nach der Square- Blockverschlüsselung entwickelt wurde und zu dieser Familie von Blockverschlüsselungsfunktionen gehört.

Whirlpool ist eine Miyaguchi-Preneel- Konstruktion, die auf einem wesentlich modifizierten Advanced Encryption Standard (AES) basiert .

Whirlpool nimmt eine Nachricht mit einer Länge von weniger als 2 256 Bit entgegen und gibt einen 512-Bit- Nachrichtenauszug zurück .

Die Autoren haben das erklärt

"WHIRLPOOL ist nicht patentiert (und wird es auch nie sein). Es kann für jeden Zweck kostenlos verwendet werden."

Versionsänderungen

Der ursprüngliche Whirlpool heißt Whirlpool-0 , die erste Version von Whirlpool heißt Whirlpool-T und die neueste Version heißt in den folgenden Testvektoren Whirlpool .

  • In der ersten Revision im Jahr 2001 wurde die S-Box von einer zufällig generierten mit guten kryptografischen Eigenschaften auf eine mit besseren kryptografischen Eigenschaften geändert , die einfacher in Hardware zu implementieren ist.
  • In der zweiten Revision (2003) wurde ein Fehler in der Diffusionsmatrix festgestellt, der die geschätzte Sicherheit des Algorithmus unter sein Potenzial senkte. Durch Ändern der 8x8-Rotationsmatrixkonstanten von (1, 1, 3, 1, 5, 8, 9, 5) in (1, 1, 4, 1, 8, 5, 2, 9) wurde dieses Problem behoben.

Interne Struktur

Die Whirlpool-Hash-Funktion ist eine Merkle-Damgård-Konstruktion, die auf einer AES- ähnlichen Blockchiffre W im Miyaguchi-Preneel- Modus basiert .

Die Blockverschlüsselung W besteht aus einer 8 × 8-Zustandsmatrix von Bytes für insgesamt 512 Bits.

Der Verschlüsselungsprozess besteht aus der Aktualisierung des Status mit vier Rundenfunktionen über 10 Runden. Die vier runden Funktionen sind SubBytes (SB), ShiftColumns (SC), MixRows (MR) und AddRoundKey (AK). Während jeder Runde wird der neue Zustand als berechnet .

SubBytes

Die SubBytes- Operation wendet unabhängig voneinander eine nichtlineare Permutation (die S-Box) auf jedes Byte des Zustands an. Die 8-Bit-S-Box besteht aus 3 kleineren 4-Bit-S-Boxen.

ShiftColumns

Die ShiftColumns- Operation verschiebt jedes Byte in jeder Spalte des Status zyklisch. In Spalte j sind die Bytes um j Positionen nach unten verschoben .

MixRows

Die MixRows- Operation ist eine Rechtsmultiplikation jeder Zeile mit einer 8 × 8-Matrix über . Die Matrix wird so gewählt, dass die Verzweigungszahl (eine wichtige Eigenschaft bei der Betrachtung der Resistenz gegen differentielle Kryptoanalyse ) 9 beträgt, was maximal ist.

AddRoundKey

Die AddRoundKey- Operation verwendet bitweises xor , um dem aktuellen Status einen vom Schlüsselzeitplan berechneten Schlüssel hinzuzufügen. Der Schlüsselzeitplan ist identisch mit der Verschlüsselung selbst, außer dass die AddRoundKey-Funktion durch eine AddRoundConstant- Funktion ersetzt wird, die in jeder Runde eine vorgegebene Konstante hinzufügt.

Whirlpool-Hashes

Der Whirlpool-Algorithmus wurde seit seiner ursprünglichen Spezifikation von 2000 zwei Mal überarbeitet.

Personen, die Whirlpool einbeziehen, werden höchstwahrscheinlich die neueste Version von Whirlpool verwenden. Während in früheren Versionen von Whirlpool keine Sicherheitslücken bekannt sind, weist die jüngste Version bessere Effizienzmerkmale bei der Hardwareimplementierung auf und ist wahrscheinlich auch sicherer. Wie bereits erwähnt, handelt es sich auch um die Version, die in der internationalen Norm ISO / IEC 10118-3 übernommen wurde .

Die 512-Bit-Whirlpool-Hashes (64 Byte) (auch als Message Digests bezeichnet ) werden normalerweise als 128-stellige Hexadezimalzahlen dargestellt.
Das Folgende zeigt eine 43-Byte- ASCII- Eingabe (ohne Anführungszeichen) und die entsprechenden Whirlpool-Hashes:

Ausführung Eingabezeichenfolge Berechneter Hash
Whirlpool-0 " Der schnelle Braunfuchs springt über den faulen Hund "
 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C
 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D
Whirlpool-T " Der schnelle Braunfuchs springt über den faulen Hund "
 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183
 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1
Whirlpool " Der schnelle Braunfuchs springt über den faulen Hund "
 B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F
 D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35

Selbst eine kleine Änderung in der Nachricht führt (mit einer extrem hohen Wahrscheinlichkeit von ) zu einem anderen Hash, der normalerweise völlig anders aussieht, genau wie zwei nicht verwandte Zufallszahlen. Das Folgende zeigt das Ergebnis der Änderung der vorherigen Eingabe durch einen einzelnen Buchstaben (ein einzelnes Bit, sogar in ASCII-kompatiblen Codierungen), wobei d durch e ersetzt wird :

Ausführung Eingabezeichenfolge Berechneter Hash
Whirlpool-0 " Der schnelle Braunfuchs springt über den faulen Eog "
 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A
 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676
Whirlpool-T " Der schnelle Braunfuchs springt über den faulen Eog "
 C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9
 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3
Whirlpool " Der schnelle Braunfuchs springt über den faulen Eog "
 C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5
 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C

Der Hash einer Zeichenfolge mit der Länge Null lautet:

Ausführung Eingabezeichenfolge Berechneter Hash
Whirlpool-0 ""
 B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473
 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
Whirlpool-T ""
 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F
 EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
Whirlpool ""
 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7
 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Implementierungen

Die Autoren stellen Referenzimplementierungen des Whirlpool-Algorithmus bereit , einschließlich einer in C geschriebenen Version und einer in Java geschriebenen Version . Diese Referenzimplementierungen wurden öffentlich zugänglich gemacht.

Annahme

Zwei der ersten weit verbreiteten kryptografischen Mainstream-Programme, die Whirlpool verwendeten, waren FreeOTFE , gefolgt von TrueCrypt im Jahr 2005.

VeraCrypt (eine Abzweigung von TrueCrypt ) enthielt Whirlpool (die endgültige Version) als einen der unterstützten Hash-Algorithmen.

Siehe auch

Verweise

Externe Links