Szerző: Barna József

2002. június 5. 10:09

PKI -- avagy mit takar a publikus kulcsú infrastruktúra?

Az üzleti szférában az utóbbi időben rendre felbukkan egy első hallásra misztikusnak tűnő kifejezés, a PKI fogalma. Mit is jelent e rövidítés? A PKI, a nyilvános kulcsú infrastruktúra az a rendszer, melynek feladata a digitális aláíráshoz szükséges nyilvános kulcsok létrehozása, kibocsátása, publikálása, menedzselése és visszavonása.

Az alábbi cikket Csabai Csaba, a SaveAs Kft. vezető tanácsadója írta.

Az üzleti szférában az utóbbi időben rendre felbukkan egy első hallásra misztikusnak tűnő kifejezés, a PKI fogalma. Mit is jelent e rövidítés? A PKI egy mozaikszó, mely magyarra "nyilvános kulcsú infrastruktúra"-ként (Public Key Infrastructure) fordítható. A nyilvános kulcsú infrastruktúra az a rendszer, melynek feladata a digitális aláíráshoz szükséges nyilvános kulcsok létrehozása, kibocsátása, publikálása, menedzselése és visszavonása. A nyilvános kulcsú technológiák segítségével biztosítjuk a rendszerben a következő tulajdonságok meglétét: hozzáférés, hitelesítés, letagadhatatlanság, integritás és bizalmasság.

Ez az öt fogalom olyan folyamatokat ír le, melyeket többé-kevésbé bármilyen módon meg lehet oldani. Mégis mi az, ami miatt a PKI ezt az öt fogalmat képes egyesíteni? A PKI egy olyan matematikai és logikai technológiára épül, mely biztosítja azt, hogy egy nyílt hálózatban egyértelműen azonosítani lehessen bárkit. Elmondható, hogy a fenti öt fogalom egységesen garantálható bármilyen nyílt hálózatban, ha feltétel nélkül garantálható bármely fél "személyazonossága".

Fontos tisztázni, hogy mit is jelent egy nyílt hálózaton a személyazonosság garantálása. Ez a folyamat sokkal bonyolultabb annál, mint amilyennek első látásra tűnhet. Az olyan nyílt hálózatok, mint amilyen az internet is, akár több évtized alatt kialakult, folyamatosan fejlődő rendszerek egymásra épülésének tekinthetők, és e rendszerek közel sem a fenti öt fogalom szempontjait figyelembe véve nyerték el végső formájukat. Részben ennek, részben az internetet alapvetően jellemző szabadságnak, szabadosságnak köszönhetően nem nehéz elérni a tökéletes anonimitást a világhálón. Az anonimitás meglétének vagy az identifikáció meghamisíthatóságának ténye azonban egyértelműen kizárja a hozzáférés-kontroll, a hitelesítés, a letagadhatatlanság, az integritás és a bizalmasság meglétét. E szempontok együttese készteti a megoldásszállítókat arra, hogy minél tökéletesebb azonosítási módszereket dolgozzanak ki.

Mindenki számára egyértelmű, hogy a tudásalapú azonosítás nem tökéletes védelem, hiszen azt, amit én tudok, más is tudhatja, és ha még eltekintünk is az emberi esendőségtől, akkor sem garantálható, hogy a kizárólag általam ismert információt más nem tudja lehallgatni. Éppen ezért ha nem tudom biztosítani, hogy csak az ismerjen egy azonosítót, akinek ismernie kell, akkor a letagadhatatlanságot sem tudom garantálni. Mindezek miatt a tudásalapú azonosítások még komoly szabályozás mellett sem elégségesek akkor, ha nyílt hálózatokon keresztül történik az azonosítás.

