Kódolási Eljárások
A kódolási eljárásokat aszerint különböztetjük meg, hogy hogyan kódolják és dekódolják a szöveget.
- szimmetrikus kódolás
- aszimmetrikus kódolás
- PKI és digitális aláírás
Szimmetrikus kódolás
Képzelje el, hogy Ön egy római hadvezér, és sok problémája adódik a germánokkal. Megleckéztetésükre titkos támadási parancsot szeretne küldeni csapatainak egy küldönccel. Azonban fél attól, hogy a küldönc az ellenség kezére kerül, ezért kódolja az üzenetet.
A szöveg így néz ki: "ÜDÓCFDÚJCMÖCOKÚAWUNWOGÜNÕU"
A germánok valóban elfogják a követet és megkísérlik az üzenetet megfejteni. Némi töprengés szükséges ahhoz, hogy megértsék a levelet. Próbálja meg Ön is!
Az ábécé minden betűjét a harmadik jobboldali szomszédjával cseréltek ki.
A Á B C D E É F G H I Í J K L M N O Ó Ö Õ P Q R S T U Ú Ü Û V W Z X Y
C D E É F G H I Í J K L M N O Ó Ö Õ P Q R S T U Ú Ü Û V W Z X Y A Á B
A kódolt szöveg jelentése: "Támadás hajnali szürkületkor".
Ezt az eljárást a rómaiak valóban használták. Kitalálójáról Caesar-nak nevezték el. Nem is olyan nehéz, ugye?
Vannak más mechanizmusok is a szövegek kódolására. Ezeket csak nehezen vagy egyáltalán nem lehet feltörni. Nem hiszik el? Próbálják csak meg ezt az üzenetet megfejteni!
"QYXXJZZWÁVXÛPÜÉÚZUHTKSZRÍQFPPÕÛÖTÓÕOINTMÍLBKQJIÍLIÕH"
Az eljárási szabály most így szól: az ábécé minden betűjét a harmadik baloldali szomszédjával cserélje ki, miközben mindig betű után szúrja be az ábécé egy betűjét hátulról kezdve. Ez már elég bonyolult eljárás, és még sokkal nehezebb kódolásokat is ki lehet találni. (Az üzenet az előbbivel megegyezik.)
A számítógépben az egész hasonlóképpen megy végbe, mindenesetre a számítógép csak nullákat ("0") és egyeseket ("1") ismer. A szöveg helyén 0-kból és 1-kből álló számsorozat található. Például így nézhet ki egy szöveg: 010101001011001001
Hogy ezt a számsort titkosítsuk, egy számtani műveletet alkalmazunk, amit nevezzünk el összeadásnak. A művelet legyen a következő: 0+0=0; 1+0=1; 0+1=1; 1+1=0. (Megjegyzés: a logikai műveletek közül ez a művelet az ún. "kizáró vagy".) A betűk helyett itt a számokat kódoljuk. Most van egy számsorunk és egy matematikai eljárásunk, de hát milyen számsorozatal végezzük el az összeadást?
Talán Ön is sejti már: egy kulccsal, amely maga is egy számsorból áll. Mondjuk, így néz ki: 001101000100010011. Most adjuk össze ezt a két számsort:
010101001011001001 üzenet
+ 001101000100010011 kulcs
-------------------------------------
= 011000001111011010 kódolt üzenet
Észreveheti, hogy a kulcs ugyanolyan hosszú, mint az eredeti üzenet. Sok variációs lehetőség adódik a kulcsok kiválasztására. Minél hosszabb egy kulcs, annál többfajta kulcs létezik, s annál nehezebb a titkos üzenetet megfejteni.
Ilyen kulcsfüggő eljárások esetén a kódolási szabályt akár mindenki ismerheti, csak a kulcsnak kell titokban maradnia.
Ha a kódolt üzenetet ismét az eredeti üzenetté szeretnénk változtatni, akkor vagy a kódolt üzenetből ki kell vonnunk a kulcsot, vagy egyszerűen csak az összeadást kell még egyszer elvégezni.
A küldőnek és a fogadónak is ugyanazzal a kulccsal kell rendelkeznie. De a kérdés az, hogy hogyan egyezzenek meg a kulcsban anélkül, hogy egy jogosulatlan harmadik személy kifigyelje azt.
Egy másik probléma abból adódik, ha pl. sok személy kommunikál egymással. Tegyük fel, hogy 12 személy szeretne egymással kódolt üzenetet váltani. Két embernek azonban lehetnek titkai, amit nem szeretnének a másik tíz emberrel megosztani. Hány kulcsot kellene ilyenkor alkalmazni?
Az első embernek előszöris 11 kulcsra van szüksége. Saját maga számára nem kell kulcs, de minden más személlyel történő kapcsolattartáshoz szükséges egy-egy kulcs. A másodiknak is 11 kulcsra van szüksége, de egyet az elsőnél már beszámoltunk. Ha így számolunk tovább, a következő eredmény születik:11+10+9+8+7+6+5+4+3+2+1=66. 50 személy esetén ez a szám 1225, 1000 személy esetén majdnem 500000 különböző kulcs. El se lehet képzelni azt az esetet, ha mindenki így szeretne üzenni egymásnak. A szimmetrikus kódolás e két problémáját az aszimmetrikus kódolás oldotta meg.
Aszimmetrikus kódolás
Ennél a kódolási eljárásnál két, egymást mindig kiegészítő kulcs létezik. Az egyik kulcs - a nyilvános kulcs (Public Key) - az üzenet kódolására, a másik - a titkos kulcs (Private Key) - a dekódolásra. A két kulcs együtt egy kulcspárt alkot.
A dologban az a különös, hogy az egyik kulcsból a hozzá tartozó másikat egyáltalán nem könnyű kitalálni vagy kiszámítani. Ezért a kulcspár egyik tagját nyilvánosságra hozhatjuk. Innen származik az elnevezése is "nyilvános kulcs".
Képzeljen el egy trezort önműködő csapózárral, ha az ajtó becsapódik, a trezor automatikusan bezáródik. A kinyitáshoz persze szükség van egy kulcsra. Mint a trezor esetében, az üzenetet is le lehet zárni a nyilvános kulcs segítségével. Mivel csak a címzett ismeri a titkos kulcsot, csak ő tudja az üzenetet dekódolni, vagy valamit a trezorból kivenni.
Az aszimmetrikus kódolás matematikai eljáráson alapul, amely az egyik irányban könnyen a másik irányban azonban nehezen végezhető el. Például ilyen a szorzás.
Két számot mindenki képes összeszorozni:
3 121 163 * 4 811 953 = 15 018 889 661 339
A számokat azonban szorzótényezőkre bontani már igen nehéz dolog. Ha a szorzatot ismerjük, már nehezen tudjuk meghatározni, milyen számokból szorozták össze. Próbálja csak meg egyszer (ha van sok ideje) milyen szorzótényezőkből keletkezett a
11 099 399 206 043?
Ezzel elegánsan megoldódott a kulcsok kicserélésének problémája: a nyilvános részt mindenki ismerheti, anélkül, hogy a biztonságot veszélyeztetné. Viszont szükség van a titkos kulcsra is. Az eljárás másik előnye, hogy sokkal kevesebb kulcsra van szükség, mint a szimmetrikus eljárásnál, hisz mindenkinek csak egy kulcspárra van szüksége.
De az aszimmetrikus kódolási eljárásnak is vannak árnyoldalai:
○Először is az aszimmetrikus eljárás a szimmetrikushoz képest nagyon számításigényes. Egy rövid üzenet kódolásához a számítógépnek igen sok időre van szüksége. Ezért a következő trükköt alkalmazzák: a lassú aszimmetrikus eljárással csak a gyorsabb szimmetrikus eljárás kulcsait cserélik ki biztonságosan és egyszerűen. A további kommunikáció aztán a gyorsabb szimmetrikus kódolással folyik. Mivel ennél a módszernél az aszimmetrikus eljárásokat a szimmetrikus eljárás kulcsainak kódolására használják, az eljárást hibrid - azaz kombinált - kódolási eljárásnak nevezik.
○Másodszor senki sem tudja olyan könnyen ellenőrizni, hogy az alkalmazott nyilvános kulcs valóban ahhoz a személyhez tartozik-e, akinek a kódolt üzenetet küldeni szeretné. Az interneten könnyen kiadhatja magát az ember másvalakinek és hamisan azt állíthatja, ő lenne a jogosult címzett, és a saját nyilvános kulcsát akarná Önre erőltetni. Így aztán elolvashatná a bizalmas üzenetet. Ha azután még tovább is küldené az üzenetet az igazi címzettnek, akkor a csalás még észrevétlen is maradna.
Ezeket a problémákat az ún. nyilvános kulcsú infrastruktúra (Public Key Infrastructure - PKI) oldja meg.
A PKI és a digitális aláírás
A PKI különös jellemzője a tanúsítvány kiadó (Certification Authority - CA). Ez egy olyan általánosan ismert szervezet, amelynek feladata, hogy a mindenkori egyedi kulcspárokat (a privát és a nyilvános kulcsokat) természetes személyekhez tartósan hozzákösse és erről egy "tanúsítványt" (certificate) állítson ki. (Megjegyzés: tulajdonképpen csak a természetes személy és a nyilvános kulcs kapcsolatát igazolja.)
Egyszerűsítve kb. így néz ki a dolog: minden felhasználó ismeri a tanúsítvány kiadó nyilvános kulcsát, de csak a tanúsítvány kiadó ismeri a hozzátartozó titkos kulcsot, a kódolási kulcs ellenpárját. A tanúsítvány kiadó összeállít egy szöveget (tanúsítványt), amelyben a személyt és a nyilvános kulcsot összerendeli. Ezután ezt a szöveget a tanúsítvány kiadó a saját titkos kulcsával kódolja. Ezek után bárki, aki kíváncsi az adott személy nyilvános kulcsára, a tanúsítvány kiadó nyilvános kulcsával dekódolja a tanúsítványt és megnézheti az illető nyilvános kulcsát.
Mire megy ki ez az egész? Mindenki pontosan tudja, hogy ezt a szöveget a tanúsítvány kiadó készítette, ugyanis csak ő tudja a saját titkos kulcsával az üzeneteket úgy kódolni, hogy a mindenki számára ismert nyilvános kulcs segítségével dekódolni lehessen, azaz értelmes szöveg keletkezzen. Ebben az esetben a tanúsítvány kiadó írt egy szöveget, amelyet digitálisan aláírt a saját titkos kulcsával. Ha Ön megbízik a tanúsítvány kiadóban, biztos lehet abban is, hogy a tanúsítványban szereplő nyilvános kulcs ahhoz a bizonyos személyhez tartozik.
Az így létrejött digitális aláírás tehát nem digitalizált valódi aláírás, hanem egy bitminta, amely matematikai eljárás segítségével jött létre. Digitális aláírást Ön is alkothat, ha rendelkezik egy nyilvános és egy titkos kulcspárral. Szüksége van ehhez a tanúsítvány kiadó által kiadott tanúsítványra, amely igazolja, hogy Önhöz, és nem máshoz tartozik a nyilvános kulcsa.
A PKI segítségével nem csak az üzeneteket lehet biztonságosan kódolni, és a annak tartalmát a kíváncsiskodó szemek elől elrejteni. A digitális aláírás azt is megakadályozza, hogy az üzeneteket észrevétlenül megváltoztassák.
Nézze csak az alábbi szöveget és a hozzátartozó számokat:
Támadás hajnali szürkületkor 26/402 A 26 a szövegben lévő betűk számát jelöli, a 402 pedig a betűk értékének összege. Az egyes betűk értéke az a szám, ahányadik helyen áll az ábécében (a =1, á=2?). A szövegből a két szám értéke könnyen meghatározható, de nem szabad azokat felcserélni. A PKI segítségével a szöveget és a számokat is kódolhatjuk és üzenetként elküldhetjük. Így a címzett észreveheti, hogy történt-e valami változtatás a szövegen, mert ha igen, a számok nem fognak a szöveghez illeni. Van itt azonban még egy bökkenő, ha valaki megváltoztatta a szöveget, a számokat is meg tudta változtatni úgy, hogy a szöveghez illeszkedjen. Hogy ez ne történhessen meg, a számokat a feladó titkos kulcsával kódolják. A további magyarázat azonban innen nagyon messze vezetne.
Végül mindent összevetve egy nagyon jó eredmény született: senki sem tudja észrevétlenül meghamisítani vagy elolvasni a szöveget vagy valaki illetéktelen személyhez eljuttatni azt.