A TITKOSÍTÁS ALKALMAZOTT MÓDSZEREI AZ ELEKTRONIKUS KOMMUNIKÁCIÓBAN
HÁLÓZATI ISMERETEK 1 GYAKORLAT BUJDOSÓ GYÖNGYI
FEKETE MÁRTON
2009 Debrecen
2 BEVEZETİ Az Internetben rejtızı óriási lehetıségeket sokan szeretnék kihasználni, ám az utóbbi idıben egyre gyakrabban jelentett betörések, adatlopások és a spam-levelek jelentısen csökkentik a világhálóba vetett bizalmat. Bátran kimondható, hogy az Internetben rejlı óriási lehetıségek kiaknázásában a legnagyobb akadályt a biztonság kérdése jelenti. A vállalati kémkedéstıl, a szabotázstól, a személyes adatok ellopásától, az abból eredı visszaélésektıl való félelem, a levelezésben a személyesség hiánya és a titkos adatokhoz való esetleges hozzáférés együttesen az online mőveletek szkeptikus megítéléséhez vezetett. Ezeknek a félelmeknek némelyike jogos, mások pedig már elveszítették jelentıségüket. Az adatok titkosítására az Internet korszakában számos – és egyre újabb – megoldást találtak már, melyeket megismerve talán szívesebben fordulunk majd a világhálóhoz ügyeink intézéséhez.
A következı oldalakon körüljárom az elektronikus kommunikációban és adatátvitelben alkalmazott titkosítási módszereket, röviden ismertetem azok történetét, az adatokkal való visszaélés néhány meglehetısen friss esetét, majd, elérkezve dolgozatom valódi témájához, bemutatom a titkosítási módszerek elveit, mőködésüket, néhány példát részletesebben is megismertetek az olvasóval, végül a tanúsítványokról is szólok néhány szót. ALAPFOGALMAK Kéziszótár a dolgozathoz Ahhoz, hogy a késıbbiek megértése ne ütközzön szükségtelen nehézségekbe, már az elején ismertetem a késıbb használt fogalmakat és azok jelentését illetve hivatalos angol nyelvő megfelelıjét – gyakorlatilag egyfajta értelmezı szótárt biztosítok az olvasó számára a késıbbiekhez.
Titkosítás (encryption) – A titkosítás olyan matematikai eljárás, melynek során egy üzenetet úgy változtatunk meg felismerhetetlenül, hogy abból az eredeti üzenet csak valamilyen, kizárólag a küldı és a címzett által ismert eljárás segítségével fejthetı vissza.
Kriptogramm (cryptogram) – a titkosítási eljárás eredménye, kódolt információ.
3 Kulcs (key) - A titkosítási folyamat az alkalmazott algoritmustól független, változó része, amely nélkül a titkosított adatfolyamból az eredeti információhalmaz nem állítható vissza.
Kulcspár – egy nyilvános és egy privát kulcs, melyek összetartoznak, így együttes használata lehetıvé teszi a szövegek titkosítását és visszafejtését.
Szimmetrikus titkosítás (symmetric cryptography) – más néven nyilvános kulcsú titkosítás, mely azt jelenti, hogy a titkosításhoz és a visszafejtéshez használt kulcs megegyezik vagy az egyik könnyen kiszámolható a másikból.
Aszimmetrikus titkosítás (assymetric cryptography) – a nyilvános kulcsú titkosítással ellentétben ez a titkosítási módszer egy kulcspárt használ, mely lehetıvé teszi a biztonságosabb alkalmazást.
Kapcsolattitkosítás (link encryption) – az a titkosítási eljárás, amikor egy titkosító egységet helyeznek minden számítógép és a fizikai réteg közé, így minden, a számítógépbıl ki és a –be belépı bit titkosításra/visszafejtésre kerül
HOGYAN TITKOSÍTOTTAK ELEINK? A titkosítás rövid története Régóta igénylik az emberek, hogy az információt olyan módon lehessen kódolni, hogy azt visszafejteni csak az tudja, akinek szánták. Ilyenkor olyan kódolási módszert kell alkalmazni, amit nem hozunk nyilvánosságra, hanem csak az tud, akinek az információt szánjuk. Persze ez még nem elég, hiszen ha a kódolás könnyen megfejthetı, akkor semmit nem értünk el. Ahhoz tehát, hogy tényleg titokban maradjon az az információ, olyan kódolási mód kell, amit nehéz megfejteni. Több ilyen titkosítási módszert alkalmaztak már a világon. Már az ókorban meghatározó igénnyé vált a fontos üzenetek biztonságos eljuttatása a címzetthez, hiszen a titkosítás legkorábbi ismert technikája csaknem háromezer éves. Kr. e. 600-500 körül a héber tudósok már monoalfabetikus (A monoalfabetikus helyettesítésnél ugyanaz a karakterek csakis ugyan azzal a karakterrel helyettesítıdik.) rejtjeleket használtak (például az Atbash). Csupán az ókort tekintve is megfigyelhetjük, hogy rengeteg érdekes kriptográfiai metódus látott napvilágot.
4 A fontosabbakat kiemelve érdemes megemlékezni a szteganográfiáról (palatáblán lévı üzenet lefedve viasszal, i.e. 400 körül), a spártai katonai rejtjelezésként használt szkütaléról (egy sokszögalapú hasábra egy szíjat feltekerve a lapok irányában írták az elrejteni kívánt szöveget, mely a szíj letekerése után érthetetlenné vált), illetve a Julius Caesarról elnevezett Caesar-rejtjelrıl (kettıs kerék elforgatásával minden betőt egy másikkal helyettesíthetünk). A középkor sok újdonságot hozott, bizonyítva az írás elterjedésével párhuzamosan kialakuló egyre nagyobb igényt a minél megbízhatóbb rejtjelezésre. A 800-as években a Korán (elsı ismert szöveges maradvány: 7. század vége) szövegének tanulmányozása közben arab tudósok
a
gyakoriságelemzés
módszerét
kifejlesztve
megfejtettek
monoalfabetikus
helyettesítéssel rejtjelezett üzeneteket. 1499-ben jelent meg az elsı a témával foglalkozó könyv (Johannes Trithemius írta, témája a kriptográfia és a szteganográfia voltak). Ezek után igencsak felgyorsult a nyomtatás és sokszorosítás megjelenése miatt a hasonló témával foglalkozó publikációk száma, ahogy a különbözı rendszerek mennyisége is rohamos mértékben növekedni kezdett. 1586: Kriptoanalízis segítségével bizonyította rá a Babington-összeesküvés résztvevıire bőnösségüket Sir Francis Walsingh. Mivel az újkortól fogva olyan mértékő technológiai fejlıdés vette kezdetét, melynek vívmányai nagyon sok újdonságot hoztak a kommunikáció megszokott csatornáiban, így könnyen érthetıvé válik az is, hogy a titkosítás maga is kulcsfontosságú eleme lett a az elkövetkezendı évtizedeknek. Röviden jellemezve annyit érdemes elmondani a napjainkig tartó korszakról, hogy az elektronikus üzenetküldés és fogadás metódusai, valamint a nagykapacitású számítógépek megjelenése egyaránt sokkal bonyolultabb kriptográfiai eljárásokat hoztak, gyakran a múlt próbálkozásai közül többet is egybeolvasztva, bonyolítva azokat. A digitális aláírás nevezhetı egynek ezek közül – hiszen komoly matematikai módszerek mellett az egyik legrégebbi módja annak, hogy egy dokumentumot egyértelmően egy személy által elfogadott tartalmúnak tudasson a címzett által.
5 MIÉRT VAN SZÜKSÉG A TITKOSÍTÁS FOLYAMATOS FEJLESZTÉSÉRE? Két példa az idén feltört titkosítási módszerekrıl WLAN Japán kutatóknak sikerült a vezetéknélküli hálózatok titkosítására használt WPA protokoll törésére egy olyan módszert kidolgozniuk, amelynek segítségével kevesebb mint egy perc alatt hozzáférést lehet szerezni a szóban forgó módon védett WLAN-okhoz. A felhasználók a törés ellen a WPA utódját képezı WPA2 titkosítási protokollra váltással tudnak védekezni, amennyiben hálózati eszközeik támogatják annak használatát. Elvileg minden 2006 után gyártott vezetéknélküli modulnak ismernie kell ezt a titkosítási módszert, a korai implementációk esetében fellépı kompatibilitási problémák azonban akadályozhatják az átállást.
iPhone 3GS Egy biztonsági szakértı szerint fabatkát sem ér az iPhone múlt hónapban megjelent, legújabb változatának titkosítása. Utóbbit az Apple azért építette be a telefonba, hogy készülékét így tegye vonzóvá az adataik nyers formában történı továbbításától erısen ódzkodó vállalatok számára - a jelek szerint azonban a titkaikat féltı cégek jobban teszik, ha mégis inkább más megoldásoknál maradnak, ha adataikat biztonságban szeretnék tudni. Az éppen forgalmazás alatt lévı élı adatok kifejtéséhez alig két percre van szükség, a telefon teljes memóriáját pedig háromnegyed óra alatt vissza lehet fejteni, melyhez mindössze egy olyan bárki által szabadon letölthetı módosított kernelre van szükség.
TITKOSÍTÁSI MÓDSZEREK A számítástechnikában alkalmazott titkosítás alapelvei A titkosítás olyan matematikai eljárás, melynek során egy üzenetet úgy változtatunk meg felismerhetetlenül, hogy abból az eredeti üzenet csak valamilyen, kizárólag a küldı és a címzett által ismert eljárás segítségével fejthetı vissza.
Miután a következı bekezdésekben bemutatom a szimmetrikus és az aszimmetrikus titkosítás alapjait, néhány példán keresztül ismertetem gyakorlati megvalósításukat.
6 Szimmetrikus titkosítás Ennél az eljárásnál a titkosításhoz és a visszafejtéshez használt kulcs megegyezik, vagy egyik könnyen kiszámolható a másikból.
A szimmetrikus kódolók elınye, hogy az algoritmusok gyorsak, megvalósítható a valós idejőt titkosítás. Hátrányuk, hogy a kulcsot az adatátvitel elıtt valahogy el kell juttatni egyik féltıl a másikig. Mivel a két fél közötti csatorna nem biztonságos, ezért erre valamilyen speciális módszert kell találni. A kulcsot feltétlenül titokban kell tartani. Amennyiben valaki hozzáfér, úgy képes az összes korábbi üzenetet dekódolni, illetve bármelyik fél nevében üzenetet hamisítani. Másik komoly probléma, hogy minden kommunikációs partnerhez különbözı kulcsot kell használni, hisz közös kulcs esetén el tudnák olvasni egymás üzeneteit.
Ismert, ma is használatban lévı algoritmusok: DES, TripleDES (3DES), AES (Rijndael), Blowfish, CAST, IDEA, Twofish, MARS.
Caesar titkosítási módszere A legegyszerőbb példa a szimmetrikus titkosításra a Julius Caesar által egykor használt titkosítás, ahol a szöveg minden egyes betőjét az abc-ben tıle jobbra esı elsı, második, n-edik betővel helyettesítjük.
Vesszük tehát az alfabétum betőit: ABCDEFGHIJKLMNOPQRSTUVWXYZ A teljes alfabétumot mondjuk három hellyel eltolva a következıt kapjuk: DEFGHIJKLMNOPQRSTUVWXYZABC. Így D=A, E=B, F=C, stb. Ha ezzel az eljárással a TITOK szót kódoljuk, a rejtjelezett üzenet WLWRN lesz. A titkosító algoritmus kulcsa pedig, amit a címzettel biztonságos módon tudatni kell, a 3-as szám.
7 DES A DES (Data Encryption Standard) magyarul azt jelenti: adattitkosítási szabvány. A DES egy nyolc input bájtot nyolc output bájtra képezı, az USA-ban kifejlesztett blokkos rejtjelezı algoritmus, mely teljesen publikus. Kulcsmérete 56 bit.
Mára számos cikkben jelent meg az algoritmus korrekt forrásnyelvi leírása is különbözı programozási nyelveken, így gyakorlott programozó néhány órai munkával azt realizálni is tudja. A DES mint rejtjelezı rendszer sok esetben kellı védelmet jelent bizalmas, de nem államtitok körbe tartozó adatok biztonságához, ám manapság csekély kulcsmérete miatt elavultnak tekinthetı, hiszen a vele titkosított adatsorok akár egy otthoni PC-n is rövid idın belül feltörhetık.
Aszimmetrikus titkosítás Mint láttuk, a szimmetrikus eljárás gyenge pontja a titkosítás kulcsa, amit valamilyen megbízható módon kell a címzettel tudatnunk. Ezt a problémát a nyilvános kulcsú titkosító algoritmusok oldják meg, melyek egy összetartozó kulcspárt használnak. Az egyik neve privát, vagy más néven titkos kulcs (private key), ezt - mint a neve is mutatja - titokban tartjuk. A másik, nyilvános kulcsot (public key) pedig szabadon elérhetıvé tesszük bárki számára.
Fontos, hogy a privát kulcsból könnyen elı lehet állítani a nyilvános kulcsot, azonban ez fordítva már nem, vagy nagyon nehezen lehetséges. Ez magyarul azt jelenti, hogy a kellıen biztonságosnak ítélt titkosítási eljárással létrehozott rejtjelezett szöveg visszafejtése a jelenleg elérhetı komputeres számítási kapacitással legalább néhány emberöltıig eltartana.
8 A felhasználó szempontjából legfontosabb tulajdonság, hogy az egyik kulccsal kódolt információt kizárólag a másik kulccsal lehet visszafejteni. Ha titkos üzenetet akarunk küldeni valakinek, a következı lépések történnek:
1.
Egy nyilvánosan elérhetı, megbízható forrásból, pl. magától a címzettıl, vagy kulcsszerverrıl megszerezzük a címzett nyilvános kulcsát.
2.
Az üzenetet kódoljuk ezzel a kulccsal, majd elküldjük.
3.
A kódolt üzenet csakis a címzett privát kulcsával nyitható, tehát ha az eredeti üzenetet elvesztettük, vagy töröltük, a titkosított üzenetbıl még mi sem tudjuk visszafejteni.
4.
A megkapott üzenetet a címzett saját privát kulcsával visszafejti, a végeredmény az eredeti, titkosítatlan szöveg lesz.
Mint látható, a módszer nagy elınye a szimmetrikus megoldással szemben, hogy itt nincs szükség védett csatornán történı elızetes kulcsegyeztetésre. Hátránya, hogy sebessége jóval lassabb mint a szimmetrikus megoldásé, így nagy mennyiségő adat védelmére egyelıre nem használják. Remekül hasznosítható azonban a kettı kombinációja: a szimmetrikus kulcs cseréjére használt csatornát aszimmetrikus titkosítással védik a kulcscsere idejéig, majd átváltanak a jóval gyorsabb szimmetrikus módszerre.
A legtöbb ma használt kommunikációs protokoll (pl. SSL, SSH) ezt a megoldást alkalmazza a biztonságos adatcseréhez. Ezek közül a legismertebb algoritmusok: Diffie-Hellmann, RSA, DSA.
Az aszimmetrikus titkosítás eszközkészlete A leggyakrabban alkalmazott eszközkészlet a PKI (Public Key Infrastructure, nyilvános kulcsú infrastruktúra), mellyel digitális tartalmak eredetiségét, változatlanságát, forrásának azonosítását végezhetjük el. Ennek párja a fent leírt nyilvános kulcsú, aszimmetrikus titkosítás (PKE, Public Key Encryption), mely a rejtjelezéssel kapcsolatos feladatokat látja el. A kettı legtöbbször szoros kapcsolatban áll egymással, így sok termék mindkét komponenst tartalmazza, ilyen például a PGP vagy (részben) az OpenSSL csomag.
9 Diffie-Hellmann A fentebb ismertetett négy lépésbıl álló módszert Diffie és Hellmann dolgozták ki 1976-ban, amely a teljes PKI-PKE kommunikáció alapjává vált.
RSA Az egyik legismertebb és legbiztonságosabbnak tartott nyilvános kulcsú titkosítású algoritmus. Nevét a felfedezıirıl – Rivest, Shamir, Adleman – kapta. A módszer biztonsága a nagy számok szorzattá alakításának nehézségén alapszik – alapját tehát a moduláris- és a prímszámelmélet egyes tételei jelentik. Jelenlegi matematikai ismereteink szerint egy megfelelı gondossággal kivitelezett RSAtitkosítás eredménye számításelméleti okok miatt nem fejthetı vissza olyan gyorsan, hogy érdemes legyen megpróbálni. Egy 500 bites szám szorzattá alakítása például 1025 évig tartana (1 MIPS-es gépen). Az azonban matematikailag nem bizonyított, hogy a titkosított adat visszafejtésére nem létezik kellı gyorsaságú algoritmus, ezért a jövıben ilyen algoritmus felfedezése lehetséges.
PGP A korábban ismertetett algoritmusokkal ellentétben a PGP (Pretty Good Privacy) egy számítógépes program, ami titkosításra és hitelesítésre egyaránt használható. A program elsı verzióját Philip R. Zimmermann készítette el 1991-ben. Ma a PGP a világon a legelterjedtebb és valószínőleg a legbiztonságosabb mód arra, hogy adatainkat megvédjük a kíváncsi szemek elıl. Míg az eredeti programot fıleg e-mail üzenetek és csatolmányaik titkosítására tervezték, addig mára a PGP termékek rengeteg új funkcióval bıvültek. A PGP Desktop 9.x verziói tartalmazzák az e-mailek, fájlok és mappák, a teljes merevlemez és az azonnali üzenetküldés titkosítását, digitális aláírások és önkikódoló tömörített fájlok kezelését és végül a biztonságos fájltörlést. A PGP titkosításkor aszimmetrikus kódolási eljárást használ, amihez szükség van a címzett nyilvános kulcsához, és ha digitális aláírással szeretnénk ellátni az üzenetet, akkor a mi saját kulcsunkra is. A címzett a saját kulcsával és az üzenetben találhatóval együtt tudja visszakódolni az eredeti üzenetet. Ez a mővelet a programban egyszerő és teljesen automatikus, viszont csak olyan embernek tudunk kódolt üzenetet küldeni, aki rendelkezik legalább egy érvényes kulcspárral és rendelkezünk a kulcspár nyilvános felével.
10 A digitális aláírással tudjuk megállapítani, hogy a küldı az-e, akinek gondoljuk, azaz hogy hiteles-e az üzenet. A kódolással együtt szokták használni, de utólag is alkalmazható akár titkosítatlan fájlra is. A küldı használhatja az RSA vagy a DSA eljárást is digitális aláírás készítéséhez. Ehhez a PGP egy hash-t – kódolási alapot – generál a forrásfájlból – mely lehetıvé teszi, hogy ha a forrásfájlban akár csak egy karakter is megváltozik, új hash keletkezzen – majd a hash alapján elkészíti az aláírást, hozzáadva a küldı privát kulcsát.
TANÚSÍTVÁNYOK Módszer, hogy meggyızıdjünk arról, hogy kinek a kulcsát használjuk A nyilvános kulcsú titkosítási eljárások használatakor fontos, hogy a titkosított üzenet küldése elıtt megbizonyosodjunk arról: valóban a címzett nyilvános kulcsát használjuk-e. Ha közvetlenül tıle kaptuk meg, ez nem okoz problémát, ha azonban nyilvános helyrıl jutunk hozzá, valamilyen módon meg kell gyızıdnünk az eredetiségérıl. Erre használható a digitális tanúsítvány (certificate).
Elvárások a tanúsítvánnyal szemben Egy elektronikus tanúsítvány a következı információkat kell tartalmazza: 1. Az adott személy/szervezet nyilvános kulcsa; 2. Az adott személy/szervezet adatai: pl. neve, lakhelye, munkahelye, vagy más adatai; 3. Egy, vagy több digitális aláírás: azoknak a szervezeteknek és/vagy személyeknek az aláírása, akik igazolják a fentiek valódiságát.
Hitelesítési Szolgáltató Az információk valódiságát, helyességét, eredetiségét, sértetlenségét igazolhatják 1. egymás között maguk a felhasználók (web of trust), vagy 2. egy szervezet, melyben a tanúsítványt felhasználók közössége megbízik.
Ez utóbbi szervezet a Hitelesítési Szolgáltató (vagy Megbízható Harmadik Fél, Hitelesítı Hatóság, Hitelesítı Szervezet; Certification Authority, CA.)
11 Az X.509 szabvány Az X.509 olyan kommunikációs szabvány, mely az elektronikus tanúsítványok szerkezetére, felépítésére, tartalmára ad elıírásokat. Tartalmazza a tanúsítvány verziószámát, egyedi sorozatszámát, a Hitelesítı Hatóság által az aláíráshoz használt algoritmus azonosítóját, a kibocsátó Hitelesítı Hatóság azonosítóját, a tanúsítvány érvényességi idejét, a tulajdonos egyedi azonosítóját, a tanúsítványhoz tartozó nyilvános kulcsot és annak algoritmusát, valamint más, a szabványt kiegészítı ún. toldalékokat.
Személyes hitelesítés A személyes hitelesítés azt szavatolja, hogy azok vagyunk, akiknek mondjuk magunkat. Ez a hitelesítés olyan személyes adatokat igényel, mint például felhasználónevünk és jelszavunk. Ezekre az adatokra akkor van szükség, amikor az Interneten keresztül személyes információt küldünk egy olyan Web-helyre, amely kilétünket bizonyító hitelesítést igényel. Ezenkívül használhatjuk titkosított kommunikációhoz más formában is (elektronikus levelezés, biztonságos bejelentkezés helyi hálózatba, stb.). Az ilyen személyes hitelesítés kiadója lehet független hitelesítı hatóság (Verisign, Thawte, Netlock, Microsec e-Szignó, stb.) vagy saját cégünk, vagy szervezetünk. Az aláírás ellenırzésére szolgáló, a levélhez csatolt, vagy a tanúsítványtárból letöltött tanúsítvány ellenırzésekor össze kell hasonlítanunk az üzenet küldıjének és a tanúsítvány tulajdonosának e-mail címét. Helyhitelesítés A helyhitelesítés, szervertanúsítvány azt igazolja, hogy az adott Web-hely biztonságos és valódi. Garantálja, hogy más webhely nem élhet vissza az eredeti webhely azonosítóival. A helyhitelesítéseket kiállításukkor dátummal is ellátják. Ha megpróbáljuk megnyitni egy szervezet Web-helyét, a böngészıprogram ellenırzi, hogy a hitelesítésben tárolt Internet-cím helyes-e, azonos-e az éppen megtekintett oldal címével, és hogy az aktuális dátum nem léptee túl a lejárat dátumát. Ha az adatok nem aktuálisak vagy nem érvényesek, a böngészıprogram figyelmeztetést jeleníthet meg. A böngészıben a hiteles Web-helyeket nem az egyszerő HTTP protokollon keresztül, hanem az SSL titkosítást használó HTTPS protokollon nyitunk meg. A helyhitelesítésekkel általában olyan Web-helyeken találkozhatunk, ahol fontos, hogy a szerver és a számítógépünk között az adatforgalom titkosított csatornán történjen: például Internetes banki ügyintézés, tızsdei megbízások, hitelkártya-tranzakciók, stb.
12 Programkészítıi hitelesítés A programkészítıi hitelesítés, szoftvertanúsítvány pedig azt igazolja, hogy egy az éppen gépünkre telepítendı programhoz gyártója a nevét adja, és az ı személyazonosságát, a program eredetiségét és sértetlenségét egy megbízható harmadik fél tanúsítja.