Informatika | Operációs rendszerek » Elosztott rendszerek biztonsági kérdései

Alapadatok

Év, oldalszám:1997, 12 oldal

Nyelv:magyar

Letöltések száma:133

Feltöltve:2006. augusztus 10.

Méret:165 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!


Tartalmi kivonat

Elosztott rendszerek biztonsági kérdései Belső biztonság Belső biztonság = védelem. Ennek feladata, hogy biztosítsa, hogy az operációs rendszer erőforrásait az aktív komponensek (folyamatok) helyesen használják. • • programhibák erőforrások jogosulatlan használata védelmi tatomány aktív --> folyamat passzív --> erőforrás védelmi tartomány: egy folyamat az adott állapotában milyen erőforrásokhoz férhet hozzá, illetve azokon milyen műveleteket végezhet cél: minél szűkebb tartományt kijelölni (need-to-know) különböző folyamatok védelmi tartományai nem diszjunktak • • statikus (folyamat létrehozásakor hozzárendelt) dinamikus (folyamat állapotával változik) Statikus védelmi tartományok legáltalánosabb leírási forma: hozzáférési mátrix T1 T2 T3 F1 olvasás F2 írás futtatás F3 írás olvasás szalag nyomtató nyomtatás olvasás A mátrix egyes elemeit vízszintesen a tartomány, függőlegesen az

erőforrás jelöli ki. Az elem értéke megmutatja, hogy az adott tartományban az adott erőforráson milyen művelet végehető. Például a T2-es tartományban az F2 erőforrást írni lehet, míg a T3as tartományban a szalagról olvasni lehet Ez egy felettébb hiányos mátrix, tárolása nem gazdaságos. globális tábla A globális tábla a hozzáférési mátrix kitöltött elemeit tartalmazza <tartomány, erőforrás, művelet> alakban. Nagy hátránya, hogy minden egyes erőforráson végzett művelet előtt végig kell nézni az egész táblát. Baj: tábla nagy --> keresés lassú gyakran nem fér el a memóriában --> háttértár sem erőforrások, sem tartományok szerint sem lehet csoportokat szervezni. Például ha minden folyamatnak van olvasási joga egy erőforráshoz, akkor ennek minden tartományban meg kell jelennie. hozzáférési lista (access control list) A hozzáférési mátrix kitöltött elemeit az adott erőforráshoz rendeljük. <

<erőforrás1 <tartomány, művelet> <tartomány, művelet> <tartomány, művelet>.> <erőforrás2 <tartomány, művelet> <tartomány, művelet> <tartomány, művelet>.> . > Szokás megadni egy default-ot is: ez tartalmazza a mindenki számára engedélyezett műveleteket. A kernel a default ellenőrzésével kezdi a keresést, mert ha valami mindenkinek engedélyezett, akkor már nem kell tovább keresni. jogosítványok listája (capability list) A hozzáférési mátrix kitöltött elemeit a tartományokhoz rendeljük, vagyis sorokat emelünk ki. < <tartomány1 <erőforrás, művelet> <erőforrás, művelet> <erőforrás, művelet>.> <tartomány2 <erőforrás, művelet> <erőforrás, művelet> <erőforrás, művelet>.> . > Általában a jogosítvány egy referencia egy <erőforrás, művelet> párra. Jogosítvány tartományhoz tartozik, de az közvetlenül nem érheti el,

nem módosíthatja azt (a tartományban futó folyamat). zár - kulcs Átmenet a hozzáférési lista és a jogosítványok között. Tartományok és erőforrások is birtokolnak bitminta sorozatokat (kulcs, zár). Egy folyamat akkor férhet hozzá egy objektmhoz, ha valamelyik kulcsa megegyezik az objektum valamelyik zárjával. A módszerek összehasonlítása A hozzáférési lista a szemléletet tükrözi (erőforrásohoz köti a jogokat). Új erőforrások létrehozásakor definiálni lehet a védelmi tartományokat. Problémája, hogy minden hozzáféréskor sokat kell keresni. A jogosítvány nem szemléletes, de nem kell sokat keresni, csak a jogosítvány hitelességét kell ellenőrizni. A zár - kulcs elég hatékony, de rugalmas is. Kulcsok tartományok között átadhatók Például a Unix állományrendszer először hozzáférési listát használ az állományok megnyitására (UID, GID), majd a későbbiekben egy jogosítványt használ olvasásra, írásra

