October 11, 2024

Hálózati biztonság és védelem (titkosítás)

Gyakran előfordul, hogy bizalmas vagy titkos információt, banki átutalásokat kell továbbítani a hálózaton keresztül. Megoldandó, hogy az arra jogosulatlan személyek ne férhessenek hozzá a titkos adatokhoz. Megfelelő titkosítási algoritmus felhasználásával elérhető, hogy a titkosított adatok csak nem, vagy csak igen nehezen legyenek megfejthetők.

26. ábra: A titkosítási modell
26. ábra: A titkosítási modell

A titkosítástan (kriptológia) alapvető szabálya az, hogy a titkosítás készítőjének feltételeznie kell, hogy a megfejtő ismeri a titkosítás általános módszerét (26. ábra). A módszernél a titkosítási kulcs határozza meg a konkrét esetben a titkosítást. A titkosítási-megfejtési módszer régen nem lehetett bonyolult, mert embereknek kellett végigcsinálni.
Két általános módszert használnak:

Helyettesítéses rejtjelezés:

Egyábécés helyettesítés:
Első híres alkalmazójáról Julius Caesar-ról elnevezve szokták Caesar-abc-nek is hívni. Az eredeti abc-t egy három (általános esetben: k) karakterrel eltolt abc-vel helyettesíti, és így írja le a szöveget. Bár a lehetőségek száma nagy, de a nyelvi-statisztikai alapon könnyen fejthető. (betűk, szavak relatív gyakorisága alapján)
Többábécés rejtjelezés:
26 Caesar-abc sort tartalmazó négyzetes mátrix. Nyílt szöveg fölé egy kulcsot (egy szöveget) írunk, és a kulcsban lévő betű dönti el, hogy melyik sort használjuk az adott nyílt szövegbeli betű titkosítására.

ABC….XYZ KULCSOCSKAKULCSOCSKA
BCD…YZA EZ A NYILT IRAT
… OT…….
ZAB…WXY

E betűt az O betű helyettesíti, mert a K-val kezdődő sor 5.-ik (E betű az 5-ödik!) tagja O.
Z betűt az T betű helyettesíti, mert a U-val kezdődő sor 26.-ik (Z betű az 26-odik!) tagja T.

A mátrix sorainak keverésével hatásosabb lesz a módszer, de ekkor a mátrix a kulcs részévé válik. Megfejtés alapja: a kulcs hosszának jó megsejtése.

