Kryptograficke hasovaci funkce - MAC, MDC kody

casto staci pouze autentizace puvodu ci obsahu zpravy, pripadne overeni integrity
ne vzdy staci k zajisteni techto pozadavku vlastni sifrovaci algoritmus

Pouziti

Zavisi-li vypocet hasovaci funkce na tajnem klici, oznacujeme tuto funkci jako MAC (message authentization code). Pokud takovy klic pouzit neni, jde o MDC (manipulation detection code).

Formalni definice

MAC je funkce h splnujici
  1. zatimco argument X muze byt libovolne delky, vysledek h(K, X) ma pevnou velikost n ( n = 32 .. 64)
  2. pro dane h a X je tezke urcit h(K, X) s pravdepodobnosti uspechu vyrazneji prevysujici 1/2n.
  3. i se znalosti velkeho mnozstvi zvolenych paru {Xi, h(K, Xi)} musi byt tezke urcit K, nebo spocitat h(K, X) pro X Xi .

MDC casto delime na dve skupiny - OWHF, CRHF

Funkci h oznacime za OWHF (one-way hash function) prave kdyz:

  1. zatimco argument X muze byt libovolne delky, vysledek h(X) ma pevnou velikost n ( n > 63)
  2. pro dane Y a h musi byt tezke nalezt X aby Y = h(X)
  3. pro dane X a h(X) musi byt tezke najit X' aby h(X) = h(X')

CRHF (collision resistant hash function) je takova funkce, ktera splnuje:

  1. h je OWHF ( n > 127)
  2. musi byt tezke najit par X', X'', tak, aby h(X') = h(X'')

Navrhy MDC funkci

prakticky vsechny zname hasovaci funkce pracuji nad vstupem pevne delky
iterovane hasovaci funkce (iterated hash f.) - delsi vstup X je zpracovavan opakovanim vypoctu
H0 = IV
Hi = f(Xi, Hi-1)      i = 1, 2, ..., t
h(X) = Ht
IV - inicializacni hodnota

casto delka vstupu neni nasobkem delky vstupniho bloku -> nutne zarovnani (padding)
zarovnani by melo byt jednoznacne (unambiguous) - nesmi dve ruzne zpravy doplnit na stejnou, je vhodne, aby na konec zpravy zapisovalo delku

Tvrzeni
Pokud zarovnani obsahuje delku vstupni zpravy a tato je dlouha alespon 2 bloky, potom nalezeni kolidujiciho vzoru h pri pevnem IV vyzaduje 2n operaci prave kdyz nalezeni kolidujiciho vzoru f pri libovolnem Hi-1 vyzaduje 2n operaci.

Tvrzeni
Predpokladejme jednoznacne zarovnani obsahujici delku vstupni zpravy. Je-li f odolna vuci kolizim (collision resistant), je h CRHF.

Hasovaci funkce zalozene na blokovych sifrach

vyhodne z hlediska navrhu a implementace
vetsina schemat ekvivalentni s jednim z nasledujicich

Matyas, Meyer, Oseas

f = Exor(s(Hi-1), Xi)
delka hashkodu odpovida delce vstupu, Exor(K, X) = E(K, X) xor X.
ISO/IEC 10118 p. 2

Preneel, Govaerts, Vandenwalle

f = Exor(s(Hi-1), Xi) xor Hi-1
v obou pripadech E je libovolna blokova sifra, s je funkce mapujici prostor zasifrovanach bloku do prostoru klicu. Tyto funkce mohou byt CRHF pokud delka bloku je alespon 128 bitu. Bezpecnost umerna hodnote min(k,r).

MDC-2

funkce dava hashkod dvojnasobne delky vstupu, vhodna pro implementaci CRHF pomoci DES.
Obcas pod nazvem Meyer-Schilling
T1i = Exor(H1i-1, Xi) = LT1i || RT1i
T2i = Exor(H2i-1, Xi) = LT2i || RT2i
H1i = LT1i || RT2i
H2i = LT2i || RT1i
H10 a H20 iniciovany hodnotami IV1 resp. IV2 , vysledek vznikne konkatenaci H1t a H2t .

MDC-4

jeden krok se sklada ze dvou iteraci MDC-2, jako vstup druhe iterace se pouzije H2i-1 a H1i-1.

Dosud neni znama mira bezpecnosti obou predchozich funkci, ani utok proti nim. Vydrzi patrne 5 - 10 let.

Hasovaci funkce zalozene na modularni aritmetice

nejlepsi schemata zalozena na umocnovani na druhou modulo n
f = (Xi xor Hi-1)2 mod N xor Xi
pouzitim vetsiho mnozstvi operaci lze jeste zvysit bezpecnost
f = (Hi-1 xor (Xi)2)2 mod N