(állomány leíró). Dinamikus védelmi tartományok Probléma a statikus védelmi tartományokkal, hogy túl sok erőforrást kell belefoglalni --> minden erőforrásnak bele kell tartozni, amire a folyamatnak az élete során szüksége lesz. Ehhez képest egy biztonságosabb megoldás, ha a folyamatok átléphetnek más védelmi tartományokba (vagy ami ezzel egyenértékű, a tartományok módosíthatók). Dinamikus esetben a védelmi tartomány is olyan erőforrás, amelyre a hozzáférést, műveleteket korlátozni kell. --> hozzáférési mártixba a tartományokat is fel kell venni egy-egy oszlopnak. Műveletek: • kapcsolás adott tartományból a folyamat átkapcsolhat az oszlopban kijelölt tartományra. • másolás Az adott tartományban tartózkodó folyamat az erőforráshoz tartozó saját hozzáférési jogait átmásolhatja az oszlop tartományába. • másolás • átadás (az eredeti tartományból törlődik) • korlátozott jogú másolás (tovább

már nem másolható) • tulajdonos Ha egy tartomány valamely erőforrás tulajdonosa, akkor az más tartományokba elhelyezhet az erőforrással kapcsolatos jogosultságokat (oszlopok menti módosítás) • vezérlő Sorok menti módosítás. Vezérlő jog csak a tartományokhoz tartozó oszlopokban szerepelhet. Ha egy tartomány vezérel egy másikat, akkor az annak sorában (tetszőleges oszlopában) elhelyezhet, illetve törölhet jogosultságokat. T1 T2 T3 F1 olvasás F2 írás futtatás F3 írás olvasás szalag olvasás nyomtató T1 nyomtatás átadás másolás T2 vezérlés korlátozott másolás Hozzáférési jogok visszavonása • azonnali/késleltetett • szelektív/általános • teljes/részleges • időleges/véglelges Hozzáférési lista használata esetén könnyű, mert a jogosultságokat az erőforrásokkal együtt tároljuk. Jogosítványok esetén jóval nehezebb, mert a jogok szétszórva találhatók. • újra megszerzés (periódikus

törlés) • mutatók a jogosítványokra (erőforrás mellett tároljuk a jogosítványok helyét is) T3 kapcsolás indirekt jogosítványok (nem közvetlenül az erőforrásra, hanem egy globális tábla egy elemére adunk referenciát, onnan referencia az adott objektumra. Törlés esetén a táblázatból töröljük a referenciát. kulcsok (főkulcsot is használunk, azt lehet cserélni) • • Külső biztonság Elosztott rendszerek fokozottan ki vannak téve a különféle biztonsági veszélyeztetéseknek. Ezek ellen védekezni kell, amelynek módja biztonsági módszerek alkalmazása. Azonban a módszerek magukban nem alkalmasak a biztonság megvalósítására, úgynevezett biztonságpolitikára is szükség van. Például egy épület még nincs biztonságban, ha zárat szerelünk fel, annak megfelelő használatát is elő kell írni. A továbbiakban a principális, megbízó kifejezést alkalmazzuk az elosztott rendszerben tárolt információt vagy erőforrást

megszerezni próbáló ügynökre. A megbzó egy személy vagy egy folyamat lehet Az alkalmazott biztonsági modellben minden megbízó rendelkezik egy névvel, amely azonos a centralizált rendszerekben megszokott felhasználó azonosítóval, és egy titkos kulccsal, amely pedig a jelszóval egyezik meg. Fenyegetések A biztonsági rendszerek célja, hogy csak a jogosult, hiteles megbízókra korlátozza az erőforrások, illetve információk elérését. Ahhoz, hogy bizonyíthatóan biztonságos rendszert tervezhessünk, először specifikálnunk kell azokat a fenyegetéseket, amelyekkel szemben szeretnénk, ha a rendszer ellenálló lenne. Ezen főbb fenyegetés fajták: − − − − Szivárgás: Jogosulatlan megbízók információszerzése. Babrálás: Információ (beleértve programokat is) jogosulatlan módosítása. Erőforrás lopás: Az erőforrások jogosultság nélküli használata. Vandalizmus: Zavarkeltés a rendszer megfelelő m-ködésében, anélkül, hogy a

bajkeverőnek ebből valami haszna származna. A támadás módszerei A rendszer fenti módon történő zavarásához hozzá kell férni a rendszerhez. Ezek legelterjedtebb módjai: Lehallgatás: Az üzenetekről jogosultság nélküli másolat szerzése. Ez történhet úgy is, hogy közvetelnül a hálózatról szerzik be az üzeneteket, vagy nem megfelelően tárolt információt olvasnak el. Például az Interneten egy munkaállomás a hálózati címét beállíthatja másvalaki címére, így üzeneteket fogadhat, amelyeket a másik címre küldtek. Maszkírozás: Egy másik magbízó azonosítóját használva üzeneteket küldhetünk, illetve fogadhatunk a megfelelő jogosultságok nélkül. Ezt meg lehet tenni egy másik megbízó azonosítójának és jelszavának megszerzésével és használatával, illetve hozzáférési tokent és jogosítványt is el lehet tulajdonítani. Üzenet babrálás: Üzeneteket el lehet fogni, és megváltoztatni a tartalmukat, majd a

megváltoztatott üzenetet továbbküldeni. Ezt felettébb neház megtenni broadcast hálózaton, mint pl. az Ethernet, de egyszerű tárol-és-továbbít rendszerekben ezt könnyű megtenni. Visszajátszás: Üzeneteket el lehet tárolni, és egy későbbi időpontban újra lejátszani. A visszajátszás ellen nem lehet egyszerű titkosítással védekezni, mert a visszajátszást használni lehet erőforrás lopásra és vandalizmusra is, még akkor is, ha a használó nem érti az üzenetet. Beszivárgás A fenti támadások véghezviteléhez a támadónak hozzá kell férnie a rendszerhez, hogy futtathassa a programot, amely megvalósítja a támadást. A legtöbb támadásért a rendszer jogosult felhasználói a felelősek. A legegyszerűbb beszivárgási módszer a jelszó feltörés, vagyis a szisztematikus próbálgatás. Léteznek szótárak, amelyek a leggyakrabban használt jelszavakat tartalmazzák. Ez ellen megbízható jelszó választásával lehet védekezni A jelszó

legyen kellően hosszú, és kellően bonyolult. Filmek, regények hőseinek neve biztos, hogy szerepel a jelszófeltörő programok szótárában. Néhány népszerű/rettegett fogalom: Vírus: Egy olyan program, amelyet egy legális gazdaprogramhoz csatolnak, és amely telepíti magát a célkörnyezetben, minden alkalommal, amikor a gazdaprogramot futtatják. A telepítése után végrehajtja a bűneit, gaztetteit, gyakran a dátum, illetve az óra triggerelésére. Mint a neve is mutatja, a tettei egyike, hogy másolatokat készít magáról, és ezeket hozzáfűzi az összes elérhető programhoz. Gazdaprogramok szállításával együtt mozognak, legyen az hálózaton vagy diszken keresztül. Féreg: Olyan program, amely folyamatok elosztott rendszerekben történő távoli futtatásának lehetőségét használja ki. Ilyen lehetőségek szándékosan vagy véletlenül is létezhetnek. Ennek egyik legeklatánsabb példája az Internet féreg, amely szándékos és véletlen

szolgáltatásokat használt ki, hogy BSD Unix rendszerek alatt programokat futtasson. Egyébként a féreg név először hasznos dolog címkéjeként jelent meg: terhelés elosztásra, tétlen processzorok kihasználására alkalmazták. Trójai faló: Egy olyan, felhasználóknak felajánlott program, amely hasznos funkciókat végez el, de emellett káros mellékhatásai vannak, esetleg nem dokumentált, a programozó által kihasználható szolgáltatásai vannak. Ennek egyik legrégibb változata a vak/szimulált login, amely semmi mást nem tesz, mint ad egy login promptot, és mindent úgy tesz, mintha valóban login lenne, csak közben elmenti a felhasználó jelszavát. A fenti elmélkedés azirányba visz bennünket, hogy megbízható elosztott rendszerek tervezése során a rendszerkomponenseket úgy kell tervezni, hogy a külső komponensekben ne bízzanak, amíg azok megbízhatóságáról meg nem győződtek. Ez egy kis ellentmondásra vezet, amit már Seneca (55BC-46AD)

is megfogalmazott Lucilliuszhoz írott leveleiben:".Hiba mindenkiben megbízni, de ugyanolyan hiba senkiben sem bízni." Ez kiemeli annak fontosságát, hogy olyan rendszert kell megkonstruálni, amelyben a komponensek egy minimál halmaza megbízhatónak tekinthatő. Ezt megbízható számítási alapnak szokták nevezni Elosztott rendszerekben a biztonság fenyegetettségével kapcsolatban az alábbiakat összegezhetjük: − Elosztott rendszerekben a fenyegetettség fő forrása a kommunikációs csatornák nyitottsága. Fel kell tételezni, hogy a rendszer HW minden szintjén lévő kommunikációs csatorna és progrram ki van téve a fenti fenyegetéseknek. − A lehetséges betolakodókat nem könnyű azonosítani, így olyan világnézetet kell alkalmazni, amely nem feltételez bizalmat. De ahhoz, hogy használható rendszert építhessünk, néhány megbízható komponensből kell kiindulni. Egy hatékon tervezési megközelítés lehet, hogy minden

kommunikáció megbízhatatlan forrásból jön, amíg az ennek ellenkezőjét nem bizonyítja. A kommunikáló felek megbízhatóságát minden egyes kommunikációs csatorna használatkor bizonyítani kell. − A biztonság megvalósítására használt mechanizmusokat nagy gonddal kell ellenőrizni, pl. egy biztonságos kommunikációs protokollnak és az azt megvalósító programnak bizonyíthatóan helyesnek kell lenni az összes lehetséges üzenet szekvenciára. A bizonyításnak formális alapokon kellene nyugodni. Kliens szerver kommunikációt fenyegető veszélyek: ábra a) Jogos kliens és jogos szerver közti kommunikáció ki van téve a lehallgatás veszélyének, amely bizalmas információ szivárgáshoz vezethet, illetve a lehallgató lemásolhatja az üzeneteket, hogy azokat majd később visszajátssza. b) Jogos szerverek ki vannak téve "ál kliensek" támadásainak, amelyek jogosulatlanul hozzáférhetnek a szerver szolgáltatásaihoz,