A következő azonosítási szint az, "amit birtoklok". A birtokomban lévő eszközök, megoldások, melyek kizárólag az én tulajdonomban vannak, egy jóval magasabb biztonsági szintet nyújtó védelmet képeznek. E védelem azonban nyílt hálózatokon keresztül nem feltétlenül nyújt magasabb szintű védelmet, hiszen a "birtokomban" lévő eszköz csak az emberi hibáktól mentesít -- vagy azoktól sem, hiszen láthattunk már bankkártyákat, melyekre rá volt írva alkoholos filccel a pin kód. Még mindig problémát jelenthet a közvetítő csatornák nyíltsága, hiszen hiába létezik egy olyan tökéletes tárolóeszköz, mely biztosítja, hogy én azonosítsam magam, ha az azonosítóm lehallgatható.

Erre a problémára nyújthatnak megoldást a challenge-response elven működő eszközök. Itt az a működési elv, hogy mind szerveroldalon, mind a kliens oldalán létezik egy olyan eszköz, melybe azonos paramétereket tápláltak és azonos matematikai műveleteket programoztak. Ezeknek a paramétereknek együttese lehetőséget ad arra, hogy a szerver által generált "kulcs"-ból a kliens generáljon egy választ. A szerver elvégezve ugyanazokat a számításokat megkapja ugyanazt a végeredményt, ami igazolja, hogy a kliensoldalon biztosan ugyanazt az azonosító eszközt alkalmazzák. Olyan egyéb védelmi megoldások bevonása a challenge-response folyamatba, mint amilyen az idő és a személyi azonosítók, tökéletesen lehetetlenné teszi a hálózati adatforgalmak reprodukálását.

Látható, hogy a challenge-response elven működő azonosítási modellek szinte tökéletes azonosítást tudnak nyújtani, melyet még hálózati lehallgatás esetén sem lehet jogosulatlanul reprodukálni. Ezzel megtettük az első lépést a nyílt hálózaton keresztüli bizalmas adatkommunikációban, hiszen garantálni tudjuk, hogy az a személy, aki a kommunikációs csatorna másik oldalán található, garantáltan az a személy, akinek állítja magát. A PKI által összefogott öt támponttal szembesítve a challenge-response a következőképpen írható le:

  • Hozzáférés garantált -- hiszen tudjuk, ki van a kapcsolat másik végén, így a személyhez jogosultságokat rendelhetünk, melyeket ilyen módon nem lehet megkerülni.
  • Hitelesítés garantált -- hiszen épp ez a lényege a módszernek.
  • Letagadhatatlanság részben garantált -- a challange-response nem feltétlenül ad erre lehetőséget.
  • Integritás nem garantált -- hiszen az autentikációs fázis után már nem kerül további kontroll alá a kapcsolat.
  • Bizalmasság nem garantált -- erre a fenti két pont egyértelmű választ ad.

[oldal:A nyilvános kulcsú infrastruktúra]

Látható, hogy a challenge-response alapú azonosítások valóban segítenek a problémáinkon, de nem oldják meg tökéletesen azokat. Számos olyan gyakorlati megoldás létezik, mely a challenge-response módot kombinálja egyéb titkosítási módszerekkel. Itt a kombináció integritásától függően a megoldás lehet tökéletes és lehet kevésbé tökéletes. Ezek a megoldások azonban magukban hordozzák az öszvér tipikus hibáit. A végeredmény nehezen integrálható, nem flexibilis, és rendszerint a titkosítás és a hitelesítés között nincs kapcsolat. Így azok nem feltétlenül erősítik egymást.

Léteznek tökéletes megoldások a titkosításra, kereskedelmi forgalomban is kaphatók olyan ún. HSM (Hardware Secure Modul -- olyan hardveres eszközök, melyek önállóan képesek titkosításokkal kapcsolatos műveletek elvégzésére) eszközök, melyekhez a közismert algoritmusok mellett szabadon készíthetők további algoritmusok. Az ilyen titkosító modulokkal és megoldásokkal még mindig fennáll azonban az a tipikus probléma, mely minden privát kulcsú titkosításnak a közös problémája. Mielőtt ezt a problémát kifejtenénk, nézzük, mi is a privát kulcsú titkosítás.

