HAVAL

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. május 11-én felülvizsgált verziótól ; az ellenőrzések 6 szerkesztést igényelnek .
HAVAL
Fejlesztők Yuliang Zheng , Josef Pieprzyk , Jennifer Seberry
Létrehozva 1992
közzétett 1992
Hash méret 128, 160, 192, 224, 256 bit
A körök száma 96, 128, 160
Típusú hash függvény

A HAVAL  egy kriptográfiai hash függvény , amelyet Yuliang Zheng , Josef Pieprzyk és Jennifer Seberry fejlesztett ki 1992 -ben .

Adott egy tetszőleges bemeneti üzenet, a függvény generál egy hash értéket, az úgynevezett üzenetkivonatot , amely 128, 160, 192, 224 vagy 256 bites lehet. Az iterációk száma változó, 3-tól 5-ig. A körök száma minden iterációnál 32. Ez az MD5 módosítása .

Algoritmus

Határozzuk meg azokat a logikai függvényeket , amelyek a szavak bitenkénti műveleteinek végrehajtására szolgálnak.
1. iteráció 2. iteráció 3. iteráció 4. iteráció 5. iteráció Az algoritmus egy bemeneti adatfolyamot kap, amelynek a hash-ét meg kell találni. Ez az adatfolyam 1024 bites blokkra van osztva. Az alábbiakban az algoritmus 3 lépése látható.




1. lépés: Az üzenet kibontása

Először az üzenetet kibővítjük úgy, hogy hossza bitben 944 modulo 1024 legyen. Ehhez az üzenet végére egy bitet írunk, majd a szükséges számú nulla bitet. A maradék 80 bithez hozzá van fűzve az üzenetben lévő bitek számának 64 bites reprezentációja az igazítás előtt (MSGLENG mező), az üzenet kivonat hosszának 10 bites reprezentációja (DGSTLENG mező), a szám 3 bites reprezentációja iterációk (PASS mező), és a HAVAL verzió 3 bites reprezentációja (VERSION mező).

2. lépés: Az üzenet feldolgozása 1024 bites blokkokban

Írjunk kibővített üzenetet a következő formában: , ahol  egy 1024 bites blokk, n pedig a blokkok száma egy kiterjesztett üzenetben. Ezután i-re 0-tól n-1-ig a következő számítást végezzük: , ahol H  az alább leírt tömörítési függvény, és  egy 256 bites állandó.

H tömörítési funkció

A H 3, 4 vagy 5 iterációban dolgozza fel az üzenetblokkot (a PASS mező értékétől függően). Jelöljük az iterációk során használt tömörítési függvényeket és -vel . Legyen  valamilyen 256 bites konstans, és legyen a H  függvény 256 bites kimenete . Ekkor H a következőképpen írható le (lásd az ábrát):