megváltoztathatják annak állapotát, vagy hozzáférhetnek a szerveren tárolt bizalmas információkhoz. Egy jogos szerver szintén ki van téve üzenet visszajátszásnak. (pl valaki megpróbálhatja a banki egyenlegét az előző napira visszaállítani, holott vásárolt egy autót, vagy egyszerűen csak túl akarja terhelni a szervert állandó, folyamatos üzenet visszajátszással). c) Egy jogos kliens ki van téve "ál szerverek" támadásainak. Egy ál szerver bizalmas információk birtokába juthat a kliens kérésein keresztül, és elhitetheti a klienssel, hogy a kért tranzakció végbement, holott valójában nem ment végbe. Kliens - szerver rendszerekkel szembeni biztonsági követelmények − − Biztonságos kommunikációs csatornák a lehallgatás elkerülésére. A klienseket és a szervereket úgy kell tervezni, hogy azok egymást kölcsönös gyanúval fogadják, használjanak hitelesítési üzenetekt, hogy elérjék az alábbi tudást: a

szervernek meg kell győződnie róla, hogy a kliens valóban a megjelölt megbízó nevében jár el − a kliensnek meg kell győződnie róla, hogy a szolgáltatást nyújtó szerver valóban a hiteles szerver Biztosítani kell a kommunikáció frissességét, hogy el lehessen kerülni az üzenetek visszajátszásán alapuló támadásokat. − − Az összes biztonsági technika három alapvető mechanizmuson alapszik: titkosításon, hitelesítési mechanizmusokon, és hozzáférés szabályozáson. Titkosítás Biztonságos rendszerek megvalósításában a titkosítási módszerek központi szerepet játszanak: − − − Bizalmas információk elrejtése. Csak az fejtheti meg az üzenetet, aki birtokolja az inverz kulcsot. Kommunikáció hitelesítésénél segédeszközként használatos. Ha egy megbízó sikeresen dekódol egy üzenetet, feltételezheti, hogy az hiteles forrásból származik, mert a küldő ismerte a kulcsot. Digitális aláírás. Annak

