KRIPTOGRÁFIA Az üzenetek tartalmának elrejtése: ezt a műveletet kódolásnak, rejtjelezésnek, illetve sifírozásnak nevezzük. A kriptográfia vagy a titkosírás egyszerűsítve, ősi, mint a civilizáció a földön. A kifejezés a mai értelmezés szerint nem csak az írást jelenti, hanem minden híradástechnikai eszközt, mint a telefon, a rádióhullámok és a számítógépes hálózatok is. A cél régen, mint most, az volt, hogy megakadályozzák az illetékteleneket abban, hogy megértsék, mit üzennek az illetékesek egymásnak akár írásban vagy később szóban is. Erre volt, van és lesz szükség a jövőben is. Két részre oszthatóak a titkosítási módszerek: Behelyettesítés: Az egyik ajánlott módszer az ábécé betűinek találomra történő párosítása, majd azok kölcsönös megfeleltetése. Példák: párosítás, cézár-kód. A monoalfabetikus behelyettesítés olyan kódolási eljárás, amely során a nyílt ábécé betűit egy (és csakis egy) kódábécé betűivel, karaktereivel, vagy jelkészletével helyettesítjük. (párosítás) Párosítás: Véletlenszerűen rendelünk B A N K hozzá az egyes karakterekhez más karaktereket. T D O A Átrendezés: Olyan kódolási eljárás, amely során az üzenet betűit átrendezik, összekeverik, gyakorlatilag egy anagrammát állítanak elő a szövegből. Nagyon rövid szövegek, például egyetlen szó esetében ez a módszer nem túlságosan megbízható, mert néhány betűt csak korlátozott számban lehet különböző sorrendbe állítani. Három betűt mindössze hat sorrendbe lehet leírni: aki, aik, iak, ika, kai, kia. Ahogy azonban nő a betűk száma, lehetséges elrendezésük száma is rohamosan emelkedik, s a keverési módszer pontos ismerete nélkül nem állítható vissza az eredeti sorrend. Példák átrendezésre: Fésűs módszer: Olyan eljárás, amely során az üzenet betűit váltakozva egy felső, illetve egy (vagy több) alsó sorba írják, majd az így keletkezett sorokat egymás után rögzítik, s ez adja a titkos üzenetet. K D L N Ó Z V G Ó O A D S Ö E Kódolt forma: KDLNÓZVGÓOADSÖE Szkütálé: A világ legelső katonai rejtjelező eszköze. Ez egy szabályos sokszög alakú hasáb, amelyre egy bőr, vagy pergamencsíkot tekernek. A feladó a hasáb hossztengelyével párhuzamosan írja a bőrre, vagy a pergamenre az üzenetet, azután letekeri a szalagot, amely a külső szemlélő számára így csak egy értelmetlen betűsor hordozója: az üzenet betűi átrendeződtek. A megfejtéshez szükség van a kódoláshoz használt hasáb pontos mására. Történeti áttekintés: Az egyik legrégebbi és legismertebb titkosítási módszer Julius Ceasar nevéhez fűződik. Eljárása roppant egyszerű: a latin ABC minden betűje helyett a nála k hellyel később következő betűt írjuk le, ahol k tetszőleges 1 és 28 közötti egész számot jelölhet, és amennyiben az ABC végére érnénk, akkor természetszerűleg az ABC első betűjére ugrunk a számolás során. Tehát például a BRUTUS szó megfelelője k = 7 esetén IY BABZ lesz. Nem tudjuk, hogy vajon akkoriban megőrizte-e a módszer a rábízott titkot, de ma már minden
értelmes iskolás gyerek képes lenne megfejteni egy így létrehozott szöveget annak néhány mondata alapján. a) Egyszerű helyettesítés: (1. generáció) Az egyszerű helyettesítés során a szöveg minden betűjét egy másik betűvel helyettesítjük úgy, hogy azonos betűkhöz mindig egyforma, különböző betűkhöz pedig mindig különböző betűk tartozzanak. Absztraktabban fogalmazva: az eredeti és az új ABC betűi között kölcsönösen egyértelmű megfeleltetést létesítünk, s lényegében ez a reláció lesz az eljárás során a kódolás kulcsa. Természetesen a két halmaz elemei nemcsak az ABC betűi lehetnek, hanem sokkal bővebb halmazok esetén is elkészíthető ilyen hozzárendelés. Maradva az ABC betűinél vizsgáljuk meg, hogyan fejthető meg egy így létrehozott rejtjelezett szöveg. Minden egyes nyelvre jellemző, hogy benne az egyes betűk milyen gyakorisággal fordulnak elő. Közismert például, hogy a magyar nyelvben az e a leggyakoribb, s mondjuk a q betű meglehetősen ritkán bukkan fel. Hosszabb szövegből elkészített statisztikák pedig már egészen pontosan kell, hogy tükrözzék a nyelvre jellemző (ugyancsak statisztikailag meghatározható) adatokat. Ha tehát megállapítjuk, hogy a titkosított szövegben mely betűk fordulnak elő leggyakrabban, akkor jó eséllyel feltételezhetjük, hogy ezek lesznek a nyelv leggyakoribb betűinek kódolt megfelelői. Az is érzékelhető, hogy minél hosszabb a szöveg, annál könnyebb a dolgunk, hiszen egyre jobban meg fogja közelíteni a kriptogrammban szereplő jelek statisztikai eloszlása a nyelvre jellemző és a megfejtő által ismert gyakorisági megoszlást. Ezek után a pontos beazonosításhoz további támpontot nyújtanak a nyelvben gyakran előforduló elemek és betűcsoportok (például névelők, igekötők), és arra is támaszkodhatunk, hogy a kiadódó szövegrészeknek értelmeseknek kell lenniük. b) Átrendezés (Keverés) A keverés során az egyes betűk illetve jelek változatlanok maradnak, csupán sorrendjük változik meg. Például a szöveget felosztjuk ötbetűs csoportokra, és a csoportokon belül megfordítjuk az elemek sorrendjét, ilyen módon mondjuk a „kriptológia” szóból a „tpirkigóloa” sorozathoz jutunk. Egy másik példa lehet keverésre, hogy egy négyzetes táblázatba sorfolytonosan beírt szöveget középről kifele haladva csigavonalban olvasunk ki. Az elv kivitelezésére nyilvánvalóan számtalan más, ezeknél sokkal szellemesebb és kifinomultabb lehetőség kínálkozik, de mindegyikben közös az a cél, hogy a karakterek sorrendjének megváltoztatásával az eredeti szöveg struktúráját elrejtse. Világos, hogy ezek a módszerek önmagukban vajmi kevés biztonságot nyújtanak, de a helyettesítéses módszerekkel együtt alkalmazva alkalmasak a szöveget jellemző és árulkodó gyakori szavak és betűcsoportok eltüntetésére, s így mindmáig fontos elemei a későbbiekben tárgyalt hatékony védelmet nyújtó bonyolult rendszereknek. c) Periodikus helyettesítés (2. generáció) Az egyszerű helyettesítéssel létrehozott szövegek, amint ezt már tárgyaltuk, könnyen megfejthetők annak alapján, hogy az egyes betűk jó közelítéssel a rájuk általában jellemző gyakorisággal fordulnak elő a szövegekben. Ezt felismerve, és ezt elkerülendő fejlődött ki a középkor végefelé a periodikus helyettesítés módszere, ahol az eredeti ABC-hez nemcsak egy, hanem több különbözőképpen permutált ABC-t rendelünk hozzá, s ezeket felváltva használjuk a kódoláshoz. Ennek az eljárásnak a megfejtése során az egyes betűk gyakoriságának számolása már nem kecsegtet sikerrel. Több mint 300 éven át nem is sikerült a módszerre általános megfejtési eljárást találni, egész addig, amíg meg nem jelent egy porosz katonatiszt, Friedrich Kasiski könyve. A megfejtés során először a periódus hosszát határozzuk meg a következőképpen: Elkezdünk a szövegben ismétlődő 3-6 betűs csoportokat keresni. Vegyük észre, hogy az eredeti szövegben gyakran előforduló szavaknak illetve betűcsoportoknak nem mindig lesz
különböző az átírt megfelelőjük. Ha azok történetesen a periódushoz képest ugyanúgy helyezkednek el, azaz a köztük levő távolság épp osztható a periódushosszal, akkor a teljes szó azonos módon kerül kódolásra. És erre nem is olyan kicsi az esély, mint ahogy az első pillantásra tűnik. Például 5 hosszúságú periódusnál egy szó kétszeri előfordulása esetén 20%, háromszori előfordulás esetén 52%, négyszeri előfordulás esetén pedig több, mint 80% annak a valószínűsége, hogy közülük legalább kettő azonos rejtjelezett változattal rendelkezik. Tehát megkeressük az ismétlődő csoportokat, amelyek néhány olyan kivételtől eltekintve, amelyeket a véletlen szeszélye okozott, az eredeti szövegbeli ismétlődéseknek köszönhetők, és mindig megszámoljuk, hogy ezek egymáshoz viszonyítva hány karakterrel vannak eltolódva. Ezeknek a távolságoknak - a véletlen ismétlődések esetét kivéve - a kódoláskor alkalmazott periódus többszöröseinek kell lenniük. Vagyis ha meghatározzuk a kapott értékek gyakori közös osztóit, várhatóan a feltételezhető periódushosszakhoz jutunk eredményül. A feltételezett periódus ismeretében pedig külön-külön el kell készítenünk az egyes hozzárendeléseknek megfelelő gyakorisági táblázatokat, s amennyiben az azokban szereplő értékek hasonlítanak egymáshoz és az üzenet nyelvének sajátosságaihoz, akkor valóban helyes volt a sejtésünk. Ezek után nem marad már más hátra, mint akárcsak azt az egyszerű helyettesítésnél tettük, külön-külön meghatározzuk a kulcsokat, vagyis az egyes hozzárendeléseket. Érdekességként jegyezzük meg, hogy noha a megfejtés valóban viszonylag könnyen végrehajtható, ezt a módszert még az első világháborúban is katonai célokra használták. d) Többszörös helyettesítés (3.generáció) Nehezíti a megfejtést, ha az egyszer már periodikus helyettesítéssel rejtjelezett szöveget egy eltérő periódusú eljárással tovább kódolnak. Ha a két periódus hossza jelölje őket p és q egymáshoz relatív prím, akkor a kapott szöveg tulajdonképpen egy pq periódushosszúságú helyettesítésnek felel meg. Ilyen többszörös helyettesítésen alapultak az 1920-as évektől megjelenő elektromechanikus rejtjelező gépek, amelyek sokszoros helyettesítések révén igen hosszú periódushosszakat használtak. Talán a legismertebb közülük a németek által kifejlesztett és használt Enigma gép, amelyet a második világháborúban is széleskörűen alkalmaztak katonai és diplomáciai üzenetek titkosítására, és amelynek megfejthetetlenségében vakon bíztak. Ezzel szemben az igazság az volt, hogy az angolok rendszeresen fejtették a német üzeneteket, s azt, hogy mennyire értékesek voltak az ezáltal szerzett információk, jól szemlélteti, hogy noha egy megfejtett parancs révén tudomást szereztek előre a Coventry ellen készülő bombatámadásról, amely nagyon sok emberáldozatot és igen súlyos veszteségeket követelt, Churchill utasítására mégsem tettek semmiféle ellenintézkedést, nehogy a németek megsejtsenek valamit. A rejtjelezett üzenetek elkészítéséhez és fejtéséhez szükséges egyre nagyobb mennyiségű számítás ösztönözte az elektronikus számítógépek fejlesztését. e) Futókulcsos rejtjelezés A periodikus helyettesítéstől teljesen eltérő ötleten alapul a nem periodikus avagy futókulcsos rejtjelezési eljárás. Az alapgondolat, hogy a titkosított szöveg az eredeti szöveg és egy másik valamilyen módon előre meghatározott szöveg "összegzésével" keletkezik. Annak viszont, hogy a ciklikusságot kiküszöböljük ára is van: az üzenet titkosításához az üzenettel megegyező hosszúságú segédszövegre van szükség. Ez a segédanyag legtöbbször egy könnyen hozzáférhető könyv egy részlete, amelyet a részlet kezdőbetűjének helyével szoktak megadni (pl. 123. oldal, 12. sor, 7. betű). Nézzük meg, hogyan történik a két szöveg "összeadása"! A titkosítandó üzenet alá leírjuk a segédszöveget, és mindkét szövegben a betűket számokkal helyettesítjük a következőképpen: legyen A = 0;Á = 1;B =2;C = 3; …Z = 34. Adjuk össze
páronként az egymás felett álló betűknek megfelelő számokat, és ha az összeg 34-nél nagyobb, akkor vonjunk ki belőle 35-öt. Az így kapott számhoz tartozó betű lesz a titkosított jel. Visszafejtéskor a segédszöveget vonjuk ki hasonlóan a rejtjelezett szövegből. Az eljárásra két különböző elven alapuló megfejtési lehetőség létezik. Végső soron mindkettő azt használja ki, hogy mind a két kiindulási szövegnek értelmesnek kell lennie. A módszer tulajdonképpen szimmetrikus, a két szövegnek egyenrangú a szerepe, és ha az egyiket sikerül megfejteni, akkor ezáltal automatikusan fény derül a másikra is. Tehát az egyik lehetőség, hogy az üzenet témájától függően választunk abban vélhetően előforduló szavakat (például katonai parancsokban csapat, támadás, stb.). Ilyenek híján a nyelvben általában gyakran előforduló szavak is megteszik. A feltételezett szót a titkosított szövegből minden lehetséges helyen kivonva megnézzük, hol adódik olyan eredmény, amely a segédszöveg része lehet, tehát valami értelmes szó vagy szótöredék. Ha a feltételezett szó nem szerepelt azon a helyen az eredeti szövegben, akkor nyilván kicsi az esélye annak, hogy véletlenül jöjjön ki értelmes segédszövegrészlet. Ha sikerült olyan helyre bukkannunk, ahol értelmet tudtunk adni a kapott részletnek, akkor innen előre és hátrafele haladva megpróbáljuk kiterjeszteni az ismert részt. Ha valóban beleakadtunk a helyes megoldásba, akkor ahogy kezd a szövegek tartalma kibontakozni, úgy válik egyre könnyebbé a terjeszkedés, míg végül előttünk áll a teljes megoldás. A másik lehetséges eljárás azon a megegyezésen alapszik, hogy ha vesszük a rejtjelezett szöveg egy betűjét, legyen ez példaképpen az M, az nem adódhatott akármilyen két betű összegeként, hanem csupán az A_M;Á_L;B _K;C _ J;D_Í;E_I;É_H; F _G;Z_N; Y _O;X_Ó;W_Ö; V _.;._P;Ü_Q;Ú_ R;U _ S; T _T betűpárokat képviselheti, amelyek közül szemmel láthatólag az E _I a leggyakoribb párosítás, de még az A_M;Á_L; T _T is elég valószínű, míg az Ü_Q együttállásnak bizony csekély az esélye. Tehát ugyanúgy, ahogy az egyes betűknek megvan az előfordulási gyakoriságuk, a betűpárok gyakorisága is meghatározható, mégpedig a párt alkotó két betű előfordulási gyakoriságának szorzataként. Ha a titkosított szöveg minden karakterére elvégezzük ezt az elemzést, és minden egyes helyen kigyűjtjük a legvalószínűbben odaillő betűpárokat, továbbá az így kigyűjtött betűkből megpróbálunk értelmes szavakat alkotni, akkor tekintve, hogy a két szöveg kölcsönösen segíti a másik megfejtését, jó esélyünk van arra, hogy birtokába jutunk a rejtjelezett információnak. Felmerülhet a kérdés, hogy vajon mit tudunk tenni akkor, ha az eredeti szöveghez nem egy értelmes segédszöveget, hanem egy véletlen karaktersorozatot adunk hozzá. A válasz az, hogy az így kapott titkos üzenet megfejthetetlen, mint ahogy erre majd még visszatérünk, azonban ekkor a kódolt üzenet hosszával megegyező mennyiségű segédszöveget kell kulcsként biztonságos módon eljuttatni az üzenet címzettjéhez. f) Kódkönyves rejtjelezés Azokat a titkosítási eljárásokat, amelyek nem az egyes betűket, hanem a szöveg nagyobb egységeit tekintik kiindulási alapnak kódoknak nevezzük. Egy kódkönyv tulajdonképpen nem más, mint szavak és kifejezések lajstroma, ahol az egyes címszavak mellett akárcsak egy szótárban megtalálhatók a hozzájuk tartozó betű- illetve számkombinációk. Rendszerint igen nagy terjedelműek, leggyakrabban 10ezer és 100ezer közötti címszót tartalmaznak. Tulajdonképpen ez is egy helyettesítéses eljárás, csak jóval nagyobb halmazokon elvégezve. Itt már a kölcsönösen egyértelmű megfeleltetés elkészítése is nagy feladat. Tipikus alkalmazási területe a diplomácia, ahol nem túl hosszú üzeneteket kell sokszor kézzel rejtjelezni, illetve visszafejteni. Ha a kódot egy bizonyos használati idő után rendszeresen cserélik, akkor megbízhatónak tekinthető az eljárás. Hátránya, hogy korántsem olyan hosszú ideig biztonságos, mint ahogy azt a kulcs, azaz a kódkönyv mérete alapján sejtenénk, mivel meglehetősen rosszul használja ki azt, ugyanis a kulcsnak minden olyan szót tartalmaznia kell,
amelyre esetleg szükség lehet, pedig ezeknek csupán töredéke fog előfordulni a használat során. Másfelől viszont a gyakran ismétlődő szavak miatt hamar elhasználódik a kódkönyv. A múlt század végén és a század elején széleskörűen alkalmaztak kereskedelmi kódokat, mégpedig azért, hogy megtakarítsanak az igencsak borsos távíró díjakból. A szokásos, gyakran igen hosszú üzleti kifejezéseknek egy-egy ötbetűs kódot feleltettek meg, amelyért, mindössze egy szó díját számították fel. A legelterjedtebb ilyen rendszer 100ezer kifejezést tartalmazott, amelyek megfelelői legalább két betűben különböztek egymástól, és amelyekben semelyik két szomszédos betű felcserélése sem eredményezett értelmes másik kódot. Látjuk, hogy az üzleti célú rendszer megalkotásánál egyaránt törekedtek az adatok tömörítésére és biztonságára. Olyan elvek ezek, amelyek mindmáig alapkövetelményei a legtöbb pénzügyi számítástechnikai rendszernek. Ne feledkezzünk el ugyanis arról, hogy noha a bűnözés komoly fenyegetés minden olyan helyen, ahol pénzről, sőt hatalmas pénzekről van szó, a leggyakrabban mégis a véletlen tévedések okoznak veszteséget, mint ahogy ezt példákban látni is fogjuk. A véletlen hibák, üzemzavarok pedig egyrészt közvetlen veszteségeket, többletköltségeket okoznak, másrészt és hosszútávon talán ez a súlyosabb következmény kényelmetlenséget, fennakadást eredményeznek az ügyfelek kiszolgálásánál, rombolják a bank arculatát, ami piaci viszonyok között az ügyfelek elpártolásához vezet. A megfejtés lehetőségei: Az ellenségnek akkor van a legnehezebb dolga, ha csak a rejtjelezett szöveg áll rendelkezésére. A gyakorlatban azonban néha több információhoz juthat: pl: nyilvánosságra kerülnek azok az információk, amelyeket titkosítva küldtek el. Vagy kémek segítségével hozzájuthat az eredeti szöveghez, vagy annak egy részéhez. Ezért fontos a kulcsok gyakori cseréje, mert így megelőzhető, hogy túl sok információhoz jusson az ellenség. Legerősebb helyzetben akkor van a kódfejtő, ha kísérletezni is tud a kódolt szöveggel, azaz képes arra, hogy általa tetszőlegesen megválasztott szöveg ill. jelsorozat kódolt ill. dekódolt változatához hozzájusson. Pl: hálózatra csatlakozással. Shannon szerepe a kriptológiában A bevezetőben említettük, hogy a kriptológia a XX. századig inkább volt tekinthető művészetnek, semmint modern értelemben vett tudománynak. Igazán tudománnyá Shannon 1949-ben megjelenő cikke nyomán vált, amelyben a szerző információelméleti megalapozottsággal tekinti át a titkosítás és megfejtés kérdéseit. Cikke nyomán kétfajta biztonságfogalmat szoktak megkülönböztetni: elméleti és gyakorlati biztonságot. Az első, az elméleti biztonság kapcsán a következő hipotetikus kérdésre keresünk választ: Akkor is megfejthetetlen maradna-e az üzenet, ha az ellenfél elemzői korlátlan időmennyiséggel és számítási kapacitással rendelkeznének? Ehhez olyan kulcs kéne, amelynek a mennyisége olyan hatalmas, hogy gyakorlatban nem lehet megvalósítani. Nyilván arra, hogy a titkosító eljárás elméletileg is megfejthetetlen legyen az üzleti életben nincs szükség, bőven elég, ha az illetéktelenek valamilyen ok miatt képtelenek megtenni azt. Ezért a praktikus biztonság vizsgálatakor a kérdésfeltevésünk a következőképpen módosul: Az adott módszer mennyire képes ellenállni egy korlátozott idővel és számítási kapacitással rendelkező ellenfél támadásának? Érdemes felfigyelni arra, hogy milyen fontos szerepet játszik mindkét meghatározásban a rendelkezésre álló idő és számítási kapacitás. Ugyanis a napjainkban használt rejtjelezési eljárások azon alapulnak, hogy a kulcs ismerete nélkül a szöveg megfejtéséhez szükséges idő még a leggyorsabb számítógépeket használva is évezredekben mérhető.
Alapkövetelmények: Láttuk a történeti áttekintés során, hogy az eredeti szövegek két fő tulajdonsága segítette mindig hatékonyan a megfejtést: nevezetesen a szöveget alkotó egyes betűk nyelvre jellemző előfordulási gyakorisága, és a nyelvi elemek kapcsolódásának szabályszerűségei. Az első tulajdonság játszott például domináns szerepet az egyszerű helyettesítés megfejtésénél, míg a futókulcsos rejtjelezésnek a valószínűsíthető szavak segítségével történő megfejtésénél a második tulajdonságra alapoztunk inkább. Ha tehát ezeket a fogódzókat sikerülne valamiképp kiirtanunk, akkor igencsak jó minőségű eljáráshoz juthatnánk. Shannon a már említett tanulmányában meg is fogalmazott két olyan kritériumot, amely nélkülözhetetlen jellemzője a jó titkosító algoritmusoknak, ezek a diffúzió és a konfúzió. Diffúzió alatt az értendő, hogy az eredeti szöveg minden karaktere a rejtjelezett szöveg sok-sok karakterét befolyásolja, vagyis egyetlen eredeti karakter megváltoztatásának hatása ne legyen nyomonkövethető a kódolt szövegben, és ugyanígy fordítva, a kriptogramm egy jelének változtatása követhetetlen módon változtassa meg a visszafejtésével nyert üzenetet. Ha nem így lenne, akkor az ellenfél elemzőinek igencsak könnyű lenne a dolga, különösen akkor, ha arra is képesek, hogy tetszésük szerint választott szövegnek megszerezzék a kódolt illetve dekódolt megfelelőjét. A konfúzió alatt pedig a rejtjelező eljárásnak az a kívánatos tulajdonsága értendő, hogy az eredeti szövegre jellemző statisztikai eloszlások és a rejtjelezett változat statisztikai eloszlásai közötti összefüggés igen áttételes, gyakorlatilag kideríthetetlen legyen. A két Shannon-i elvnek legjobban különböző összetett algoritmusok tudnak megfelelni, amelyek a keverést és a helyettesítést egymás után többször alkalmazva állítják elő a rejtjelezett szöveget. Ilyen elven működik a mai számítógépes hálózatok legelterjedtebb biztonsági rendszere, a kezdőbetűi után mindenütt csak DES-ként emlegetett amerikai Adat Titkosítási Szabvány (Data Encryption Standard). Napjaink rendszerei: A DES tulajdonképpen egy elektronikus kódkönyves eljárás, ahol a „szótár” 264 darab címszót tartalmaz. Az üzenetet csupa 0 és 1-es jegyet tartalmazó bináris sorozattá alakítjuk a kiinduláshoz, s ezt feldaraboljuk 64 számjegy hosszúságú szakaszokra, ún. blokkokra. A kódkönyv mind a 264 lehetőséget megengedi címszóként, és minden blokkhoz egy ugyancsak 64 hosszúságú bináris sorozatot rendel hozzá. Két 264 (1019) darab elemet tartalmazó halmaz közti tetszőleges kölcsönösen egyértelmű megfeleltetés nem túl praktikus, ezért a DES egy mindössze 56 bit hosszúságú kulcs és sok-sok egymást követő művelet segítségével állítja elő az egyes bináris sorozatokhoz tartozó rejtjelezett blokkokat, és hasonló módon tudja dekódolni is őket. Maga a tulajdonképpeni algoritmus 16 egymást követő titkosítási fordulót tartalmaz, ahol az egyes körök 4 bit hosszúságú darabokon végzett helyettesítésekből és keverésekből állnak. Az egyes fordulók szabályozására 48 bit hosszúságú kulcsokat ír elő a szabvány, amelyeket az 56 bites teljes kulcsból állít elő. A DES eljárást az IBM készítette el 1974-ben az Amerikai Szabványügyi Hivatal (National Bureau of Standard, NBS) második nyilvános felkérésére, amelyben polgári célú felhasználásra szánt számítógépes titkosító eljárás tervezését kérte. Alapkövetelmény volt, hogy az eljárást részleteiben is nyilvánosságra lehessen hozni anélkül, hogy ezáltal gyengülne a rábízott információk biztonsága. Az IBM tervezet a cég egy régebbi Lucifer nevű titkosító eljárásának volt módosított változata, amely 128 bites kulccsal dolgozott. A DES eredeti változata még 16 * 48 = 768 bitnyi kulcs használatával számolt, vagyis mind a 16 körben egymástól függetlenül megválasztható 48 bites kulcsokkal dolgozott volna. Azonban az Amerikai Nemzetbiztonsági
Hivatal (National Security Agency, NSA), akinek a szabványt hozzájárulás végett be kellett mutatni, ragaszkodott ahhoz, hogy a DES titkos kulcsát 56 bitre csökkentsék, és ebből a rövidebb sorozatból állítsák elő az egyes fordulók során használt 48 bites kulcsokat. Az NSA ezen kívül még néhány a tervezés során felhasznált elvet és elméleti eredményt is titkosnak minősített. Végül az egész eljárást teljes részletességgel megjelentette az NBS 1977-ben, hogy az még abban az évben szabványként hatályba is lépjen. Születésétől kezdve viták övezték a DES biztonságát. A kétkedők elsősorban a kulcs rövidségét tették kifogás tárgyává, mivel szerintük a "mindössze" 256 lehetséges kulcsot végigpróbálgatva (egészen addig, amíg a visszafejtés után értelmes üzenetet nem kapunk) biztosan megfejthető a módszer, s ehhez az ún. nyers erővel végrehajtott támadáshoz szükséges idő és műveletigény alig haladja meg a kivitelezhetőség határát. Az ellentábor, amelyet az NBS felkért a DES védelmezésére, vadul optimistának ítélte a kritizálók becsléseit, és végül az az álláspont kristályosodott ki, hogy legalább 10 évig biztonságosnak tekinthető az algoritmus. A 10 év elteltével újabb 5 évre megerősítették a szabványt, s noha azóta a számítógépek teljesítménye megsokszorozódott, mindmáig nem ismeretes semmilyen sikeres támadás a DES ellen, és a módszer olyan gyengeségére sem derült fény, amelynek kihasználásával az összes lehetséges kulcs végigpróbálgatásánál lényegesen gyorsabb megtörési algoritmus kínálkozna. A szakértők között általános az egyetértés, hogy a DES egy kivételesen jól sikerült rejtjelező algoritmus egy szerencsétlenül rövidre választott kulccsal. Egy bit lehet 0 vagy 1, 1 bájt 8 bit, 8 bájt van, az összesen 64 bit. A DES azonban csupán 7 bitet használ bájtonként, mivel minden egyes bájtban egy bitet figyelmen kívül hagy. Így jön ki az 56 bit. 256 lehetőség, így a DES titkosítása 56 bit erősségű. Korlátai: Ha csak betűket használunk a kódoláshoz, akkor a megfejthetőség jelentősen lecsökken, hogy ez ne történjen meg előírták egy jelszószabályzatban, hogy bizonyos speciális jeleket és számokat is kötelező használni. Ha ezt betartják, 72 billiónál kicsit több kulcs van, és ha a számítógép percenként egymillió kulcsot tud kipróbálni, akkor 137096 év alatt lehet megfejteni a kulcsot. Ha csak betűket használunk, akkor ez az idő 14 óránál kevesebb időbe telik. Habár a DES hosszú ideig megfejthetetlennek tűnt, a technika gyors fejlődésével ez a feltételezés megingott. Az RSA Security nevű cég a 90es évek végétől elkezdett DES-feltörő versenyeket szponzorálni, melynek feladata az algoritmussal védett adat minél gyorsabb visszafejtése volt. A 3. versenyen már 22 óra 15 perc alatt feltörték egy géppel. Ennek ellenére még ma is sokhelyen használják a DES-algortimust az adatok védelmére. A viharos fejlődés során kifejlesztették a DES alapján a tripla DES-t (3DES), ami 3szorosan biztonságosabb, mint a DES. A 3DES algoritmus a kódolási művelet során elvileg 3 különböző kulcsot használ. Így a kulcshosszúság 8ról 24re nő, ami 168 bites titkosítási erősséget jelent. Maga a titkosítási eljárás pontosan ugyanaz, mint a DES esetében, de 3szor egymás után hajtódik végre. A nyílt szöveget először az első kulcs segítségével kódolja. Az eredményt a második kulccsal ismét titkosítja (valójában a DES visszafejtő algoritmusár használja). Ezután a 3.dik kulccsal ismét kódolja a kapott adatot. Ezért a tripla elnevezés. Korlátai: lassabb a DESnél. Érdemes mind3 kulcsot különbözőnek választani. Ha az első 2 kulcs azonos, akkor a DES egy lassabb változatáshoz jutunk. Ezt akkor használják, ha egy csak DES kódolást ismerő eszközzel kell a 3DES kódolást használó eszköznek kommunikációs csatornát kiépítenie. A jelenlegi gyakorlatban az első és a 3. kulcs egyezik meg.
Nyilvános kulcsú rejtjelezési eljárások 1) Titkos vs nyilvános kulcsok A titkosítási rendszerek évezredeken át a következő sémára épültek: Üzenet forrása
Titkosító eljárás
visszafejt és
Üzenet célja
ellenség Védett csatorna Kulcs generálása
Közös eleme valamennyi titkos kulcsú rejtjelezési rendszernek az a védett csatorna, amelyen át a titkos kulcs generálása után eljut az üzenet címzettjéhez, rejtve az ellenfél kíváncsi szemei elől. Azt hangsúlyozva, hogy az ilyen típusú rendszereknél a kódoláshoz és a dekódoláshoz ugyanazt a kulcsot használják, szokták őket egy-kulcsos vagy szimmetrikus rendszereknek is nevezni. A kulcs teljes biztonságban való eljuttatása azonban a legtöbb esetben nagy gondot okoz, ráadásul megsokszorozódva jelentkezik a probléma a kiterjedt számítógépes hálózatoknál, ahol sokféle összetett hozzáférési lehetőség és jogosultság él egymás mellett. Ilyen helyeken, különösen akkor, ha a közvetített nagy mennyiségű információ miatt a kulcsokat is viszonylag gyakran kell cserélni, a kulcsok szétosztása és kezelése igen komoly probléma lehet. Erre a problémára kínál roppant elegáns megoldást a nyilvános kulcsú rejtjelezés, amely titkos kulcs átadása nélkül hoz létre gyakorlatilag megfejthetetlen titkosító rendszereket. Először Diffie és Hellmann írták le a rendszer működésének elvét 1976-ban megjelent cikkükben, és javaslatot tettek egy ilyen eljárás konkrét megvalósítására. üzenet
kódolás
dekódolás
üzenet
ellenség
Nyilvános kulcs
Titkos kulcs
A módszer az egész folyamat során két kulcsot használ. A kulcspár egyikét a fogadóállomás ami egyben a generálás helye -, mélyen titokban tartva őrzi, míg a másik kulcsot - akár azt nyilvánosságra is hozva - átküldi a feladónak. A két kulcs egy párt alkot, tehát a nyilvános kulccsal kódolt üzenetet csak a hozzátartozó titkos kulccsal lehet megfejteni, és logikus módon pusztán a nyilvános kulcsot ismerve sem az eredeti szöveget, sem a titkos kulcsot nem lehet meghatározni.
2) „Egyirányú” függvény A nyilvános kulcsú rendszerek leírásához két fogalmat vezettek be: Egyirányú függvénynek (one-way function) tekintik az olyan f függvényeket, amelyek helyettesítési értékét minden az f értelmezési tartományába eső x-re könnyű kiszámítani, viszont lényegében minden az f függvény értékkészletébe eső y esetén gyakorlatilag meghatározhatatlan az az x, amelyre y = f(x). Fontos, hogy a függvény invertálásának kivitelezhetetlensége az y-hoz tartozó x meghatározásához szükséges számítások elvégzésének hallatlanul nagy időigényén alapszik. (Az üzleti életben kezelt adatokra jellemző, hogy általában rövid idő alatt elavulnak, elvesztik jelentőségüket, hiszen senkit sem aggaszt, hogy valaki néhány ezer év elmúltával tudomást szerezhet egy pénzügyi átutalás részleteiről.) A bevezetett második fogalom az ún. csapóajtós egyirányú függvény (trap-door oneway function), amelyet az alábbiak jellemeznek: Jelölje z a titkos kulcsot (z eleme N). Legyen fz olyan invertálható függvények egy családja, hogy z ismeretében könnyű olyan Ez és Dz eljárásokat találni, amelyek gyorsan számítják ki fz(x) illetve fz-1(y) értékét minden lehetséges x-re és y-ra; azonban gyakorlatilag minden szóbajöhető y-ra fz-1(y) praktikusan kiszámíthatatlan még akkor is, ha Ez ismert. Ez a definíció, akárcsak az előző, nem tekinthető matematikailag egzaktnak, hiszen a „majdnem minden” és a „gyakorlatilag kiszámíthatatlan” eléggé homályos fogalmak, mégis mindenki számára világos, hogy konkrét esetben körülbelül mit is kell érteni alattuk. Az első típusba tartozó függvényeknél a célkitűzés egyértelmű, de a gyakorlati felhasználhatóság még eléggé talányos; a második esetben azonban már nyilvánvaló a felhasználási lehetőség. Ilyen függvények konstruálására azóta számtalan javaslat született, amelyek közül jónéhányról szinte azonnal kiderült, hogy valójában a vártnál könnyebben invertálhatók és így céljukat nem érhetik el, míg néhány ígéretesnek bizonyult. Mindmáig azonban egyikről sem sikerült bizonyítani, hogy a függvény valóban egyirányú, illetve csapóajtós egyirányú függvény. A legnevezetesebb javasolt eljárások a Diffie-Hellmann féle diszkrét exponenciális függvény , Merkle-Hellmann féle ún. „hátizsák” (knapsack) kombinatorikus problémán alapuló eljárás, a Rivest-Shamir-Adleman féle, az alkotóik kezdőbetűi után mindenütt RSAként emlegetett módszer , valamint El Gamal diszkrét logaritmusos eljárása. Ezek közül mindmáig messze az RSA módszer bizonyult a legsikeresebbnek és a legnépszerűbbnek. Alapötlete az a tény, hogy két megfelelően nagy prímszám szorzatát könnyedén ki tudjuk számolni, viszont összehasonlíthatatlanul több számítást igényel csupán a kapott szorzat ismeretében a két prímtényező meghatározása. Ezt az egyirányú függvényt használja a rendkívül elegáns RSA eljárás. Az RSA algoritmus jóságát támasztja alá, hogy negyed évszázada nem sikerült hatékony törési módszert találni ellene, mindazonáltal biztonsága matematikailag nem bizonyított. Többek között ezért is érdemes figyelmet szentelnünk a vetélytársaknak. Az RSA-nál mind a titkos, mind a nyilvános kulcs egy-egy számpár, ahol az egyik szám a modulus (tipikusan 512-4096 bit hosszú szám), a másik pedig egy ennél kisebb (bithosszúságában tehát maximum ekkora) egész szám, az exponens. Az RSA kódolás lényege, hogy a kódolandó adatot modulárisan hatványozzuk, a kitevő a nyilvános exponens. A dekódolásnál szintén moduláris hatványozás történik, de ebben az esetben a kitevő a titkos exponens. Nyilvános kulcs: (e, m) Titkos kulcs: (d, m) Kódoló függvény: E(x) = xe mod m
Dekódoló függvény: D(y) = yd mod m Az RSA kulcsgeneráláshoz két nagy prímre van szükségünk, ezek szorzata adja ugyanis a modulust. A nyilvános exponens értéke szabadon választható, a titkos exponens ebből, valamint a két prímből kerül kiszámításra. A művelet kritikus pontja a nagy prímek előállítása. A gyakorlatban használt módszerek általában úgy keresnek prímet, hogy választanak egy nagy véletlen számot, majd tesztelik, hogy összetett szám-e. A használt tesztelési módszerek olyanok, hogy amennyiben pozitív választ adnak, akkor a szám biztosan összetett, a negatív válasz jelenése azonban mindössze annyi, hogy a szám lehet prím. Ha a tesztet mindig különböző paraméterezéssel megfelelően sokszor lefuttatjuk, és mindannyiszor negatív választ kapunk, akkor az ismétlések számának függvényében annak a valószínűsége, hogy a szám nem prím, tetszőlegesen kicsire csökkenthető. Ekkor a gyakorlatban el szokták fogadni a számot prímnek. Amennyiben a tesztelés során valamikor pozitív eredményt kapunk, a számot el kell dobni, és egy újabb véletlen számmal kell próbálkozni. A módszer jellegéből következik, hogy a kulcsgeneráláshoz szükséges idő nem ugyanannyi minden esetben, hanem nagy mértékben függ a „szerencsétől”, vagyis attól, hogy milyen véletlen számot sikerült sorsolnunk. Az RSA kódolásnál használatos gyorsító eljárás, hogy a nyilvános exponens értékét (amit amúgy is szabadon választhatunk meg) kicsire választjuk, hiszen ekkor a kódoláskor csak kis kitevőre kell emelni a kódolandó adatot. Veszélyes azonban nagyon kicsire (pl. 3-ra) választani ezt az értéket, mert ez lehetőséget ad bizonyos típusú támadásokra ennek ellenére azonban sajnos néhány rendszer él ezzel a választással. Jó és szintén elterjedt az e=65537 választás, ez az érték ugyanis kevés 1-est tartalmaz (65537 = 10001h), elegendően kicsi ahhoz, hogy a kódolás még gyors legyen, de ennél az értéknél az említett támadások már nem működnek. Az RSA algoritmus biztonságosságát a modulus mérete határozza meg, jelenleg biztonságosnak tartott az 1024 bites modulus használata. A modulus emellett befolyásolja még a maximális kódolható adatméretet, amelynek a kódoló algoritmusból következően minden esetben kisebbnek kell lennie a modulusnál. ECC (Elliptic Curve Cryptography): , az elliptikus görbék pontjain értelmezett csoport felett működik. Matematikai háttere sokkal bonyolultabb, mint pl. az RSA-é, cserébe viszont az ellene használható törő algoritmusok is lassabban működnek. Ennek köszönhetően az ECCnél egy adott biztonsági szint eléréséhez sokkal kisebb kulcsméretre van szükség, mint az RSA-nál, vagyis az „egy kulcsbitre jutó biztonság” értéke nagyobb. Noha az eddig elmondottak alapján a nyilvános kulcsú rejtjelezés praktikusabbnak tűnik titkos kulcsú vetélytársánál, a gyakorlatban mégis jónéhány probléma nehezíti felhasználását. Hitelesítés Legtágabb értelemben a hitelesítés feladata az információ integritásának biztosítása. Szűkebben a hitelesítés az a folyamat, amely során egy információ fogadója megállapítja, hogy az információ feladója valóban a küldeményben jelzett fél, és valóban olyan állapotban érkezett meg az üzenet, mint amilyenben azt feladták. A rejtjelezési és hitelesítési eljárások egymáshoz való viszonyának illusztrálására találó a következő hasonlat: a küldött üzenet csomagolása (boríték, doboz, stb.) azonosítható a rejtjelezési eljárásokkal, mivel mindkettő célja az üzenet illetéktelen olvasásának megakadályozása; a pecsétet pedig a hitelesítési eljárásokkal állíthatjuk párhuzamba, mivel mindkettő az üzenet sértetlenségét és eredetiségét igazolja. Konkrétabban a hitelesítési eljárásoknak két kommunikáló fél esetében lényegében a következőket kell garantálniuk:
1. a felek között áramló információkat senki sem módosíthatja; 2. egyik fél nevében se léphessen fel senki más, aki ezzel a másik félben azt a látszatot keltheti, mintha kommunikációs partnerétől kapott volna egy üzenetet; 3. egyik fél se legyen képes a partnerétől megkapott közlés letagadására; 4. egyik fél se állíthassa, hogy partnerétől kapott egy olyan közlést, amit valójában csak saját maga talált ki. Hosszú ideig nem is foglalkoztak a hitelesítés kérdésével önállóan, mivel a rejtjelezési eljárásokat elégségesnek tartották az információ integritásának megóvására. Elképzelésük szerint ugyanis egy biztonságos rejtjelezési eljárással védett információt aligha lehet úgy módosítani, hogy értelmes maradjon a közlés. Továbbá a közös titkosítási kulcs ismerete nélkül hamis információ előállítása is gyakorlatilag lehetetlen. Ezen elképzelések alapján már szabályosan elküldött közléseket sem lehet megtévesztés céljából újra elküldeni a fogadónak akkor, ha minden közléshez más titkosítási kulcsot használnak. Azonban főleg a számítógépes hálózatok elterjedésével a közlésre szánt információ mennyisége ugrásszerűen megnövekedett, és a számítógépek képtelenek voltak a biztonságos személyazonosításra. Ezért a gyakorlatban gyorsan ráébredtek, hogy bár a rejtjelezési módszerek alapjai lehetnek a hitelesítési eljárásoknak, de a hitelesítéshez önmagukban a rejtjelezési eljárások nem elegendőek. A kutatások először az előzőekben leírt négyes csoportosítás első két pontjára irányultak. Ez azzal magyarázható, hogy a hadseregen belül az egyes testületek, személyek egymástól nem tartottak, mivel az egyes feleknek általában nem állt érdekében egymás kicselezése. Ezen elgondolások alapján születtek meg a tisztán egy kulcsos rejtjelezési eljárásokkal dolgozó hitelesítési módszerek. A hitelesítési folyamatban résztvevő felek: Simmons a hitelesítési folyamatban négy szereplőt különböztet meg: az üzenet küldője; az üzenet címzettje; a küldemény eljuttatásáért, annak szabályszerűségéért felelős személyek és azok, akik küldő és címzett (3. és 4. pont) közötti vita esetén a döntőbíró szerepét játsszák. (Például hálózatok esetében a tranzakciókat nyomonkövető személyek); kívülálló fél, aki az üzenet hamisításában illetve módosításában érdekelt. Megjegyzendő, hogy ez a négy fél nem feltétlenül természetes személy, hanem gépek, automaták, stb. is lehetnek. Közvetve azonban ezek mögött mindig valamilyen emberi szándék (vagy esetleg tévedés) húzódik meg, mert a gépeknek, automatáknak nincs önálló akaratuk. Nyilvánvalóan a felsorolt négy fél megtévesztési és csalási lehetőségei eltérőek. A kommunikációs csatornákért felelő és ellenőrző személyzet jelentős ismeretfölénnyel rendelkezik a többi féllel szemben, ami visszaélések forrása lehet. A címzett és a küldő a fejezet elején leírt 3. és 4. pont szerint tehetnek szert nyereségre. A kívülállók rendelkeznek ilyen szempontból a legkevesebb induló információval. Ők elsősorban az információáramlás figyeléséből tehetnek szert a sikeres csaláshoz szükséges információra. Az üzenet címzettje, a kommunikációs rendszer felelősei és a kívülálló ellenségek csalásait aszerint szokták osztályozni, hogy hány üzenet megfigyelése után következik be konkrétan a csalás. Amennyiben egy üzenetet sem figyel meg a zavaró fél, megtestesítésről (impersonation) beszélnek. Vagyis a csaló egyszerűen előállít egy üzenetet abban a reményben, hogy a címzett azt hitelesnek fogadja majd el. Ilyenkor csak a hitelesítési eljárások ismeretében fogalmazza meg a hamisított üzenetet.
Amikor a csaló egy üzenetre csap le, és azt módosítja illetve cseréli ki teljesen más üzenetre, akkor üzenet helyettesítésről (substitution) beszélünk. Összefoglalóan egy csoportba sorolja az egynél több üzenet megfigylése utáni hamis üzenet előállítást és üzenet helyettesítést. Megjegyzendő, hogy az üzenet küldőjénél nem alkalmazza az előző bekezdésben leírt hármas tagolást, helyette csak a már elküldött üzenet későbbi letagadását említi, ami kiegészíthető egy el sem küldött üzenet feladásának állításával. Ezenkívül a küldő fél tulajdonképpen még azt is állíthatja hamisan, hogy az általa elküldött üzenetet, amelyet a címzett hitelesnek ismert el, más állapotban adta fel. Rövid áttekintés a hitelesítés történetéről A hitelesítési eljárások az üzenetet többlet információval látják el, ami megnyilvánulhat az üzenet fizikai meghosszabbodásában és az üzenet átstruktúrálásában. Az üzenet transzformáltja egyrészt utal a küldőjére, másrészt jelzi esetleges illegális manipulációját. A hitelesítés történhet rejtjelezés nélkül, ilyenkor maga az üzenet bárki számára olvasható, azonban az a többletinformáció, amivel az üzenetet felruházták, azonosítja a küldőjét, és utalna az üzenet jogtalan módosítására. Ebben az esetben a hitelesítés tisztán jelenik meg. Az egyik legegyszerűbb példa erre egy szöveges üzenetnél az ASCII kódjaik egyszerű összegzése, és ezen ellenőrző összeg hozzáfűzése az üzenethez. Ekkor a címzett az ellenőrző összeg helyessége esetén valószínűsíti, hogy senki sem manipulálta a feladott üzenetet útközben (ez az eljárás ilyen formában semmilyen jelzést nem ad a feladó személyére nézve). Az ilyen ellenőrző összeg egyszerűsége folytán nyilvánvalóan nem nyújt komoly védelmet, mivel bárki könnyen módosíthatja ezen eljárás ismeretében az ilyen ellenőrző összeget is. Ebből a példából is látszik már, hogy a hitelesítés szoros kapcsolatban áll a hibajelző eljárásokkal, amire majd még visszatérünk. A hitelesítés történhet rejtjelezéssel kombinálva, amely során a rejtjelező eljárás állít elő az alkalmazott titkosítási kulcs alapján a szöveg rejtjelezésével egyidejűleg valamilyen többletinformációt. Erre példa a már említett DES CBC és CFB változata. A hitelesítéshez, mint már említettük, az üzenet mellett mindenképpen valamilyen többlet információ szükséges. E többlet információ egyik módja az eredeti üzenet blokkokra bontása és minden egyes blokkhoz egy kulcs függvényében néhány plusz adat hozzárendelése. A fogadó az üzenet minden blokkjára a megfelelő kulcs segítségével megnézi, hogy vajon helyesek-e a plusz adatok. Amennyiben a közösen használt kulcson csak egyetlen másik személlyel osztoznak, akkor a küldő azonosítása is megoldott. (Nyilvános kulcsú eljárás használata esetében pedig a megfelelő titkos kulcsot csak egy partner ismeri.) Érdekesek a már sokszor említett CBC és CFB DES variánsok, amelyeknél az induló kulcs megadása után a pluszinformáció „végigcsurog” a teljes szövegen, így az üzenet titkosítása már olyan módon történik, hogy egy blokk titkosítására az összes már megelőzően titkosított blokk kihatással van. Vagyis, ha egy helyen megsérül az üzenet, akkor a sérülés pontjától kezdve már nem a helyes üzenetet kapjuk vissza, hanem nagyon nagy valószínűséggel értelmetlen szöveghez jutunk. Ebben a megoldásban a hitelesítéshez szükséges többletinformáció nem jár együtt az információ hosszának megnövekedésével. Egy másik elképzelhető megoldás szerint az üzenetben az összes képezhető adatsor közül csak kitüntetetteket használnak. Így ha a szabályokat nem ismerő hamisító olyan adatsort is használ, ami nem megengedett, akkor az információ biztosan nem hiteles. Szöveges közlés esetén ez azt jelenti, hogy a helyes üzenetben nem használhatunk bármilyen szavakat és mondatokat. A múlt században a kereskedelemben táviratok továbbítására a A. C. Meisenbach által kifejlesztett Acme Code volt elterjedve, amely 1500 darab ötös karaktersorozatból állt, amelyek legalább két betűhelyen eltérőek voltak. Az Acme kódot eredetileg adattömörítésre használták, (ami a távirati költségek csökkentését jelentette),
továbbá az adatátvitel során felmerülő hibák észlelésére is alkalmas volt. Tulajdonképpen az Acme kód már a hitelesítés egy formája volt. Feltétlenül biztonságosnak mondunk egy rendszert, amennyiben az ellenfél nem képes nagyobb valószínűséggel egy hamis információ elfogadtatására, mint abban az esetben lenne képes, ha véletlenszerűen választana egy üzenetet az üzenetek halmazából (még a hitelesítő eljárás ismeretében is). Ezt másképpen úgy is kifejezhetjük, hogy a számítások növelésével sem képes esélyeinek növelésére. Megkülönböztethetünk bizonyítottan biztonságos és számításilag biztonságos hitelesítési rendszereket. Az utóbbiaknál a hitelesítési eljárás biztonsága egy probléma nagy számításigényéhez kapcsolódik, ami azt jelenti, hogy a jelen számítógépeivel a hamisításhoz szükséges számítások messze nem végezhetők el releváns időn belül. (A megoldandó feladat gyakran egy rejtjelezési eljárás kulcsának meghatározása). A bizonyítottan biztonságos rendszereknél a számítástechnikai háttér tehát nem játszik szerepet. Bizonyítottan (elméletig) biztonságosnak mondható rendszerek léteznek (amennyiben értelemszerűen biztonság alatt feltétlen biztonságot értünk). Egy egyszerű példa: az ellenségek ismerik az összes üzenetváltási formátumot, azonban a két üzenetváltó fél titokban tartja, hogy épp melyik formátumot fogja használni (vagyis kívülálló szemszögéből véletlenszerűnek tekinthető a formátum kiválasztása). Abban a példában n fajta üzenet esetén az ellenfél számára pontosan 1/n annak a valószínűsége, hogy meg tudja téveszteni az üzenetváltó feleket. Amennyiben az ellenfél legfeljebb csak egy üzenetváltás alapján hamisít, akkor feltétlenül biztonságos rendszerekre érvényes az először Gilbert, McWilliams és Sloan által levezetett tétel, amely szerint az ellenfél sikeres megtévesztésének valószínűsége legalább akkora, mint a hitelesítési rendszerben használt kódolási szabályok (pl. formátum, lehetséges kulcsok stb.) számának reciprokából vont négyzetgyök: 1 P( si ker es _ megtévesztés ) kódolási _ szabályok _ száma Említésre méltó a hitelesítés és a hibajavítás közötti összefüggés. Azt szokták mondani, hogy a hitelesítés a hibajavítás matematikai duálisa. Amennyiben valamilyen csatornán keresztül adatátvitel folyik, és az érkezéskori ellenőrzés eltérést jelez, akkor ez hitelesítéskor az adatok visszautasítását vonja maga után, míg hibajavítás esetén az „ellenőrző összeg” segítségével megkíséreljük az eredeti adatok rekonstruálását. Mind a két esetben redundáns információt csatolunk az üzenethez. A jó hibajavító kódot úgy kell megválasztani, hogy segítségével minél nagyobb valószínűséggel lehessen megtalálni az eredeti információt. Ezzel szemben a jó hitelesítő kódot úgy kell megalkotni, hogy minél kisebb valószínűséggel fogadjunk el egy hamisított információt. A hitelesítés gyakorlata Mint már említettük a hitelesítés építhet a titkos kulcsú és a nyilvános kulcsú eljárásokra. A titkos kulcsú esetben, akárcsak a rejtjelezésnél, a kulcs titkossága teszi lehetővé a hitelesítést. A nyilvános kulcsú eljárások érdekessége, hogy hitelesítésnél a rejtjelezéssel szemben a kulcsok alkalmazási sorrendje felcserélődik. Az azonosításhoz az illető elküldi üzenetét saját titkos kulcsával titkosítva. Így a címzett a feladó nyilvános kulcsával leellenőrizheti a feladó személyét. Egy titkos kulccsal elküldött jelsorozatot bárki megtekinthet (aki a nyilvános kulcsot ismeri), azonban csak egy személy állíthatja elő, ez szükséges az azonosításhoz. Ezzel szemben egy nyilvános kulccsal kódolt jelsorozatot csak az üzenet címzettje tudja elolvasni, viszont bárki előállíthatja azt, ez pedig a titkosításhoz szükséges.
Tehát a hagyományos üzenet hitelesítési eljárások nem alkalmasak akkor, ha a feladónak később érdekében állhat az üzenet feladásának letagadása, illetve a fogadónak érdekében állhat olyan hamis üzenetek képzése más nevében, amelyet fel sem adtak részére. Ezt a problémát hivatott feloldani az elektronikus aláírás. Ilyenkor a kézi aláíráshoz hasonlóan a feladó a küldött információt olyan jellel látja el, amelynek előállítására csak ő képes. Természetesen a jel olvasására (és csakis az olvasására) a fogadó is képes. Így a fogadó nem képes az üzenetet a feladó „névjegyével” ellátni, ezt a bizonyos megkülönböztető jelet egyedül a feladó képes előállítani. Ezért a feladó később nem is tagadhatja le a küldemény feladását, mivel csak ő volt képes ezen jel létrehozására. A leírtak után nem meglepő az elektronikus aláírás elnevezés. A digitális aláírás egy olyan algoritmus eredményeként jön létre, amely bármilyen típusú adatból egy számsorozatot készít. Az elektronikus aláírás kivitelezésére a nyilvános kulcsú rejtjelezési eljárások alkalmasak. Az elektronikus aláírás még nem helyettesítheti a kézi aláírásokat, mivel a jogrendszer nem fogadja el a kézi aláírással egyenértékű hitelesítési eszközként. Az MD5 algoritmus Az előzőekből látható, hogy a hitelesség (feladó azonosítása) és a sértetlenség (adat átvitel során nem változott meg) az Internet megjelenésével egyre fontosabbá vált. Az üzenetlenyomat 5 (MD5 = message digest 5) nevű algoritmus az egyik legjobb olyan módszer, amely képes a fenti 2 követelmény kielégítésére. Ezt a kivonatoló algoritmust úgy tervezték, hogy a kivonatolt információ alapján elkészítsen egy rögzített hosszúságú adatot. Ezt az adatot nevezzük vagdaltnak (hash value), lenyomatnak vagy üzenetkivonatnak. Ez az MD5 által nyújtott biztonság kulcsa. Rivest 1994-ben dolgozta ki ezt az algoritmust, amely olyan egyirányú kivonatoló algoritmus, amely bármilyen hosszúságú adatot képes fogadni, és eredményül egy 128 bites visszaállíthatatlan lenyomatot készít róla – ezt nevezzük lenyomatnak. A lenyomat alapján nem lehet visszafejteni azt az adatot, amelyből készült. A gyakorlatban ez azt jelenti, hogy lehetetlen az MD5 lenyomatból visszaállítani az eredeti állomány tartalmát…. Ezért nevezzük egyirányúnak. Az MD5 nem titkosítja vagy változtatja meg az adatot. Ehelyett egy olyan lenyomatot készít belőle, amelynek segítségével az adat hitelessége és sértetlensége megállapítható. Mivel nem végez titkosítást, így az MD5 algoritmus szabadon használható és terjeszthető a világ minden részén. Az MD5-tel már mindenki találkozhatott, aki használt számítógépet, csak nem biztos, hogy tudott róla. Komoly szerepe van a hálózatok világában, számos módon alkalmazzák: Állományok letöltése internetről (szoftverellenőrzés): MD5 lenyomatot használhatjuk a sértetlenség bizonyítására. Letöltés után egyszerűen ki kell számolni a saját gépünkön a lenyomatot, és össze kell azt hasonlítani az állományt elhelyező által szintén megadott értékkel. Egyezés esetén az állományt senki sem módosította. Rendszer sértetlenségének bizonyítására: ellenőrizhető, hogy megváltoztak-e a rendszerállományok. Ha egy rendszerállomány megváltozik, akkor a lenyomatok nem egyeznek, és a rendszergazda észlelheti a beavatkozást. Az MD5-höz hasonló egyirányú kivonatoló eljárások esetén a sértetlenség ellenőrzésekor az általunk kiszámított lenyomat értékét kell összehasonlítani a kapott lenyomattal. Ezt az összehasonlítást nevezzük lenyomat-ellenőrzésnek (hash check), a kapott értékre pedig az ellenőrző összeg (checksum) néven is hivatkozhatunk. Az ellenőrzési folyamat védelmet nyújt a vírusokkal és trójai programokkal szemben, hiszen ha ilyenek fertőznék meg a letölthető kódot, akkor a lenyomatok nem egyeznének meg. Ezt tekinthetjük digitális előírásnak. A kereskedelemben a legtöbb hitelesítő módszernek is
kulcsösszetevői. Használhatóságának feltétele, hogy ne legyen feltörhető vagy hamisítható. Ez persze nem teljesen megvalósítható, így a gyakorlati feltételek: legyenek önmagukban ellenőrizhetőek, bonyolult legyen feltörésük, olyan módon legyenek megtervezve, hogy erősségük növelhető vagy fejleszthető legyen. A DES esetében is láthattuk, hogy a technológia fejlődésével könnyen alacsony szintre süllyedhet egy módszer biztonsága, ha nem teszünk megfelelő óvintézkedéseket vagy nem alkalmazkodunk a megnövelt biztonsági igényekhez. PGP Pretty Good Privacy A Pretty Good Privacy (PGP) egy nagybiztonságú titkosító program, mely sokféle operációs rendszer alatt fut. Lehetővé teszi adatok és üzenetek autentikus, titkos és irányított célbajuttatását. Az irányított ebben a szóhasználatban 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ó bizonyos lehet abban, hogy az adatokat ki adta fel, és hogy az adatok nem módosultak. Mindehhez nincs szükség arra, hogy a felek 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 szintentartsák. A PGP-nél egyáltalán nincs szükség biztonságos csatornára a kulcsok terítéséhez. Mindez azért van, mert a PGP egy új, ún. "nyilvános kulcsos" titkosítási eljáráson alapul. A PGP-ben együtt vannak a Rivest-Shamir-Adleman (RSA) algoritmuson alapuló nyilvános kulcsos titkosítás előnyei a hagyományos eljárások sebességével, a kivonatokon (message digest, MD) alapuló digitális aláírással, a titkosítás előtti tömörítéssel, valamint az ergonomikus környezettel és kulcs-adatbázis kezelő funkciókkal. A PGP a széles tömegek számára készült. 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ú hash függvény állít elő az üzenet alapján. Ez a kontroll-összeggel vagy a CRC értékkel analóg abban a tekintetben, hogy jelzi az üzenet megváltozását. Ugyanakkor a kivonatot létrehozó eljárás kizárja, hogy a kalóz olyanformán módosítsa az üzenetet, hogy az eredetivel megegyező kivonat jöjjön létre (ami az összeg és a CRC esetében lehetséges). Ezt a kivonatot kell a küldő titkos kulcsával kódolni, ami ezáltal az üzenet elektronikus aláírását adja ki. Az aláírás folyamán az üzenet szövege mellé kerül az aláírás struktúra. Ez az aláíró kulcs-IDjé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 titkos kulcsfájlból. A kulcsfájl-koncepció sarkalatos pontja a programnak. Az egyes kulcsok nem egyenként vannak sok-sok fájlban tárolva, hanem egyetlen kulcsfájl (key ring) 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 használónak két kulcsfájlja van: a nyilvános és a titkos. A nyilvános kulcsfájl esetén lehetőség van az egyedi kulcsok kinyerésére, exportjára, így azokat elküldhetjük ismerőseinknek, akik felvehetik az új kulcsokat saját nyilvános kulcsfáljukba. Történet Phil R Zimmermann az 1980-as évek második felében - amikor újra erősödött a hidegháború úgy gondolta, hogy a világon ki fog törni az atomháború, s az egyetlen hely, ahol biztonságban lehet - családjával - az Grönland. Tüntetésekre járt és egy atombomba-ellenes csoportnak is a tagja volt. Mindez fontos, hogy megértsük miért is vállalkozott arra, hogy megírjon egy ilyen remek kriptográfiai programot.
Zimmermann úgy gondolta készít egy olyan kódoló programot (DES+RSA algoritmus), amelyet még az NSA sem tud visszafejteni. A program 1991-re készült el, amikor is megkérte egyik barátját, hogy tegye ki az Inernetre (eleinte úgy tervezte, hogy fizetős lesz, de később úgy gondolta, hogy mindenki számára elérhetővé teszi). A PGP rohamosan terjedt, több publikáció is megjelent róla. Phil rengeteg levelet kapott, melyben hálálkodtak neki, s több emberjogi szervezet is kitüntette. Eközben Zimmermann két hibát követett el: Az RSA-tól nem kapott lincencet az algoritmushoz (úgy gondolta, hogy majd kegyesek leszek vele és adnak neki egy ingyen licencet) Az amerikai törvények egy kalap alá veszik a kódoló/dekódoló programokat az atombombákkal, rakétákkal és ezek exportja fegyverkereskedelemnek számít... (tehát tilos) 1993-ban Phil-t lakásán megkereste az FBI és - később - fegyverkereskedelem vádjával letartóztatta. Közben az RSA is beperelte, hogy nem kért - jobban fogalmazva vásárolt licencet az algoritmushoz. Eközben előjöttek a PGP hibái, melyeket orvosolni kellett, így Phil megnyitotta forrást, s létrejöhetett egy fejlesztői csapat. Időközben az RSA is meggondolta magát és visszavonta a pert (ekkor már olyannyira el volt terjedve, hogy értelme nem lett volna annyi felhasználót beperelni - gondolom). Végül 1996-ban Phil-t felmentették és az FBI is felhagyott a zaklatással. A PGP 6.5.1-es verzió óta nemzetköziesítik, ami annyit jelent, hogy bizonyos funkicókat eltávolítottak az Amerikai verzióból (6.5.1i-vel jelölik a nemzetközi változatot). A GNU is elkészítette saját PGP-re épülő és azzal kompatibilis programját a GnuPG-t. Aztán - mint ahogy az lenni szokott - "a szálak elkezdtek kuszálódni". A PGP-t megvették (PGP US - Amerikai változat - s létrejött a PGP Corporation), aztán létrejött egy OpenPGP Alliance és ott van még a PGP international (PGPi). Az amerikai változatot CSAK AZ USAban lehet használni, a PGPi-t bárhol a világon, az OpenPGP-re ugyan az vonatkozik mint a PGPi-re.
Összefoglalva A kriptográfia az alkalmazott matematikának a biztonsági célú adattranszformációval foglalkozó ága. A kriptográfiában (adatküldés esetén) a küldő a védelem nélküli információt (sima szöveget) kódolt szöveggé (rejtjelezett szöveg) alakítja át. A címzett a kriptográfiát arra használja, hogy a rejtjelezett szöveget visszaalakítsa sima szöveggé ellenőrizze a küldő azonosságát ellenőrizze az adatok sértetlenségét, vagy ezek valamilyen kombinációját vizsgálja. Sok esetben a küldő és a címzett a kriptográfiai algoritmuson kívül kulcsokat is használ. Bizonyos algoritmusok esetében alapvető fontosságú, hogy a kulcs titokban maradjon. A kriptográfia egyik alapvető problémája a titkos kulcsok eljuttatása a jogosult felhasználókhoz anélkül, hogy felfednék azokat egy esetleges behatoló előtt. Ezt hívják titkos kulcs elosztásnak.
Története A kriptográfia eredetileg írott üzenetek titkosítására alakult ki, de az elv kiválóan alkalmazható a mai világ változó követelményeihez is. Az eljárások működése, bonyolultsága, elterjedtsége alapján a következő négy generációt jelölhetjük ki összefoglalásul:
Első generáció: Az írott történelem kezdeteitől a XVI – XVII. századig elsősorban egyábécés helyettesítő módszereket alkalmaztak (Caesar ábécé) egyszerű helyettesítés. Második generáció: A XVI – XVII. századtól kezdve bonyolultabb, többábécés helyettesítő módszereket alkalmaztak (A XVIII. századtól főként Vigenere). Periodikus helyettesítés Harmadik generáció: A XX. század elejétől a technikai fejlődés lehetővé tette a mechanikus és elektromechanikus eszközök fejlesztését és használatát (Pl.: Enigma). Ezek általában még mindig többábécés helyettesítést használtak, de már nem egyszerűen „több”, hanem „gigantikusan sok” ábécével. Megjelennek a produkciós eszközök is. Többszörös helyettesítés Negyedik generáció: Egyre több produkciós kódoló jelenik meg, és ezzel párhuzamosan gigantikusra nő a használt kulcstér mérete is. A XX. század második felétől az elektronikus számítási teljesítmények robbanásszerűen fejlődnek. Ez a fejlődés napjainkban is tart és lehetővé teszi olyan algoritmusok fejlesztését és használatát, melyek kivitelezése korábban lehetetlen lett volna. Ugyanakkor ez a rohamos fejlődés folyamatosan megkérdőjelezi azokat az algoritmusokat, amelyek kifejlesztését maga tette lehetővé. Jó példa a DES, mert összehasonlítva a korábbi generációk algoritmusaival, sokkal bonyolultabb és biztonságosabb ugyan, más elveken nyugszik, de ma már a számítási kapacitások növekedése miatt az „alap DES” nem nyújt megfelelő védelmet, csak a továbbfejlesztett változatok, mint például a TripleDES a maga 168 bit hosszú kulcsával. (Ilyen tekintetben a nyilvános kulcsú algoritmusok a negyedik és ötödik generáció közé sorolhatjuk, mert megfelelő számítási kapacitással feltörhetőek, de – a titkosító algoritmus architektúrájának megtartása mellett – nagyobb kulcs választásával a biztonság szinte a végtelenségig fokozható.). A negyedik generáció másik fontos ismérve, hogy a titkosítás – a történelem során talán első alkalommal – kilépett a katonai, diplomáciai területről, és a polgári életben is szinte mindenki számára elérhetővé vált. Ötödik generáció: Kvantumelvű titkosítások, amelyek elvei a kvantumfizika törvényeire épülnek. Gyakorlati alkalmazásuk ma még futurisztikus ötletnek tűnhet.
Típusai
Szimmetrikus kulcsú titkosítások o AES (Az Advanced Encryption Standard kiválasztását széleskörben meghirdetett verseny előzte meg. A NIST olyan szimmetrikus kulcsú blokk kódolót keresett, amely 128 bites adatblokkok kódolására képes, és ehhez háromféle kulcsméret használatát teszti lehetővé: 128, 192 és 256 biteset. A kiválasztás szempontjai voltak a kicsi méret, nehéz törhetőség, a gyorsaság és a kis eszközökben való alkalmazhatóság.) o DES o 3DES Biztonságos hash (Olyan függvény, ami tetszőleges hosszúságú bemenetet egy véges hosszúságú (tipikusan pl. 128 bitnyi) kimenetre képez le. Emiatt a leképezés nyilván nem egy-egy értelmű lesz) Aszimmetrikus kulcsú titkosítások o RSA o DSA