• Nem Talált Eredményt

Hitelesítési feladatok

In document Hibajavító kódolás (Pldal 114-130)

3. Kriptográfia 74

3.3. Hitelesítési feladatok

A titkosításon kívül fontos biztonsági szolgáltatás még az integritásvédelem, a hi-telesítés, és a letagadhatatlanság. Ezekkel a szolgáltatásokkal foglalkozunk ebben a szakaszban. El ˝oször bevezetünk egy újabb kriptográfiai primitívet, a hash

függ-vényt, mely gyakran alkalmazott épít ˝oelem az integritásvédelmi és a hitelesítlsi feladatok megoldásában. Ezután bemutatjuk a szimmetrikus kulcsú üzenethitelesí-tési technikákat, majd az aszimmetrikus kulcsú digitális aláírást. Utóbbi már leta-gadhatatlanság szolgáltatást is biztosít. Végül röviden összefoglaljuk a nyilvános kulcsok hitelesítésének alapjait, valamint a kihívás-válasz alapú partnerhitelesítés módszereit.

Hash függvények

A kriptográfiai hash függvényeket leggyakrabban arra használjuk, hogy segít-ségükkel a hosszú üzeneteket kompakt módon reprezentáljuk. Ez azért hasznos, mert így számos alkalmazásban nagy méret˝u üzenetek helyett azok kompakt rep-rezentációján kell csak m˝uveleteket végeznünk. Az egyik legtipikusabb ilyen al-kalmazás az, amikor nem magára az üzenetre készítünk digitális aláírást, hanem annak kompakt reprezentációját írjuk csak alá (lásd kés ˝obb a 3.3. szakaszt).

Formálisan, egy h :{0,1}→ {0,1}nhash függvény tetsz ˝oleges hosszúságú bi-náris sorozatot rögzített n hosszúságú bibi-náris sorozatba képez le. A hash függvény kimenetét szokás hash értéknek vagy lenyomatnak is nevezni.

Mivel a hash függvény ˝osképtere definíció szerint nagyobb, mint a képtere, ezért az ütközések elkerülhetetlenek. Itt ütközés alatt két különböz ˝o x6=x0 beme-netet értünk, melyeknek hash értéke megegyezik, azaz h(x) =h(x0). Kriptográfiai hash függvények esetében azonban azt követeljük meg, hogy ilyen ütközéseket ne-héz legyen találni. Pontosabban, a kriptográfiai hash függvényekkel kapcsolatban a következ ˝o három tulajdonságot szokás megkövetelni:

(Er ˝os) ütközés-ellenállóság: Egy h hash függvény (er ˝osen) ütközés-ellen-álló, ha nehéz feladat két olyan különböz ˝o ˝osképtérbeli x6=x0elemet találni, melyeknek megegyezik a hash értéke, azaz h(x) =h(x0).

Gyenge ütközés-ellenállóság: Egy h hash függvény gyengén ütközés-ellen-álló, ha bármely adott ˝osképtérbeli x elemhez nehéz olyan másik ˝osképtér-beli x06=x elemet találni, melynek hash értéke megegyezik x hash értékével, azaz h(x0) =h(x).

Egyirányúság:Egy h hash függvény egyirányú, ha bármely y képtérbeli elem-hez, melynek ˝osképe a priori nem ismert, nehéz feladat olyan ˝osképtérbeli x elemet találni, melynek hash értéke pontosan y, azaz h(x) =y.

Figyeljük meg a különbséget a gyenge és az er ˝os ütközés-ellenállóság tulajdon-ság között. Gyenge ütközés-ellenállótulajdon-ság esetén azt követeljük meg, hogy egy adott x-hez nehéz legyen találni egy x0-t, melynek hash értéke megegyezik x hash értéké-vel. Ezzel szemben, ütközés-ellenállóság esetén nem rögzítjük egyik ˝osképtérbeli elemet sem, hanem azt követeljük meg, hogy nehéz legyen tetsz ˝oleges ütközést találni.

