HAVAL

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 11. května 2018; kontroly vyžadují 6 úprav .
HAVAL
Vývojáři Yuliang Zheng , Josef Pieprzyk , Jennifer Seberry
Vytvořeno 1992
zveřejněno 1992
Velikost hash 128, 160, 192, 224, 256 bitů
Počet kol 96, 128, 160
Typ hashovací funkce

HAVAL  je kryptografická hašovací funkce vyvinutá Yuliang Zheng , Josef Pieprzyk a Jennifer Seberry v roce 1992 .

Vzhledem k libovolné vstupní zprávě funkce vygeneruje hodnotu hash nazvanou message digest , která může být dlouhá 128, 160, 192, 224 nebo 256 bitů. Počet iterací je variabilní, od 3 do 5. Počet kol v každé iteraci je 32. Jedná se o modifikaci MD5 .

Algoritmus

Pojďme definovat booleovské funkce , které se používají k provádění bitových operací se slovy.
1. iterace 2. iterace 3. iterace 4. iterace 5. iterace Algoritmus přijímá vstupní datový tok, jehož hash má být nalezen. Tento tok je rozdělen do bloků, každý o délce 1024 bitů. Následují 3 kroky algoritmu.




Krok 1. Rozbalení zprávy

Nejprve se zpráva rozšíří tak, aby její délka v bitech byla rovna 944 modulo 1024. K tomu je na konec zprávy zapsán jeden bit a poté požadovaný počet nulových bitů. Zbývajících 80 bitů je doplněno 64bitovou reprezentací počtu bitů ve zprávě před zarovnáním (pole MSGLENG), 10bitovou reprezentací délky výtahu zprávy (pole DGSTLENG), 3bitovou reprezentací čísla iterací (pole PASS) a 3bitová reprezentace verze HAVAL (pole VERSION).

Krok 2. Zpracování zprávy v blocích po 1024 bitech

Napišme rozšířenou zprávu ve tvaru: , kde  je 1024bitový blok a n je počet bloků v rozšířené zprávě. Dále pro i od 0 do n-1 provedeme následující výpočet: , kde H  je kompresní funkce popsaná níže a  je 256bitová konstanta.

H funkce komprese

H zpracovává blok zpráv ve 3, 4 nebo 5 iteracích (v závislosti na hodnotě pole PASS). Označme kompresní funkce používané v iteracích pomocí a . Nechť je  nějaká 256bitová konstanta a nechť je  256bitový výstup funkce H . Potom H lze popsat následovně (viz obrázek):








(Poznámka: operace typu je operace ve tvaru: , kde 32bitová slova.

Označme iterační číslo j (j =1,…,5). Iterační číslo j odpovídá kompresní funkci . Vstupem každé funkce je a , kde  je 1024bitový blok zpráv sestávající z 32 slov , a se skládá z 8 slov . Pak to lze napsat následovně:

1 . Nechat 2 . Opakujte následující kroky pro i od 0 do 31: , kde  jsou 32bitové konstanty 3 . Nechť a být 256bitový výstup .

Zápis:  - složení dvou funkcí (první je vykonána ),

 - přídavný modul ,  jsou permutace popsané v tabulce 2.

Poznámka: v 1. iteraci (tj. ) nejsou použity žádné konstanty .

Na rozdíl od iterace 1 se ve 2. a dalších iteracích zpracovává nikoli ve slovosledu, ale v pořadí uvedeném v tabulce 1.

Tabulka 1. Pořadí zpracování textu
( ) 0 jeden 2 3 čtyři 5 6 7 osm 9 deset jedenáct 12 13 čtrnáct patnáct 16 17 osmnáct 19 dvacet 21 22 23 24 25 26 27 28 29 třicet 31
( ) 5 čtrnáct 26 osmnáct jedenáct 28 7 16 0 23 dvacet 22 jeden deset čtyři osm třicet 3 21 9 17 24 29 6 19 12 patnáct 13 2 25 31 27
( ) 19 9 čtyři dvacet 28 17 osm 22 29 čtrnáct 25 12 24 třicet 16 26 31 patnáct 7 3 jeden 0 osmnáct 27 13 6 21 deset 23 jedenáct 5 2
( ) 24 čtyři 0 čtrnáct 2 7 28 23 26 6 třicet dvacet osmnáct 25 19 3 22 jedenáct 31 21 osm 27 12 9 jeden 29 5 patnáct 17 deset 16 13
( ) 27 3 21 26 17 jedenáct dvacet 29 19 0 12 7 13 osm 31 deset 5 9 čtrnáct třicet osmnáct 6 28 24 2 23 16 22 čtyři jeden 25 patnáct
Tabulka 2. Permutace

Krok 3. Vytvoření výtahu zprávy

Tento krok používá délku 256 bitů získanou v kroku 2. Pokud je požadovaná velikost hash 256 bitů, existuje výtah zprávy. Podívejme se na další 4 případy.

1. Velikost hash – 128 bitů

Uveďme to v následujícím tvaru:

(horní index označuje délku X v bitech)

Pak je souhrn zpráv 128bitový , kde

2. Velikost hash – 160 bitů

Uveďme to v následujícím tvaru:

Potom je souhrn zpráv 160bitový , kde

3. Velikost hash – 192 bitů

Uveďme to v následujícím tvaru:

Nechat

 - přehled zpráv.

4. Velikost hash – 224 bitů

Pojďme si to představit v následující podobě:

Potom je souhrn zpráv 224bitový , kde

Konstanty použité v algoritmu

Tento algoritmus používá 136 32bitových konstant. Zapišme si je v následujícím pořadí:

jeden. 2. 3. čtyři. 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

Prvních 8 konstant představuje prvních 256 bitů zlomkové části čísla . Konstanty odpovídají dalším 1024 bitům zlomkové části a tak dále.

Funkce , , a _

Booleovské funkce , , a , používané v algoritmu, mají řadu užitečných vlastností v případě předběžné permutace jejich argumentů:

1) Jsou vyváženy 0 a 1. To znamená, že výstup funkce pro libovolnou množinu vstupních dat se stejnou pravděpodobností (1/2) může být buď 0, nebo 1. 2) Jsou vysoce nelineární. [jeden] 3) Splňují Strict Avalanche Criterion, tj. když se změní hodnota kterékoli ze vstupních proměnných, změní se hodnota funkce s pravděpodobností 1/2. 4) Nelze je získat jedna od druhé aplikací lineárních transformací na vstupní proměnné. 5) Tato množina funkcí je na výstupu vzájemně nekorelovaná, to znamená, že jakákoliv dvojice funkcí je na výstupu vzájemně nekorelovaná (funkce a na výstupu vzájemně nekorelují, jestliže , a  jsou vyváženy 0 a 1, nelineární funkce)

