Kriptográfiai primitívek (blokk titkosítók)

Készítette: Csernusné Ádámkó Éva

Biztonságos online böngészés, biztonságos online vásárlás, e-mail, facebook, twitter fiókunk jelszavas védelme és még sorolhatnánk azon alkalmazások sorát, melyek kriptográfiai védelem, hiteles azonosítás nélkül használhatatlanok lennének. Ebben a rövid, kis tanagyagban a kriptográfiai titkosítók egy olyan csoportját fogjuk megismerni, melyek segítenek megoldani a fenti problémákat. A kriptográfia legkorábbi értelmezésében nem jelent mást, mint adatok titkosítását és azok két fél közti titkos közvetítését. Használjuk, most mi is ezt a definíciót. Adatok titkosítása alapvetően a kriptográfiában két féle megközelítésben elérhető, szimmetrikus kulcsú, valamint aszimmetrikus kulcsú vagy nyilvános kulcsú algoritmusok segítségével. Ebben a részben a szimmetrikus kulcsú kriptográfiai algoritmusokról és elemeikről ejtünk néhány szót.

Mi is az a szimmetrikus kulcsú kriptográfiai algoritmus?

Szimmetrikus kulcs alatt azt értjük, hogy a kommunikáció mindkét résztvevője ugyanazt a titkosító kulcsot használja. Tehát, ha például Alice szerelmeslevelet akar Bobnak küldeni történelem órán, akkor egy előre megegyezett titkos kulccsal titkosíthatja a levele tartalmát, amit aztán csak Bob fog tudni elolvasni, mert ő ismeri a titkosító kulcsot, más nem. A titkos kulcs lehet egy szó, karaktersorozat, bitsorozat, vagy egy nagy szám is. A titkos kulcs valójában a kommunikáció résztvevőinek egy olyan közös tudása, amely segítségével mindketten hozzáférnek a titkos információkhoz, de lehetőleg rajtuk kívül senki.

A fentiek alapján még nem derül ki, milyen módon titkosítjuk a szerelmeslevél tartalmát, ha a kezünkben van a titkos kulcs. Számtalan módszer létezik, mely segítségével elrejthetjük egy dokumentum tartalmát a nagyközönség elől. A szimmetrikus kulcsú titkosítást több módon meg lehet valósítani, léteznek folyam és blokk kódoló eljárások.

  • A folyamkódoló eljárások során bitenként egyszerűbb esetben karaktereként kódoljuk a nyílt szöveget. Nyílt szövegnek nevezzük azokat az információkat, melyeket kódolni szeretnénk.
  • Blokk kódolás esetén egy előre megadott blokk hossz alapján részekre vágjuk a nyílt szöveget, és minden karakter helyett blokkonként alkalmazzuk a titkosító módszert.

Ebben a tananyagban a különböző blokk titkosítók működésével ismerkedhettek meg. A blokk titkosítók működéséhez szükséges, hogy legalább egy rejtjelező eljárást megismerjünk. Ez nem lesz más, mint a Playfair módszer. A Playfair módszerben a titkos kulcs egy 5x5-ös táblázat, amelyet a következőképpen töltünk ki. Alice és Bob megegyeznek egy kulcsszóban, legyen ez például „Alice”, majd létrehozzák közösen az 5x5-ös táblát úgy, hogy beírják a táblába először a kulcsszó betűit, az ismétlődéseket kihagyva, utána feltöltik a tábla üres mezőit az angol abc fennmaradó betűivel. A következő ábra a kulcstábla feltöltését mutatja.

Alice szerelmeslevelet ír Bobnak, mely levél a következőt tartalmazza: „Nagyon szeretlek!”

Titkosítsuk a levelet, ha tudjuk, hogy a Alice és Bob megegyezése szerint a kulcsszó az „Alice”!

A szöveg kódolásához az eredeti szöveget két betűből álló csoportokba kell rendezni, majd egymás után alkalmazni az alábbi 4 szabályt az eredeti szöveg minden betűpárjára:

  • Ha egy pár mindkét eleme ugyanaz a betű, vagy már csak egy betű maradt az utolsó párban, akkor írjunk egy "X"-et az első betű után, és ezt az új párt kódoljuk.
  • Ha egy pár mindkét betűje ugyanabban a sorban jelenik meg a kulcstáblán, akkor a tőlük közvetlenül jobbra állóval kell helyettesíteni őket (ha történetesen az egyik betű a sor jobb szélén van, akkor a sor bal szélén álló betűvel kell helyettesíteni).
  • Ha egy pár mindkét betűje ugyanabban az oszlopban jelenik meg a kulcstáblán, akkor közvetlenül az alattuk állóval kell helyettesíteni őket (ha az egyik betű az oszlop alján van, akkor az oszlop tetején álló betűvel kell helyettesíteni).
  • Ha egy pár betűi nincsenek sem egy sorban, sem egy oszlopban, akkor tekintsük azt a kulcstábla mezőiből felépülő téglalapot, amelynek a két betű a két szemközti csúcsa. A betűket a saját sorukban, a téglalap másik csúcsánál lévő betűkkel helyettesítjük.

