Blog

Aszimmetrikus kriptográfia

2008.07.21. 18:35:05, Földes Ádám Máté

Ez a bejegyzés egy hosszabbra tervezett, kriptográfiai témájú sorozat negyedik darabja. A bejegyzésekben nem bocsátkozom komoly elméleti fejtegetésekbe – csak a privátszféra védelme iránt érdeklődő laikus vagy szakmabeli számára potenciálisan érdekes dolgokat szeretném kifejteni. A sorozat előző darabja itt olvasható: http://pet-portal.eu/?page=blog&topic=pet&func=read&id=72

Az eddigiekben szimmetrikus kriptográfiáról volt szó, pár példával – ma is használt rendszerek vázlatos ismertetésével – fűszerezve. Emlékezzünk: a szimmetrikus kriptográfiában a nyílt szöveget titkos szöveggé transzformáló kulcs azonos a fordított irányú transzformációt elvégzővel. Az aszimmetrikus (vagy más néven nyilvános kulcsú ) kriptográfiában más a helyzet.

Azt a kulcsot, amely a titkosításhoz használatos, nyilvános kulcsnak hívjuk, míg azt, amely a visszafejtéshez szükséges, titkos vagy privát kulcsnak (lásd az ábrát). Ez utóbbi kulcs megnevezésénél egyes „iskolák” szigorúan ragaszkodnak a „privát kulcs” megnevezéshez, és a „titkos” titulust a szimmetrikus kriptográfiában használt egyetlen kulcsnak osztják ki (ezért szokás a szimmetrikus kriptográfiát titkos kulcsú kriptográfiának is nevezni). Szó se róla, egy kriptográfiával általánosan foglalkozó írásműben hasznos lehet a többértelműség ilyetén feloldása. Mindazonáltal ebben a bejegyzésben csak nyilvános kulcsú kriptográfiáról lesz szó, így a visszafejtéshez szükséges kulcs mindkét megnevezését használom majd.

Az aszimmetrikus kriptográfia működése

Figyeljük meg, milyen beszédes neveket adtak az aszimmetrikus kriptográfia úttörői a két kulcsnak – a név árulkodik a kulcs természetéről. A nyilvános kulcsot a birtokosa megoszthatja az egész világgal, és (ideális esetben) biztos lehet benne, hogy a közzétett kulccsal kódolt üzeneteket csak a nála levő privát kulcs transzformálja vissza nyílt szöveggé, valamint abban is, hogy a nyilvános kulcsból nem lehet kikövetkeztetni a hozzá tartozó titkos kulcsot. Már ennek az egyszerű ténynek önmagában hatalmas jelentősége van: feltételezve, hogy a nyilvános kulcs tényleg nyilvános (vagyis bárki egyszerűen megtudhatja egy tetszőleges személy nyilvános kulcsát), nem kell többé a két kommunikáló félnek „csatornán kívül” kulcsot egyeztetnie az üzenetváltás megkezdése előtt. A kulcscsere csak annyiból áll, hogy a két fél kikeresi a másik nyilvános kulcsát mondjuk egy nyilvános adatbázisból. A kommunikáció során az egyik fél a nyílt szöveget a nyilvános kulccsal titkos szöveggé transzformálja, majd átviszi az esetleg lehallgatható csatornán. A másik fél megkapván az üzenetet a privát kulcsot használva visszatranszformálja a titkos szöveget nyílt szöveggé. (Megjegyzésként egy kis matematikai fejtegetés. Tegyük fel, hogy van n kommunikáló személy, és mindenki szeretne mindenkivel kulcsot cserélni. Aszimmetrikus kriptográfiánál mindenkihez egyetlen nyilvános kulcs tartozik, vagyis az összes kulcs száma n. Szimmetrikus kriptográfiánál minden kommunikáló párhoz külön kulcsot kell egyeztetni, vagyis a kulcsok száma n*(n-1)/2. Az aszimmetrikus kriptográfia tehát nagy n esetén nagyságrendileg n-szer kevesebb kulcscserét igényel mint a szimmetrikus. Ez sokfelhasználós rendszereknél nagyon nagy különbség.)

