Whirlpool (Algorithmus)

kryptographische Hashfunktion

Whirlpool ist eine kryptographische Hashfunktion, die von Vincent Rijmen und Paulo S. L. M. Barreto entworfen wurde. Sie wurde nach der Whirlpool-Galaxie im Sternbild der Jagdhunde benannt.

Whirlpool
Entwickler Vincent Rijmen und Paulo S. L. M. Barreto
Veröffentlicht 2003 (letzte Version)
Abgeleitet von AES
Zertifizierung NESSIE
Länge des Hashwertes (Bit) 512
Konstruktion Merkle-Damgård-Konstruktion
Runden 10
Beste bekannte Kryptoanalyse
Kollision mit rebound attack von Mendel et al. auf 4,5 Runden mit einer Zeitkomplexität von 2120 und einer Platzkomplexität von 216[1]

Whirlpool funktioniert mit Dateien bis zu 2256 Bit Größe und gibt einen Hash-Wert von 512 Bit aus. Bislang sind keine Schwächen des Algorithmus bekannt, was allerdings relativiert werden muss, da er bislang wenig untersucht wurde.

Die Autoren haben erklärt, dass Whirlpool nicht patentiert ist und es nie sein wird. Whirlpool darf kostenlos zu jedem Zweck verwendet werden. Die Referenz-Implementierung ist gemeinfrei.

Whirlpool gehört zu den vom Projekt NESSIE empfohlenen kryptografischen Algorithmen und wurde von der ISO mit ISO/IEC 10118-3:2004 standardisiert.

Funktionen

Bearbeiten

Whirlpool wurde nach der Square-Blockchiffre entwickelt und kann zu dieser Familie der Blockchiffre-Funktionen gezählt werden.

Whirlpool ist eine Miyaguchi–Preneel-Konstruktion, welche auf dem substanziell modifizierten Advanced Encryption Standard basiert.

Whirlpool nimmt eine Nachricht von jeder Länge kleiner als 2256-Bits und gibt eine 512-Bit zurück.[2]

Die Entwickler setzten fest:

„Whirlpool ist nicht patentiert (und wird auch nie). Die Chiffre kann kostenlos für alles verwendet werden“[3]

Versionen

Bearbeiten

Die originale Chiffre wurde unter dem Namen Whirlpool-0 veröffentlicht. Die erste Revision von Whirlpool hieß Whirlpool-T und die neuste Version Whirlpool in den folgenden Testvektoren.

  • In der ersten Revision im Jahre 2001 wurde die S-Box von einer zufällig generierten mit guten kryptographischen zu einer mit besseren kryptographischen Eigenschaften geändert, wobei auch die Implementierung in die Hardware vereinfacht wurde.
  • In der zweiten Revision im Jahre 2003 wurde ein Fehler in der Diffusionsmatrix, welcher die Sicherheit des Algorithmus verringerte, behoben, indem die rotierenden 8x8 Matrixkonstanten von (1, 1, 3, 1, 5, 8, 9, 5) zu (1, 1, 4, 1, 8, 5, 2, 9) geändert wurden.[4]

Struktur

Bearbeiten

Die Whirlpool Hashfunktion ist eine Merkle–Damgård-Konstruktion, welche auf der AES-ähnlichen Blockchiffre W in Miyaguchi–Preneel-Art basiert.[5]

Die Blockchiffre W besteht aus einer statischen 8x8 Matrix   aus Bytes von total 512-Bits.

Der Verschlüsselungsvorgang beinhaltet die Erneuerung des Zustands von vier Rundenfunktionen über 10 Runden. Die vier Rundenfunktionen sind SubBytes (SB), ShiftColumns (SC), MixRows (MR) und AddRoundKey (AK). Während jeder Runde wird ein neuer Zustand generiert als:  .

SubBytes

Bearbeiten

Die SubBytes-Operation verwendet eine nichtlineare Permutation unabhängig zu jedem Byte des Zustandes. Die 8-Bit S-Box besteht aus drei kleineren 4-Bit S-Boxen.

ShiftColumns

Bearbeiten

Die ShiftColumns-Operation verschiebt zyklisch jeden Byte in eine neue Zeile des Zustands. Die Zeile j verschiebt seine Bytes nach j Positionen nach unten.

Die MixRows-Operation ist eine Multiplikation von jeder Reihe durch eine 8x8 Matrix über  . Die Matrix wird so gewählt, dass die Zweignummer 9 ist, was dem Maximum entspricht.

AddRoundKey

Bearbeiten

Die AddRoundKey-Operation verwendet bitweise XOR um einen Schlüssel hinzuzufügen berechnet durch die Key-Schedule des jetzigen Zustands. Die Key-Schedule ist identisch zur Verschlüsselung selbst, außer das die AddRoundKey-Funktion durch die AddRoundConstant-Funktion ersetzt wird, welche eine vorbestimmte Konstante in jeder Runde hinzufügt.

Implementation

Bearbeiten

Die Entwickler stellen eine Referenzimplementation des Whirlpool-Algorithmus zur Verfügung, welche eine Version in C und in Java beinhalten.[5] Diese Referenzimplementationen wurden öffentlich freigegeben.[5]

Verwendung

Bearbeiten

Zwei der größten Pioniere von kryptographischen Programmen, FreeOTFE und TrueCrypt implementierten Whirlpool schon 2005.

VeraCrypt (Ein Abkömmling von TrueCrypt) unterstützt Whirlpool (die neuste Version) als Hash-Algorithmus.[6]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. Florian Mendel, Christian Rechberger, Martin Schläffer, Søren S. Thomsen: The Rebound Attack: Cryptanalysis of Reduced Whirlpool and Grøstl. In: Fast Software Encryption Volume 5665. Springer Berlin Heidelberg 2009, S. 260–276, ISBN 978-3-642-03316-2
  2. whirlpool.zip. 26. Oktober 2017, archiviert vom Original am 26. Oktober 2017; abgerufen am 25. Mai 2020.
  3. „Und wenn das dann auch im politischen Raum ist, dann wird da auch taktiert“. Die Fallstudie Bruchhausen. In: Zwischen zwei Welten? VS Verlag für Sozialwissenschaften, Wiesbaden, ISBN 978-3-531-16479-3, S. 171–216, doi:10.1007/978-3-531-91421-3_8.
  4. Hougham, Gareth.: Fluoropolymers 1. Kluwer Academic/Plenum, 1999, ISBN 0-306-46918-9.
  5. a b c The Whirlpool Hash Function. 29. November 2017, archiviert vom Original am 28. Februar 2012; abgerufen am 21. Januar 2024.
  6. VeraCrypt - Free Open source disk encryption with strong security for the Paranoid. Abgerufen am 25. Mai 2020.