Documente Academic
Documente Profesional
Documente Cultură
Caracteristici de design
Funcția de hash Whirlpool numit după Whirlpool Galaxy (M51) , din constelația câinii de
vânătoare care primele galaxii cu structura spirala observate.
Whirlpool este un hash proiectat după Square block cipher(algoritm determinist) , și este
considerat a fi din familia de funcții cifru bloc.
Whirlpool este o construcție Miyaguchi-Preneel bazat pe modificarea substanțiala a Advanced
Encryption Standard (AES).
Whirlpool ia un mesaj de orice lungime mai mică de 2 256 biți și returnează un mesaj digest de
512-biți.
Autorii au declarat că
"WHIRLPOOL nu este (și nu va fi niciodată) brevetate. Acesta poate fi utilizat în mod
gratuit pentru orice scop."
Schimbări versiune
Versiunea Originala Whirlpool a fost numita Whirlpool-0 , prima revizuire Whirlpool a
fost numita Whirlpool-T și cea mai recentă versiune numita Whirlpool în următorirea de
vectori de test.
În prima revizuire din 2001, s-box a fost schimbat dintr-un generator aleator cu
proprietăți criptografice bune la una care are proprietăți criptografice mai bune și este
mai ușor de implementat în hardware.
În cea de a doua revizuire (2003), s-a adăugat lista de recomandat pentru utilizare
funcțiilor criptografice ale Nessie . Modificările în cauzul blocul de substituție ( S-
box) Whirlpool: în prima versiune a structurii S-box nu a fost descrisă, și in generat
destul de arbitrar, ceea ce a creat unele probleme cu implementare hardware
Whirlpool. În versiunea WHIRLPOOL-T S-box-ul a capatat o structură clară.
Un defect difuz Matrici WHIRLPOOL-T, găsit de Taizo Shirai si Kyoji Shibutani a fost
modificată ulterior, iar ultima ( a treia) versiune, numită pe scurt Whirpool, a fost adoptat de
ISO (organizație internațională pentru standardizare) standardul ISO / IEC 10118-3: 2004 în
2004 .
Descriere
Algoritmul folosite în operatia câmpului Galois 𝐺𝐹(2)8 dupa modulul polinomului ireductibil
𝑝8 (𝑥) = 𝑥 8 + 𝑥 4 + 𝑥 2 + 1.
Polinoamele pentru concizie sunt scrise în hexazecimal. De exemplu, 11𝐷𝑥 insemana 𝑝8 (𝑥).
simbolul ○ desemnată operator al compoziției . Expresie f○g înseamnă compoziția
funcțiilor f și g. Pentru a indica funcțiile compoziției secvenței
utilizeaza simbolul :
Simplu vorbind, starea de umplere a datelor de matrice merge linie cu linie. Astfel, fiecare
octet al matricei este un polinom care corespunde .
Transformări
Transformarea neliniare ϒ (S-box)
Funcția constă dintr - o unitate de substituție aplicație
paralelă ( S-box ) la toate matrice de stare pe biti:
Permutare circulară π
Obiectivul acestei transformări - schimbarea starii rândurilor de bytes a matricei între ele.
Difuzie liniară θ
Constanta rundei
Funcţia rundei
Pentru fiecare rundă, funcția rundei este o transformare compusa
parametrul este de fapt matricea cheiei
. Descrierea funcției rundei după cum urmează:
Extensia cheii
Astfel, din cheia cunoscută se face pentru secvența chei pentru fiecare rundă
din cifru bloc.
Cifru bloc W
blocuri a mesajului
modificatcriptate secvențial in cifru bloc :
Criptanaliza
Astăzi WHIRLPOOL rezistent la toate tipurile de criptanaliză. In cei 8 ani de existenta
Whirlpool nu a fost înregistrat nici un atac la el.
Cu toate acestea, în 2009 a fost publicata o noua metodă de atac asupra unui hash - The
Rebound Attack (Atac de Revigorarea) . Primele atacuri noi "experimentale" sau efectuat
asupra hashuilor Whirlpool si Grøstl . Rezultatele din criptanaliza sunt prezentate în tabel.
Tabelul 2. Rezultatele de criptanaliza a funcțiilor hash Whirlpool și Grøstl prin metoda
The Rebound attack
Nr de Cantitatea de memorie
Funcţia hash Complexitate Tip de colizie
runde necesară
- Vector Inițializare
– Mesajul, subectul hashului
- Funcția hash
funcţia de compresie
Tipurile de coliziune :
coliziune :
– fixata
aproape de o coliziune :
- fixata
coliziune libera :
După cum se poate observa din tabel pentru Whirlpool, s-a reușit crearea unei coliziuni doar
pentru versiunea sa "trunchiata" in rundă a 4.5. Mai mult decât atât, complexitatea calculelor
cerute este destul de mare.
Aplicare
Whirlpool - funcție hashfreeware. Prin urmare, este utilizat pe scară largă în software-ul open
source. Iată câteva exemple de utilizare a Whirlpool:
Autorii oferă implementări de referință ale algoritmului WHIRLPOOL, inclusiv o versiune
scrisă în C și o versiune scrisă în Java . Aceste implementări de referință au fost eliberate
în domeniul public.
Jacksum - utilitar freeware pentru a calcula checksum
++ Crypto - o bibliotecă de clasă a primitivelor criptografice gratuita disponibila in C ++
TrueCrypt - un program pentru criptare "on the fly"
FreeOTFE - software open source proiectat pentru a cripta "on the fly". Disponibil pentru
sistemele de operare, pentru Windows și pentru Windows Mobile (FreeOTFE4PDA)
DarkCrypt - instrument criptografic și steganographic disponibil gratuit ca un plug-in
pentru Total Commander
Exemple de hash
Pentru comoditatea 512 biți (64 bytes) hashul Whirlpool este adesea prezentate sub forma
unui număr hexazecimal de 128 cifre.
După cum sa menționat mai sus, algoritmul a suferit două schimbări de la lansarea în 2000.
Următoarele exemple de hash-uri sunt calculate din ASCII text PANGRAM The quick brown
fox jumps over the lazy dog pentru toate cele trei versiuni ale Whirlpool:
WHIRLPOOL -0 ("The quick brown fox jumps over the lazy dog") =
4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C
3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D
WHIRLPOOL-T( "The quick brown fox jumps over the lazy dog") =
3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183
AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1
WHIRLPOOL ( "The quick brown fox jumps over the lazy dog") =
B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F
D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35
Chiar și o mică schimbare în textul original al mesajului (în acest caz , se înlocuiește cu o
singură literă: simbolul «d» se înlocuiește cu «e» caracter) conduce la o schimbare completă
în hash :
WHIRLPOOL -0 ( "The quick brown fox jumps over the lazy eog") =
228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A
9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676
WHIRLPOOL -T ( "The quick brown fox jumps over the lazy eog") =
C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9
1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3
WHIRLPOOL ( "The quick brown fox jumps over the lazy eog") =
C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5
0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C
Adăugarea de caractere într-un șir de caractere, concatenare de cuvinte și alte modificări vor
afecta, de asemenea, rezultatul.
Exemplu de hash pentru un șir "gol":
WHIRLPOOL -0 ("") =
B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473
39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
WHIRLPOOL T-("") =
470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F
EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
WHIRLPOOL("") =
19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7
3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3
Exemple in programare
echo b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f
PHP 5.0 hash('whirlpool' 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6
,'test');
puts b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f
Ruby Whirlpool.calc_he 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6
x('test')