A módszert más néven szimmetrikus kriptográfiának is nevezik. Ennek lényege az, hogy mind a titkosításhoz, mind a titkosított adat visszafejtéséhez ugyanazt a kulcsot kell használni. A legelterjedtebb szimmetrikus titkosítási módszerek a következők: DES, 3DES, BLOWFISH, IDEA. Mivel a titkosításhoz és a visszafejtéshez is ugyanazt a kulcsot kell használnunk, mindenféleképpen problémát jelent, hogy miként küldjük el ezt a kulcsot a másik félnek olyan módon, hogy azt a nyílt hálózaton ne lehessen lehallgatni. Erre a problémára a szimmetrikus kriptográfia nem ad megoldást. A szimmetrikus kriptográfia ezirányú hiányossága egyértelmű utat nyit egy teljesen más elven működő titkosítási és hitelesítési procedúrának, mely nemcsak biztonságosan oldja meg mindkettőt, de a kettő között is elválaszthatatlan kohéziót képez. Ezt a megoldást képviseli a publikus kulcsú infrastruktúra.

A publikus kulcsú infrastruktúra esetében a szabályok és a keretek meglehetősen dinamikusak ahhoz, hogy bármikor utat engedjenek az újdonságoknak. Mindenesetre az elmondható, hogy a PKI alapja egyértelműen a publikus kulcsú algoritmusok megalkotása és használata. Ezek megjelenése a 70-es évekre datálható, és a 80-as évek végétől rohamos fejlődésen mentek keresztül. Képbe került a publikus kulcsok személyekhez kapcsolása, aminek végeredménye a tanúsítvány lett. Ezt követték az egyre bonyolultabb tanúsítványmodellek, egyre bonyolultabb adminisztrációs megoldások, a biztonság legszélsőségesebb faktorainak kiaknázása. A PKI lassan belopakodott hétköznapi életünkbe. A legegyszerűbb PKI-implementációkkal szinte bizonyosan találkoztunk már mindannyian: ezek egyike az SSL. Az SSL egy teljes értékű publikus kulcsú hitelesítést és titkosítást megoldó adatcsatorna, mely a sebesség növelése érdekében a tényleges adatforgalmat privát kulcsú titkosítással oldja meg, melyhez a privát kulcsot publikus kulcsú titkosításon (többnyire RSA) keresztül cserélik ki a kliensek. A másik hasonló működési elvű populáris alkalmazás az SSH, melyen keresztül távoli rendszerek adminisztrálása oldható meg.

A működési elv megértéséhez először a szimmetrikus (privát) és aszimmetrikus (publikus) algoritmusok működését kell megérteni. Ha valamilyen adatot titkosítani szeretnénk, akkor szükségünk van egy algoritmusra és egy kulcsra, melyekkel letitkosítjuk azt. Ez a módszer a szimmetrikus kriptográfia, melyet más néven privát kulcsú kriptográfiának is nevezünk. Ebben az esetben a gond az, hogy a fogadó fél számára valamilyen módon el kell juttatni a titkosító kulcsot, ami nem minden esetben oldható meg biztonságosan. Ennél lényegesen biztonságosabb módszer az, amit a publikus kulcsú kriptográfia nyújt. Ennek az a lényege, hogy minden félnek van egy privát és egy publikus kulcsa. A privát kulcs soha nem kerül ki birtokosa tulajdonából, míg a publikus (nevéhez híven) nyilvános, azaz bárki elérheti. A két kulcs között matematikai összefüggés van, emiatt a privát kulcs segítségével elkészített adat/digitális aláírás a publikus kulccsal leellenőrizhető -- azaz hitelessége garantálható --, de nem reprodukálható. A küldő privát kulcsa és a fogadó fél publikus kulcsa által titkosított adat csak a küldő fél privát kulcsának segítségével fejthető vissza.

