8.3. A szimmetrikus kriptográfia alapjai

Az előző fejezetben láttuk, hogy az elmúlt évszázadok során sokféle titkosítási technikát dolgoztak ki, de a XX. század végéig főként az egykulcsos vagy szimmetrikus algoritmusokat használták. Ezek, persze lényegesen bonyolultabb formában, még ma is jelentős szerepet játszanak a kriptográfiában. Egy titkosító eljárást szimmetrikusnak nevezünk, ha a kódoló és a dekódoló kulcsok megegyeznek, vagy a dekódoló kulcs a kódolóból könnyen - polinomiális időn belül - megkapható. Ilyen módszert használva persze mind a kódoló, mind a dekódoló kulcsot titokban kell tartani. A szimmetrikus titkosítás sémáját mutatja a következő ábra.

8.7 ábra

Az előző fejezetben tárgyalt klasszikus titkosító algoritmusok: eltolásos, affin, helyettesítéses és a Vigenére eljárások mind szimmetrikusak.[16]

A szimmetrikus titkosítás előnye az egyszerűség és gyorsaság, hátránya viszont a legfőbb tulajdonságából származik: a titkosításhoz és kódoláshoz ugyanaz a kulcs használatos, így azt a feladónak és a címzettnek is ismernie kell. A jelszót (kulcsot) biztonságosnak ítélt úton - például személyes találkozáskor - kell eljuttatni a másik félhez. A személyes találkozás persze nem minden esetben kivitelezhető, hiszen gyakran fordul elő, hogy a partnerek igen nagy távolságban vannak egymástól, amikor sürgősen bizalmas üzenetet kell váltaniuk. Például az ország másik szögletében vagy külföldön tartózkodva egy tranzakciót kezdeményezünk a bankunknál. Más megoldás nem lévén ez az út valószínűleg ugyanaz a nem biztonságos csatorna lesz, amelyen a további kommunikáció is folyna. Ez a tény azonban megnehezíti az azonnali és globális kommunikációt. A modern rendszerekben a kulcsokat aszimmetrikus titkosítással juttatjuk el a partnereknek, akik aztán a jóval gyorsabb szimmetrikus módszerrel folytathatják a kommunikációt. A kulcscsere problémájáról és megoldási lehetőségéről később írunk.

A szimmetrikus titkosítás néhány modern képviselője a DES, a TripleDES (168 bit), AES, TwoFish, GOST 28147-89 és az IDEA (128 bit). Ezek sok, egyszerű transzformáció egymás utáni végrehajtása után érik el a kívánt titkosítási szintet. A tervezési elvet Horst Feistel (1915-1990) német származású, de életének nagy részét az USA-ban töltő kriptográfus dolgozta ki. A Feistel titkosítás blokkdiagramját a 8.8 ábrán mutatjuk be. A módszerhez szükségünk van egy nem feltétlenül invertálható F függvényre és ha n-szer iteráljuk a kódolási menetet, akkor n+1 menetkulcsra: K0,…,Kn . A különböző titkosítási eljárások ezek megválasztásában térnek el egymástól.

8.817 ábra

[17]

A bizonyításból látható, hogy Feistel módszere valóban független az F függvénytől és a menetkulcsoktól. Az egyetlen feltétel az, hogy F értéke olyan szó legyen, amelynek hossza megegyezik az üzenet hosszának felével.

8.918 ábra

A másik gyakran használt módszer szimmetrikus titkosító eljárás készítésére látható a 8.9 ábrán. Ennek neve helyettesítő-keverő hálózat (substitution-permutation network), amely az angol neve után SP-hálózatnak neveznek. Az egyes iterációs lépésekben először a feldolgozandó szót kisebb blokkokra bontjuk és rájuk egy helyettesítést alkalmazunk. Ezután az egyes blokkok bitjeit szisztematikusan összekeverjük, majd az eredményt xor-ozzuk a menetkulccsal. A módszer előnye a Feistel hálózattal szemben, hogy már a nyílt üzenetet már az első iteráció előtt xor-ozzuk az első menetkulccsal. A Feistel hálózatban az üzenet jobb félszava csak a második iterációban módosul. Az SP hálózat másik előnye, hogy kevesebb iterációra van szükség ugyanolyan titkosítás eléréséhez, mint a Feistel hálózatnál.[18]



[16] 16 - Simon Singh, The Code Book. How to Make It, Break It, Hack It, Crack It, Delacorte Press, New York, 2001.

[17] 17 - Forrás: http://en.wikipedia.org/wiki/File:Feistel_cipher_diagram.png

[18] 18 - Forrás: http://upload.wikimedia.org/wikipedia/commons/c/cd/SubstitutionPermutationNetwork2.png