ellenőrzésére, hogy az üzenet valóvan változatlanul érkezett-e meg. Általában az aláírást nem az egész üzenetre készítik, hanem csak egy válogatásra, digestre. Ezt az aláírást általában egy megbízható harmadik fél végzi. Aki az üzenetet kapja, megkéri a harmadik felet, hogy az üzenethez adja meg az aláírást, és ha az egyezik a megkapott aláírással, akkor az üzenet hitelesnek tekinthető. Hitelesítés Centalizált többfelhasználós rendszerekben viszonylag egyszerűen meg lehet oldani a hitelesítést: a munkamenet elején egy egyszerű jelszó ellenőrzéssel hitelesíteni lehet a felhasználót, és a hitelesítés után a munkamenetet egy olyan tartománynak lehet tekinteni, amelyben az össze műveletet a felhasználó jogaival, a hitelesített felhasználó nevében lehet elvégezni. Ez a megközelítés feltételezi a rendszer erőforrásainak centralizált kezelését, ami nem megoldható, vagy nem kívánatos elosztott rendszerekben.

Elosztott rendszerekben a hitelesítés az olyan módszereket takarja, amelyek segítségével a kliensek, szerverek kiléte megbízhatóan megállapítható. Ennek mechanizmusai kulcsok birtoklásán alpulnak. Elosztott rendszerekben a hitelesítést általában egy kitüntetett szolgáltatás - a hitelesítő szolgáltatás - végzi, amely használja a titkosítási eszközöket. Ehhez a kulcsok biztonságos szétosztására van szükség, amit egy másik szolgáltatás, a kulcs szétosztó szolgáltatás végez. Hozzáférés szabályozás mechanizmusai A hozzáférés szabályozás mechanizmusoknak a feladata, hogy biztosítsák, hogy az információ forrásokhoz, illetve a HW erőforrásokhoz csak olyan felhasználók férjenek hozzá, akiket a rendszer hitelesített. A . ábra a biztonságpolitika, a hozzáférés szabályozási mechanizmusok, a titkosító függvények és a hitelesítés, illetve kulcs szétosztő szolgáltatások egymásraépülését mutatja.