A fenti tulajdonságok bizonyos mértékben összefüggnek egymással. Könnyen igazolható például, hogy az ellenállóságból következik a gyenge ütközés-ellenállóság. Tegyük fel ugyanis, hogy létezik olyan h hash függvény amely üt-közés-ellenálló, de nem gyengén ütközés-ellenálló. Ekkor egy adott x bemenethez könnyen tudunk találni egy olyan x06=x bemenetet, melyre h(x0) =h(x). Ez azon-ban azt jelenti, hogy könnyen találtunk egy ütközést, mégpedig az(x,x0)párt, ami ellentmond azon feltevésünknek, hogy h ütközés-ellenálló.

Kicsit bonyolultabban bizonyítható, hogy az ütközés-ellenállóságból követke-zik az egyirányúság is. A bizonyítást itt nem részletezzük. Látjuk tehát, hogy az ütközés-ellenállóság a leger ˝osebb tulajdonság, ezért érdemes az ütközés-ellenálló hash függvények tervezésére koncentrálni.

A születésnapi paradoxon

Az ütközés-ellenállósággal szoros kapcsolatban áll a hash függvény kimenetének mérete, amelyet korábban n-nel jelöltünk. Ahhoz, hogy ezt a kapcsolatot megért-sük, el ˝oször a születésnapi paradoxonnal kell megismerkednünk. Ezt a követ-kez ˝oképpen vezethetjük be: Adott egy N elem˝u halmaz, melyb ˝ol véletlenszer˝uen választunk k elemet visszatevéssel (azaz egy elemet többször is választhatunk).

Kérdés, hogy mekkora valószín˝uséggel lesz a választott elemek között legalább két azonos?

El˝oször annak a valószín˝uségét számoljuk ki, hogy minden választott elem kü-lönböz ˝o. Ehhez vegyük észre, hogy N elemb ˝ol k kükü-lönböz ˝ot N alatt a k féleképpen választhatunk, és ezen k különböz ˝o elem lehetséges sorrendjeinek száma k!. To-vábbá, ha ismétlést is megengedünk, akkor N elemb ˝ol k-t pontosan Nkféleképpen választhatunk. Ebb ˝ol a keresett P valószín˝uség:

P=

Ha N nagy, akkor alkalmazhatjuk a következ ˝o közelítést:

1−1

N

eN1. Ennek segítségével P-re az alábbi közelítést kapjuk:

PeN1 ·eN2 ·. . .·ek−1N

=ek(k2N1)

A fentiek alapján annak valószín˝usége, hogy k elem visszatevéses választása esetén legalább két választott elem azonos a következ ˝o:

1−ek(k2N1) (3.26)

A (3.26) kifejezést felhasználva kiszámolhatjuk, hogy hány húzást kell végezni ahhoz, hogy valamilyen el ˝ore adott εvalószín˝uséggel legyen a választott elemek között legalább két azonos elem:

k≈ r

2N ln 1

1−ε (3.27)

ahol a k(k−1)≈k2közelítést alkalmaztuk. Ha példáulε=0.5, akkor k≈1.177√ N adódik, mígε=0.9 esetén azt kapjuk, hogy k≈2.146√

N.

Ha a fenti eredményeket arra az esetre alkalmazzuk, amikor a halmaz elemei születésnapok (azaz N=365), akkor azt kapjuk, hogy 1.177√

365≈23 véletlen választott ember között 0.5 valószín˝uséggel lesz legalább kett ˝o akiknek egybe esik a születésnapja, míg 2.146√

365≈41 véletlen választott ember esetén egy közös születésnapi party lehet ˝oségének valószín˝usége már 0.9. Ez els ˝ore meglep ˝onek t˝unik, mert intuitíve nem várnánk, hogy ilyen kis számú ember esetén ilyen nagy valószín˝uségeket kapunk. Ebb ˝ol származik a születésnapi paradoxon elnevezés.

A születésnapi paradoxonnak mélyreható hatása van a hash függvények bizton-ságára vonatkozóan. A születésnapi paradoxon értelmében ugyanis kb. √

2n=2n2 véletlen választott ˝osképtérbeli elem között nagy valószín˝uséggel lesz legalább egy ütköz ˝o pár. Azaz, ha n2túlságosan kicsi, akkor egyszer˝u véletlen választással haté-konyan lehet ütközéseket generálni. A mai technológia mellett ezért a hash függ-vény kimenetének méretét legalább n=128 bitre érdemes választani.

