Whirlpool (Algorithmus)
Whirlpool ist eine kryptologische 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
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
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
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
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
Die ShiftColumns-Operation verschiebt zyklisch jeden Byte in eine neue Zeile des Zustands. Die Zeile j verschiebt seine Bytes nach j Positionen nach unten.
MixRows
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
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
Die Entwickler stellen eine Referenzimplementation des Whirlpool-Algorithmus zur Verfügung, welche eine Version in C und in Java beinhalten.[6] Diese Referenzimplementationen wurden öffentlich freigegeben.[7]
Verwendung
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.[8]
Weblinks
- Offizielle Webseite (englisch)
Einzelnachweise
- 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
- Wayback Machine. 26. Oktober 2017, abgerufen am 25. Mai 2020.
- „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.
- Hougham, Gareth.: Fluoropolymers 1. Kluwer Academic/Plenum, 1999, ISBN 0-306-46918-9.
- The Whirlpool Hash Function. 29. November 2017, abgerufen am 25. Mai 2020.
- The Whirlpool Hash Function. 29. November 2017, abgerufen am 25. Mai 2020.
- The Whirlpool Hash Function. 29. November 2017, abgerufen am 25. Mai 2020.
- VeraCrypt - Free Open source disk encryption with strong security for the Paranoid. Abgerufen am 25. Mai 2020.