Biztonságpolitika Hozzáférés szabályozási Titkosító függvények mechanizmusok Hitelesítési és kulcs szétosztó szolgáltatások . ábra: Biztonságpolitika megvalósítása Titkosítás Amikor valamilyen információt titkosítunk, akkor egy olyan transzformációt végzünk rajta, ami az inverz transzformáció ismerete nélkül lehetetlenné (legalábbis praktikusan) teszi az információ visszafejtését. A titkosítási algoritmusok két nagy csoportba oszthatók: titkos kulcsú és nyilvános kulcsú titkosítási algoritmusok. Mindkét módszer hasznos biztonság megvalósítására A következőkben áttekintjük ezen módszerek alapvető tulajdonságait. Használt fogalmak: sima szöveg - nem titkosított, értelemmel bíró üzenet titkosított szöveg - külső megfigyelő számára értelmezhetetlen szöveg !cipher text= Titkosítás során adott szabályokat, transzformációkat használunk sima szövegek titkosítására. Amikor fennáll a lehetősége, hogy

valamilyen illetéktelen személy a titkosítási/visszafejtő szabályok birtokába jutott, le kell cserélni a szabályokat. Ez egy elég kényelmetlen struktúrát ad. Ennél kényelmesebb megoldás, ha a transzformációt felosztjuk két részre: egy függvényre, amely magát a transzformációt valósítja meg, illetve egy kulcsra, amelyet a transzformáció során a függvény bonyolult algoritmus szerint felhasznál, és beépít a transzformációba. A titkosító algoritmusokra ezekután úgy tekinthetünk, mint egy nagy függvény családra, amelynek egy adott elemét a kulcs jelöli ki. A kulcsokon alapuló titkosítási módszerek nagyban függenek a kulcsok biztonságos szétosztásán. Ezt a kulcs szétosztó szolgáltatás végzi Titkos kulcsú titkosítás Ezt a módszert már a számítógépek feltalálása előtt évszázadokkal alkalmazták. Amikor számítógépes környezetben kezdték el alkalmazni, a kulcsok egyre nagyobbak, a kódoló függvények egyre