A véletlen választáson alapuló ütközés-generálás hash függvények ellen ha-sonlít a rejtjelez ˝oknél tárgyalt kimeret ˝o kulcskeresés támadáshoz. A rejtjelez ˝oknél láttuk, hogy a megfelel ˝o kulcsméret választása szükséges feltétele a rejtjelez ˝o biz-tonságának. Hasonlóképpen, a hash függvény kimenetének megfelel ˝o méretezése szükséges feltétele az ütközés-ellenállóságnak. Ugyanakkor elképzelhet ˝o, hogy a hash függvény algebrai struktúrájában rejl ˝o gyengeségek miatt, a hash függ-vény nem ütközés-ellenálló, annak ellenére, hogy kimenetének mérete megfelel ˝oen nagy.

Iteratív hash függvények

A gyakorlatban használt hash függvények iteratív módon állítják el ˝o a bemenet hash értékét. Az itertív hash függvények m˝uködésének vázlata a 3.15. ábrán lát-ható. Az iteratív hash függvény lelke az f tömörít ˝o függvény. Az f tömörít ˝o függvénynek két bemente van, ahol az egyik bemenet mérete b bit, a másik beme-net mérete pedig n bit, azaz megegyezik a hash függvény kimebeme-netének méretével.

Az f függvény kimenetének mérete n bit.

f f CV0

CV1 h(x)

x üzenet

. . . f

CV2 CVL-1

. . .

h

kitöltés

x1 x2 xL

(b) (b) (b)

(n) (n) (n)

(n)

3.15. ábra. Az iteratív hash függvény m˝uködésének vázlata.

A bemeneti üzenet feldolgozása b bites blokkokban történik. Az i. iterációs lépés során, az f függvény egyik bementére az i.bemeneti blokk, a másik beme-netére pedig az el ˝oz˝o iterációs lépés kimenete kerül, s az f függvény kimenete adja az i. iterációs lépés kimenetét, amelyet i.láncolási értéknek (chaining value) nevezünk, és CVi-vel jelölünk. Az els ˝o iterációs lépésnél egy CV0kezd ˝o láncolási értéket használunk, ami a hash függvény specifikációjában rögzített konstans. Az utolsó iterációs lépés kimenete adja a hash függvény kimenetét, azaz a hash értéket.

Ha a bemenet mérete nem egész számú többszöröse b-nek, akkor a bemeneti üzenetet a feldolgozás el ˝ott ki kell tölteni. A célnak megfelel ˝o az egyszer˝u, 0 bitek-kel történ ˝o kitöltés. Ennél azonban biztonságosabb, ha olyan kitöltést alkalmazunk amely tartalmazza az üzenet hosszának bináris reprezentációját. Erre vonatkozik a következ ˝o tétel, amit bizonyítás nélül közlünk:

3.9. tétel (Merkle–Damgard- (MD) kiegészítés). Tegyük fel, hogy a h iteratív hash függvényünk f kompressziós függvénye ütközés-ellenálló tulajdonsággal ren-delkezik. Ha a h bementére kerül ˝o üzenetet kiegészítjük egy blokkal, amely tartal-mazza az üzenet bithosszát, akkor a h hash függvény is ütközésmentes lesz.

Számos iteratív hash függvény konstrukció létezik, amely blokkrejtjelz ˝ot hasz-nál tömörít ˝o függvényként. Ilyen például a Davies–Meyer-séma, melynek tömörít ˝o függvényét a 3.16. ábra szemlélteti. A Davies–Meyer tömörít ˝o függvény esetén a hash függvény bels ˝o láncolási értéke a blokkrejtjelez ˝o bemenetére, a feldolgo-zandó üzenet aktuális blokkja pedig a blokkrejtjelez ˝o kulcsbementére kerül. A blokkrejtjelez ˝o kimenete és a bemenetként használt láncolási érték XOR összeg adja a következ ˝o láncolási értéket.

A Davies-Meyer séma el ˝onyét a következ ˝o tétel foglalja össze:

3.10. tétel. A Davies–Meyer-séma egyirányú hash függvényre vezet, ha az E transz-formáció véletlen leképezéssel modellezhet ˝o.

A Davies–Meyer-séma kapcsán megjegyezzük azonban, hogy kis blokkméret˝u (pl. 64 bites) blokkrejtjelez ˝o esetén az így nyert hash függvény nem lesz