Más: betűkódolás helyett két- három vagy négy betű kódolása, vagy szavak használata. (kulcs egy könyv (pl. szótár) , és elküldjük hogy adott oldal hányadik sora (számok).

Porta-féle rejtjelezésnél 26*26-os mátrixot használunk, amelynek minden eleme betű-pár. A nyílt szöveg sorban egymás után álló két karaktere a mátrix egy sorát és oszlopát határozza meg, a metszéspontban lévő betűpárt írjuk az eredeti betű-pár helyére.

Felcseréléses rejtjelezés:

A helyettesítéses rejtjelezések és kódolások a nyílt szöveg szimbólumainak sorrendjét változatlanul hagyják, csak álcázzák. A felcseréléses rejtjelezések a betűk sorrendjét változtatják, de nem álcázzák.

Módszer: A kulcsban egy betű csak egyszer fordulhat elő. A szöveget kulcsnyi szélességű sorokra tördelve egymás alá írjuk, a titkosított szöveget az oszlopok egymás után fűzésével kapjuk. Az oszlopok leírási sorrendjét a kulcs betűinek abc-beli sorrendje határozza meg.

Nyílt szöveg: eztmostkodoljuk
Titkosítva:
odkmoutkjesoztl
PROBA <- kulcsszó
45321
eztmo
stkod
oljuk

Ez a rejtjelezés is megfejthető. Betűgyakoriságok vizsgálata alapján eldönthető, hogy felcseréléses rejtjelezésről van szó. Majd az oszlopszámokat kell megsejteni, majd az oszlopok sorrendjét.

DES (Data Encyption Standard) — Adattitkosítási szabvány

A számítógépek megjelenésével az a hagyományos módszerek (helyettesítés és felcserélés) továbbélnek, de a hangsúly máshová került. Mivel régen emberek voltak a titkosítók, ezért a készítők egyszerű, emberek által jól megtanulható algoritmusokat és hosszú kulcsokat használtak.

27. ábra: Bitcsoport felcserélése és helyettesítése
27. ábra: Bitcsoport felcserélése és helyettesítése

A számítógépek megjelenésével felmerült az igény olyan titkosítási algoritmusok iránt, amelyek olyan komplikáltak, hogy még egy számítógép se tudja megfejteni.
Manapság a titkosítási algoritmus a nagyon bonyolult (hiszen a számítógép végzi), és a megfejtő még sok titkosított szöveg birtokában sem tudja megfejteni. A DES módszer lényegében egy 64 bites nyílt szöveget 64 bites titkosított szöveggé alakít egy 56 bites titkosítási kulcs segítségével. Bináris elemek esetén a felcserélések és helyettesítések egyszerű áramkörök segítségével valósítható meg. (27. ábra)
A felcseréléseket a P doboz, a helyettesítéseket az S doboz végzi. A P doboz nem más mint egy 8 bemenetű és 8 kimenetű áramkör, egy bemenő paraméter által meghatározott össze-vissza kötött ki- és bemenetekkel, azaz a bemeneti 8 bit felcserélésével állítja elő a 8 bites kimenetet. A helyettesítést az S doboz végzi, ez a doboz a bemenetére adott 3 bit nyílt szöveget alakítja át 3 bit titkos szöveggé. A titkosítás első lépésben egy kulcstól független felcserélés történik, az utolsóban, pedig ennek az inverze. Az utolsó lépésben egyszerűen az első 32 bitet felcserélik az utolsó 32 bittel. A közbülső 16 fokozat ugyanúgy működik, de a kulcs más-más része határozza meg az alkalmazott P és S dobozok konkrét felépítését. Ez természetesen logikai függvényekkel is leírható, és ez alapján titkosító program is készíthető.

A PGP

A PGP (Pretty Good Privacy) egy nagybiztonságú titkosító program, mely MS-DOS, Unix, VAX/VMS és sok más operációs rendszer alatt fut. Lehetővé teszi levelek, illetve adatfájlok nyilvános kulcsú titkosítását, üzenetek autentikus, titkos és irányított célbajuttatását. Az irányított azt jelenti, hogy kizárólag azok férnek hozzá az adatok tartalmához, akiknek azt szántuk. Az autenticitás azt jelenti, hogy a fogadó biztos lehet abban, hogy az adatokat ki adta fel, és hogy azok nem módosultak. Mindehhez nincs szükség arra, hogy a felek a hagyományos titkosítási eljárásoknál szokásos titkos kulcsokat cseréljenek egymással, és azokat megbízható csatornán állandóan szinten tartsák. A nyilvános kulcsos kriptográfiában mindenki két, egymással szorosan összefüggő kulccsal rendelkezik. Mindkét kulcsot a másik által kódolt üzenetek dekódolására lehet felhasználni. A nyilvános kulcs nem nyújt lehetőséget a titkos kulcs kitalálásához. Egy ember nyilvános kulcsával bárki kódolhat üzeneteket. Ezeket a fogadó fél a saját titkos kulcsával tudja visszafejteni. A kódolt üzenetet még a feladó sem tudja dekódolni.

Megoldották az üzenetek biztonságos sértetlenség- és eredetigazolását is. A küldő a saját titkos kulcsával aláírja az üzenetet. Az aláírás eredetiségét bárki ellenőrizheti az illető nyilvános kulcsának felhasználásával. A fogadó a dekódolás után biztos lehet a küldő személyében és abban is, hogy az üzenet tartalma nem változhatott meg. Mert a megváltoztatáshoz a feladó titkos kulcsa szükséges, amellyel rajta kívül senki sem rendelkezik. A hamisítás ki van zárva és a küldő sem tagadhatja le magát utólag. A két dolog egyszerre is megvalósítható. Ehhez először alá kell írni az üzenetet a saját titkos kulccsal, majd kódolni a fogadó nyilvános kulcsával. A fogadó először a saját titkos kulcsával dekódol, majd a küldő nyilvános kulcsával ellenőrzi az eredetet. Ezt a két műveletet a program automatikusan elvégzi.

A nyilvános kulcsú titkosítás algoritmusa sokkal lassabb, mint a hagyományos eljárások, célszerű egy nagy megbízhatóságú hagyományos eljárással kódolni az üzenetet. A titkosítás első lépésében egy hagyományos kódoláshoz használható véletlen kulcs generálódik, ami kizárólag abban az egy küldésben kerül alkalmazásra. Ezzel kódolják a nyílt szöveget egy hagyományos algoritmussal (például a DES-el). A kódoláshoz használt kulcsot a fogadó nyilvános kulcsával rejtjelzik, és a rejtjelzett kulcsot a kódolt üzenettel együtt küldik el. A fogadó a saját titkos kulcsával először visszafejti a hagyományos kulcsot, majd ennek segítségével a gyors algoritmussal dekódolja a rejtjelzett szöveget.

A kulcsok speciális struktúrában vannak tárolva, amely tartalmaz egy azonosítót (User ID), a kulcspár generálásának dátumát és magát a kulcskódot. A nyilvánoskulcs-struktúra tartalmazza a nyilvános kulcsot, míg a titkoskulcs-struktúra a titkos kulcsot. A titkos kulcs jelszóval is védett, ellopás esetére. A kulcsfájl (Key Ring) egy vagy több kulcs struktúrát tartalmaz. Az előbbieknek megfelelően vannak titkos és nyilvános kulcsfájlok. A program egy azonosító számmal, a kulcs ID-vel (Key ID) hivatkozik az egyes kulcsokra, ami a teljes kulcs egy rövidítése, nevezetesen a nyilvános kulcs utolsó 8 bájtja. Amikor ez megjelenítésre kerül a további rövidítés kedvéért csak az utolsó 3 bájt tartalma kerül kijelzésre. Amíg több különböző kulcs felhasználó-azonosítója megegyezhet, két kulcs ID-je nem lehet
azonos.

A PGP kivonatokat (Message Digest) használ az aláíráshoz. A kivonat egy 128 bites szám, amit egy kriptográfiai szempontból megbízható, szigorúan egyirányú függvény állít elő az üzenet alapján, ez jelzi az üzenet megváltozását. Ugyanakkor a kivonatot létrehozó eljárás kizárja, hogy valaki úgy módosítsa az üzenetet, hogy az eredetivel megegyező kivonat jöjjön létre. Ezt a kivonatot kell a küldő titkos kulcsával kódolni, ami az üzenet elektronikus aláírását adja. Az aláírás folyamán az üzenet mellé kerül az aláírás struktúra. Ez az aláíró ID-jéből, az aláírás időpontjából és a kódolt kivonatból áll. A kulcs ID azért kell, hogy fogadáskor a program kiválassza a kulcsfájlból azt a nyilvános kulcsot, amelyikkel az ellenőrzést el kell végezni. A kódolt üzenet is kiegészül a kódoló kulcs ID-jével. Ez lehetővé teszi, hogy a program automatikusan kiválassza a dekódoláshoz szükséges titkos kulcsot a titkoskulcs-fájlból.

Az egyes kulcsok nem egyenként vannak sok-sok fájlban tárolva, hanem egyetlen kulcsfájl gyűjti az összes azonos típusút. Ez sokkal gyorsabb előkeresést tesz lehetővé, akár a személy, akár a kulcs azonosítója alapján. Minden felhasználónak két kulcsfájlja van: egy nyilvános és egy titkos. A nyilvános kulcsfájl esetén  lehetőség van az egyedi kulcsok kinyerésére, így azokat szét lehet teríteni  más felhasználók között, akik felvehetik az új kulcsokat saját nyilvános kulcsfájljukba.