Hasovaci funkce zalozene na problemu batohu

zatim neni jasne, zda problem batohu je tezky pouze v nejhorsim pripade, nebo zda je tezky v prumernem pripade
prakticky vsechny systemy zalozene na problemu batohu byly prolomeny

Specialni MDC funkce

algoritmy navrhovane od pocatku jako vypocet hasovacich funkci a potazmo MDC

obvykle vykonnejsi

MD4, MD5

MD4 navrzen Rivestem, produkuje 128 bitovy vystup, iterace ve trech cyklech
publikovan utok proti prvnim dvoum cyklum algoritmu
autor provedl vylepseni MD5

MD5 pracuje nad vstupnimi bloky delky 512 bitu, 128 bitovy vystup, pracuje ve ctyrech cyklech
velmi komplikovany vypocet zahrnujici bitove logicke operace, posuny, scitani

Navrhy MAC funkci

obecna struktura stejna jako MDC, funkce f a pripadne i IV zavisi navic na klici K
existuje velmi male mnozstvi algoritmu

nejcasteji pouzivanou metodou je pocitani DES nebo podobneho algoritmu v modu CBC, resp CFB, konkretni schemata se lisi volbou pripadne kombinaci zminenych modu, pouzitim ruznych zarovnani...;

Jinou moznosti je vypocet

f = E(K, Xi xor Hi-1) xor Xi

Stream MAC

potrebujeme kryptograficky bezpecny generator pseudonahodnych sekvenci
podle vysledku generatoru je vstupni bit presunut do prvniho nebo druheho posuvneho registru, vysledek urcen konecnym obsahem posuvnych registru

Jeden z generatoru


Generatory nahodnych sekvenci

Kongruencni generator

Linearni Xi = (aXi-1+b) mod m

pri vhodne volbe a, b, m (napr. m prvocislo) generuje neopakujici se posloupnost delky m - generator s maximalni delkou

Kvadraticky Xi = (aX2i-1+bXi-1+c) mod m

Kubicky Xi = (aX3i-1+bX2i-1+cXi-1+d) mod m

kongruencni generatory jsou velmi rychle, avsak predikovatelne, byla vypracovana analyza

Posuvne registry s linearni zpetnou vazbou

(linear feedback shift registers)

sestavaji z posuvneho registru a vypousteci sekvence (tap sequence), coz je polynom stupne max. delky posuvneho registru

v kazdem kroku je obsah registru posunut o bit doprava, vystupem je nejpravejsi bit, registr se zleva doplni o XOR tech bitu v registru, ktere odpovidaji koeficientum vypousteciho polynomu

pro generator s maximalni delkou je nutno volit primitivni polynom stupne n - ireducibilni polynom delici x2n-1 + 1, ktery nedeli xd + 1 pro lib d delici 2n - 1

Blum-Micali

Xi = aXi-1

a, p prvocisla, bezpecnost plyne z obtiznosti vypoctu diskretniho logaritmu

Stridajici stop-and-go generator

pouziva tri posuvne registry s linearni zpetnou vazbou

Schema stridajiciho generatoru

impuls hodin jsou v zavislosti na hodnote LFSR-1 priveden na LFSR-2 nebo LFSR3, vystup techto registru je XORovan, cimz vznika vysledna hodnota.

gnerator ma velmi dlouhou periodu

RSA generator

Xi = Xei-1 mod n

vysledkem nejnizsi bit Xi. Bezpecnost ekvivalentni s bezpecnosti RSA

Blum Blum Shub

Xi = X2i-1 mod n
kde n je Blumovo cislo - soucin dvou velkych prvocisel kongruentnich s 3 mod 4. Generator se inicializuje hodnotou X0 = X2 mod n, kde X je nahodne cislo nesoudelne s n.

Vysledkem je nejnizsi bit Xi . Bezpecnost vyplyva z obtiznosti faktorizace velkych cisel. Generator je nepredikovatelny vlevo i vpravo, ale je mozne se znalosti faktoru p, q cisla n spocitat primo libovolne prvek generovane posloupnosti!

Xi = X0(2i) mod ((p-1)(q-1)) mod n

Dosud neni znama metoda zlomeni tohoto generatoru. Nevyhodou je znacna pomalost.


© Tonda Benes, 1995
S prevodem tohoto dokumentu do HTML pomahal ©Dan Lukes, 1995
Toto je revision 1.1, 20.12.95
Tuto stranku shledlo jiz <pocet navstevniku> zvedavcu ...