Blog

Szimmetrikus kriptográfia

2008.04.23. 17:42:34, Földes Ádám Máté

Ez a bejegyzés egy hosszabbra tervezett, kriptográfiai témájú sorozat második 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 első darabja itt olvasható:

http://pet-portal.eu/blog/2008_04_08_Kriptografia_hol_segit_a_privatszfera_vedelmeben_a_titkositas/

Az előző részben adott, általánosabb jellegű bevezetés után picit közelebbről is megnézzük a kriptográfiai algoritmusokat. Csak a teljesség kedvéért: az algoritmus valamely feladat elvégzésére hivatott lépések véges sorozata (pl. a szakácskönyvek receptjei algoritmusoknak tekinthetőek). A kriptográfiai algoritmus tehát olyan módszer, mely rejtjelezéssel kapcsolatos feladatot hivatott megoldani (azért nem pusztán azt írtam, hogy „olyan módszer, mely rejtjelez”, mert így a definíció nem vonatkozna a hash függvényekre – róluk majd egy későbbi blogbejegyzésben írok).

A kriptográfiai algoritmusok nagy része a már az előző bejegyzésben is ismertetett rejtjelezéssel foglalkozik. Az ilyen algoritmusok bemenetét nyílt szövegnek (plain text), kimenetét pedig titkos szövegnek (ciphertext) nevezzük. (A modern kriptográfiában legtöbbször elvonatkoztatunk a „szöveg” szó általában használt jelentésétől, és úgy a nyílt szöveget, mint a titkos szöveget nullák és egyesek – más szóval bitek – sorozatának tekintjük. Ez tehát azt jelenti, hogy a nyílt szöveg lehet akár kép, hang, stb. is. Az is igaz továbbá, hogy minden „igazi” szöveg egyértelműen megfeleltethető nullák és egyesek sorozatának, lásd ASCII, UTF-8, stb.) Az algoritmusnak ezen felül van egy további paramétere, a kulcs (key), melyre a modern kriptográfiában szintén bitek sorozataként hasznos tekinteni. Ebben a paraméterben van az egész algoritmus lényege: ha az illetéktelen harmadik fél nem ismeri a megfelelő kulcsot, akkor nem lesz képes visszaalakítani a titkos szöveget nyílt szöveggé.

A rejtjelező algoritmusok többféleképpen oszthatóak további halmazokra. Ezen felosztások egyik legfontosabbika a szimmetrikus illetve az aszimmetrikus módszerek közti különbségtétel. A szimmetrikus kriptográfiában a rejtjelező algoritmus (encryption algorithm) és a hozzá tartozó visszafejtő algoritmus (decryption algorithm) ugyanazt a kulcsot használja. (Az aszimmetrikus kriptográfiában nem ez a helyzet – de erről majd egy következő blogbejegyzésemben írok bővebben.)

 

 

A legprimitívebb szimmetrikus rejtjelező algoritmusnak talán a Caesar-féle titkosító tekinthető. (Itt lehet róla olvasni.) Ennek a kezdetleges módszernek több nyilvánvaló hibája van. Csak hogy egyet említsek: az ún. kulcstér mérete vészesen kicsi (ha az angol ábécé a bemeneti ábécé, akkor 0-tól 25-ig választhatunk kulcsot), vagyis – értelmes nyílt szöveget feltételezve – pillanatok alatt meg lehet fejteni a titkos szöveget a nyers erő (brute force) módszerével, azaz a lehetséges kulcsok szisztematikus végigpróbálgatásával. A nyers erő módszere a legköltségesebb (vagyis idő- és erőforrás-igényesebb) eszköz a kriptanalízisben, előfordulhat azonban, hogy a titkos szöveg megfejtésére nincs hatékonyabb megoldás. Azt mondjuk, hogy egy rejtjelező algoritmus feltörhető, ha a nyers erőnél létezik hatékonyabb megoldás bármely titkos szöveg visszafejtésére. (Két megjegyzés: egyrészt lehetséges, hogy az algoritmus csak bizonyos körülmények között – például ún. gyenge kulcsok használata esetén – fordítható vissza a nyers erőnél hatékonyabban. Ilyenkor részleges törésről beszélünk. Másrészt egy teljes törés is lehet súlyosan számításigényes – lehetséges, hogy a nyers erő egy évezredes futási idejét egy évszázadra sikerül csak redukálni.)