ütközés-E xi

f

CVi-1 CVi

3.16. ábra. A Davies-Meyer tömörít ˝o függvény.

ellenálló a születésnapi paradoxon miatt. Ezért tanácsos egy legalább 128 bites blokkrejtjelez ˝o használata.

A blokkrejtjelez ˝ore épül ˝o hash függvények hátránya, hogy nem feltétlenül gyor-sak, hiszen a blokkrejtjelez ˝o nem az adott feladatra lett tervezve és optimalizálva.

Ezért a gyakorlatban elterjedten használt iteratív hash függvények mind dedikált hash függvények, melyeket kifejezetten hash függvénynek terveztek. A két leg-elterjedtebben használt dedikált iteratív hash függvény az MD5 és a SHA-1 nevet viseli. Az MD5 128 bites, a SHA-1 pedig 160 bites hash értéket generál. A beme-neti üzenetet mindkét hash függvény 512 bites blokkokban dolgozza fel.

Üzenethitelesít˝o kódok

Az üzenethitelesítést és integritásvédelmet leggyakrabban üzenethitelesít ˝o kó-dok (Message Authentication Code – MAC) alkalmazásával valósítjuk meg. Egy üzenethitelesít ˝o kódra gondolhatunk úgy, mint egy kriptográfiai ellen ˝orz ˝oösszegre, amelyet a küld ˝o az üzenet elküldése el ˝ott kiszámít és az üzenethez csatol. A csator-nán átvitelre kerül az üzenet és az üzenet ellen ˝orz ˝o összege is. A vev ˝o mindkett ˝ot veszi, majd ellen ˝orzi az ellen ˝orz ˝o összeget. Ha az ellen ˝orzés sikerrel jár, akkor a vev ˝o meg lehet gy ˝oz˝odve arról, hogy az üzenet sértetlen és valóban a vélt (pl.

az üzenetben megjelölt) feladó küldte. Ellenkez ˝o esetben, az üzenet integritása az átvitel során megsérült, és mivel ez lehet rosszindulatú módosítás következménye is, ezért a vev ˝o nem fogadja el az üzenetet.

Formáját és funkcióját tekintve tehát egy üzenethitelesít ˝o kód egy hibadetek-táló kódhoz (pl. CRC) hasonlítható. Van azonban egy nagyon fontos különbség az üzenethitelesít ˝o és a hibadetektáló kódok között. Nevezetesen az, hogy a hiba-detektáló kódok csak a zajos csatornán bekövetkezett véletlen hibák detektálására alkalmasak, és nem képesek egy rosszindulatú támadó által végrehajtott szándékos módosítások detektálására. Ez egyszer˝uen azért van, mert a támadó az üzenet mó-dosítása után a módosított üzenethez ki tudja számolni az új hibadetektáló kódot.

A vev ˝o tehát a módosított üzenetet és a hozzá tartozó helyes hibadetektáló kódot kapja meg és így nem veszi észre a módosítást.

Ezzel szemben az üzenethitelesít ˝o kódok nemcsak a véletlen hibákat, hanem a rosszindulatú módosításokat is képesek detektálni. Ezen képességük abból adódik, hogy a hibadetektáló kóddal ellentétben, az üzenethitelesít ˝o kód értéke nemcsak magától az üzenett ˝ol függ, hanem egy a küld ˝o és a vev ˝o által megosztott titkos in-formációtól, egy kulcstól is. A támadó ezen titok hiányában nem tudja kiszámítani a módosított üzenethez tartozó helyes üzenethitelesít ˝o kódot, és így a módosítás nem maradhat észrevétlen. Ezen túlmen ˝oen a vev ˝o tudja, hogy helyes üzenethi-telesít ˝o kód kiszámítására csak a küld ˝o (és természetesen maga a vev ˝o) alkalmas.

Ezért meg lehet gy ˝oz˝odve arról, hogy minden helyes üzenethitelesít ˝o kóddal vett (és nem saját magától származó) üzenet csakis a küld ˝ot˝ol származhat.