HAVAL - hashe

Hashe HAVAL jsou obvykle reprezentovány jako sekvence 32, 40, 48, 56 nebo 64 hexadecimálních čísel.
Některé příklady hash (velikost – 256 bitů, počet iterací – 5):

HAVAL(" Rychlá hnědá liška skočí přes líného psa ") = b89c551cdfe2e06dbd4cea2be1bc7d557416c58ebb4d07cbc94e49f710c55be4

I malá změna ve vstupní zprávě (v našem případě o jeden znak: znak "d" je nahrazen znakem "c") vede k úplné změně hashe.

HAVAL("Rychlá hnědá liška přeskakuje líné kolečko") = 60983bb8c8f49ad3bea29899b78cd741f4c96e911bbc272e5550a4f195a4077e

Příklad hashe HAVAL pro řetězec "null":

HAVAL("") = be417bb4dd5cfb76c7126f4f8eeb1553a449039307b1a3cd451dbfdc0fbbe330

Srovnání mezi HAVAL a MD5

Na rozdíl od hashovací funkce MD5, která má pevnou velikost výtahu a počet iterací, HAVAL poskytuje 15 různých variant algoritmu kombinací délky digestu a počtu iterací. To poskytuje větší flexibilitu, a proto je hašovací funkce vhodnější pro aplikace, které vyžadují různé délky hash zpráv a různé úrovně zabezpečení.
Experimenty ukázaly, že HAVAL je o 60 % rychlejší než MD5 při 3 iteracích, o 15 % rychlejší při 4 iteracích a stejně rychlý při pěti iteracích.

Kryptoanalýza

Srážky HAVAL

Kolize hash  získává stejnou hodnotu funkce pro různé zprávy.

V roce 2003 Bart Van Rompay, Alex Biryukov , Bart Prenel a Joos Vandewalle objevili kolizi pro 3-iterační HAVAL. [2] Nalezení této kolize vyžadovalo přibližně běhů kontrakční funkce H .

V roce 2004 čínští výzkumníci Wang Xiaoyun , Feng Dengguo , Lai Xuejia a Yu Hongbo oznámili zranitelnost, kterou objevili v 3-iteračním HAVAL-128, která umožňuje nalézt srážky pomocí výpočtů HAVAL. [3]

V roce 2006 skupina čínských vědců vedená Wang Xiaoyun a Yu Hongbo provedla dva útoky na 4-iterační HAVAL, které rovněž vyžadovaly hašovací operace, resp. Navrhli také první teoretický útok na 5-iterační HAVAL s počtem hašovacích operací přibližně rovným . [čtyři]

Viz také

Poznámky

  1. Tokareva N. N. Silně nelineární booleovské funkce: ohýbané funkce a jejich zobecnění (nepřístupný odkaz) (2008). Archivováno z originálu 15. února 2012. 
  2. Bart Van Rompay, Alex Biryukov, Bart Preneel a Joos Vandewalle. Kryptoanalýza 3-Pass  HAVAL .  (nedostupný odkaz)
  3. Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu. Kolize pro hashovací funkce MD4, MD5, HAVAL-128 a RIPEMD  (anglicky)  (downlink) (17. srpna 2004). Archivováno z originálu 23. srpna 2011.
  4. Xiaoyun Wang, Aaram Yun, Sangwoo Park, Hongbo Yu. Kryptoanalýza plného HAVALu se 4 a 5 průchody  (anglicky) (2006).  (nedostupný odkaz)

Odkazy