A szimmetrikus kriptográfia a Caesar-rejtjelezőtől napjainkig nagyon sokat fejlődött. Nagyjából három szakaszra osztható ez a periódus: a kézi rejtjelek korára (Vigenère-titkosítás, Playfair-rejtjel, stb.), a mechanikus illetve elektromechanikus titkosítógépekére (Enigma, T52, Hagelin, stb.), valamint a modern, számítógépes rejtjelekére (OTP, DES, 3DES, AES, RC4, stb.). Az utóbbi két csoportba tartozó módszerek ismertetése túlmutat a Portál célkitűzésén, tekintve, hogy (talán az OTP-t kivéve) viszonylag bonyolultak, és nem is lenne egyszerű igényesen tárgyalni őket blogbejegyzésnyi terjedelemben. (A kézi rejtjelek megértése viszont többnyire nem nehéz, és a velük titkosított üzenetek megfejtése kiváló agytorna.)

A felsorolt számítógépes rejtjelek közül az OTP (One Time Pad, egyszeri kitöltés) koncepciója a legrégebbi. Egy későbbi bejegyzésben még írok róla, mert kiválóan képes illusztrálni, hogy miért nem igaz az a gyakran elhangzó tévhit, hogy minden algoritmusnál bármely titkos szöveg megfejthető a nyers erő módszerével. „Egy az egyben” azonban biztonságossága ellenére ritkán használják, mert a kulcsnak (legalább) ugyanolyan hosszúnak kell lennie mint a nyílt szövegnek, és egy kulcs csak egyszer használható fel biztonságosan. Mindez a legtöbb alkalmazásban nagyon súlyos megkötés.

A DES (Data Encryption Standard, adattitkosítási szabvány) az amerikai kormányügynökségek által 1976-ban kiírt pályázat győztese – illetve a nyertes algoritmus egy kicsit módosított változata. (Pont a máig nem ismert célú módosítás volt az oka annak, hogy az emberek nem bíztak teljes mértékig az algoritmusban, mert féltek, hogy a kormány elrejtett benne egy „hátsó ajtót”.) A DES 56 bit hosszú kulcsot használ. Ez ma már nem számít elégségesnek a nyers erő módszer ellen, bár egy egyszerű asztali számítógéppel valószínűleg azért még meglehetősen sok időbe telne egy titkos szöveget így megfejteni. A DES volt például a Unix rendszerek kezdeti jelszókódolási eljárásának alapja. A kulcshossz problémáját először a 3DES (tripla DES) nevű algoritmussal orvosolták, mely voltaképp három DES titkosítási művelet egymás után fűzése. A 3DES-t valamivel talán szélesebb körben használják a DES-nél (például az IPSec nevű hálózati rétegbeli rejtjelezési protokollban), de az AES az igazán jellemző.

Az AES (Advanced Encryption Standard, fejlettebb titkosítási szabvány) hasonló körülmények közt született 1998-ban, mint annak idején DES, pont ez utóbbi problémáinak orvoslására. 128, 192 és 256 bit hosszú kulcsot használhat – a 256 bit elégséges ahhoz, hogy az algoritmust a nyers erő módszerével a mai technikával évezredek alatt se lehessen feltörni. Az előző bejegyzésben említett EncFS „álfájlrendszer”, illetve a WLAN-ok védelméhez használt WPA2 (WiFi Protected Access 2, védett WiFi hozzáférés 2) is ezt használja.

Az RC4 (Rivest Cipher #4, Rivest negyedik rejtjele) eredetileg egy „céges” algoritmus volt – egészen 1994-ig üzleti titoknak számított, amíg ki nem szivárgott. Kulcshossza 40-től 128 bitig terjedhet. Az algoritmus a vezeték nélküli hálózatok védelméhez használt WEP (Wired Equivalent Privacy, vezetékessel egyenértékű „titkosság” ) és WPA módszerek alapja.

Az eddigiekben – nagyon távolról – bemutattam néhány szimmetrikus rejtjelező algoritmust, és hogy milyen technológiákban használjuk fel őket. A fájlrendszerek és a hálózatok forgalmának rejtjelezése egyaránt kardinális kérdés lehet a privátszféra védelme szempontjából. Az elmondottakból talán úgy tűnhet, hogy a titkosító algoritmusok abszolút mércéje a kulcshossz – ez azonban még a szimmetrikus rejtjelezők körén belül sem igaz. A kulcshossz pusztán arra ad teljesen biztos összehasonlítási alapot, hogy az egyes algoritmusokat mennyire nehéz a nyers erő módszerével feltörni. Egy algoritmus biztonságossága a kriptanalízissel szemben azonban nagyon sok tényezőtől függ. Az is előfordulhat például, hogy ugyanaz a rejtjelező algoritmus egy implementációban biztonságos, míg egy másikban nem (jó példa erre a WPA és a WEP).

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