Digitális aláírás és kriptográfiai hash függvények A digitális aláírás protokollok feladatai: 1. az aláírás generálása (az X üzenetet küldő A fél végzi): A B: X, D A (X) 2. az aláírás ellenőrzése (B címzett által) B: X = E A (D A (X))? 3. hitelességgel kapcsolatos vitás kérdések harmadik személy előtti (pl. bíróság által) tisztázása: - pl. aláíró fél próbál tagadni (pl. kedvezőtlenné vált időközben a tartalom) - a címzett fél módosította az aláírt üzenetet A digitális aláírás és a valódi kézjegy közös tulajdonságai: 1. Az aláírás hiteles: amikor B ellenőrzi az aláírást A publikus kulcsával, meggyőződik, hogy azt csak A küldhette 2. Az aláírás nem hamisítható: csak A ismeri a saját titkos kulcsát 3. Az aláírás nem újrahasználható (nem átemelhető másik dokumentumhoz):az aláírás a dokumentum függvénye is 4. Az aláírt dokumentum nem módosítható: ha módosítják a dokumentumot, az eredeti aláírás nem illeszkedik, s ez detektálható 5. Az aláírás letagadhatatlan: B vagy egy harmadik fél A közreműködése nélkül ellenőrizni képes az aláírást 1
Digitális aláírás sajátossága: az üzenet anyagi hordozójához (pl. papír) tartozik, hanem szerves része az aktuális üzenetnek, azaz üzenetfüggő. Technikai kiegészítések: formátum, lenyomat, időpecsét Formátumozott rövid üzenet: D A (X) Nem formátumozott rövid üzenet: X, D A (X) Hosszú (> 1 blokk) méretű üzenetek esete: [X, D A (H(X))], H: Kriptográfiai hash függvény Kriptográfiai hash függvény és az aláírás: - egyirányúság - ütközésmentesség Egyirányú: egy y hash érték (lenyomat) ismeretében nehéz feladat olyan X' üzenetet (ősképet) kiszámítani, amelyre h=h(x') (címzett oldali támadás, csatornabeli támadás: [X', D A (h)], később pontosítjuk) Ütközésmentes: nehéz feladat olyan X, X' (X X') üzenetpárt megadni, amelyeknek azonos a lenyomata, azaz amelyekre H(X)=H(X') D A (H(X))= D A (H(X')) (aláíró oldali támadás: [X, D A (H(X))], [X', D A (H(X))] ) 2
Születésnapi paradoxon alapú támadás példa pl. 64 bites hash lenyomat - C támadó ráveszi A felet, hogy adjon aláírást általa benyújtott dokumentum. - C előállít 2 32 ártatlan és ugyanennyi csalásra felhasználható dokumentumot - Születésnapi paradoxon: nagy a valószínűsége annak, hogy a két halmazban van legalább egy pár azonos hash értékkel - C a pár ártatlan tagjára kér aláírást, s ezzel már lesz aláírása a csaló párjára is. Nehéz feladat a szükséges ges 2 33 ( 8 milliárd) dokumentumot (értelmes szöveget) előállítani (tárolni)?nem! "Tisztelt... Úr! Ezen levelemmel bemutatom Önnek... urat, aki... naptól... napig megbízottam... ügyletekben. Jogosult... összeghatárig... illetve... vásárlására. Az összegeket... pénznemben bocsássa rendelkezésére... címletekben. A kettőnk közti elszámolás... ütemezéssel történik stb. " Ha n kipontozott helyet hagyunk, s mindegyikre csak két lehetőség szerint választunk, 2 n levélváltozatunk van. - Aláíró: bebiztosítja a csalás lehetőségét. - Védekezés, ha a támadást nem az aláíró végzi: aláírás előtt az aláírandó dokumentumhoz illesszünk egy véletlenül sorsolt bináris sorozatot. C támadó predikálni nem képes a véletlenített dokumentumot, így a fenti támadást sikerrel nem tudja elvégezni. [(X,R), D A (H(X,R))] 3
Időpecsét az aláírásban és a letagadásvédelem: Aláíró fél tagad (repudiation): Elhíreszteli, hogy már előzőleg kompromittálódott a titkos kulcsa, ezért nem vállal felelősséget a nevében aláírt szerződésért. 1.(naív) verzió: 1. A B: [X,T,L, D A ( [Hash(X),T,L] ) ] T a dátum és időpont információ, L az aláírás élettartama. Aláíró továbbra is képes tagadni (csalhat az időpecséttel) 2.verzió: Harmadik megbízható személy részvételével megoldható a feladat G: megbízható személy S A (X): A által digitálisan aláírt X dokumentumot, V A (Y): Y=S A (X) dokumentum ellenőrzése: I: azonosító fejléc ( A küldi B-nek ) 1. A G: U=S A (u) (u=[ I, v], v=s A (X)) 2. G: V A (U) 3. G A: W=S G (w) (w=[ T, L, I, S A (X) ]) G B: W=S G (w) 4. A: V G (W)! 5. B: V G (W), (I), V A (v) 4
Digitális aláírás konvencionális kódolás felhasználásával? Megbízható harmadik személyt (G) A, B egy-egy szimmetrikus kulcsot oszt meg G-vel Alapváltozat: 1. A G: v=e A (x) 2. G: D A (v) 3. G B: w=e B ([A, x]) 4. B: D B (w) Megízható harmadik személy jelenléte már az alapváltozatban is szükséges. finomítás: hash, időpecsét 5
Az iterált kriptográfiai hash függvény iterált hash függvény: H(X)=h X=[X 1, X 2,..., X r ], azaz X i üzenetblokkok r hosszúságú sorozata. F: {0,1} 2n {0,1} n iterációs (kompressziós) függvény H i = F(H i-1, X i ), i=1,2,...,r, H 0 = inic. h=h r : lenyomat vagy hash érték H 0 : publikus inicializáló érték 6
Tulajdonságai: egyirányú hash függvény (1.őskép-ellenálló, OWHF) adott h ----> X nehéz feladat 2.őskép-ellenálló: adott h=hash(.,m) ----> m m, h=hash(.,m ) nehéz feladat ütközés-ellenálló (CRHF): m m, Hash(.,m )=Hash(.,m ) nehéz feladat pszeudo- vagy free-start: a támadó, pl. egy ütközés elõállításához, szabadon választhatja meg az iteráció H 0 kezdőértéket. Feladatok és megoldások 1. Feladat: Az iterációs függvény erejénél nem nagyobb a hash függvény ereje, azaz az előbbire végrehajtható hatékony támadás kiterjeszthető a hash függvény elleni hatékony támadássá. Mutassuk meg ezt a CRHF tulajdonságra! Megoldás: Az iterációs függvény nem CRHF tulajdonságú ---> M 1,M 1 párra h(h 0, M 1 )= h(h 0, M 1 ) ---> iterációs eljárás miatt Hash(H 0, [M 1,m])= Hash(H 0, [M 1,m]) tetszőleges m üzenet esetén ---> [M 1,m], [M 1,m] ütköző üzenetpár H hash függvényhez. 2. Feladat: Iterációs hash függvény esetén mutassuk meg, hogy m,m, H 0 H 0 : Hash(H 0,m)=Hash(H 0,m ) pszeudo ütközés előállítása nem nehéz feladat. (hf) 7
Damgard-Merkle padding (ütközésmenetesség kiterjesztése) Tegyük fel hogy van egy F kompressziós függvényünk ütközésellenálló tulajdonsággal. Ha az X=[X 1, X 2,..., X r-1 ] üzenetet kiegészítjük egy X r blokkal, amely tartalmazza az X üzenet bithosszát (nulla bitekkel kiegészítve egész blokkhosszra), az F kompressziós függvényre épülő iterációs hash függvény CRHF lesz Bizonyítás: Indirekt: 1. eset: X=[X 1, X 2,..., X r ], X =[X 1, X 2,..., X r ] párra azonos output: iteráció outputtól visszafelé görgetése a visszafelé legelső eltérő üzenetblokkig, ellentmondásra jutunk az iterációs fv. feltételezett ütközés ellenálló tulajdonságával. 2.eset: X=[X 1, X 2,..., X r1 ], X =[X 1, X 2,..., X r2 ] párra azonos output: az utolsó blokkok különböznek, s már itt ellentmondásra jutunk az iterációs fv. feltételezett ütközés ellenálló tulajdonságával. 8
A hash függvények két osztálya: a titkos kulcs nélküli hash függvények: pl. MDC (Manipulation DetectionCode) titkos kulcsos hash függvények: pl. MAC (Message Authentication Code). hash függvények kulcsnélküli kulcsos MDC egyéb egyéb MAC alkalmazások alkalmazások OWHF CRHF 9
A diszkrét hatványozás GF(p), p prim α primitív elem: α, α 2,... α p -1 különbözők Egy elvi rejtjelező: A (p,α) pár képezze a rendszer (titkos) kulcsát, s az x, 1 x p 1 rejtjeles képe: y = f(x) = α x (mod p) A primitív elem definíciója miatt f(x) kölcsönösen egyértelmű leképezés. Az inverz a diszkrét logaritmus: x = logα (y) (Általánosítható prím modulus helyett q prím hatványra. ) Nem alkalmazható rejtjelező, mivel a logaritmusképzést hatékonyan nem tudjuk elvégezni. 10
Az El-Gamal aszimmetrikus kulcsú rejtjelező: Tekintsünk egy q elemű G csoportot g generátorral. Kulcs pár: ( pk = X, sk = x), x ahol X = g, továbbá x véletlenszerűen kerül kiválasztásra a S={1,2,...,q} halmazból. Kódolás: Egy m G üzenet rejtjelezettje E pk ( m) = ( Y, b), ahol y Y = g, y S, b = Km, r y K = X. Dekódolás: Az ( Y, α) rejtett üzenet dekódolása D sk ( Y, b) = m: m = b / K, x K = Y. 11