Örvény | |
---|---|
Fejlesztők |
Vincent Rayman , Barreto |
Először megjelent | 2000. november |
Szabványok | NESSIE Portfolio ( 2003 ), ISO/IEC 10118-3:2004 ( 2004 ) |
Hash méret | 512 bites |
A körök száma | tíz |
Típusú | hash függvény |
A Whirlpool egy kriptográfiai hash függvény , amelyet Vincent Rayman és Paulo Barreto fejlesztett ki . Megjelent 2000 novemberében . Kivonatolja a bemeneti üzenetet legfeljebb bit hosszúságúra. A Whirlpool hash függvény , az úgynevezett hash kimeneti értéke 512 bit.
A Whirlpool hash függvény a Canis Hounds csillagképben található Whirlpool galaxisról (M51) kapta a nevét , amely az első megfigyelhető spirális szerkezetű galaxis.
2000-es megalakulása óta a Whirlpool kétszer is módosult.
Az első verzió, a Whirlpool-0, jelöltként szerepel a NESSIE projektben ( eng. New European Schemes for Signatures, Integrity and Encryption , new European Projects on digital signature , integrity and encryption ).
A Whirlpool-0 Whirlpool-T nevű módosítása 2003 -ban felkerült a NESSIE ajánlott kriptográfiai funkciók listájára . A változtatások a Whirlpool helyettesítési blokkját ( S-box ) érintették: az első verzióban az S-box szerkezetet nem írták le, és önkényesen generálták, ami bizonyos problémákat okozott a Whirlpool hardveres megvalósításában. A Whirlpool-T változatban az S-box áttekinthető szerkezetet "szerzett".
A Whirlpool-T diffúz mátrixok Taizō Shirai és Kyoji Shibutani [1] által felfedezett hibáját ezt követően kijavították, és a végső (harmadik) verziót, amelyet röviden Whirlpoolnak hívnak, az ISO átvette az ISO /IEC-ben. 10118-3 :2004 2004-ben.
A fő verzió - hash függvények - a harmadik; Az első verziótól eltérően az S-box definiálva van, és a diffúz mátrixot Shirai és Shibutani [1] jelentése után egy újra cserélik .
A Whirlpool a tömörítési funkció újbóli alkalmazásából áll , amely egy speciális, 512 bites blokk titkosításon alapul , 512 bites kulccsal.
Az algoritmus a Galois-mezőben végrehajtott műveleteket modulo egy irreducibilis polinomhoz .
A polinomokat hexadecimálisan írjuk a rövidség kedvéért. Például a bejegyzés jelentése .
A Whirlpool egy speciális blokk titkosításra épül, amely 512 bites adatokkal működik.
A transzformációkban a hash számítás közbenső eredményét hash állapotnak vagy egyszerűen állapotnak nevezzük . A számítástechnikában egy állapotot általában egy állapotmátrix képvisel . A Whirlpool esetében ez egy mátrix a -ban . Ezért az 512 bites adatblokkokat ebbe a formátumba kell konvertálni a további számítások előtt. Ez a következő funkció bevezetésével érhető el :
Egyszerűen fogalmazva, az állapotmátrix soronként tele van adatokkal. Ebben az esetben a mátrix minden bájtja a megfelelő polinom .
A funkció egy helyettesítő doboz ( S-box ) párhuzamos alkalmazásából áll az állapotmátrix összes bájtjára:
A helyettesítési blokkot a következő helyettesítési táblázat írja le:
|
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
|
A permutáció az állapotmátrix minden oszlopát elforgatja úgy, hogy az oszlop lefelé mozog :
Ennek a transzformációnak az a feladata, hogy az állapotmátrix sorainak bájtjait összekeverjük egymással.
Lineáris diffúzióA lineáris diffúzió egy lineáris transzformáció, amelynek mátrixa az MDS mátrix , azaz:
Más szóval, az állapotmátrixot jobbról megszorozzuk a mátrixszal . Emlékezzünk vissza, hogy a mátrixelemek összeadási és szorzási műveleteit a -ban hajtjuk végre .
Az MDS mátrix olyan véges mező feletti mátrix,térből térbetörténő lineáris transzformáció mátrixának vesszüknézettérbőlbármely két vektornaklegalábbkomponensbeli különbsége lesz. Vagyis a nézetvektorokhalmaza olyan kódot alkot, amely a maximális térköz tulajdonságával rendelkezik ( angolul Maximum Distance Separable code ). Ilyen kód például a Reed-Solomon kód .
A Whirlpoolban az MDS mátrix maximális diverzitási tulajdonsága azt jelenti, hogy a vektor és a vektor változó bájtjainak száma összesen legalább . Más szóval, ha csak egy bájtot módosítunk , az mind a 8 bájtot módosítja . Ez a lineáris diffúzió problémája .
Ahogy fentebb említettük, a Whirlpool legújabb (harmadik) verziójában az MDS mátrixot Taizo Shirai és Kyoji Shibutani[1] . Elemezték a Whirlpool második verziójának MDS-mátrixát, és rámutattak a Whirlpool differenciális kriptoanalízissel szembeni ellenállásának javításának lehetőségére . Emellett 224 jelöltet javasoltak az új MDS-mátrixhoz. Ebből a listából a Whirlpool szerzői a hardverben legkönnyebben megvalósítható lehetőséget választották.
Kulcs hozzáadásaA kulcsösszeadás függvény az állapot és a kulcsmátrixok bitenkénti összeadása ( XOR ) :
Kerek konstansokMinden kör egy konstansmátrixot használ, így:
Ez azt mutatja, hogy a mátrix első sora egy helyettesítő blokk bájtszámokra történő alkalmazásának eredménye .
A maradék 7 sor nulla.
Kerek funkcióMinden körben a körfüggvény egy összetett transzformáció, amelynek paramétere a kulcsmátrix . A kerek funkció leírása a következő:
Minden körhöz 512 bites titkosítási kulcs szükséges . A probléma megoldására számos algoritmus bevezeti az úgynevezett kulcskiterjesztési eljárást . A Whirlpoolban a kulcsbővítés a következőképpen valósul meg:
Így az ismert kulcsból a blokk titkosítás minden egyes fordulójához előállítják a szükséges kulcssorozatot .
Egy speciális 512 bites blokkrejtjel 512 bites kulcsot használ paraméterként , és a következő átalakítási sorozatot hajtja végre:
ahol a kulcsokat a fent leírt kulcsbővítési eljárással állítják elő . A Whirlpool hash függvényben a körök száma .
A Whirlpoolnak, mint minden más hash függvénynek , tetszőleges hosszúságú üzenetet kell kivonatolnia . Mivel a belső titkosítási blokk 512 bites bemeneti üzenetekkel működik, az eredeti üzenetet 512 bites blokkra kell osztani. Ebben az esetben az utolsó blokk, amely az üzenet végét tartalmazza, hiányos lehet.
A probléma megoldására a Whirlpool a Merkle-Damgor bemeneti üzenet-kiegészítő algoritmust használja. Az üzenet befejezésének eredménye egy olyan üzenet, amelynek hossza 512 többszöröse. Legyen az eredeti üzenet hossza. Aztán több lépésben kiderül:
A kiegészített üzenet így van írva
és további feldolgozás céljából 512 bites blokkokra bontják.
A Whirlpool a Miyaguchi sémát használja
a kitömött üzenet blokkjai egymás után blokkrejtjellel vannak titkosítva :
ahol ( magyar inicializálási vektor , inicializálási vektoreng ) egy 512 bites karakterlánc, amely "0"-val van kitöltve.
Az üzenet kivonat a tömörítési függvény kimeneti értéke , 512 bites karakterláncra konvertálva:
A kivonatolási függvényről azt mondjuk, hogy kriptográfiailag biztonságos , ha megfelel a három alapvető követelménynek, amelyeken a legtöbb kriptográfiai hash - függvény alapul : visszafordíthatatlanság , 1-es típusú ütközésállóság és 2 -es típusú ütközésállóság .
Legyen egy 512 bites Whirlpool hash tetszőleges bites részkarakterlánca. A Whirlpool szerzői azt állítják, hogy az általuk létrehozott hash függvény megfelel a következő kriptográfiai erősség követelményeinek :
A Whirlpool szerzői egy megjegyzést fűztek ehhez a nyilatkozathoz:
Ezek az állítások az összes ismert támadással szembeni jelentős biztonsági sávból következnek. Megértjük azonban, hogy lehetetlen nem spekulatív kijelentéseket tenni ismeretlen dolgokról.
A WHIRLPOOL a mai napig ellenáll minden típusú kriptoanalízisnek . A Whirlpool fennállásának 8 éve alatt egyetlen támadást sem rögzítettek ellene.
2009-ben azonban megjelent egy új módszer a hash-függvények támadására - a The Rebound Attack [2] [3] . Az új támadás első "tengerimalacai" a Whirlpool és a Grøstl hash-függvények voltak . Az elvégzett kriptoanalízis eredményeit a táblázat tartalmazza.
hash függvény | A körök száma | Bonyolultság | Szükséges memóriamennyiség | Ütközés típusa |
---|---|---|---|---|
Örvény | ütközés | |||
félig szabad ütközés | ||||
félig szabad szinte ütközés | ||||
Grøstl-256 | félig szabad ütközés |
A tanulmány szerzői a következő fogalmakat és kifejezéseket használták:
Ütközés típusok :
A táblázatból látható, hogy a Whirlpoolnak csak a 4,5-ös „levágott” változatánál sikerült ütközést generálni. Ezenkívül a szükséges számítások összetettsége meglehetősen magas.
A Whirlpool egy szabadon elérhető hash funkció . Ezért széles körben használják a nyílt forráskódú szoftverekben . Íme néhány példa a Whirlpool használatára:
A kényelem kedvéért a Whirlpool hash 512 bitjét (64 bájt) gyakran 128 jegyű hexadecimális számként ábrázolják.
Mint fentebb említettük, az algoritmus 2000-es megjelenése óta két változáson ment keresztül. Az alábbiakban példák láthatók a The quick brown fox jumps over the lusta dog’pangram ASCII - szövegéből kiszámított hashekre a Whirlpool mindhárom verziójában:
Whirlpool-0 ("A gyors barna róka átugrik a lusta kutyán") = 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D Whirlpool-T("A gyors barna róka átugrik a lusta kutyán") = 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1 Whirlpool ("A gyors barna róka átugrik a lusta kutyán") = B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35Még az üzenet eredeti szövegének kis változtatása is (ebben az esetben egy betű kicserélődik: a "d" karakter helyére "e" karakter kerül) a hash teljes megváltoztatásához vezet :
Whirlpool-0 ("A gyors barna róka átugrik a lusta eog felett") = 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676 Whirlpool-T("A gyors barna róka átugrik a lusta eog felett") = C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3 Whirlpool("A gyors barna róka átugrik a lusta eog felett") = C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38CKarakterek hozzáadása egy karakterlánchoz, karakterlánc- összefűzés és egyéb változtatások szintén befolyásolják az eredményt.
Példák a "null" karakterlánc kivonataira :
Whirlpool-0("") = B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8 Whirlpool-T("") = 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A Whirlpool("") = 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3Futásidő | A kód | Eredmény |
---|---|---|
PHP 5.0 | echo hash( 'örvény', 'teszt' ); | b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6 |
rubin | Whirlpool.calc_hex('teszt') | b913d5bbb8e461c2c5961cbe0edcdadfd29f068225ceb37da6defcf89849368f 8c6c2eb6a4c4ac75775d032a0ecfdfe8550573062b653fe92fc7b8fb3b7be8d6 |
Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|