Whirlpool (funkce hash) - Whirlpool (hash function)
Všeobecné | |
---|---|
Návrháři | Vincent Rijmen, Paulo S. L. M. Barreto |
Nejprve publikováno | 2000, 2001, 2003 |
Odvozený od | Náměstí, AES |
Osvědčení | NESSIE |
Detail | |
Velikosti trávení | 512 bitů |
Bezpečnostní požadavky | Velká velikost hashsum |
Struktura | Miyaguchi-Preneel |
Kola | 10 |
Nejlepší veřejnost dešifrování | |
V roce 2009, a odskočit útok bylo oznámeno, že představuje úplné kolize proti 4,5 kolům Whirlpool ve 2120 operace, semi-free-start kolize proti 5,5 kol ve 2120 blízké srážky s časem a částečně volným startem proti 7,5 kolům ve 2128 čas.[1] |
v počítačová věda a kryptografie, vířivá vana (někdy ve stylu VÍŘIVÁ VANA) je kryptografická hashovací funkce. Byl navržen uživatelem Vincent Rijmen (spolutvůrce Advanced Encryption Standard ) a Paulo S. L. M. Barreto, který to poprvé popsal v roce 2000.
Hash byl doporučen NESSIE projekt. Rovněž jej přijala Mezinárodní organizace pro normalizaci (ISO) a Mezinárodní elektrotechnická komise (IEC) jako součást společné normy ISO / IEC 10118-3 mezinárodní standard.
Designové vlastnosti
Whirlpool je hash navržený po Náměstí bloková šifra, a považuje se za součást této rodiny funkcí blokové šifry.
Whirlpool je a Miyaguchi-Preneel konstrukce založená na podstatně upravené Advanced Encryption Standard (AES).
Whirlpool přijme zprávu jakékoli délky menší než 2256 bitů a vrátí 512 bitů přehled zpráv.[3]
Autoři to prohlásili
- „WHIRLPOOL není (a nikdy nebude) patentován. Může být bezplatně použit pro jakýkoli účel.“[2]
Změny verze
Bude se jmenovat původní Whirlpool Whirlpool-0, bude volána první revize Whirlpool Whirlpool-T a bude zavolána nejnovější verze vířivá vana v následujících testovacích vektorech.
- Při první revizi v roce 2001 se S-box byl změněn z náhodně generovaného s dobrými kryptografickými vlastnostmi na ten, který má lepší kryptografické vlastnosti a je snadněji implementovatelný v hardwaru.
- Ve druhé revizi (2003) došlo k chybě v difuzní matice bylo zjištěno, že snížilo odhadovanou bezpečnost algoritmu pod jeho potenciál.[4] Tento problém vyřešila změna 8x8 rotujících maticových konstant z (1, 1, 3, 1, 5, 8, 9, 5) na (1, 1, 4, 1, 8, 5, 2, 9).
Vnitřní struktura
Funkce hash Whirlpool je a Konstrukce Merkle – Damgård na základě AES -jako bloková šifra W dovnitř Miyaguchi – Preneel režimu.[2]
The bloková šifra W se skládá z matice stavu 8 × 8 bytů, tedy celkem 512 bitů.
Proces šifrování spočívá v aktualizaci stavu čtyřmi kulatými funkcemi na 10 kol. Čtyři kulaté funkce jsou SubBytes (SB), ShiftColumns (SC), MixRows (MR) a AddRoundKey (AK). Během každého kola se nový stav počítá jako.
SubBytes
The SubBytes operace aplikuje nelineární permutaci (S-box) na každý bajt stavu samostatně. 8bitový S-box se skládá ze 3 menších 4-bitových S-boxů.
ShiftColumns
The ShiftColumns operace cyklicky posune každý bajt v každém sloupci stavu. Sloupec j má své bajty posunuté dolů o j pozic.
MixRows
The MixRows operace je pravé násobení každého řádku maticí 8 × 8 . Matice je zvolena tak, aby číslo větve (důležitá vlastnost při pohledu na odpor vůči diferenciální dešifrování ) je 9, což je maximální.
AddRoundKey
The AddRoundKey operace používá bitové xor přidat klíč vypočítaný podle plánu klíčů do aktuálního stavu. Plán klíče je identický se samotným šifrováním, kromě toho, že funkce AddRoundKey je nahrazena znakem AddRoundConstant funkce, která v každém kole přidá předem určenou konstantu.
Whirlpool hash
Algoritmus Whirlpool prošel od své původní specifikace z roku 2000 dvěma revizemi.
Lidé využívající Whirlpool budou s největší pravděpodobností používat nejnovější revizi Whirlpool; zatímco v dřívějších verzích Whirlpoolu nejsou známy žádné slabiny zabezpečení, nejnovější revize má lepší charakteristiky účinnosti implementace hardwaru a je také pravděpodobné, že bude bezpečnější. Jak již bylo zmíněno dříve, je to také verze přijatá v ISO / IEC 10118-3 mezinárodní standard.
512bitový (64bajtový) hash Whirlpool (také nazývaný) přehledy zpráv) jsou obvykle reprezentovány jako 128místné hexadecimální čísla.
Následující příklad ukazuje 43 bajtů ASCII vstup (bez uvozovek) a odpovídající hash Whirlpool:
Verze | Vstupní řetězec | Vypočítaný hash |
---|---|---|
Whirlpool-0 | "Rychlá hnědá liška přeskočí na líného psa" | 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D |
Whirlpool-T | "Rychlá hnědá liška přeskočí na líného psa" | 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 |
vířivá vana | "Rychlá hnědá liška přeskočí na líného psa" | B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35 |
I malá změna ve zprávě bude (s extrémně vysokou pravděpodobností ) bude mít za následek jiný hash, který bude obvykle vypadají úplně jinak, stejně jako dvě nesouvisející náhodná čísla. Následující příklad ukazuje výsledek změny předchozího vstupu o jedno písmeno (jeden bit, dokonce, v kódování kompatibilním s ASCII), nahrazení d s E:
Verze | Vstupní řetězec | Vypočítaný hash |
---|---|---|
Whirlpool-0 | "Rychlá hnědá liška skáče přes líné eog" | 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676 |
Whirlpool-T | "Rychlá hnědá liška skáče přes líné eog" | C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3 |
vířivá vana | "Rychlá hnědá liška skáče přes líné eog" | C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C |
Hash řetězce nulové délky je:
Verze | Vstupní řetězec | Vypočítaný hash |
---|---|---|
Whirlpool-0 | "" | B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8 |
Whirlpool-T | "" | 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A |
vířivá vana | "" | 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3 |
Implementace
Autoři uvádějí referenční implementace algoritmu Whirlpool, včetně verze napsané v C a verze napsaná v Jáva.[2] Tyto referenční implementace byly uvolněny do veřejné sféry.[2]
Přijetí
Dva z prvních široce používaných běžných kryptografických programů, které začaly používat Whirlpool, byly FreeOTFE, následován TrueCrypt v roce 2005.[Citace je zapotřebí ]
VeraCrypt (vidlička TrueCrypt ) zahrnoval Whirlpool (finální verzi) jako jeden z podporovaných hash algoritmů.[5]
Viz také
Reference
- ^ Florian Mendel1, Christian Rechberger, Martin Schläffer, Søren S. Thomsen (2009-02-24). The Rebound Attack: Cryptanalysis of Reduced Whirlpool and Grøstl (PDF). Rychlé softwarové šifrování: 16. mezinárodní workshop.CS1 maint: více jmen: seznam autorů (odkaz)
- ^ A b C d E Paulo S. L. M. Barreto (2008-11-25). „Funkce hash WHIRLPOOL“. Archivovány od originál dne 2017-11-29. Citováno 2018-08-09.
- ^ Barreto, Paulo S.L.M & Rijmen, Vincent (2003-05-24). „Funkce hash WHIRLPOOL“. Archivovány od originál (ZIP) dne 2017-10-26. Citováno 2018-08-09. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Kyoji, Shibutani & Shirai, Taizo (11. 3. 2003). „Na difúzní matici použitou ve hashovací funkci Whirlpool“ (PDF). Citováno 2018-08-09. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ "Vířivá vana". Dokumentace VeraCrypt. IDRIX. Citováno 2018-08-09.
externí odkazy
- Funkce hash WHIRLPOOL na Wayback Machine (archivováno 2017-11-29)
- Jacksum na SourceForge.net, implementace Java všech tří revizí Whirlpool
- vířivá vana na GitHub - Otevřený zdroj Jít implementace nejnovější revize Whirlpool
- Matlab implementace hash funkce Whirlpool
- RHash, an otevřený zdroj nástroj příkazového řádku, který dokáže vypočítat a ověřit hash Whirlpool.
- Perl Whirlpool modul na CPAN
- Trávicí modul implementace hashového algoritmu Whirlpool ve Windows Rubín
- Pevná A Společný Lisp kryptografický balíček obsahující implementaci Whirlpool
- Norma ISO / IEC 10118-3: 2004
- Vyzkoušejte vektory pro hash Whirlpool z NESSIE projekt
- Spravovaná implementace C #
- Python Whirlpool modul