VI. évfolyam 1. szám - 2011. március Pethő Zoltán
[email protected]
VEZETÉK NÉLKÜLI HÁLÓZATOK TITKOSÍTÁSA Absztrakt Mára a vezeték nélküli hálózatoknak köszönhetően a munkavégzés jelentős része kiszorult az irodák falai közül és áttevődött a konferenciatermekbe, áruházakba, az autókba. E technológiának köszönhetően éppúgy dolgozhatunk repülőterekről, szállodákból vagy akár egy kávézóból is. Vezeték nélküli hálózatokon és Wi-Fi hotspotokon1 keresztül tartják a kapcsolatot a vállalatok alkalmazottai, sokszor ügyfelei, vendégei. A mobilitás előnye azonban egyben a hátránya is, hiszen a rádiós csatorna jellege miatt sokkal több potenciális támadásnak vannak kitéve, mint a hagyományos vezetékes hálózatok, mivel e hullámokat a kívánt határokon túl is fogni lehet. A technológia adottságai következtében a vezeték nélküli hálózatok és az ezen keresztül folyó kommunikáció biztonsága kulcsfontosságú tényezővé vált. Megfelelő biztonsági elemek, titkosítás nélkül adataink ki lennének szolgáltatva illetéktelenek számára. Ebben a cikkben röviden be kívánom mutatni a vezeték nélküli hálózatok sebezhetőségét, mégpedig a közelmúltban kifejlesztett titkosítási módszerek összehasonlítására helyezve a hangsúlyt. In the present days thanks to the wireless networks, the significant parts of the work has moved out from the offices and shifted into the conference rooms, stores, vehicles. We can work as well at the airports, hotels or even from a coffee bar. Wireless networks and Wi-Fi hotspots are held to keep the staff in touch, even many customers, and guests too. The mobility is an advantage and disadvantage too, since the radio channel - due to its nature - faces again more exposed attack than the traditional wired networks. These waves can be captured over the desired boundaries. Because of the capability of this technology, wireless networks and the security of the communication via this media became the key factor. Without appropriate safety features, unencrypted data would be accessible for unauthorized people. In this brief article I wish to demonstrate the vulnerability of wireless networks, emphasizing the comparison of the encryption methods which are developed recently. Kulcsszavak: Wi-Fi, 802.11, WEP, WPA, DES, AES, TKIP, NIST, EAP, EAPOL, PAE, RADIUS 1
nyilvános, vezeték nélküli internet-hozzáférési pont
232
BEVEZETÉS Napjainkban sokat hallhatunk lehallgatott, feltört vezeték nélküli hálózatokról, s nem véletlenül. Az otthoni és vállalati Wi-Fi hálózatok egyik gyenge pontja, hogy a Wi-Fi kapcsolat üzembe helyezésekor nem megfelelően állítják be a biztonságos munkavégzéshez szükséges titkosítási paramétereket. Megfelelő titkosítás nélkül viszont komoly esély van arra, hogy illetéktelenek is rácsatlakozzanak a hálózatunkra, belenézzenek az adatforgalmunkba, lehallgassák üzeneteinket, és hozzájussanak például az internet bankoláskor használt bankkártya vagy hitelkártya adataihoz, valamint a számítógépen tárolt szinte valamennyi bizalmas információhoz. Jól ismert tény, hogy léteznek, sőt széles körben ismertek azok a modern technológiák, amelyekkel a gyengén titkosított rendszereket percek alatt fel lehet törni, ráadásul ezekhez nincs szükség drága szuperszámítógépekre, hanem hétköznapi PC-k is megfelelnek e célra. Mindenesetre érdemes megjegyezni, hogy ha egy vezeték nélküli router WPA22 -nél gyengébb titkosítást használ a Wi-Fi kapcsolatokhoz, akkor a mögötte álló hálózat közel sem lesz olyan biztonságos, mint azt szeretnénk. A WPA szabvány 2003 óta létezik, és sokkal nagyobb biztonságot nyújt, mint az ezt megelőző szabványok. Ez a rendszer egy RC43 alapú titkosítási algoritmust használ. A WPA előnye, hogy jóval hosszabb biztonsági kód is megadható, mint a régebbi WEP-nél. A WPA2 és PSK4 azon titkosítási eljárások közé tartozik, mely a legnagyobb védelmet tudják biztosítani. Itt akár 64 karakter hosszú hálózati kulcsot is használhatunk, a még nagyobb vezeték nélküli hálózati biztonság érdekében. Mindenekelőtt néhány biztonsági szempont, amelyet érdemes szem előtt tartani a tervezés során: Az adatok titkosítása, hogy az információkhoz csak az arra jogosult felhasználók férhessenek hozzá. A felhasználók hitelesítése, melynek során a rendszer megállapítja, hogy mely számítógépek próbálnak hozzáférni a hálózathoz és csak az arra jogosultak kaphatnak hozzáférési engedélyt. Biztonságos hozzáférés a látogatók és a vendégek számára. A VEZETÉK NÉLKÜLI HÁLÓZATOK TÍPUSAI Jelenleg négy vezeték nélküli típus áll rendelkezésre: 802.11a, 802.11b, 802.11g és 802.11n. Az alábbi táblázat e technológiákat hasonlítja össze. IEEE szabvány
Megjelenés ideje
Működési frekvencia (GHz)
Sebesség (jellemző) (Mbit/s)
Sebesség (maximális) (Mbit/s)
Hatótávolság beltéren (méter)
Hatótávolság kültéren (méter)
Eredeti 802.11
1997
2,4
0,9
2
~20
~100
802.11a
1999
5
23
54
~35
~120
802.11b
1999
2,4
4,3
11
~38
~140
802.11g 802.11n 802.11y
2003
2,4
19
54
~38
~140
2009 2008
2,4 / 5 3,7
74 23
600 54
~70 ~50
~250 ~5000
1. táblázat. Legelterjedtebb vezeték nélküli adatátviteli szabványok [1] 2
Wi-Fi Protected Access 2 Egy szimmetrikus folyam kódoló 4 Pre-shared key 3
233
GOODBY DES WELCOME AES A DES5 1977-es bemutatása óta sok minden megváltozott. Az eszközeink nagyságrendekkel
gyorsabbá váltak, több memóriával rendelkeznek valamint a számítógép-hálózatok a mindennapok részévé váltak. A széles körben elterjedt DES-ről több ízben kiderült, hogy számos alkalmazásnál nem kielégítő, különösképpen, amikor érzékeny információkat kellett nyilvános hálózaton – mint amilyen az internet – továbbítani. Ezen hálózatokról köztudott, hogy lehallgathatóak és az átvitelkor használt nem elég erős titkosítások visszafejthetőek. Idővel olyan specializált eszközök épültek melyek egy 56 bites DES kulccsal titkosított rendszert pár óra alatt képesek voltak feltörni. Ezt átgondolva született meg az igény egy új hosszabb és erősebb kulccsal rendelkező algoritmusra. Szerencsére 1997 januárjában az amerikai NIST6 közzétett egy felhívást egy új titkosítási szabvány kifejlesztésére, az AES7–re. A határidő 1998 júniusa volt, amire tizenöt pályázat érkezett be kiértékelésre. Az alábbi rövid összefoglaló bebizonyítja miért mondható az, hogy a DES idejétmúlt és nem javasolt semmilyen célból sem oly információk titkosítására, amely komoly, erős védelmet igényelne. Data Encryption Standard (DES) A DES-t 1977–ben hozta nyilvánosságra az amerikai szövetségi szabványügyi hivatal. A DES–t számos problémája ellenére és azon tény ismeretében is, hogy rég eljárt felette az idő a mai napig széles körben használják. Szimmetrikus, fix 64 bites blokk cipher8 (megosztott titkos kulcs) alapú. Négy meghatározott üzemmódot ismer: ezek közül az ECB9 a legelterjedtebb. Azonban maga a DES számos szabványba épült be. Különösen meghatározó szerepet játszik a DES az IPSec10 szabványban melyet számos gyártó integrált a rendszereibe. Key length vagyis a kulcshossz az egyik leglényegesebb biztonsági tényező a titkosítási algoritmusban, a másik maga az algoritmus felépítése. A DES 64 bites tömböt használ a kulcs számára, habár 8 bit ebből felhasználódik paritás ellenőrzésre, tehát nem számítódik bele magába a kulcs hosszába. Így a hasznos kulcshossznak 56 bit marad, ami 256 lehetséges kulcsot jelent. Mindez egy valódi 64 bites kulcsnál 256 szoros, míg 128 bitnél 272 szeresen “jobb” értéket eredményez, mint amit az 56 bites kulcs nyújtani tud. Ennek eredményeként a DES–t úgy is nevezik, mint gyenge vagy közepesen gyenge titkosítás. A kódolási folyamat alatt a kulcs maga arra kell, hogy legeneráljon két értéket, amelyeket különböző célból használ fel a kódolás alatt. Az eredmény csak egyesek, csak nullák vagy megkülönböztethető mintája az egyeseknek és nulláknak. Röviddel a DES megjelenése után ismerté vált, hogy a kulcs hossza fontos alkotóeleme a DES megbízhatóságának. Ennek következményeként kezdték el használni a több kulcsos, többkörös titkosítást, mint megoldást. Így született a Triple DES (3DES), mint eljárás, ahol a DES titkosítási folyamat háromszor fut végig. A legelterjedtebb módszer, hogy elsőként az adattömböt titkosítják egy kulccsal. Ezen művelet eredményét átfuttatják egy visszafejtési folyamaton a második kulccsal és ennek eredményét még egyszer lefuttatják egy titkosítási algoritmuson, amely ismét az első kulcsot használja. Ezzel a folyamattal el tudjuk érni a 112 bit hosszúságú kulcsot. Mindezek ellenére a gyenge és közepesen gyenge kulcsok megmaradtak. Hátránya a Triple DES-nek, hogy a 5
Data Encryption Standard National Institute of Standards and Technology 7 Advanced Encryption Standard 8 Blokk-kódoló 9 Electronic Code Book 10 IP Security Architecture 6
234
hagyományos DES adatfeldolgozási sebességének mindössze egyharmadára képes. Ezen képessége csak röviddel tudta meghosszabbítani a DES életciklusát, egészen addig, míg a megfelelő alternatívák fel nem bukkantak. A DES hatalmának vége Itt kell megemlíteni azt az eljárást, ami végül is a DES bukásához vezetett. Az eljárást Bruteforcenak11 nevezték el. Az 56 bites DES-nél a lehetséges kulcsok száma 256 (72,057,594,037,927,936 lehetséges kulcs). Ekkoriban jelent meg egy új technika, amely cryptanalysis12 néven vált ismertté és kiválóan alkalmas egy kulcs vagy szöveg megfejtésére. Lényegében két nyilvánosságra hozott cryptanalysis eljárás létezik: a differenciális és a lineáris. Differenciális: Biham és Shamir fejlesztette ki 1990-ben. Ezen eljárás azelőtt a nyilvánosság számára ismeretlen volt. Röviden az eljárás lényege a rejtjelezett információban a párok közötti különbségek felkutatása és ezen eltérésekből nyert információ felhasználása a kulcs megtalálására. Lineáris: M. Matsui által felfedezett eljárás. A felhasznált módszer neve a linear approximations,13 melyet blokk kódolók analizálására használtak. (nem csak DES ellen). Mivel egyes a DES által használt belső struktúrákat nem úgy terveztek, hogy hatásosan ellenálljanak a lineáris rejtjelelemzésnek, ezért ezen eljárás igen hatékonyan használható a DES feltörésére. Annak bizonyítására, hogy a DES nem nyújt megfelelő védelmet és a további használata nem ajánlott fontos rendszerekben, az RSA14 Data Security egy versenyt hirdetett, hogy lássa, mennyi időbe tellene visszafejteni az egyre bonyolultabb algoritmusokat. Két szervezet játszott döntő szerepet a DES feltörésében: a distributed.net és az EFF.15 A distributed.net módszere az egész világra kiterjedő elosztott számító hálózaton alapult, melyben mintegy 160 ezer számítógép dolgozott párhuzamosan. A projektet sikeresen végrehajtották beleértve a CS Cipher, DES III, DES II, és RC5-56 törését is. Az eljárás lényege a nagy mennyiségű feldolgozandó adat terjesztése az interneten keresztül melyeket párhuzamosan dolgoztak fel szabad processzoridejükben azok a számítógépek, melyek a programhoz csatlakoztak. A részeredményeket azután egy központi számítógép dolgozta fel. Az EFF számára a DES-t feltörő számítógépet a Cryptography Research, Advanced Wireless Technologies tervezte. A tervezési folyamat Michael Wiener elméleti munkáján alapult. Az eljárás képes volt másodpercenként 90 milliárd kulcs ellenőrzésére. Ez hat SUN-2 rack szekrénynyi helyet foglalt melyben 27 áramköri lapon 1800 processzor helyezkedett el. A berendezés kevesebb, mint 250,000 dollárba került, és megközelítőleg 56 óra alatt brute-force eljárással meg is találta a kulcsot.
11
Nyers erő, más néven a teljes kipróbálás módszere, egy, a titkosító rendszerekkel szemben alkalmazott támadási mód, ami elvileg mindig eredményes. Működésének lényege, hogy a rejtjelező rendszer ismeretében az összes lehetséges kulcsot kipróbálva határozza meg az alkalmazott kulcsot. Eredményességét csak a műszaki (informatikai) háttér és a rendelkezésre álló idő határozza meg. 12 Rejtjelelemzés 13 Lineáris közelítés 14 Nyílt kulcsú (vagyis „aszimmetrikus”) titkosító algoritmus, melyet 1976-ban Ron Rivest, Adi Shamir és Len Adleman fejlesztett ki (és az elnevezést nevük kezdőbetűiből kapta) 15 Electronic Frontier Foundation
235
A DES I feltörése1997 június 17-ig váratott magára. A megoldást R. Verser vezetésével találták meg, miután a teljes kulcstérnek a 14 százalékát leellenőrizték (10,178,478,175,420,416 kulcs). Mindez 84 napig tartott. Igazság szerint két DES II kihívás zajlott, melynek első résztvevője a distributed.net volt. 1998. január 13-án kezdődött és 1998. február 23-án sikeresen be is fejeződött. Ez idő alatt nagyjából 63 kvadrillió kulcsot ellenőriztek. A végén a distributed.net résztvevői 28 gigakulcs másodpercenkénti feldolgozására voltak képesek. A visszafejtett szöveg: "The unknown message is: Many hands make light work." A második kihívást az EFF nyerte 1998. július 15-én, amikor is kevesebb, mint három nap alatt fejtette vissza a titkosított szöveget "It's time for those 128-, 192-, and 256-bit keys." A DES III kihívás, az RSA Data Security által 1998. december 12-én lett meghirdetve. A verseny 1999. január 18-án kezdődött, és óriási meglepetéssel végződött. Mindösszesen 22 órára és 15 percre volt szüksége az EFF Deep Crack nevű számítógépének és a distributed.net megosztott hálózatának, hogy megtalálja az 56 bites DES kulcsot, visszafejtse az üzenetet és bezsebelje a 10,000 dolláros jutalmat. A szöveg tartalmát körülbelül a teljes kulcs-tér 30 százalékának megvizsgálása után sikerült visszafejteni "See you in Rome (Second AES Conference, March 22-23, 1999)" Eme utolsó kihívás tett pontot a DES végére és bizonyította azt, hogy az eljárás a múlté. AZ AES RÖVID TÖRTÉNETE A NIST által 1997 áprilisában kezdeményezett műhelymunka eredményeként melyen tizenöt különböző algoritmust vettek górcső alá, végül 2000 októberében megszületett és nyilvánosságra került a győztes Rijndael algoritmus, mint ajánlott AES szabvány. A kiírás szerint az új AES Advanced Encryption Standard-nak nyilvánosnak és díjmentesnek kell lennie valamint támogatnia kell a 128, 192 és 256 bit hosszú kulcsokat, Az eljárás legyen hardveresen és szoftveresen is megvalósítható, világszerte elérhető és a kormányzati dokumentumok védelmére alkalmas titkosító algoritmus. További elvárás volt, hogy a tervezőnek le kell mondania a szerzői jogokról.
Kulcshossz Kódoló típusa Blokk méret Kidolgozás éve Kriptoanalízissel szembeni ellenállás
Biztonság Lehetséges kulcsok Az összes lehetséges kulcs ellenőrzéséhez szükséges idő 50 milliárd kulcs másodpercenként**
DES 56 bit Szimmetrikus blokk-kódoló 64 bit 1977 Érzékeny a differenciál és lineáris kriptoanalízisre; Gyenge behelyettesítő táblák Alkalmatlannak bizonyult 256
AES 128, 192, vagy 256 bit Szimmetrikus blokk-kódoló 128, 192, vagy 256 bit 2000 Hatékonyan ellenáll a differenciál, csonka differenciál és lineáris interpolációval szemben Biztonságosnak tekinthető 2128, 2192, 2256
56-bites kulcs esetén: 400 nap
128-bites kulcs esetén: 5 x 1021 év
2. táblázat. DES és AES összehasonlítás [Saját szerkesztés] *Elméletileg a teljes kulcstér ½ ének vizsgálata után a kulcs megtalálható. A teljes kulcstér 100% -os vizsgálata esetén.
236
A Rijndael algoritmust Joan Daemen és Vincent Rijmen nemzetközileg elismert kriptográfusok tervezték. A fő célkitűzés az algoritmus tervezésekor az egyszerűség, a teljesítmény és az erő volt (vagyis, a kriptoanalízissel szembeni ellenállás). A Rijndael név (melyet nagyjából Rájn-doll-nak kell ejteni), a szerzők vezetéknevéből származik (Rijmen + Daemen). A Rijndael 128-tól 256 bitig terjedő kulcsokat és blokkokat támogat, 32 bites lépésekben. A kulcsok és a blokkok hosszúságát egymástól függetlenül lehet megválasztani. Itt az AES viszont rögzíti, hogy a blokknak 128, a kulcsnak pedig 128, 192 vagy 256 bit hosszúságúnak kell lennie. Azonban nem valószínű, hogy fog bárki is valaha 192 bites kulcsokat használni, így az AESnek gyakorlatilag két változata terjedt el: az egyik 128 bites blokkokat és 128 bites kulcsot, a másik pedig 128 bites blokkokat és 256 bites kulcsot alkalmaz. Az algoritmus további részletezésénél csak a 128/128-as eset kerül bemutatásra, mert a kereskedelemben ennek elterjedése a legvalószínűbb. A 128 bites kulcs révén 2128 = 3x1038 kulcsot tartalmazó kulcstérhez jutunk. Ez hatalmas szám: 340 282 366 920 938 463 463 374 607 431 768 211 456. Ha lenne egy eszközünk, ami le tudna ellenőrizni 1 trillió (1018) kulcsot 1 másodperc alatt, annak a gépnek is 10 billió (1013) évig tartana kipróbálni az összes kulcsot. Ez több mint az univerzum kora, amely körülbelül 13 milliárd (1,3x1010) év. A fejlesztők javára írható továbbá, hogy a Rijndael egyetlen másik algoritmus részét vagy tábláját sem használja, ezzel megkönnyítve az önálló megvalósítását. AES TITKOSÍTÁS A TKIP16 és AES titkosítás opcióként való választási lehetősége alaposan megnöveli a Wi-Fi rendszerek biztonságát. A választható opciók között ez leggyakrabban, mint "WPA2-Personal with TKIP & AES encryption" szerepel. Ha nem nagyvállalati rendszerekről van szó, akkor a "WPA2 Personal" is elegendő védelmet biztosíthat. A választható titkosítási módszert, a rendelkezésre álló hardver szabja meg. Sajnos azonban az új koncepcióra nem lehet egyik napról a másikra áttérni. Ennek oka, hogy a használatban levő Wi-Fi eszközök az RC4 algoritmust támogató hardver elemekkel vannak felszerelve, és nem támogatják az RSN17 által előírt AES algoritmust. Ezen pusztán szoftverfrissítéssel nem lehet segíteni, mindenképpen új hardverre van szükség, s ez lassítja az RSN elterjedésének folyamatát. A problémát az IEEE18 is felismerte, és egy olyan opcionális protokollt is hozzáadott a 802.11i specifikációhoz, mely továbbra is az RC4 algoritmust használja, és így – szoftver frissítése után – használható a régi hardveren, de erősebb, mint a WEP. Ez a protokoll kapta a TKIP nevet. Nagyon jól jött ez a megoldás a Wi-Fi eszközöket gyártó cégeknek, melyek azonnal adaptálták az új TKIP protokollt, hiszen annak segítségével a régi eszközökből álló WEP-es hálózatokat egy csapásra biztonságossá lehetett varázsolni. Meg sem várták, amíg a 802.11i specifikáció a lassú szabványosítási folyamat során végleges állapotba kerül, azonnal kiadták a WPA specifikációt, ami a TKIP-re épül. A WPA tehát egy gyártók által támogatott specifikáció, mely az RSN egy azonnal használható részhalmazát tartalmazza. A WPA -ban a hitelesítés, a 16
Temporal Key Integrity Protocol Robust Secure Network 18 Institute of Electrical and Electronics Engineers 17
237
hozzáférés-védelem, és a kulcsok menedzsmentje megegyezik az RSN-ben használt módszerekkel, a különbség csak az integritás-védelemre és a rejtjelezésre használt algoritmusban mutatkozik.
238
Szimmetrikus kulcsos titkosítás A szimmetrikus kulcsos titkosítás melynél mindkét fél ugyanazt a kulcsot használja. Hátránya, hogy a kulcsot valahogyan ki kell cserélni, ami nem triviális feladat, ha a két fél csak az Interneten találkozik. Amennyiben a felhasználók száma erőteljes növekedésnek indul a titkos kulcs kezelése egyre nehézkesebbé válik. A kulcsot az átvitel előtt el kell juttatni a másik félhez, de ha ez nem biztonságos, a kommunikáció sem az. Minden partnerhez különböző kulcsot kell rendelni, hogy egymás üzeneteit ne láthassák A nyilvános kulcsos titkosításnál két kulcs van, egy nyilvános kulcs, amit közzé tesznek, és a privát (titkos) kulcs, amit titokban kell tartani. Ehhez a kulcshoz egyedül csak a tulajdonosa férhet hozzá. A nyilvános kulcs alkalmas arra, hogy bárki titkos üzenetet küldjön a titkos kód birtokosának. A nyilvános kulccsal kódolt üzenet csak a privát kulccsal dekódolható, amit egyedül az üzenet címzettje ismer. Még maga a küldő sem képes a titkos kód nélkül az üzenet visszaállítására. A privát kulccsal titkosított adat csak a nyilvános kulccsal dekódolható, így alkalmas autentikációra, digitális aláírásra. Ha a nyilvános kóddal dekódolt üzenet a küldő ismert digitális aláírását tartalmazza, akkor ezt csak az aláírás tulajdonosa küldhette, mert csak ő birtokolja a titkos kulcsot. A kétkulcsos eljárás protokolljának eredeti neve SSL19 volt, amit az IETF20, az Internet szabványokat kidolgozó szervezet TLS21-nek nevezett át a szabványosításkor. A hálózatot nem használhatjuk kulcstovábbításra (a továbbításhoz megbízható csatornaára van szükség). Technikai szempontból akkor is szimmetrikus kulcsúnak nevezünk egy titkosítást, ha ugyan nem ugyanazt a kulcsot használjuk a kódoláshoz és dekódoláshoz, de az egyik kulcsból egyszerűen meghatározható a másik. Az ilyen jellegű titkosításoknak két altípusa van: a folyam-, illetve a blokk kódolás. Folyam (stream) kódolás A szimmetrikus kulcsú titkosítás egyik fajtája a folyam kódolás. Ekkor a nyílt szöveg egyszerre egyetlen egységét (általában bitjét vagy bájtját) titkosítjuk, mégpedig úgy, hogy azt a kulcs egy meghatározott pontjával kombináljuk. A legegyszerűbb ilyen kombinációs megoldás az XOR22 művelet végzése a két elemmel. Ez a titkosítás gyakorlatilag teljesen biztonságos, amennyiben a kulcs mérete hasonlít a nyílt szöveg méretéhez; belátható azonban, hogy ez roppant kényelmetlen, és nem mindig kivitelezhető. Erre "megoldást" nyújt, ha a kulcsot álvéletlen számokkal meghosszabbítjuk, azonban ez a biztonság rovására mehet. Blokk kódolás A szimmetrikus kulcsú titkosítás másik típusa a blokk kódolás, amelynek lényege az, hogy - a folyam kódolással szemben - nem egyetlen egységet, hanem egy nagyobb részt (blokkot) titkosítunk. A titkosított üzenet előállítása itt is a kulcs és a blokk közti valamilyen műveletvégzés segítségével történik, azonban a nagyobb egységek miatt több lehetőségünk van a műveletek közti válogatásra. A blokkok előre meghatározott, fix méretűek, általában 64 vagy 128 bit hosszúságúak. Többféle módszer is van arra, ha az üzenet nem "illeszkedik" ezekre a kulcsméretekre, azaz ha nem sikerül ezekkel egész számú blokkokat létrehoznunk: a
19
Secure Sockets Layer Internet Engineering Task Force 21 Transport Layer Security 22 Kizáró vagy 20
239
maradék szöveget kulcstöredékkel pótolhatjuk ki, a nyílt szöveget véletlenszerű karakterekkel meghosszabbíthatjuk, stb. Összehasonlítás Ha a folyam kódolásnál biztosra akarunk menni, akkor nagyon hosszú kulcsot kell alkalmaznunk, ez pedig nem mindig engedhető meg. Ezzel szemben a blokk kódolás nagyobb számítási kapacitást igényel, ezáltal bonyolultabb eszközökre van szükség. A szimmetrikus kulcsú titkosítások fontos szerepet töltenek be a kriptográfia világában: gyakran használják fel azokat komplex titkosító algoritmusok részeként. Aszimmetrikus titkosítás A nyílt kulcsú, vagy aszimmetrikus titkosítási algoritmusok két kulcsot használnak: az egyik saját kulcs, amely soha sem kerül ki a feladó kezéből, a másik nyilvános kulcs, amely mindenki számára ismert. Privát kulcsból könnyen elő lehet állítani a nyilvános kulcsot, de fordítva ez nem igaz. Nincs szükség előzetes kulcsegyeztetésre. Lassabb, mint a szimmetrikus kódolás, így nagy mennyiségű adat védelmére nem használható. Hitelesítés és hozzáférés-védelem A titkos kulcsok kiosztása igen nagy körültekintést igénylõ feladat. A 802.11x autentikációs protokoll (úgy is nevezik, mint Port-Based Network Access Control) egy keret, amit eredetileg vezetékes hálózatok számára fejlesztettek ki autentikációs, engedélyezési és kulcs kiosztási céllal, de képes a felhasználók hálózathoz való hozzáférési jogosultságát is elbírálni. A 802.1X modell három résztvevőt különböztet meg: Supplicant – a hitelesítendő fél (a hálózathoz szeretne csatlakozni) Authenticator – hitelesítő (hozzáférés-vezérlés) Authentication server - a hitelesítő szervert (határoz az engedély megadásáról) Wi-Fi hálózatok esetében a hitelesítendő fél a mobil eszköz, mely szeretne a hálózathoz csatlakozni, a hitelesítő pedig az accesspoint, mely a hálózathoz történő hozzáférést kontrollálja. Minden port (vezeték nélküli hálózatoknál virtuális port) két logikai porttá oszlik fel létrehozva ezzel a PAE23-t. A modellben ez úgy történik, hogy a hitelesítő egy ún. port állapotát vezérli. Az autentikációs PAE mindig nyitva áll és engedi az autentikációs kereteket, míg a kiszolgáló PAE-n alapállapotban az adatforgalom nincs engedélyezve, csakis a sikeres autentikáció előtt áll nyitva (pl. egy engedélyezett állapot előtt) egy meghatározott ideig (általában 3600 másodpercig). A döntés a hozzáférési engedély megadásáról általában egy harmadik egység feladata. Ez az egység az autentikációs szerve, amely vagy egy dedikált RADIUS24 szerver, vagy – például egy otthoni hálózat esetén – egy egyszerű eljárás, amit az accesspoint futtat. A 802.11i szabványt úgy módosították, hogy vegye figyelembe a vezeték nélküli hálózatokban előforduló azonosító lopásokat. Ezért az üzenetek hitelesítése érdekében került beépítésre az eljárás, hogy mind a hitelesítendő fél, mind a hitelesítő kiszámítja a saját titkos kulcsát, majd engedélyezi a titkosítást mielőtt a hálózaton forgalmazna. A hitelesítendő fél és 23
Port Access Entity
24
Remote Authentication Dial In User Service
240
a hitelesítő közötti kommunikáció az EAP használatán alapszik. Megfigyelhető, hogy a hitelesítő szerepe ebben a műveletben teljesen passzív, lényegében az üzeneteket továbbítja az autentikációs szerver felé. Maga az EAP csak egy keret, amit arra terveztek, hogy tetszőleges hitelesítő protokoll üzeneteit szállítani tudja és mindössze pár behatárolt üzenettípust ismer, mint például Request, Response, Success, Failure.
1. ábra. IEEE 802.1X modell [4] Az EAP request és response üzenetek szállítják a beágyazott hitelesítő protokoll üzeneteit. Az EAP success és failure speciális üzenetek, melyek segítségével a hitelesítés eredményét lehet jelezni a hitelesítendő fél felé. A hitelesítés eredményeként nemcsak a hálózathoz való hozzáférést engedélyezi a hitelesítő szerver, hanem egy titkos kulcs is létrejön, mely a mobil eszköz és az accesspoint további kommunikációját hivatott védeni (pl. supplicant és az authentication server) birtokában lesz a titkos kulcs. Innentől a kommunikáció a hitelesítő és a hitelesítő szerver között EAPOL25 protokollon fog történi, melyet a vezeték nélküli hálózatok használnak az EAP forgalom szállítására. Az accesspoint és a hitelesítő szerver között a RADIUS protokoll használata a leg gyakoribb. A hitelesítő szerver az engedélyező szerepet játssza. A hitelesítendő fél hitelesítését nem a hitelesítő, hanem a hitelesítő szerver végzi, és ha a hitelesítés sikeres volt, engedélyezi, hogy a hitelesítő bekapcsolja a portot. A hitelesítő szerver egy program, mely kisebb hálózatok esetében akár az accesspointon is futhat, nagyobb hálózatoknál azonban tipikusan egy külön erre a célra dedikált hoston futó szerver alkalmazás. Wi-Fi esetében a port nem egy fizikai csatlakozó, hanem egy logikai csatlakozási pont, amit az accesspointon futó szoftver valósít meg.
25
Extensible Authentication Protocol
241
Kulcsmenedzsment A hitelesítési folyamat alatt, a mobil eszköz és az accesspoint között létrejött titkos kulcsot páronkénti mesterkulcsnak, azaz PMK26-nak nevezik. Azért „páronkénti”, mivel csak az adott mobil eszköz és az accesspoint ismeri, s azért „mester”, mert ezt a kulcsot nem közvetlenül kódolásra használják, hanem további kulcsokat generálnak belőle. A PMK-ból, mind a mobil eszköz, mind pedig az accesspoint négy további kulcsot generál: egy adat-rejtjelező kulcsot, egy adat-integritás-védő kulcsot, egy kulcs-rejtjelező kulcsot, és egy kulcs-integritás-védő kulcsot. Ezeket együttesen páronkénti ideiglenes kulcsnak PTK27-nak nevezik. Az AES-CCMP28 protokoll az adatok titkosításához és az adatok integritás-védelméhez ugyanazt a kulcsot használja, ezért AES-CCMP használatakor csak három kulcs jön létre a PMK-ból. A PTK előállításához a PMK-n kívül felhasználják még a két fél (mobil eszköz és accesspoint) MAC címét, és két véletlen számot, melyet a felek generálnak.
2. ábra. A PTK generálása a PMK-ból, a két fél MAC címéből, és a véletlenszámokból [8] A véletlen számokat az ún. négy utas kézfogás (four way handshake) protokoll felhasználásával juttatják el egymáshoz a felek. Ennek a protokollnak egy másik fontos feladata, hogy használatával a felek meggyőződjenek arról, hogy a másik fél ismeri a PMK-t. A négy utas kézfogás protokoll üzeneteit az EAPOL protokoll Key típusú üzeneteiben juttatják el egymáshoz a felek. Az üzenetek tartalma valamint a protokoll működése vázlatosan a következő: 1. Első lépésként az accesspoint elküldi az általa létrehozott véletlen számot a mobil eszköznek. Ha a mobil eszköz ezt megkapja, rendelkezésére áll minden információ a PTK előállításához. A mobil eszköz tehát kiszámolja az ideiglenes kulcsokat. 2. A mobil eszköz szintén elküldi az általa generált véletlen számot az accesspoint 26
pairwise master key Pairwise Transient Key 28 AES CTR Mode and CBC MAC 27
242
nak. Ez az üzenet kriptográfiai integritás-ellenőrző összeggel MIC29 van ellátva, amit a mobil eszköz a frissen kiszámolt kulcsintegritás-védő kulcs segítségével állít elő. Az üzenet vétele után az accesspoint -nak is rendelkezésére áll minden információ a PTK kiszámításához. Tehát kiszámolja az ideiglenes kulcsokat, majd a kulcs-integritás-védő kulcs segítségével ellenőrzi a MIC-et. Ha az ellenőrzés sikeres, akkor elhiszi, hogy a mobil eszköz ismeri a PMK-t. 3. Az accesspoint is küld egy MIC-et tartalmazó üzenetet a mobil eszköznek, melyben informálja az eszközt arról, hogy a kulcsokat sikeresen telepítette, és készen áll a további adatforgalom kódolására. Ez az üzenet tartalmaz továbbá egy kezdeti sorozatszámot. A későbbiekben ettől az értéktől kezdik majd sorszámozni a felek az egymásnak küldött adatcsomagokat, és a sorszámozás segítségével észlelik a visszajátszásos támadásokat. Az üzenet vétele után a mobil eszköz a kulcs-integritásvédő kulccsal ellenőrzi a MIC-et, és ha az ellenőrzés sikeres, akkor elhiszi, hogy az accesspoint ismeri a PMK-t. 4. Végezetül a mobil eszköz nyugtázza az accesspoint előző üzenetét, mely egyben azt is jelenti, hogy a mobil eszköz is készen áll a további adatforgalom rejtjelezésére.
A továbbiakban a mobil eszköz és az AP az adat-integritás-védő és az adat-rejtjelező kulccsal védik az egymásnak küldött üzeneteiket. Szükség van továbbá még olyan kulcsokra is, melyek segítségével az accesspoint többes szórással küldhet üzeneteket biztonságosan minden mobil eszköz számára. Értelemszerűen, ezeket a kulcsokat az összes mobil eszköznek és az AP-nek is ismernie kell, vagyis ezeket együttesen ideiglenes csoportkulcsnak GTK30 nevezik. A GTK egy rejtjelező és egy integritásvédő kulcsot tartalmaz. AES-CCMP esetén a két kulcs ugyanaz, ezért csak egy kulcsból áll a GTK. A GTK-t az AP generálja, és a négy utas kézfogás során létrehozott kulcs-rejtjelező kulcsok segítségével titkosítva juttatja el minden mobil eszközhöz külön-külön. AES-CCMP A TKIP és az AES-CCMP az előbb leírt kulcsmenedzsment megoldásra épülő
29
Message Integrity Code
30
Group Transient Key
243
protokollok, melyek az adatfolyam integritás-védelmével és rejtjelezésével foglalkoznak. Mint azt korábban már említettem, a TKIP egy olyan átmeneti megoldás, amely a régi, WEP-es hardvereken is működik, de a WEP-nél jóval magasabb szintű biztonságot nyújt. Az AES-CCMP ugyan új hardvert igényel, de cserébe egyszerűbb, hatékonyabb megoldást nyújt, mint a TKIP. Meghatároztak egy új AES használati módot is, mely a régóta ismert CTR31 mód és a CBC-MAC32 kombinációja. Innen származik a CCMP rövidítés. CCMP módban, az üzenet küldője először kiszámolja az üzenet CBC-MAC értékét, ezt az üzenethez csatolja, majd az üzenetet CTR módban rejtjelezi. A CBC-MAC számítás kiterjed az üzenet fejlécére is, a rejtjelezés azonban csak az üzenet hasznos tartalmára és a CBC-MAC értékre vonatkozik. A CCMP mód tehát egyidejűleg biztosítja a teljes üzenet (beleértve a fejlécet is) integritásának védelmét és az üzenet tartalmának titkosságát. A visszajátszás ellen az üzenetek sorszámozásával védekezik a protokoll. A sorszám a CBC-MAC számításhoz szükséges inicializáló blokkban van elhelyezve. RIJNDAEL MENET-TRANSZFORMÁCIÓJA Az AES a behelyettesítéses permutációs hálózat működési elvén nyugszik. Megvalósítása mind szoftveresen, mind hardveresen elég gyors. Összehasonlítva elődjével a DES-el ellentétben az AES nem a Fiestel-architectúrán alapszik Az algoritmus leírása 1. KeyExpansion 2. Első menet 1. AddRoundKey 3. Menetek 1. SubBytes 2. ShiftRows 3. MixColumns 4. AddRoundKey 4. Utolsó menet (no MixColumns) 1. SubBytes 2. ShiftRows 3. AddRoundKey Matematikai szempontból a Rijndael a Galois-mezők elvén alapszik, ennek köszönhetően jó néhány bizonyítható biztonsági tulajdonsággal rendelkezik. A DES-hez hasonlóan a Rijndael 31
Counter
32
Cipher Block Chaining – Message Authentication Code
244
is többkörös helyettesítést és keverést alkalmaz. A körök száma a kulcs és a blokk méretétől függ: 128 bites kulcs és 128 bites blokkok esetén 10 kör van, majd nagyobb kulcsok és blokkok esetén egyre több, egészen 14-ig. A DES -sel ellentétben azonban itt minden művelet egész bájtokra vonatkozik, hogy hardveresen és szoftveresen is hatékony megvalósításokat lehessen létrehozni. A Rijndael függvénynek három paramétere van: a plaintext, mely egy 16 bájtból álló tömb a bemeneti adatokkal, a ciphertext, ami egy 16 bájtos tömb a végeredmény számára, és a key, ami maga a 16 bájtos kulcs. A számítások során az adatok aktuális állapotát a state33 bájttömb tárolja, melynek mérete NROWS x NCOLS. 128 bites blokkok esetén ez a tömb 4x4 bájtot tartalmaz, így 16 bájton a teljes 128 bites adatblokk tárolható. A state tömbbe kezdetben a nyílt szöveg kerül, amit később a számítás minden lépésében módosítanak. Egyes lépésekben bájtról bájtra történő helyettesítéseket végeznek, másokban a tömbön belül keverik a bájtokat, de más átalakításokat is végrehajtanak. Végül a state tömb tartalmát adják vissza titkosított szövegként. A kód először kiterjeszti a kulcsot 11 darab, az állapotmátrixszal megegyező méretű tömbbe. Az egyik tömböt a számítás elején, a többi tízet pedig a 10 kör során, egyenként alkalmazzák. A körök kulcsait ismételt forgatásokkal és a kulcsbitek különböző csoportjainak XOR kapcsolatával állítják elő. Az első lépés a ByteSub transzformáció ahol egy bájtról bájtra történő helyettesítést végeznek a state tömbön. Az egyes bájtokat az S-doboz indexelésére használják, hogy azok tartalmát az S-doboz megfelelő bejegyzésének tartalmával cseréljék fel. Ez tulajdonképpen egy közvetlen, egy betű-helyettesítéses kódolás, és amely művelet megszünteti a linearitást a kódolóban. Azon támadások elkerülése érdekében melyek szimpla algebrai támadáson alapulnak, az Sdobozt úgy alkották meg, hogy kombinálják az inverz függvényt az invertálható affin transzformációval. (Egy affin transzformáció során a transzformált koordináták az eredeti koordináták lineáris függvényeként állnak elő. Ide tartoznak a lineáris transzformációk és az eltolás is). A DES -sel ellentétben a Rijndael -nak csak egyetlen S-doboza van. Az S-box kimenete minden byte esetén előre kiszámítható, és táblázatba foglalható. A ByteSub inverze is egy ByteSub és ugyanannyi időbe telik elvégezni. A ByteSub és a ShiftRow sorrendje felcserélhető.
3. ábra. A SubBytes lépés [2] A második lépés a ShiftRow transzformáció, mely a state soraiban üzemel, és amely mind a négy sort ciklikusan balra lépteti, soronként meghatározott eltolással. Az AES-nél például az 33
állapot
245
első sort érintetlenül hagyja (azaz nem változik), a második sor 1 bájttal lépteti balra, a harmadikat kettővel, a negyediket pedig hárommal. Ez a lépés szétszórja az aktuális adatokat a blokkban.
4. ábra. A ShiftRows lépés [2] A harmadik lépés a MixColumns transzformáció a state egyes négy bájtos oszlopait a többitől függetlenül keveri össze. A keverést mátrixszorzással hajtják végre, melyben az új oszlop a régi oszlop és egy konstans mátrix szorzata lesz, ahol a szorzást a GF(28) véges Galois-mező segítségével végzik el. A MixColumns függvény négy bájtnyi bemenete négy bájtnyi kimenetet képez, ahol minden egyes bemeneti bájt hatással van mind a négy kimeneti bájtra. Bonyolultnak hangzik ugyan, de létezik egy algoritmus, mely lehetővé teszi, hogy az új oszlop minden egyes elemét két darab táblázatból való kikeresés és három XOR művelet segítségével kiszámíthassuk. A MixColumn során az állapot oszlopait GF(28) feletti polinomoknak tekintjük és modul x4+1 a c(x) = 0x03 · x3 + x2 + x + 0x02 polinommal szorozzuk, azaz a b(x)=c(x) művelet
alakban írható. Az alábbi ábra mutatja a MixColumn hatását az állapot sorain.
5. ábra. A MixColumns lépés [2]
246
⊗
a(x)
A MixColumn inverze polinomszorzás, egy d(x) polinommal, melyre (‘03’ x3 + ‘01’ x2 + ‘01’ x +’02’) ⊗ d(x) = ‘01’ Ez a d(x) az alábbi polinom: d(x)=’0B’x3+’0D’x2+’09’x+’0E’ Végül a negyedik lépés az AddRoundKey mely adott kör alkulcsát XOR kapcsolatba hozza a state tömbbel. Minden körben az alkulcsot a főkulcsból származtatják felhasználva a Rijndael kulcsütemezőt; minden alkulcs azonos méretű a state-val.
6. ábra. Az AddRoundKey lépés [2] Mivel minden lépés megfordítható, a dekódolás egyszerűen az algoritmus visszafelé történő futtatásával végezhető el. Van ugyanakkor egy olyan trükk is, melynek segítségével a dekódolást is a kódoló algoritmussal végezhetjük el, más táblázatok felhasználásával. Az algoritmust nemcsak nagyfokú biztonságra, hanem nagy sebességre is tervezték. Egy 2 GHz-es gépen futó jó szoftveres megvalósítás elérheti a 700 Mb/s-os titkosítási sebességet, ami elég gyors ahhoz, hogy több mint 100 MPEG-2 videót lehessen valós időben titkosítani vele. A hardveres megvalósítások pedig még ennél is gyorsabbak. A Rijndael menet-transzformációja három invertálható rétegből áll: lineáris keverő réteg (ez teríti szét az információt a blokk teljes hosszában); nem-lineáris réteg (egy S-boksz, azaz a lineáristól minél távolabb álló transzformáció); kulcshozzáadó réteg (a menetkulcsot egyszerű EXOR -ozása az aktuális állapothoz). ÖSSZEGZÉS Jelen cikk rövid áttekintést nyújtott a Wi-Fi hálózatok biztonságának múltjáról és jelenéről. Rávilágított a sebezhetőségére, hibáira, már ami a titkosítást és annak módszereit érinti. Látható hogy a régi DES-t mára már a TKIP és AES váltotta fel. A TKIP továbbra is használható a régi eszközökön melyek hardveresen csak a WEP támogatására alkalmasak. 247
Ezzel szemben az AES biztonságos és hatékony válasz napjaink kihívására, egyetlen hátránya, hogy új hardvert igényel. Ám ez a manapság vásárolt Wi-Fi eszközök esetén már nem akadály mivel mindegyik támogatja a 802.11i szabványban definiált biztonsági architektúrát. FELHASZNÁLT IRODALOM [1]
http://hu.wikipedia.org/wiki/Wi-Fi
[2]
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
[3]
Pejman Roshan, Jonathan Leary: 802.11 Wireless LAN Fundamentals Cisco Press 2005 ISBN: 1-58705-077-3
[4]
Krisna Sankar, Andrew Balinsky: Cisco Wireless LAN Security Cisco Press 2005 ISBN: 1-58705-154-0
[5]
Eric Geier: Wi-Fi Hotspots Cisco Press 2007 ISBN:1-58705-266-0
[6]
Hacking IT Secutity Magazin http://hakin9.org/article-html/9439-wi-fi-security-wep-wpa-and-wpa2
[7]
Bankruptcy http://my-bankruptcy-help.com/?b=Rijndael
[8]
FreeWiMAXInfo.com http://www.freewimaxinfo.com/Wi-Fi-standards.html
[9]
Wireless LAN security guide http://www.lanarchitect.net/Articles/Wireless/SecurityRating/
[10]
Wi-Fi biztonság – A jó, a rossz, és a csúf http://www.hit.bme.hu/~buttyan/publications/ButtyanD06ht.pdf
[11]
Hálózati biztonság http://hok.uni-pannon.hu/mik/index.php?option=com _phocadownload&view= category&download=185%3Aszghalok8fejezet&id=73%3Ajegyzet&Itemid=78&lang =hu
[12]
Goodby DES, Welcome AES http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_42/goodbye_des.html
248