A fenti gondolatok az üzenethitelesítés következ ˝o modelljéhez vezetnek: Az A küld ˝o és a B vev ˝o rendelkezik egy közös KABkulccsal. KAB-t rajtuk kívül más nem ismeri. Az m üzenet elküldése el ˝ott A kiszámolja az m-hez tartozó µ=MACKAB(m) üzenethitelesít ˝o kódot, ahol MACKAB a KABkulccsal paraméterezett üzenethitele-sít ˝o függvény. A továbbiakban a µ üzenethiteleüzenethitele-sít ˝o kódot röviden MAC értéknek, a MACKABüzenethitelesít ˝o függvényt pedig röviden MAC függvénynek fogjuk ne-vezni. A elküldi, B pedig megkapja a MAC értékkel kiegészített m|µ üzenetet. KAB

ismeretében B kiszámolja MACKAB(m)-et, és az eredményt összehasonlítja µ-vel.

Egyenl ˝oség esetén B elfogadja az üzenetet, ellenkez ˝o esetben eldobja azt.

A MAC fügvénnyel szemben az alábbi követelményeket támasztjuk:

a) A MACKfüggvény olyan sz˝ukít ˝o transzformáció legyen, mely tetsz ˝oleges hosz-szúságú üzeneteket fix hoshosz-szúságú, n bites MAC értékbe képez.

b) A K kulcs ismeretében tetsz ˝oleges m üzenethez könny˝u legyen kiszámolni MACK(m)-et.

c) A K kulcs ismeretének hiányában viszont legyen MACK(m)kiszámítása nehéz feladat, még akkor is, ha nagy számú (mi,MACK(mi)) pár áll rendelkezésre, ahol természetesen m∈ {/ mi}.

d) A K kulcs meghatározása legyen nehéz feladat még nagy számú(mi,MACK(mi)) pár ismerete esetén is.

Megjegyezzük, hogy ha egy MAC függvény eleget tesz a 3) követelménynek, akkor kielégíti a 4) követelményt is. Ha ugyanis a 4) követelményt nem elégí-tené ki, akkor egy támadó meg tudná határozni a K kulcsot és annak ismeretében tetsz ˝oleges üzenethez tudna MAC értéket generálni, azaz a MAC függvény nem elégíthetné ki a 3) követelményt sem. Fordítva azonban nem áll fenn az impli-káció, ugyanis elméletileg elképzelhet ˝o, hogy a K kulcs ismerete nem szükséges ahhoz, hogy egy üzenethez helyes MAC értéket generáljon a támadó.

A CBC-MAC

A CBC-MAC függvény m˝uködésének gyors megértéséhez képzeljük el, hogy az üzenetet CBC módban rejtjelezzük egy blokkrejtjelez ˝ovel, azzal a módosítással,

hogy a rejtjeles blokkokat az utolsó kivételével mind eldobjuk. A MAC függvény kimenete az utolsó rejtjeles blokk lesz.

Formálisan, a CBC-MAC m˝uködését a következ ˝oképpen írhatjuk le: Adott egy m üzenet és egy K kulcs, ahol K mérete megegyezik a használni kívánt rejtjelez ˝o kulcsméretével. Az m üzenetet el ˝oször kitöltjük, hogy mérete a blokk-rejtjelez ˝o n blokkméretének többszöröse legyen. Mivel magát az m-et is el fog-juk küldeni a vev ˝onek, ezért a kitöltés lehet nagyon egyszer˝u, például az üzenet megfelel ˝o számú 0 bittel történ ˝o kiegészítése. Jelöljük a kiegészített üzenetet X -szel. X -et n bites blokkokra osztjuk, melyeket X1,X2, . . . ,XN-nel jelölünk. Legyen IV=0 (azaz a csupa 0 bitb ˝ol álló blokk). A CBC mód m˝uködését definiáló (3.17) és (3.18) kifejezések, valamint a megadott IV és K felhasználásával számítsuk ki az utolsó rejtjeles blokkot, CN-t. Ez lesz a CBC-MAC függvény kimenete, azaz MACK(m) =CN. Ha rendelkezésre áll egy K06=K másik kulcs is, akkor a MAC függvény kimenetére opcionálisan nem CN-et vezetjük, hanem EK(DK0(CN))-et, ahol E jelöli a blokkrejtjelez ˝o kódolót, D pedig a dekódoló függvényét.