A megfejtéshez az eljárás fordítottját kell végrehajtani (a fölösleges "X"-ek elhagyásával a végső szövegből).

Nézzük!

1.lépés: NA GY ON SZ ER ET LE K

A többi lépést a következő ábra mutatja be

Eredmény: NAGYONSZERETLEK = JCNCOJUXLUCUIAMW

Fent titkosítottunk egy szerelmeslevelet olyan módon, hogy rövid blokkokra bontottuk, és ezeket a blokkokat egymás után rejtjeleztük a közösen megállapított titkos kulccsal, minden blokkot külön kezeltünk, egymástól függetlenül. Ezt a blokktitkosítási módot ECB vagy elektronikus kódkönyv módnak nevezzük, és ez a legegyszerűbb módja, egy üzenet blokkonkénti titkosításának.

A következő ábrán látható az ECB mód működése.

Az ECB módon titkosított üzenetek sajnos könnyen feltörhetőek, mert túl sok információt adunk a támadó kezébe, ezért nézzük meg, van-e más lehetőségünk. A CBC vagy rejtjeles blokk láncolás mód segítségével kapcsolatot teremtünk a blokkok titkosítása között olyan módon, hogy az előző blokk titkosításának eredményét felhasználjuk a következő blokk titkosításához, ennek előnye, hogy a támadó sokkal kevesebb értékes információhoz jut, de hátránya, hogy használatához a titkosítás előtt rendelkezésre kell állnia a teljes titkosítandó üzenetnek.

Működését a következő ábra mutatja.

A CFB vagy titkos szöveg visszacsatolása nevű mód és az OFB vagy kimenet visszacsatoló mód segítségével szintén növelni tudjuk a titkosítás biztonságát, ezek a módszerek abban az esetben használhatóak, ha nem áll rendelkezésre a teljes titkosítandó szöveg a folyamat elején. Ezekkel részletesebben nem foglalkozunk, mert a mi szempontunkból nem érdekes a működésük.

A DES algoritmus

Az utolsó animációban a ma leggyakrabban használt szimmetrikus blokk titkosító a DES algoritmus kerül bemutatásra. A szimmetrikus blokk titkosítók legfőbb előnyei közé tartoznak, hogy működésük gyors, és minden tekintetből kimerítően teszteltek, vagyis használatuk biztonságos. A DES (Data Encryption Standard) blokk titkosító 1977-ben készült, egy amerikai nemzeti titkosító algoritmust kereső pályázatra, az IBM készítette, eredeti nevén Lucifer. Miután a versenyt megnyerte nevezték át DES-re, ma is a legelterjedtebb a világon, széles körben alkalmazzák.

A DES lépései

Kulcsméret: 64 bit (pl. 133457799BBCDFF1)

Bemenet: 64 bites blokkok

  • 1. lépés: Minden bemeneti blokkot megkeverünk egy ún. kezdeti permutáció segítségével, ez egy táblázat, amely meghatározza a különböző bitek helyét az első lépés után.
  • 2. lépés: Az összekevert bemenetet két darab 32 bites blokkra bontjuk.
  • 3. lépés: A két 32 bites blokk ezután 16 körön keresztül a titkos kulcsból létrehozott körkulcsok segítségével keveredik.
  • 4. lépés: Az előző lépésekben megkevert blokkokra most alkalmazzuk a kezdeti permutáció inverzét más szóval fordítottját.
  • 5. lépés: Az előző lépésben kapott blokkot még a teljes kulccsal is kódoljuk, és így kapjuk a rejtett blokkot.

 

 

 

 

Az animációkat készítette: Csernusné Ádámkó Éva

Az animációk elkészítését az EFOP-3.4.4-16-2017-00023 számú projekt támogatta.
A projekt az Európai Unió támogatásával,
az Európai Szociális Alap társfinanszírozásával valósult meg.

Legutóbbi frissítés: 2023. 09. 05. 15:05