bonyolultabbak lettek. Ezek a fejlesztések lényegesek, a kulcs méretét és a függvényt nagy gonddal kell megválasztani, mert azzal a feltételezéssel kell élni, hogy a támadók, kódfeltörők az elérhető legnagyobb számítási kapacitású számítógépeket fogják használni. Ezekkel a kérdésekkel foglalkozik az Adattitkosító szabvány (Data Encryption Standard (DES)). A titkos kulcsú titkosítás során a sima szöveget egy előre megegyezett függvénnyel titkosítják, egy titkos kulcsot használva. A megfejtés során az inverz függvényt kell alkalmazni ugyanazon titkos kulccsal. Így ha biztosítjuk, hogy a titkos kulcsot csak a kommunikációban résztvevő két folyamat birtokolja, akkor az információ titkosságát biztosítottuk. Mivel a kulcsokat titokban, mások elől elrejtve tartjuk, így a függvényt, illetve az inverz függvényt nem kell titokban tartani. A ábra titkos kulcsú titkosításon alapuló kommunikáció elvi sémáját mutatja.

Küldő folyamat: A 1. K beszerzés 2. f(K, M) --> {M}K 3. send {M}K Fogadó folyamat: B {M}K ----------------> 1. K beszerzés 2. receive {M}K 3. f-1(K, {M}K) --> M . ábra: Titkos kulcsú titkosításon alapuló biztonságos kommunikáció Általánosságban a titkosító függvény és annak inverze lehet különböző, de választható olyan függvény is, amelynek az inverze megegyezik magával a függvénnyel. A gyakorlatban ilyen függvényeket alkalmaznak A titkosító algoritmusnak biztonságosnak kell lennie szisztematikus feltörési kísérletekkel szemben is. A leggyakoribb ilyen próbálkozás, hogy rendelkezésre álló sima szöveg, és a hozzá tartozó titkosított szöveg alapján megpróbálják kitalálni a kulcsot, illetve titkosított szövegkre alkalmazzák az inverz függvényt véletlenül megválasztott kulccsal, és ha az eredmény értelmesnek tűnik, akkor a kulcs helyes. A titkosítási algoritmusok megkonstruálásakor egy fontos szempont,