Aszimmetrikus kriptográfiai algoritmusból is sokféle van, azonban legtöbbjük két matematikai problémán (vagy ezek egyikén) alapul: a nagy összetett számok prímtényezőkre bontásán (más szóval faktorizálásán) illetve a diszkrét logaritmuson . A legszélesebb körben használt RSA algoritmus az első probléma nehézségét használja ki: egy nagyon nagy (több ezer bit hosszú, vagyis több száz számjegyű) szám és egy hatványkitevő alkotják a nyilvános kulcsot, míg a szám két prímtényezője segítségével a titkos kulcsként használt visszafejtő hatványkitevőre lehet következtetni. (Sajnos az algoritmus teljeskörű ismertetéséhez szükséges matematikai háttér tárgyalása nem fér bele a Portál kereteibe.) Dióhéjban tehát nyilvános egy nagy N szám és egy nyilvános e hatványkitevő, míg titkos az N számnak a két prímtényezője és a segítségükkel kikövetkeztető d titkos hatványkitevő. Az üzenet forrása egyetlen számmal reprezentálja a nyílt szöveget, majd e-edik hatványra emeli, végül pedig képzi az eredmény N-nel osztva kapott maradékát. Az így kapott végeredmény a titkos szöveg. Az üzenetet megkapó a d-edik hatványra emeli a titkos szöveget, majd képzi az N-nel osztva kapott maradékot, és így pont visszakapja a nyílt szöveget. (Két megjegyzés. Egyrészt a hatványozás eredményének kiszámítására sokkal célszerűbb módszereket használnak az itt ismertetettnél. Az eredmény természetesen ugyanaz, viszont az idő- és memóriaigényben jelentkező különbség drámai. Másrészt felmerül a kérdés: miért nem számíthatjuk ki úgy a prímtényezőket N-ből, hogy szisztematikusan elosztjuk 2-től kezdve minden egész számmal N-t, és nézzük, van-e maradék? A válasz egyszerű: nagyon sokáig tartana. Megfelelően hosszú kulcs esetén akár évmilliókig is...)

 

Az RSA egy másik fontos alkalmazási területéről még nem beszéltünk: a digitális aláírásról. A módszer lényege, hogy fordítva járunk el: előbb a titkos kulcsot használjuk az üzeneten (illetve a gyakorlatban annak kivonatán – erről majd egy későbbi bejegyzésben), majd az így nyert ún. aláírást elküldjük az eredeti üzenettel együtt (opcionálisan aztán ezt az egészet titkosíthatjuk is a küldés előtt, ha rendelkezünk a másik fél nyilvános kulcsával). Ezzel két legyet ütünk egy csapásra: egyrészt az aláírás csak az azt privát kulcsával elkészítő felhasználó nyilvános kulcsával transzformálódik vissza az eredeti szöveggé, tehát a forrás nem tagadhatja le az üzenet elküldését, másrészt arról is meggyőződhetünk, hogy az üzenet sértetlen.

Ez mind szép, de arról még nem esett szó, hogy hol találkozunk a mindennapjainkban aszimmetrikus kriptográfiával. Egyik alkalmazási terület a PGP és a hasonló e-mail titkosítási módszerek. Ezek segítségével még küldés előtt titkosíthatóak illetve aláírhatóak a levelek. A módszer hátránya, hogy a címzett e-mail címe mindig titkosítatlanul közlekedik a világhálón, csak a levél tartalma marad rejtve. Egy másik alkalmazási terület a TLS , mellyel például akkor találkozunk, amikor bankunk weboldalát böngésszük, és egy kis lakatocska jelzi a címsorban a biztonságos kapcsolatot. A TLS használatához csak a szervernek kell nyilvános kulccsal rendelkeznie, a kliensnek nem. Felmerül a kérdés: hogyan lehet akkor a szerverről titkosított adatot küldeni a kliensnek? A válasz az, hogy az aszimmetrikus kriptográfia csak az ún. kézfogás során kap szerepet. Ekkor a két fél egyeztet egy ún. viszonykulcsot, melyet a kapcsolat fennállásának ideje alatt használnak szimmetrikus kriptográfiához. Ez két okból is jó: egyrészt a kliensnek nem kell kulcspár, másrészt a teljesítmény oldalán is komoly a nyereség. Ez utóbbi magyarázata az, hogy a – mai – nyilvános kulcsú kriptográfiában a szimmetrikus kriptográfiáéval egyenértékű biztonság eléréséhez sokkal hosszabb kulcsokat kell használni (emlékezzünk: RSA-nál többszáz számjegyből álló számokat), így az aszimmetrikus kriptográfia nagyságrendekkel lassabb és nagyobb számításigényű a titkos kulcsúhoz képest. Ezért a ma létező rendszerek döntő többségében (banki weblap, megfelelően konfigurált WiFi vagy VPN, okos kártya, stb.) az aszimmetrikus kriptográfia a kapcsolatfelvételkor kap szerepet hiszen sok felhasználóra is jól skálázható, vagyis a felhasználótábor növekedtével nem nő csillagászatira a kulcsok száma míg a szimmetrikus kriptográfia a már felépült kapcsolaton keresztül történő kommunikációban, mert viszonylag gyors, és az aszimmetrikus kriptográfia segítségével lehetséges a kapcsolatfelvételkor véletlenszerű viszonykulcsot egyeztetni hozzá ).

Hozzászólások

Összesen 0 hozzászólás látható.

Nincsenek hozzászólások.


A hozzászóláshoz be kell jelentkezni!

© PET Portál és Blog, 2008-2010 | Impresszum | Adatvédelmi nyilatkozat