Hitelesítés nyílt hálózatokban,
avagy egy hatékony pénzkímélô rendszer
Papp Pál
papp@mail.datanet.hu
http://ludens.elte.hu/~papp/
DAT' 96 konferencia
Abstract: This paper is a brief overview of authentication methods and protocols which can be applied in open network environments. After discussing the cryptographic primitives necessary to build an authentication protocol, the main ideas of Netscape's SSL and the S-http protocols are presented. As a special case we also present an interesting and simple-to-implement payment system developed by Rivest and Shamir. This is an example to prove that there exist simple and effective solutions in this field.
A cikkben a nyílt hálózatokban felmerülô hitelesítési problémák megoldási módjait tekintjük át. A szükséges kriptográfiai alapelemek ismertetése után bemutatunk két általános protokollt, majd részletesen ismertetünk egy, pénzügyi tranzakciók védelmére kifejlesztett sémát.
A hitelesítéssel (authentication) kapcsolatos témák a kriptográfia nagy részét lefedik. A hitelesítés mint igény megjelenése viszonylag új, az elmúlt egy-két évtized informatikai fejlôdéséhez kötôdik. Korábban a kriptográfia csaknem kizárólag rejtjelzést jelentett. Ma a hitelesítési problémák teszik ki a kriptográfiai feladatok zömét. Ennek oka valószínûleg az, hogy a rejtjelzési problémák jobban tipizálhatók, másrészt a globális nyílt hálózatok megjelenése új problémákat, feladatokat hozott felszínre. A hitelesítési problémák legtöbbször az alább felsorolt tárgykörök valamelyikébe sorolhatók:
Azonosítás (identity verification)
Azonosításra van szükség akkor ha használni akarunk egy számítógépet, ha hosszá akarunk férni a bankszámlán lévô pénzünkhöz,(esetleg csak az egyenleghez), ha be akarunk lépni egy védett létesítménybe. Az azonosításnak több ismert módja is van. Gyakori osztályozás az, hogy azonosíthatunk valakit egy személyhez kötött jellemzô ( ujjlenyomat, retina, hang), egy tárgy alapján amit birtokol (kártya, RAM) s valamilyen rá jellemzô tudás alapján (jelszó). A leggyakoribb a jelszó, emellett magasabb biztonsági követelmények esetén a másik két mód közül is megkövetelnek egyet. Azonban messze a leggyakoribb módszer egy egyszerû jelszó használata. Ez nem biztonságos, ha a jelszó egy távoli gépre való belépésre jogosít. A mai technikai lehetôségek mellett viszonylag alacsony költségek és szaktudás mellett is lehallgathatók azok a vonalak és kapcsolóhelyek, ahol a jelszó utazik. Ezért használnak olyan rendszereket, ahol a jelszó minden belépéskor megváltozik, az új jelszót pl. egy listáról veszik, vagy az elôzôbôl számítják ki. Fejlettebb mód az, ha az azonosítást egy, esetleg egyéb szolgáltatásokkal is rendelkezô protokoll végzi (challenge-response, Fiat -Shamir protokoll).
Adat- (üzenet) integritás
Egy üzenet, file integritását védjük meg, (pontosabban ellenôrizzük) felfedve a szándékos, vagy véletlen módosítást. Fontos, hogy ebben az esetben mindig kell használnunk egy titkos elemet is, hiszen ellenkezô esetben a támadó a módosítás után a kontrollösszeget is az új tartalomhoz igazíthatná. Az integritás biztosítására használhatunk klasszikus módszereket, ekkor az adó és a vevô is rendelkezik egy titkos kulccsal. Az adó létrehoz egy, a kulcstól is függô kontrollösszeget, míg a vevô ellenôrzi. Ekkor a azonban nemcsak az adó, de a vevô is létre tud hozni a teszten átmenô üzeneteket. Nyilvános kulcsú módszerekkel az is elérhetô, hogy ezt csak az adó tudja megtenni.
Üzenet származásának, feladójának bizonyítása
Az üzenethez hozzárendelünk egy ún. digitális aláírást, amely tartalmazza az üzenet egyirányú képét (lenyomatát), s egyéb adatokat. Az aláírás jellemzô a létrehozójára és az üzenetre is, ellenôrizni viszont bárki tudja, aki a megfelelô infrastruktúrához hozzáfér. Az aláírás egyben lehetôséget ad az üzenet integritásának ellenôrzésére is. Legismertebb az RSA módszer, és az USA digitális aláírás szabványa .(DSS)
RSA R. Rivest A. Shamir és L. Adleman által feltalált nyilvános kulcsú rendszer . Legyen a nyilvános kulcs e, m, a titkos d, m az üzenet x. A rendszer alapja hatványozás modulo m, ahol m =p*q két nagyjából azonos méretû prím szorzata. A titkos kulcs a nyilvános
kulcsból csak a prímek ismeretében számítható. Ha m elég nagy, akkor faktorizálása elfogadható idô alatt nem lehetséges. A két kulcs kapcsolata; e*d=1 modulo (p-1)*(q-1). A rejtjelzett üzenet y= xe, míg a megoldó transzformáció x= yd. A két kulcs közötti reláció biztosítja, hogy x= x. Digitális Személyek és/vagy digitális adatok hitelesítésére aláírás alkalmas módszer. Két részbôl áll: a személyhez kötött aláírást generáló részbôl, s az ellenôrzést bárki számára lehetôvé tevô részbôl. Hash függvény Olyan transzformáció, amely egy tetszôleges hosszú szöveg digitális 'ujjlenyomatát' készíti el. Az 'ujjlenyomat' fix hosszú bitsorozat amely jellemzô az adott szövegre abban az értelemben, hogy más szöveghez szinte biztosan más hash érték tartozik, illetve adott ujjlenyomathoz gyakorlatilag lehetetlen olyan szöveget találni amelynek ez a képe. Nevezik message digestnek is, a Digitális aláírás protokoll alkotórésze. Pl. MD5, SHA DES Nyolc input byte-ot nyolc output byte-ra képezô USA-ban kifejlesztett blokkos rejtjelzô algoritmus. Kulcsmérete 56 bit. Tanúsítvány-Cert Egy adott entitáshoz tartozó, a nyilvános kulcsát, ificate nevét, lejárati idôt tartalmazó adatsor, amelyet egy erre felhatalmazott hatóság a hatóság nyilvános kulcsával aláírt, s ezzel az adott entitás és a nyilvános kulcs összetartozását mindenki számára ellenôrizhetô módon hitelesítette.
Azért, hogy ez a cikk gyakorlati kérdésekrôl is adjon információt, bemutatunk néhányat az általános célú hitelesítési protokollok közül, s a speciális, pénzügyi tranzakciók védelmére fejlesztett protokollok közül is. A terület állandó mozgásban, forrongásban van, ezért sok ilyen protokoll van, amelyek közül próbáltunk néhány jellemzôt, vagy különösen érdekeset kiválasztani. A gyakorlatban tehát a hitelesítési feladatot egy kriptográfiai protokoll valósítja meg, amely sokszor rejtjelzéssel is védi az érzékeny információkat. A protokoll elvileg az OSI hálózati rétegmodell több szintjén is dolgozhat, a nyílt hálózati környezetben azonban két alapvetôen különbözô megközelítés bizonyult hatékonynak; a hálózati szintû, s az alkalmazás-szintû hitelesítés.
Példaként a Netscape által kifejlesztett Secure Socket Layer és az S-HTTP protokollt (Enterprise Integration Tecnologies+egy kis RSA behatás) fogjuk bemutatni. A különbözô hálózati szint részben meghatározza a tulajdonságokat, és a lehetôségeket is.
SSL | S-HTTP |
Az adatcsomagokat hitelesíti (és rejtjelzi) | Az applikáció file-szinten kommunikál |
Transzparens, bármilyen alkalmazás futhat fölötte | Azok az alkalmazások használhatják,amelyekbe beleépítették. |
A teljes kapcsolatot védi | Az adott applikációhoz tartozó komunikációt védi |
- | Tud digitális aláírást készíteni egy file-hoz |
A szerver bizonyítja önazonosságát a kliens elôtt, majd egy opcionális fázisban a hitelesítés fordítva is megtörténhet.
Kliens Szerver 1. Ki vagy? 2. X: Y. vagyok, itt a nyilvános kulcsomhoz tartozó tanúsítvány, s a következô algoritmusokkal tudok rejtjelezni: (lista) 3. Generál egy véletlen mesterkulcsot Rejtjelzi a szerver nyilvános kulcsával (RSA) 4. Privát kulcsával dekódolja a mesterkulcsot (RSA) A mesterkulccsal rejtjelezve elküld egy üzenetet, ezzel hitelesíti magát. 5. A mesterkulcsból származtatja a 5. A mesterkulcsból származtatja a kapcsolati kulcsot (MD5) kapcsolati kulcsot (MD5) 6. Opcionális: Kliens bizonyítja az önazonosságát 7. Csomagok rejtjelzése 7. Csomagok rejtjelzése DES DES triple DES triple DES IDEA IDEA RC2 RC2 RC4 RC4
Megemlítendô itt a Microsoft és a Visa közösen fejlesztett, hasonló protokollja, a PCT (Private Communication Technology), amely sok szempontból fejlettebbnek (és bonyolultabbnak) tûnik, mint a fent példaként hozott SSL.
Az S-HTTP a HTTP protokoll módosítása úgy, hogy a protokollt ellátták az üzenethitelesítéshez, digitális aláíráshoz, kulcskialakításhoz, rejtjelzéshez szükséges lehetôségekkel. A http nyelvhez hasonlóan az elvégzendô kriptográfiai funkciókat zárójeles parancsok hordozzák, ahol a parancs mellett a szükséges paraméterek is szerepelnek. A két oldal megtárgyalja a lehetséges kapcsolati paramétereket (kulcskialakítás módja, rejtjelzô algoritmus, annak üzemmódja, hash függvény, digitális aláíráshoz használt módszer, stb), majd a http file-ba adott konvenciók szerint beágyazza a válaszmezôket. A protokoll a következô kriptográfiai alapelemeket támogatja:
Feladat Eszköz Kulcskialakítás RSA alapú kulcsegyeztetés Kulcs egy Kerberos szervertôl Külsô kulcsegyeztetés Kulcs egy másik, s-http-vel védett sessionbôl Algoritmus DES DES-EDE 2 kulcsos DES DES-EDE3 3 kulcsos DES IDEA RC2 CDMF Hash függvény MD2 MD5 SHA Digitális aláírás RSA DSS
Az elmúlt idôszakban az Internet további robbanásszerû fejlôdésének, s további kommercializálódásának egyik legfontosabb gátja volt az a tény, hogy nem léteztek általánosan elfogadott, s elérhetô biztonságos pénzügyi tranzakciókat lehetôvé tevô rendszerek. Mára nagyon sok ilyen protokollt javasoltak, s megtörténtek az elsô lépések az egységesítés felé is. Ennek legfontosabb jele, hogy a két legnagyobb hitelkártya-kibocsátó cég, a VISA és a Mastercard, valamint a Microsoft megegyeztek egy közös protokollban. Ezek a rendszerek egyrészt a már többé-kevésbé globális hitelkártya-rendszerekre épülnek. Másrészt pedig a legtöbb rendszer nem nélkülözheti a nyilvános kulcsú kriptográfia elemeit. Ez azt jelenti, hogy a rendszer mûködése feltételez egy, a háttérben felépített nyilvános kulcsú infrastruktúrát. Ez elsô közelítésben nem más, mint egy telefonkönyv, amely a nyilvános kulcselemeket tartalmazza, azon szabályok összessége, amelyek alapján egy új rekord felvehetô, egy régi törölhetô, illetve módosítható. A központ (illetve egymással együttmûködô központok) minden résztvevônek egy tanusítványt (certificate) ad, amely bizonyítja, hogy az adott résztvevônek valóban az a nyilvános kulcsa, amit állít. Technikailag ezt úgy hajtják végre, hogy a résztvevô nyilvános kulcsát, nevét, s néhány adminisztratív adatot a központ titkos kulcsával digitálisan aláírják. Ezután a rendszerben mindenki ellenôrizni tudja a tanúsítványokat, mert a központ nyilvános kulcsa mindenki számára elérhetô kell legyen. A rendszernek rendelkezni kell
Ezek után is probléma azonban az, hogy a fentiek megszervezôdése országos szinten folyik, míg az Internet nemzeteken átnyúló háló. Másik probléma, hogy a nyilvános kulcsú operációk rendkívül lassúak, egy -két nagyságrenddel lassúbbak, mint más kriptográfiai alapeszközök. Költséges a kibocsátó központtal, (bankkal) fenntartott online kapcsolat is. Ez megjelenik a rendszer költségeiben, amelyet részben a felhasználó visel, másrészt oda vezet, hogy ilyen tranzakciókat csak egy adott összeghatár fölött végeznek. Ezért a fejlôdés következô logikus lépése olyan rendszerek kifejlesztése, amelyek talán nem garantálnak olyan szintû biztonságot mint a korábban említettek, de olcsóságuk, hatékonyságuk miatt a mindennapok apró-cseprô vásárlásainál is használhatóak. Egy ilyen rendszer a R. Rivest és A. Shamir által kidolgozott Payword nevû rendszer is.
A protokoll zsetonok tranzakcióját kezeli, egy zseton értéke lehet egy forint de akár 1000 forint is a rendszer igényeitôl függôen. A protokoll a következô lépésekbôl áll:
A technikai megvalósítás a következôképpen folyik.
Biztonság, hatékonyság
Azzal, hogy a kötelezvényben a kereskedô és az ügyfél neve is szerepel, a zsetonok kereskedô-specifikusak és ügyfélspecifikusak, más kereskedô számára értéktelenek.
A kereskedô a hash függvény tulajdonságai miatt nem tud magának zsetont gyártani, hiszen ehhez a fel kellene törnie a hash függvényt "visszafelé" kellene lépnie a képzési láncban.
Ugyanakkor a fizetési rendszer nem tartalmazza, hogy mit vettünk,(vettünk-e egyáltalán valamit) tehát ez bizalmi kérdés a rendszerben.
A protokoll rendkívül hatékony abban az értelemben, hogy a szükséges on-line kapcsolatok száma minimális. A kereskedônek nem kell kapcsolatba lépnie a bankkal sem az elsô sem a további vásárlásokkor. Elegendô mondjuk havonta elküldeni az utolsó zsetont, s a hozzá tartozó adatokat, s ezt sem kell on-line módon megtenni.
A hitelesítési feladatok megoldása nyílt hálózatokban az egyik legfontosabb kihívás az Internet fejlôdésében. Komplex megoldása nem csak kriptoráfiai módszerek, szabványok létrehozását kívánja meg, hanem egy nyilvános kulcsú infrastruktúra létrehozását is, ennek törvényi, szervezeti garanciáival együtt. Ugyanakkor szerettünk volna rámutatni, hogy egy-egy problémára létezhetnek egyszerûbb megoldások, amelyek jól szolgálhatnak az átmeneti idôszakban, s egyfajta szerves, lépésenkénti fejlôdés alapjait képezhetik.
© Papp Pál, 1996, a DAT'96 konferencia számára