hogy olyan bonyolult szabályokat alkalmazzanak, amelyek még nagyszámú sima szöveg és titkosított szöveg minta, és nagy számítási kapacitású számítógép mellett is elenyésző valószínűséggel feltörhető. A DES-ben 56 bites kulcsot alkalmaznak, és 64 bites sima szövegből 64 bites titkosított szöveget állítanak elő. Az algoritmusban 16 kulcsfüggő lépés van, és három kulcsfüggetlen transzpozíció. Az algoritmus futtatása nagyon költséges, így VLSI HW-t szokás alkalmazni, amit be lehet építeni a hálózati interfészbe illetve a kommunikációs chipekbe. A DES-t sok kritika érte, hogy az 56 bites kulcs túl kicsi, direkt találgatással is lehet kísérletezgetni a kulcs felismerésére. Azonban ez átlagosan 255 ~ 3X1016 kísérletet igényelne. Nyilvános kulcsú titkosítás A nyilvános kulcsú titkosítás egy olyan titkosító módszer, amelyben a kommunikáló feleknek nem kell bízni egymásban. A módszer két nagyon nagy prím szám

szorzatának használatán alapul (nagyobb, mint 10100), kihasználva azt a tényt, hogy ilyen nagy számok prímfelbontásának meghatározása olyan számításigényes, hogy gyakorlatilag kivitelezhetetlen kiszámítani. Minden egyes üzenet fogadó létrehoz egy kulcspárt, Ke-t és Kd-t, és a dekódoló kulcsot, Kd-t titokban tartja. A ke kódoló kulcsot nyilvánosságra hozza, és mindenki, aki titkos üzeneteket szeretne küldeni, az Ke-t kell hogy használja. A módszer a két kulcs között kapcsolatot teremtő egyirányú függvényen alapul, amelyre Ke ismeretében nagyon nehéz meghatározni Kd-t. Az egyirányú függvény olyan Y = f(X) függvény, amelyre Y ismeretében lehetetlen, vagy annyira számításigénys, hogy gyakorlatilag kivitelezhetelen X kiszámítása. Ez a nyilvános kulcsú titkosítás, amely során nincs szükség titkos kulcsok küldözgetésére a kommunikációs csatornán. Két jólismert függvényen, E-n és D-n, illetve két kulcson Ke-n

és Kd-n alapszik. E a kódoló függvény, D a dekódoló függvény, Ke a nyilvénos kódoló kulcs és Kd a titokban tartott dekódoló kulcs. Például, ha B megbízó titkus üzenetet vár másoktól, akkor generál egy kulcspárt, Ke-t és Kd-t, és Ke-t nyilvánosságra hozza. Ezt megteheti közvetlen kommunikációval is, de elküldheti egy nyilvános kulcs elosztó szolgáltatónak, ami majd kérés esetén kiadja a kulcsot. Amikor egy megbízó titkos üzenetet akar küldeni B-nek, a nyilvános kulcs elosztó szolgáltatótól lekéri B nyilvános kulcsát, Ke-t, majd az E függvénnyel előállítja az üzenetet, és Ke-vel kódolja, vagyis M = E(Ke, M), {M}Ke üzenetet küld B-nek. Mivel csak B ismeri Kd-t, így csak ő tudja dekódolni az üzenetet D(Kd, {M}Ke ) alkalmazsával. Az algoritmus működését a . ábra mutatja kérés Küldő folyamat: A -> K e 1. Ke beszerzése 2. E(Ke, M) --> {M}Ke ------------ Ke I v nyilvános kulcs adatbázis I <--------