Tekintsük most át a MAC függvénnyel szemben támasztott követelmények lis-táját. A CBC-MAC függvény tetsz ˝oleges méret˝u üzenethez egy n bites MAC ér-téket generál, ahol n az alkalmazott blokkrejtjelez ˝o blokkmérete. A K kulcs is-meretében a MAC számítása egyszer˝u, a CBC kódolással megegyez ˝o módon tör-ténik. A K kulcs meghatározása megfigyelt üzenet – MAC párokból lényegében a blokkrejtjelez ˝o feltörését jelenti, tehát megfelel ˝o er ˝osség˝u blokkrejtjelez ˝o esetén ez biztosan nehéz feladat. Hasonlóképpen nehéznek t˝unik a MAC meghatározása egy adott üzenethez, ha a kulcs nem ismert.

Hash függvényre épül ˝o MAC függvények

A legegyszer˝ubben úgy kovácsolhatunk egy hash függvényb ˝ol MAC függvényt, hogy a kulcsot hozzáf˝uzzük az üzenethez, majd a kulccsal megtoldott üzenetnek kiszámítjuk a hash értékét és az eredményt tekintjük az eredeti üzenet MAC érté-kének. Attól függ ˝oen, hogy a kulcsot az üzenet elé vagy mögé f˝uzzük, alapvet ˝oen két módszert különböztethetünk meg, melyeket titok prefix és titok szuffix mód-szereknek hívunk.

Titok prefix módszer. Nevéb ˝ol adódóan a titok prefix módszer az üzenet elé f˝uzi a kulcsot. Az m üzenet MAC értékét tehát a következ ˝o módon számoljuk:

MACK(m) =h(K|m) (3.28) ahol h jelöli a hash függvényt, melyre a MAC konstrukció épül.

Az így nyert MAC függvény h tulajdonságaiból adódóan sz˝ukít ˝o transzformá-ció és a teljes input ismeretében (azaz a K kulcsot is ismerve) a MAC érték könnyen számolható. A hash függvény egyirányúsága miatt abban reménykedünk, hogy egy adott MAC érték ismeretében a K kulcs megfejtése nehéz feladat. Vegyük azonban észre, hogy a hash függvény egyirányúsága azt jelenti, hogy egy adott MAC érték

f f f f CV0

CV1 µ = MACK(m)

K m m'

. . . . . .

µ' = MACK(m|m') hµ

3.17. ábra. A titok prefix módszer elleni támadás.

ismeretében a teljes input (kulcs és üzenet) megfejtése nehéz feladat. A mi ese-tünkben azonban az input egy része, az üzenet ismert. Kérdéses tehát, hogy ez a konstrukció milyen garanciát biztosít a kulcs megfejtése ellen. További probléma, hogy ha h egy iteratív hash függvény, akkor a támadó egy m üzenet µ MAC ér-tékének ismeretében bármely m|m0üzenet µ0 MAC értékét ki tudja számolni mint µ0=hµ(m0), ahol hµ ugyanaz a hash függvény mint h, csak a kezdeti láncváltozó-jának értéke µ. Ezt a 3.17. ábra szemlélteti.

Titok szuffix módszer. Egy másik lehet ˝oség hash függvény alapú MAC függ-vény konstruálására a titok szuffix módszer. Ekkor a kulcsot az üzenet mögé f˝uz-zük, majd a kulccsal így kiegészített üzenetnek kiszámoljuk a hash értékét és az eredményt tekintjük az üzenet MAC értékének:

MACK(m) =h(m|K) (3.29) A titok szuffix módszer tulajdonságai hasonlítanak a titok prefix módszer tulaj-donságaihoz azzal a különbséggel, hogy a titok prefix módszernél említett támadás ebben az esetben nem kivitelezhet ˝o. A módszer egy gyengesége, hogy ha h egy iteratív hash függvény, akkor a kulcsot csak a MAC érték kiszámításának utolsó lépésében használjuk fel. Ez problémához vezethet, ha a hash függvény nem ütkö-zésmentes (pl. az alkalmazás jellegéb ˝ol adódóan a MAC érték hosszára vonatko-zóan korlátozásaink vannak). Tegyük fel ugyanis, hogy a támadó (a születésnapi paradoxont használva) talált egy m és egy m0 üzenetet, melyekre h(m) =h(m0).