Amikor valaki készít magának olyan privát és publikus kulcsot, melyet publikus kulcsú infrastruktúrában szeretne használni, akkor valójában generáltat a számítógépével 2 nagyon nagy prímszámot. Ez a két prímszám együttesen a privát kulcs, és a két prímszám szorzata a publikus kulcs. Ha a privát kulcsot képező számok nem prímszámok lennének, akkor a szorzatból keletkező szám (mely maga a publikus kulcs) más számok szorzatából is képezhető lenne, így a publikus kulcs nemcsak a privát kulcs tagjaira, hanem sokkal több szorzatra bontható lenne. Ez pedig azt jelentené, hogy könnyebb lenne a visszafejtése. Éppen ezért fontos, hogy a privát kulcsot képező két szám prímszám legyen. A titkosítás erősségét úgy lehet garantálni, hogy minél nagyobb prímszámokat generálunk.

Viszont a manapság használt személyi számítógépek ekkora számoknál már nem tudják feltétlenül garantálni, hogy a kapott számok valóban prímek, hiszen a szorzatokra bontás akkora időt venne igénybe, mely már használhatatlanságot eredményezne. Éppen ezért közelítő megoldásokat alkalmaznak, melyek nem igazi prímeket, hanem álprímeket eredményeznek.

Az RSA matematikai háttere

A tényleges matematikai háttér bemutatásához nézzük meg, miként dolgozik az RSA (Ron Rivest, Adi Shamir, Leonard Adleman) algoritmus. Vegyünk két nagy prímszámot, melyek legyenek p és q. Vegyük a két szám szorzatát: n = p * q. Keressünk egy számot (e), mely kisebb, mint n és relatív prím (p-1)(q-1)-hez. Keressünk még egy számot, (d), hogy az e*d-1 osztható legyen (p-1)(q-1)-gyel. Az e lesz a nyilvános, a d pedig a titkos kitevő. A publikus kulcsot az (n,e) páros, a titkosat pedig az (n,d) páros alkotja. A p-t és q-t innentől akár el is lehet felejteni, vagy a titkos kulccsal lehet tárolni. Az (n,e) párból jelenleg elég bonyolult visszafejteni a titkos kulcsot -- ez adja annak biztonságát. Ha viszont valaki ki tudja számolni az n-ből p-t és q-t, akkor a fenti műveletek segítségével kiszámolhatja a titkos kulcsot. A prímtényezők felbontására pillanatnyilag nem áll rendelkezésre hatékony algoritmus, de még azt sem tudták bizonyítani, hogy ilyen algoritmus nem létezhet.

Feltörhető az RSA ?

Amint az látható, az RSA titkosítás feltörhetősége egyetlen matematikai műveleten múlik, mely a hatékony prímtényezőkre bontás. Erre jelen pillanatban nincs hatékony megoldás. Az RSA titkosítást kidolgozó csapat 1979-ben kiirt egy pénzdíjas versenyt, melynek célja az RSA kulccsal titkosított szöveg visszafejtése volt. A csapat azt várta, hogy beigazolódik állításuk, miszerint belátható időn belül nem lehet feltörni a szöveget. Ennek ellenére 1994-ben sikerült feltörni egy nyolchónapos projekt keretében felépített, közel 600 számítógépből álló rendszeren. A gépeken egy faktorizációt elvégző program futott. Ez volt az első eset, hogy egy RSA módszerrel titkosított szöveget feltörtek. Ahhoz, hogy az RSA algoritmust hatékonyan -- és biztonságosan -- lehessen használni, nagyon oda kell figyelni a paraméterek megválasztására. Fontos, hogy a p és q számok között nagy legyen a különbség, a p-1, p+1, q-1, q+1 számoknak csak nagy prímosztói legyenek.

Nagyon széles az a skála, amin az állásinterjú visszajelzések tartalmi minősége mozog: túl rövid, túl hosszú, semmitmondó, értelmetlen vagy semmi. A friss heti kraftie hírlevélben ezt jártuk körül. Ha tetszett a cikk, iratkozz fel, és minden héten elküldjük emailben a legfrissebbet!

a címlapról