{M}Ke ----------------> 3. send {M}Ke Fogadó folyamat: B 1. Ke, Kd kiszámítása 2. Ke publikálása 3. receive {M}Ke 3. D(Kd, {M}Ke) --> M Kulcs szétosztás Titkos kulcsú rendszerekben régebben a kulcsokat valamilyen más hordozón osztották szét. Például papíron oda lehet adni a kulcsot, majd később megsemmisíteni Ez a módszer elosztott számítógépes hálózatokban nem túlságosan járható megoldás. Erre szervereket lehet használni, de a hitelesítésre nagy gondot kell fordítani. Nyilvános kulcsú titkosítás esetén a nyilvános kulcs megkapóinak biztosnak kell lenniük, hogy a kapott kuls hiteles, vagyis annak a kulcspárnak a nyilvános része, amelynek titkos kulcsát a kommunikációs partner birtokolja. Ellenkező esetben egy ál partner bizalmas információkhoz juthat, ha hamis nyilvános kulcsot ad. A hitelesség biztosítására elektronikus aláírásokat lehet használni. A titkos és nyivános kulcsú titkosítások összehasonlítása

Biztonság szempontjából mindkét módszer megfelelő, amennyiben betartjuk a kulcsok kezelésére vonatkozó szabályokat. Praktikusság, kényelem szempontjából a nyilvános kulcsú titkosítás előnyökkel jár, mert nem szükséges hozzá titkos(ított) kommunikációs csatorna (azonban a kommunikációnak hitelesítettnek kell lennie). Teljesítmény, sebesség szempontjából a titkos kulcsú módszer lényegesen gyorsabb. Algoritmus RSA kulcsú nyilvános titkosítás visszafejtés DES titkos kulcsú SW implementáció HW bit/sec implementáció bit/sec 0,5x103 220x103 32x103 400x103 N/A 1,2x109 Hitelesítés és kulcs szétosztás A hitelesítés és a kulcsok biztonságos szétosztása legjobban egyetlen szolgáltatáson keresztül tanulmányozható. Az elmúlt években a hitelesítés elmélete és gyakorlata jelentős feljődésen ment keresztül. Needham és Schroeder egy hitelesít szerveren alapuló hitelesítési és kulcs szétosztási algoritmust

dolgozott ki. A hitelesítő szerver feladata, hogy folyamat pároknak biztonságos módon kulcsot biztosítson a kommunikációjukhoz. Ehhez a klienseivel a szerver titkosított üzenetekkel kommunikál. A továbbiakban az algoritmus titkos kulcsokon alapuló változatát tekintjük át. A Needham - Schroeder titkos kulcsú hitelesítési protokoll fejléc 1. A --> S: 2. S --> A: 3. A --> B: 4. B --> A: 5. A --> B: üzenet A, B, NA megjegyzés A S-től kér egy kulcsot a B-vel történő kommunikációhoz. {NA,B, KAB, S visszaküld egy üzenetet, amelyet A titkos {KAB, A}KB}KA kulcsával titkosít. Az üzenet tartalmazza a frissen generált KAB kulcsot, és egy B titkos kulcsával titkosított jegyet. Az NA címke azt mutatja, hogy a jelen üzenet válasz a megelőzőre. A azt hiszi, hogy az üzenetet S küldte, mert csak S ismeri A titkos kulcsát. {KAB, A}KB A elküldi a jegyet B-nek. {NB}KAB B visszafejti a jegyet, és az új KAB kulccsal titkusítja az NB

címkét. {NB - 1}KAB A azzal mutatja meg B-nek, hogy ő küldte az előző üzenetet, hogy egy megegyezett transzformációt végez NB-n. Jelölések: A B KA KB KAB NA {M}K A kommunikációt kezdeményező megbízó neve. A kommunikációs partner megbízójának neve. A titkos kulcsa. B titkos kulcsa. A és B közötti kommunikáció titkos kulcsa. A által generált címke. K kulccsal titkosított M üzenet. A protokoll egy gyengéje, hogy B-nek semmi oka sincs feltételezni, hogy a 3. üzenet friss. Egy behatoló megszerezheti a KAB kulcsot és a {KAB, A}KB hitelesítőt, és akkor A-nak adhatja ki magát. Ezt a problémát a Kerberosban időcímke használatával küszöbölték ki. Az algoritmusnak létezik nyilvános kulcson alapuló változata is, de helyszűke miatt itt azzal nem foglalkozunk