Könnyen látszik, hogy ekkor MACK(m) =h(m|K) =h(m0|K) =MACK(m0), hi-szen m és m0 feldolgozása után a hash függvény bels ˝o láncváltozójának értéke a két esetben megegyezik. Más szóval, ha a támadó megszerzi az egyik üzenet MAC értékét, akkor azt fel tudja használni a másik üzenet MAC értékeként is.

HMAC. A HMAC a gyakorlatban igen elterjedten használt, hash függvényre épül ˝o MAC függvény. A HMAC függvényt a következ ˝o kifejezés definiálja:

MACK(m) =h(K+opad|h(K+ipad|m)) (3.30) ahol

h egy iteratív hash függvény, ami az üzenetet B bájtos blokkokban dolgozza fel,

ipad (inner pad) egy B bájt hosszú konstans blokk, melyben minden bájt értéke36,

opad (outer pad) egy B bájt hosszú konstans blokk, melyben minden bájt értéke5C, és

K+ a K kulcs csupa 0 bittel kiegészítve, hogy hossza elérje a B bájtot.

A K kulcs tetsz ˝oleges hosszúságú lehet. B értéke tipikusan 64, így K általában rövidebb, mint B bájt. Ha mégis hosszabb lenne, akkor el ˝oször kiszámoljuk h(K)-t és ezt használjuk kulcsként. A HMAC által definiált MAC érték mérete az alkal-mazott h hash függvény kimenetének méretét ˝ol függ. Ha például h az MD5 hash függvény (HMAC-MD5), akkor a kiszámított MAC mérete 128 bit (16 bájt), míg a SHA-1 hash függvény használata esetén (HMAC-SHA1) a MAC mérete 160 bit (20 bájt).

Digitális aláírás

Az el ˝oz˝oekben tárgyalt üzenethitelesít ˝o kódok hasznos szolgáltatásokat nyújta-nak: lehet ˝ové teszik a csatornán átküldött üzenetek (véletlen és szándékos) módo-sításának detektálását és az üzenetek küld ˝ojének hitelesítését. Az üzenethitelesít ˝o kódok hátránya azonban az, hogy ezeket a szolgáltatásokat csak a vev ˝o számára biztosítják. A vev ˝o egy kívülálló harmadik felet már nem tud meggy ˝ozni arról, hogy egy vett üzenet sértetlen és a küld ˝ot˝ol származik. Ez azért van, mert az üze-nethitelesít ˝o kód értéke egy olyan titkos kulcstól függ, melyet a vev ˝o is ismer. A harmadik fél tehát nem tudja biztosan eldönteni, hogy az adott üzenethitelesít ˝o kódot a küld ˝o vagy a vev ˝o generálta. Ez azt jelenti, hogy a küld ˝o bármikor leta-gadhatja, hogy egy üzenetet küldött a vev ˝onek, és a vev ˝o nem tudja bebizonyítani, hogy a küld ˝o hazudik. Más szóval, az üzenethitelesít ˝o kódok nem biztosítanak letagadhatatlanság szolgáltatást.

A letagadhatatlanság szolgáltatás megvalósítására olyan aszimmetrikus mecha-nizmusra van szükség, melynek segítségével csakis az üzenet küld ˝oje állíthatja el ˝o az üzenet eredetére vonatkozó bizonyítékot (így azt hamisítani nem lehet), de a rendszer bármely résztvev ˝oje (köztük a vev ˝o is) ellen ˝orizni tudja azt. Ezt a mecha-nizmust digitális aláírásnak nevezzük, mivel tulajdonságai nagy mértékben hason-lítanak a hagyományos aláírás tulajdonságaihoz. Egy fontos különbség a digitális és a hagyományos aláírás között az, hogy a digitális aláírás nem az üzenet anyagi hordozójához (pl. papír) köt ˝odik, hanem magához az üzenethez. Így nemcsak az üzenet eredetére vonatkozóan nyújt garanciát, hanem segítségével az üzenet tartal-mában az aláírás generálása után bekövetkezett módosításokat is detektálni lehet.

Összefoglalva tehát a digitális aláírás egy olyan mechanizmus, mely biztosítja az

Összefoglalva tehát a digitális aláírás egy olyan mechanizmus, mely biztosítja az

In document Hibajavító kódolás (Pldal 114-130)