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.


Bevezetés

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)

Az alkalmazott módszerek, kriptográfiai építôelemek


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.                        



Gyakorlatban alkalmazott protokollok

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



Secure Socket Layer

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.

SHTTP

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                                  



Speciális, pénzügyi tranzakciók védelmére készített rendszerek

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.


Payword

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.

  1. Az ügyfél készít n darab zsetont (zs0 zs1 zs2... zsn) a következôképpen. Generál egy véletlen számot , ez lesz zsn, az n. zseton, majd az i. zseton az i+1. hash függvény szerinti képe lesz. zsi =h(zsi+1)
  1. Az ügyfél a banktól kap egy tanúsítványt, amely tartalmazza a bank nevét, az ügyfél nevét, nyilvános kulcsát, stb. a bank titkos kulcsával digitálisan aláírva.
  1. Amikor az ügyfél elôször lép kapcsolatba egy kereskedôvel, akkor elküld neki egy kötelezvényt, amely tartalmazza a kereskedô nevét, az ügyfél tanúsítványát, a nulladik zseton értékét, s egyéb információkat az ügyfél titkos kulcsával aláírva. Ennek alapján a bank nyilvános kulcsa segítségével a kereskedô ellenôrizni tudja, hogy az ügyfél-bank kapcsolat valóságos-e.
  1. Az ügyfél úgy fizet pl. 10 zsetont a kereskedônek, hogy elküldi a 10. zseton értékét, s mellé a 10-es sorszámot (zs10 ,10). A következô fizetésnél ismét elküldi a 10+k. zseton értékét, s a 10+k sorszámot. A kereskedônek elég azt tárolnia, hogy az utolsó fizetésnél melyik zsetont kapta, s annak mennyi volt a sorszáma. Magyarán azt, hogy hány zsetont kapott eddig összesen, s mennyi az utolsó zseton értéke.
  1. A kereskedô idônként elküldi a banknak az ügyfél nevét, kötelezvényét, s az utolsó zseton értékét, s indexét (zsk ,k). A bank ellenôrzi, hogy az ügyfél valóban k zsetont költött-e, hiszen a zsk -ra k-szor alkalmazva a hash függvényt a kötelezvényben lévô zs0-at kell kapni, majd elvégzi az átutalást.

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.

Összegzés

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