(Megjegyzés: a típusművelet a következő formájú művelet: , ahol 32 bites szavak.

Jelöljük az iterációs számot j-vel (j =1,…,5). A j iterációs szám a tömörítési függvénynek felel meg . Az egyes függvények bemenete és , ahol  egy 1024 bites üzenetblokk 32 szóból áll , a 8 szóból áll . Ezután a következőképpen írható fel:

1 . Hadd 2 . Ismételje meg a következő lépéseket i-re 0-tól 31-ig: , ahol  32 bites konstansok vannak 3 . Legyen és egy 256 bites kimenet .

Jelölés:  - két függvény összetétele (az első kerül végrehajtásra ),

 - kiegészítés modulo ,  a 2. táblázatban leírt permutációk.

Megjegyzés: az 1. iterációban (azaz ) nem használunk állandókat .

Az 1. iterációtól eltérően a 2. és az azt követő iterációkban nem szórendben, hanem az 1. táblázatban megadott sorrendben kerül feldolgozásra.

1. táblázat Szövegfeldolgozási sorrend
( ) 0 egy 2 3 négy 5 6 7 nyolc 9 tíz tizenegy 12 13 tizennégy tizenöt 16 17 tizennyolc 19 húsz 21 22 23 24 25 26 27 28 29 harminc 31
( ) 5 tizennégy 26 tizennyolc tizenegy 28 7 16 0 23 húsz 22 egy tíz négy nyolc harminc 3 21 9 17 24 29 6 19 12 tizenöt 13 2 25 31 27
( ) 19 9 négy húsz 28 17 nyolc 22 29 tizennégy 25 12 24 harminc 16 26 31 tizenöt 7 3 egy 0 tizennyolc 27 13 6 21 tíz 23 tizenegy 5 2
( ) 24 négy 0 tizennégy 2 7 28 23 26 6 harminc húsz tizennyolc 25 19 3 22 tizenegy 31 21 nyolc 27 12 9 egy 29 5 tizenöt 17 tíz 16 13
( ) 27 3 21 26 17 tizenegy húsz 29 19 0 12 7 13 nyolc 31 tíz 5 9 tizennégy harminc tizennyolc 6 28 24 2 23 16 22 négy egy 25 tizenöt
2. táblázat. Permutációk

3. lépés: Az üzenetkivonat létrehozása

Ez a lépés a 2. lépésben kapott 256 bites hosszt használja. Ha a szükséges hash mérete 256 bit, akkor üzenet kivonat történik. Nézzük a másik 4 esetet.

1. Hash mérete - 128 bit

Tegyük a következő formába:

(a felső index X hosszát jelzi bitben)

Ekkor az üzenet kivonat 128 bites , ahol

2. Hash mérete - 160 bit

Tegyük a következő formába:

Ekkor az üzenet kivonat 160 bites , ahol

3. Hash mérete - 192 bit

Tegyük a következő formába:

Hadd

 - üzenet feldolgozása.

4. Hash mérete - 224 bit

Mutassuk be a következő formában:

Ekkor az üzenet kivonat 224 bites , ahol

Az algoritmusban használt állandók

Ez az algoritmus 136 32 bites állandót használ. Írjuk le őket a következő sorrendben:

egy. 2. 3. négy. 5.

243F6A88 85A308D3 13198A2E 03707344 A4093822 299F31D0 082EFA98 EC4E6C89

452821E6 38D01377 BE5466CF 34E90C6C C0AC29B7 C97C50DD 3F84D5B5 B5470917 9216D5D9 8979FB1B D1310BA6 98DFB5AC 2FFD72DB D01ADFB7 B8E1AFED 6A267E96
BA7C9045 F12C7F99 24A19947 B3916CF7 0801F2E2 858EFC16 636920D8 71574E69
A458FEA3 F4933D7E 0D95748F
728EB658 718BCD58 82154AEE 7B54A41D C25A59B5

9C30D539 2AF26013 C5D1B023 286085F0 CA417918 B8DB38EF 8E79DCB0 603A180E 6C9E0E8B B01E8A3E D71577C1 BD314B27 78AF2FDA 55605C60 E65525F3 AA55AB94
57489862 63E81440 55CA396A 2AAB10B6 B4CC5C34 1141E8CE A15486AF 7C72E993
B3EE1411 636FBC2A 2BA9C55D
741831F6 CE5C3E16 9B87931E AFD6BA33 6C24CF5C

7A325381 28958677 3B8F4898 6B4BB9AF C4BFE81B 66282193 61D809CC FB21A991 487CAC60 5DEC8032 EF845D5D E98575B1 DC262302 EB651B88 23893E81 D396ACC5
0F6D6FF3 83F44239 2E0B4482 A4842004 69C8F04A 9E1F9B5E 21C66842 F6E96C9A
670C9C61 ABD388F0 6A51A0D2
D8542F68 960FA728 AB5133A3 6EEF0B6C 137A3BE4

BA3BF050 7EFB2A98 A1F1651D 39AF0176 66CA593E 82430E88 8CEE8619 456F9FB4 7D84A5C3 3B8B5EBE E06F75D8 85C12073 401A449F 56C16AA6 4ED3AA62 363F7706
1BFEDF72 429B023D 37D0D724 D00A1248 DB0FEAD3 49F1C09B 075372C9 80991B7B
25D479D8 F6E8DEF7 E3FE501A
B6794C3B 976CE0BD 04C006BA C1A94FB6 409F60C4

Az első 8 konstans a szám tört részének első 256 bitjét jelenti . Az állandók a törtrész következő 1024 bitjének felelnek meg , és így tovább.

, , , és _

Az algoritmusban használt , , , és logikai függvények számos hasznos tulajdonsággal rendelkeznek argumentumaik előzetes permutációja esetén:

1) Kiegyenlítve vannak 0-val és 1-gyel. Ez azt jelenti, hogy a függvény kimenete tetszőleges bemeneti adathalmaz esetén azonos valószínűséggel (1/2) lehet 0 vagy 1. 2) Erősen nemlineárisak. [egy] 3) Teljesítik a szigorú lavinakritériumot , azaz ha bármelyik bemeneti változó értéke megváltozik, a függvény értéke 1/2 valószínűséggel változik. 4) Nem kaphatók meg egymástól a bemeneti változók lineáris transzformációival. 5) Ez a függvényhalmaz kölcsönösen nem korrelál a kimenetben, azaz bármely függvénypár nem korrelál egymással a kimenetben (függvények és nem korrelálnak egymással a kimenetben, ha , és  0 és 1 kiegyensúlyozott, nem lineáris funkciók)

HAVAL - hashek

A HAVAL hash-eket általában 32, 40, 48, 56 vagy 64 hexadecimális számok sorozataként ábrázolják.
Néhány hash példa (méret - 256 bit, iterációk száma - 5):

HAVAL(" A gyors barna róka átugrik a lusta kutyán ") = b89c551cdfe2e06dbd4cea2be1bc7d557416c58ebb4d07cbc94e49f710c55be4

Már a bemeneti üzenet kis változása is (esetünkben egy karakterrel: a "d" karaktert "c" karakter váltja fel) a hash teljes megváltozásához vezet.

HAVAL("A gyors barna róka átugrik a lusta fogaskeréken") = 60983bb8c8f49ad3bea29899b78cd741f4c96e911bbc272e5550a4f195a4077e

Példa egy „null” karakterlánc HAVAL-kivonatára:

HAVAL("") = be417bb4dd5cfb76c7126f4f8eeb1553a449039307b1a3cd451dbfdc0fbbe330

A HAVAL és az MD5 összehasonlítása

Az MD5 hash függvénytől eltérően, amelynek fix mérete és az iterációk száma van, a HAVAL 15 különböző algoritmusváltozatot biztosít a kivonat hosszának és az iterációk számának kombinálásával. Ez nagyobb rugalmasságot biztosít, és ezért alkalmasabbá teszi a hash funkciót olyan alkalmazásokhoz, amelyek eltérő üzenetkivonat-hosszúságot és különböző biztonsági szintet igényelnek.
Kísérletek kimutatták, hogy a HAVAL 60%-kal gyorsabb, mint az MD5 3 iterációnál, 15%-kal gyorsabb 4 iterációnál, és ugyanilyen gyors öt iterációnál.

Kriptanalízis

Ütközések HAVAL

A hash ütközés  ugyanazt a függvényértéket kapja a különböző üzenetekhez.

2003 -ban Bart Van Rompay, Alex Biryukov , Bart Prenel és Joos Vandewalle ütközést fedezett fel a 3 iterációs HAVAL esetében. [2] Ennek az ütközésnek a megtalálásához hozzávetőlegesen a H összehúzódási függvény futtatására volt szükség .

2004- ben Wang Xiaoyun , Feng Dengguo , Lai Xuejia és Yu Hongbo kínai kutatók bejelentették a 3 iterációs HAVAL-128-ban felfedezett sebezhetőséget, amely lehetővé teszi az ütközések megtalálását a HAVAL számítások segítségével. [3]

2006- ban Wang Xiaoyun és Yu Hongbo vezette kínai tudósok egy csoportja két támadást hajtott végre a 4 iterációs HAVAL ellen, amihez szintén kivonatolási műveletekre volt szükség. Javasolták továbbá az 5 iterációs HAVAL elleni első elméleti támadást, amelynek a hash műveletek száma megközelítőleg egyenlő . [négy]

Lásd még

Jegyzetek

  1. Tokareva N. N. Erősen nemlineáris Boole-függvények: hajlított függvények és általánosításaik (elérhetetlen link) (2008). Az eredetiből archiválva: 2012. február 15. 
  2. Bart Van Rompay, Alex Biryukov, Bart Preneel és Joos Vandewalle. A 3-Pass  HAVAL kriptoanalízise .  (nem elérhető link)
  3. Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu. Ütközések az MD4, MD5, HAVAL-128 és RIPEMD  (angol) hash-függvényeknél  (lefelé irányuló kapcsolat) (2004. augusztus 17.). Archiválva az eredetiből 2011. augusztus 23-án.
  4. Xiaoyun Wang, Aaram Yun, Sangwoo Park, Hongbo Yu. A teljes HAVAL kriptoanalízise 4 és 5 bérlettel  (angol) (2006).  (nem elérhető link)

Linkek