Informatika | Informatikai biztonság » Groma István - Intelligens kártyák elleni támadások taxonómiája

Alapadatok

Év, oldalszám:2004, 74 oldal

Nyelv:magyar

Letöltések száma:121

Feltöltve:2008. október 29.

Méret:366 KB

Intézmény:
-

Megjegyzés:

Csatolmány:-

Letöltés PDF-ben:Kérlek jelentkezz be!



Értékelések

Nincs még értékelés. Legyél Te az első!

Tartalmi kivonat

Eötvös Loránd Tudományegyetem Informatikai Kar Programtervező matematikus szak Intelligens kártyák elleni támadások taxonómiája Groma István Témavezető: Kincses Zoltán Budapest, 2004. június 12 Intelligens kártyák elleni támadások taxonómiája Tartalomjegyzék 1. Bevezetés. 6 2. Történeti áttekintés és osztályzás . 8 3. Az IK-k szerepe és jelentősége . 14 3.1 Alkalmazások . 14 3.2 Az IK-kon kivitelezett azonosítás formái . 17 4. Röviden az ISO/IEC 7816-os szabványról . 19 5. Bepillantás a Java Kártyák világába. 26 6. A sifrírozó algoritmusokról. 32 6.1 6.11 6.12 6.2 6.21 6.22 6.23 6.3 6.31 6.32 6.4 6.41 6.42 Hashfüggvények. 32 MD5 (Message Digest). 33 SHA-1 (Secure Hash Algorithm). 34 Szimmetrikus titkosítás . 34 A DES (Data Encryption Standard). 35 A TripleDES és a 3DES . 36 AES (Rijndael – Rijmen & Daemen). 37 Aszimmetrikus titkosítás. 38 RSA (Rivest, Shamir, Adleman). 39 ECC (elliptikus görbék).

40 Titkosító protokollok IK-kon. 44 Titkosítás a GSM kommunikációban. 44 A vak aláíráson alapuló bizalmas adatkezelés . 46 7. Egy taxonómia célja. 49 8. A támadási fák (attack trees) . 51 9. A taxonómia . 54 9.1 Az indikátorok . 54 9.2 A támadási fa . 55 9.3 Különbség a közvetlen (1) és a távoli (2) hozzáférés között . 65 9.4 Az IK elektronmikroszkópos vizsgálata (1.211) 65 9.5 Az abnormális környezet hatásai (1.212) 65 9.6 Kártya kommunikációjának fizikai lehallgatása (1.22) 66 9.7 Gyári kulcsokkal való próbálkozás (1.23) 66 9.8 A kártya távoli lehallgatása (2.2) 67 9.9 Beavatkozás azonosítás után (2.23) 67 9.10 A kriptográfiát törő módszerek (2.1) 68 9.11 Hamis eszköz használata (3) . 68 9.12 Trójai programok feltöltése (3.1) 68 4 Intelligens kártyák elleni támadások taxonómiája 9.13 Hamis CAD (3.2) 69 10. Összefoglalás és elért eredmények. 70 11. Irodalomjegyzék .

71 12. Tárgymutató . 73 13. Függelék. 75 13.1 Memóriafajták . 75 13.2 A tikos információcsere sztereotip alanyai. 75 5 Intelligens kártyák elleni támadások taxonómiája 1. Bevezetés Régi vágya az embernek, hogy a birtokában lévő információkat el tudja rejteni a bizalmát nem élvező személyek elől. Már az ókorban is rejtjelezte az üzeneteket, parancsokat, leginkább egy titkos ábécé alkalmazásával. A mai, ún információs társadalomban egyre fontosabb a birtokolt adatok védelme, tudniillik az információ az egyik legértékesebb tulajdonná vált. Ez vonatkozik mind a tudományos, mind az orvosi és technikai szabadalmakra, az állam- és hadititkokra, a üzleti világra, valamint a magánjellegű dokumentumokra egyaránt. Fontos tehát, hogy legyenek megbízható titkosítási metodikáink. A titkosítás minden esetben egy nyilvános – bárki számára megismerhető – algoritmusra és egy – csak a kedvezményezettek köre által

ismert – kulcsra, esetleg valamilyen jellegzetes személyjegyre épül. Magyarul soha nem a sifrírozási módszer a titkos, hanem annak egy paramétere, mely feltörés esetén cserélhető, ezt nevezzük kulcsnak. Bár a kulcs fogalmilag általános, funkcionálisan nagyon különböző lehet Beszélhetünk „tudok valamit” típusú (pl. jelszó, belépő), autentikus (pl írisz, ujjlenyomat) és „birtoklok valamit” (pl. slusszkulcs, riasztó) formájú kulcsokról Az intelligens kártyák (továbbiakban IK) a harmadik osztályba tartoznak. Ezek olyan elektronikus eszközök, melyek titkos adatok tárolásra képesek. Az IK-k korunk biztonsági rendszereinek egyre gyakoribb elemei. A nanotechnológia dinamikus fejlődésével gyorsan terjedtek a programozható mikrocsipek, melyek mára az adatvédelem plasztikus komponensévé váltak. Piaci jelenlétüket leginkább a mobiltelefonok elterjedése fokozta, mivel a telefonszámokhoz tartozó adatok a legtöbb esetben egy-egy

SIM kártyán vannak tárolva. Használatosak a hitelkártyák világában (Franciaország), a tömegközlekedésben (Japán, Nagy-Britannia), illetőleg nagyobb cégeknél személyigazolási célokra. Terjedőben van az orvosi adminisztrációba való integrációja (Németország) és mára már nem utópia egy elektronikus pénztárca lehetősége sem. A mobilkommunikáció jól mutatja az IK-k gyakorlati hasznát, hiszen a hálózat működéséhez szükséges adatok bizalmas kezelése kritikus, mivel azok illetéktelen felhasználása komoly anyagi veszteséget okozhat az eredeti kártyabirtokosnak. A SIM kártyák lehetővé teszik, hogy az azonosításhoz kellő adatok fizikailag a kliensnél legyenek, a visszaélésektől védve. Az IK-k ereje abban rejlik, hogy nem csupán adathordozó eszközök, hanem a beléjük épített mikroprocesszor képes „védelmezni” a tárolt információkat. A számítógép és a memória egyetlen egységet alkot, ezért nem lehetséges a

mikroprocesszor kikerülése, az információk direkt kinyerése. Elvileg tehát egy ilyen kártya eltulajdonítása haszontalan. Mégis vannak módszerek, melyek az intelligens kártyák feltörésére tesznek kísérletet, hogy azok ne jelentsenek plusz biztonságot a privát adatok számára. Természetes, hogy az ilyen „betörések” ellen a kártyaeszközök gyártói, forgalmazói, fejlesztői igyekeznek védekezni, azonban fontos kiemelnünk, hogy a lehetséges rések nagyon sokfélék lehetnek. A jelen értekezés célja, hogy osztályozza, és rendszerbe sorolja az IK-k elleni támadásokat, valamint több szempontból értékelje az ismert betörési módszereket. 6 Intelligens kártyák elleni támadások taxonómiája A dolgozatot az IK történetének áttekintésével kezdjük. Részletesebben elemezzük a mikroszámítógép szerepét, különös figyelmet szentelünk a kártyabirtokos vagy használati jogokkal felruházott személy azonosításának

módszereire, mivel ez biztonságtechnikai szempontból kiemelten érdekes. Az általános áttekintés után érintőlegesen bemutatunk két élő; egy fizikai és egy alkalmazó rétegű szabványt. Ezek ismertetése az IK-k belső „lelkivilágának” bemutatására szolgál, mely elengedhetetlen a későbbi taxonómia megértéséhez. A szabványok után érintőlegesen foglalkozunk a titkosítási algoritmusokkal, mivel a szoftveres töréseknek ezek „gyengeségei” az alapjuk. A 7. fejezetben a biztonságtechnikai taxonómiák hasznosságát igyekszünk bemutatni néhány, mára már klasszikusnak mondható, ismert taxonómián keresztül. A következő rész az általánosból a konkrét felé halad, az ún. támadási fás reprezentációról írunk. Tesszük ezt azért, mert a dolgozat fő tárgyának tekinthető taxonómia is egy ilyen támadási fa. Ez a rész rámutat a reprezentáció választásának okaira is A konkrét taxonómia részletes bemutatása után

összefoglaljuk a dolgozat eredményeit. 7 Intelligens kártyák elleni támadások taxonómiája 2. Történeti áttekintés és osztályzás Az adathordozó kártyák, a rájuk integrált technológia szerint, nagyon különbözőek lehetnek. Legegyszerűbb változatuk az ún mágneses memóriakártyák, ezeket az 1920as évektől kezdve használják Érdemi részük mindössze egy mágnesezhető felületi rétegű szalag (ferromágneses részecskék találhatók a szalag anyagában, így ez a magnószalaghoz hasonló technológia), melyre a kibocsátó valamilyen kis méretű, statikus értéket helyez el (megfelelő szerkezettel újraírható a szalag, de a kémiai rendszer gyors öregedése miatt csak egyszer, gyártáskor élnek a lehetőséggel). Az adatábrázolás, a vonalkódokhoz hasonló módon történik; az északi és déli pólusú sávok szélessége, valamint váltakozása reprezentálja az információt. A leolvasó eszköznek mindössze annyi dolga van, hogy a

szalagot letapogatva dekódolja és értelmezze a hordozott adatokat. Természetesen a tárolt információt lehet rejtjelezni, de mivel a ráírt anyag statikus, a használt titkosítási eljárás feltörése után az összes hasonló mágneses memóriakártya „meztelenné” válik, elveszti csekély biztonságát. Mivel előállításuk gyors és olcsó, valamint nem minden esetben életbevágóan fontos a titoktartás, manapság is sok helyütt alkalmazzák őket (bankkártyák, blokkoló kártyák, klubkártyák, beléptető kártyák). Főbb hibái közé tartozik, hogy kicsi a hibatűrő képességük, könnyen hamisíthatók és alacsony a tárolási kapacitásuk (1kB alatt). Elmondható, hogy a mágneses memóriakártyák a fizetési folyamatok elektronikus automatizálása végett jöttek létre, a kártyán rögzített információ biztonságára kisebb hangsúlyt helyezve. A mágneses adattárolásnál jobb technológia az optikailag írható/olvasható felületek

használata. A kártya egy részét a klasszikus CD-hez hasonló réteggel vonják be. Az optikai memóriakártyák tehát nem jelentenek elvi újítást a delejes társaikhoz képest, csupán jóval nagyobb a kapacitásuk (akár 4MB, ez jelentősen több az IK-k tárméreténél). A következő generációt az IC-s (integrated circuit – integrált áramkör) memóriakártyák jelentik. Gyakorlatilag csak fizikai különbség van köztük és az egyéb memóriakártyák között. Az IC-s memóriakártya egy írható, olvasható emlékezőáramkörből áll, előnye a szalagokkal szemben, hogy az adattartalom dinamikus (könnyedén és elvben akárhányszor módosítható). Információvédelemről itt még ugyancsak nem beszélhetünk, mert a kártya olvasásának/írásának módja nyilvános, egy olcsó célkészség segítségével bárki hozzáférhet a tartalmához (ami lehet rejtjelezve). Olyan területeken, esetekben érdemes használni, amikor nem lényeges az adatok titokban

maradása. Mellette szól, hogy a bonyolult IK-knál számottevően kisebb áron előállítható, valamint, hogy az adatok változása esetén nem kell eldobnunk a legyártott lapkát. Egy biztonságosabb technológia a csipkártya (más terminológiában: védett memóriájú kártya). Az elnevezést, a külső hasonlóságuk miatt, szokták használni – tévesen – az IK-kra is, de valójában egy sokkal egyszerűbb szolgáltatásról van szó. Igazi intelligencia nincs a IC-ben, csupán egy speciális áramkör van a memória köré szervezve. A csip logikája kártyánként különböző, arra szolgál, hogy valamilyen ügyes algoritmussal óvja a memória tartalmát, de ez nem programozható át. Felfogható a rendszer úgy is, mintha az adatírás, -olvasás egy speciális logika szerint zajlana, ezért 8 Intelligens kártyák elleni támadások taxonómiája szokták ezt a részosztályt logikai kártyáknak is nevezni. Egy adott titkosító módszer hardveres

implementációjával elérhető, hogy az információ biztonságban tárolódjon a kártyán. Hibája, hogy nem képes haladni a korral, ha például egy kódoló algoritmust elméletileg feltörnek, vagy a számítási kapacitás „felnő” a kulcstérben való brute-force1 kereséshez, a védelem tovább nem garantált. Mivel egy fix lépésekből álló áramkör tervezése egyszerűbb és olcsóbb egy általános célú mikroprocesszornál (sőt, rengeteg optimalizálási lehetőség adódhat), ezért csak a rövidtávon érdekes adatok privát tárolására alkalmas. A Moore-féle empirikus törvény2 segítségével jó közelítéssel megbecsülhetjük, hogy egy adott méretű kulcs mikor válik gyengévé (belátható időn belül, próbálgatással megfejthetővé), így – az adat elöregedési idejét figyelembe véve – meg tudjuk választani az alkalmas kulcsmértet. Egy sifrírozási eljárás elvi feltörésének idejére természetesen nem tudunk jóslatot adni,

ezért mindig fennáll a veszély, hogy csipkártyánk elavul. Ha egy közepesen biztonságos monofunkciós, viszonylagosan alacsony költségű kártyára van szükségünk, egy jól megtervezett csipkártya a megfelelő választás. Használatuk széles körben elterjedt, ilyenek a törzsvásárlói (pontgyűjtő) kártyák vagy a nyilvános telefonok kártyái. A kategóriába tartatozó csipkártyákat tovább tudjuk csoportosítani aszerint, hogy csak az írás joga van-e valamilyen módon (pl. titkos kóddal) védve – az olvasás publikus –, vagy bármilyen hozzáférés A ma elérhető legmodernebb kártyatechnológiát a többfunkciós, általános használatú mikroszámítógéppel ellátott lapocskák képviselik. Bombaszerű elterjedésüknek leginkább relatíve borsos áruk szab gátat. Egy BBC (British Broadcasting Corporation) felmérés szerint 2003-ban 2,8 milliárd IK volt világszerte piaci forgalomban (ennek 40% európai tulajdonosnál). Elsőnek 1969-ben

Jurgen Dethloff rukkolt elő a miniszámítógép ötletével. A szakirodalom az IK-k születését 1974-re datálja, ebben az évben egy franci mérnök, Roland Moreno világszerte szabadalmaztatta J. D vízióját 4 évvel később, a szintén francia származású, Michel Ugon a szabadalmat adaptálta a bankkártyák világába. Az IK-k ekkor nyerték el mostani, plasztiklapos formájukat (léteznek egyéb megjelenési formák is). Az ötlet bevált, M. Ugon megkapta a Francia Becsületrendet, a franciaországi bankok azóta is alapvetően intelligens csippel felszerelt bankkártyákat alkalmaznak [18]. A 80-as években több országban is elkezdték az IK-k ipari előállítását. Elterjedését tovább segítette, hogy a városi nyilvános telefonok rongálása ellen a francia közigazgatás IKkkal működő készülékek bevezetésével lépett fel. Az évszázad végére pedig, a GSM telefonos kommunikáció terjedésének hatására, a legtöbb európai háztartásban

megjelent. A kompatibilitás és egységesítés érdekében a gyártók és a forgalmazók egy közös nemzetközi szabványt dolgoztak ki (ISO 7816), amelyet a 4. fejezetben még bemutatunk. A IK-k belsejében általában egy 8-bites RISC mikroprocesszor helyezkedik el (már létezik korszerű 16- ill. 32-bites mikroszámítógép is), melyhez társulhat egy 1 Szó szerinti jelentése „nyers erő”, a szakirodalomban a szisztematikusan próbálkozó algoritmusokat illetik ezzel a jelzővel. 2 Egy integrált áramkörben használt tranzisztorok száma mintegy kétévenként megduplázódik. 9 Intelligens kártyák elleni támadások taxonómiája kripto- vagy egy numerikus-processzor a specifikus titkosító számítások elvégzéséhez. A számítógép „egyik oldalára” egy 8 lábas bemeneti interfész van kötve (a csip külső, vezérlő felülete), a „másik oldalon” pedig a külvilágtól védett memória helyezkedik el (1. ábra) Ennek részei és azok

korunkra jellemző mérettartományai: RAM (5121024B), ROM (16-32kB), EEPROM (4-32kB) A memóriafajtákról bővebben a 131 függelékből tájékozódhatunk. A belső processzor egyfeladatos, vagyis nem támogatja a többszálú programok futtatását. 1. ábra Az IK belső felépítésének sematikus vázlata (az Internetről). Érdekes megfigyelni, hogy míg a számítógépek teljesítménye rohamosan nő, addig a IK-k a 25 éves történelmük során alig fejlődtek. Ez persze csak látszólagos stagnálás, egy adott erejű IK előállítási költségei idővel folyamatosan csökkentek. Nem is feltétlenül szükséges egyébként, hogy a lapocskák egy átlagos 80-as évekbeli számítógép szintjét meghaladják. Az IK-k nem képesek önmagukban üzemelni (nincs energiaforrás), ezért a működtetésükhöz szükség van egy beágyazó környezet (CAD – Card Acceptance Device, magyarul kártyaolvasó vagy terminál) használatára. A hardverpiacon a forgalmazó cégek a

legkülönbözőbb olvasószerkezeteket alkalmaznak: USB1-s, PCMCIA, hálózati, floppymeghajtóba dugható, mobiltelefon stb. A lapkák egy újabb generációja már nélkülözni tudja ezt a fizikai érintkezést, ezekben egy apró rezgőkör kommunikál az éteren keresztül a terminállal (contactless). Amellett, hogy használatuk sokkal kényelmesebb, jóval drágábbak és komplexebbek, mert nem az olvasótól kapják a működéshez szükséges energiát, hanem saját apró akkumulátoruk van. Valójában tehát állandóan aktívak Léteznek olyan lapkák is, melyek mindkét úton (érintkező és rádióhullám) tudnak kapcsolódni a kártyaolvasóhoz (kombi-kártya). 1 Universal Serial Bus: perifériák PC-hez való csatlakoztatásának korszerű, általános protokollja. 10 Intelligens kártyák elleni támadások taxonómiája A számítástechnika történelmére jellemző, hogy az újdonsült technikákat általában több kereskedő, a riválisoktól eltérő

formában valósítja meg. Így káosz alakul ki, mivel a rendelkezésre álló hardverek nem kompatibilisek egymással, ezért egy általános szoftver készítése lehetetlenné válik. Az egységesítés első lépése a már említett ISO szabvány kiadása volt. Nem elégséges azonban a fizikai paraméterek rögzítése, igénnyel találkozunk a platform független szoftverek támogatására is. Mivel a Java nyelv régóta élen kíván járni az architektúra független applikációk fejlesztésének támogatásában – ez az egyik fő célterülete –, ezért 1997 tavaszán kiadásra került a JavaCard API 1.0 elnevezésű specifikáció (ma használt verzió 221) Ennek hatására a szoftveresek egy olyan standardhoz jutottak, mellyel tetszőleges IK-n futtatható programokat készíthetnek. A rendszer kulcsa egy ágens komponens, az ún Java Virtuális Gép (továbbiakban JVG), mely egy absztrakt számítógép szimulátora. A programokat a JVG-hez kell lefordítani, amit

majd az adott kártyán lévő szimulátor értelmez és futtat. Persze fontos, hogy minden IK típushoz létezzen egy JVG, amit a gyártók feladata – talán érdeke is – biztosítani. Az erőforrások szűkössége okán technikai problémát jelent mind a JVG, mind a használt applikáció együttes tárolása, pláne ha az egy titkosító eljárás egy nagy méretű kulccsal. A másik probléma a szimulációnak köszönhető sebességcsökkenés. Egy Java-s applikáció 30-szor lassabban hajtódik végre, mint gépi kódban megírt társa. Napjainkban intenzív kutatás tárgya, hogy ezt a Java-s struktúrát hatékonyan realizálni tudjuk (első megvalósulások: Cyberflex [25], GemXPresso). 2. ábra A Cyberflex kártyákon látható pillangó embléma a pillangó-hatást hivatott szimbolizálni: egy apró csip forradalmasítja a jelenkor biztonságtechnikáját (forrás: [25]). A Java kártyák (röviden JK) nagy előnye, hogy a homokozónak is gúnyolt JVG felett futó

programok elől deprimálni tudunk bizonyos tevékenységeket, így növelve a memória tartalmának biztonságát. Másik pozitívum, hogy maga a működést biztosító Java kód le-föl tölthető a JK-ra, ezért nem szükséges azt folyton a memóriában tárolni, elég futtatás előtt feltölteni. A multifunkcionalitást az applikációk folyamatos cseréjével könnyen biztosítani tudjuk. A Dallas Semiconductor az 1998-as JavaOne konferencián egy sajátságos IK implementációval rukkolt elő, a mikroszámítógépet egy ujjra húzható gyűrűben 11 Intelligens kártyák elleni támadások taxonómiája helyezte el (3. ábra) Az ISO 7816-os szabványtól eltérően, a gyűrű egy „1-wire logic” (1 huzalos logika) típusú interfésszel van felszerelve (iButton), melynek lényege, hogy csak egy csatornán (szokványosan 6-8) keresztül kapja a vezérlőtől a bemenetet. A gyűrűhöz egy terminált is kifejlesztettek, amiben két független gyűrű fér el. Manapság

már nem szokatlanok az ilyen ötletes mikroszámítógép beágyazások. 3. ábra Egy iButton alapú Java gyűrű (az Internetről). A becslések szerint a jövőben egyre több területen és helyen fognak IK-kat alkalmazni. Erre utal, hogy egyre több bank hitelkártya rendszere felel meg az EMV (Europay, MasterCard, Visa) intelligens bankkártyákra vonatkozó előírásoknak világszerte. Az EMV a nagy bankkártya társaságok közös szabványa, mely az IK-on alapuló kártyák felé támasztott elvárásokat rögzíti. További bíztató előjel, hogy a Microsoft Windows 2000 és Windows XP operációs rendszerei már támogatják az IK-s ügyfél-azonosítást, ez mindenképp a kártyák elterjedését segíti. Egyéb piacuraló operációs rendszerek is igyekeznek támogatni a miniszámítógépeket; pl. a linuxos kártyakezelő könyvtárak kifejlesztésének szorgalmazására alakult a M.USCLE projekt [26]. A fejlődésre regresszív hatással lehet a MagnePrint

technológia megjelenése, ami a jelenlegi bankkártyákon meglévő mágnescsík ujjlenyomatszerű, egyedi mintája alapján azonosítja az ügyfelet, nehézzé téve ezáltal a kártya másolását, hamisítását [20]. Ez a jelenlegi kártyaállomány lecserélése nélkül teremt magasabb fokú biztonságot, míg az IK-ra való áttérés az összes plasztiklap bevonását indukálja, ami nem kis költséggel jár. A fokozatos csere segít ezen, de akkor a két rendszert párhuzamosan kell üzemben tartani. Év 1969. 1970. 1974. 1979. 1982. Esemény Történeti összefoglaló: Jürgen Dethloff felveti az IK gondolatát. Kunitaga Arimura professzor szabadalmaztatja az IK ötletét, de csak Japánban. Roland Moreno világméretű szabadalmat nyújt be az IK megvalósítására. A Motorola megtervezi első IK-s mikroprocesszorát. A Motorola Skóciában IK gyárat létesít. 12 Intelligens kártyák elleni támadások taxonómiája Év 1985. 1987. 1987. 1996. 1997. 1997.

Esemény Franciaországban IK-t használnak telefonkártyaként. Franciaországban kísérletileg banki használatban kipróbálják mikroszámítógépes kártyát. ISO/IEC 7816-os szabvány alapjai. EMV szabvány. A Motorola bejelenti a „Világméretű SmartCard Divízió” létrejöttét. JavaCard API 1.0-s specifikáció 13 a Intelligens kártyák elleni támadások taxonómiája 3. Az IK-k szerepe és jelentősége Felmerül a kérdés, hogy egyáltalán milyen feladatok elvégzésére lehet használni egy ilyen apró számítógépet. Szimulációk elemzésére (meteorológiai modellezés, tudományos kutatás, mesterséges intelligencia) alkalmatlan, mert szűkös erőforrásaival nem versenyezhet a több száz számolási egységet magába foglaló szuperszámítógépekkel, gépfürtökkel. Vezérlésre (routing, realtime alkalmazások, célrobotok) szintén nem használható, mivel a külvilággal csak egy lassú és szűk keresztmetszetű csatornán képes

kommunikálni. Egyedüli értelmes alkalmazása az adathordozás, adatmanipuláció, információkezelés lehet. Mint azt már korábban említettük, a számítógép szerepe, hogy izolálja a külvilágot a memóriában tárolt adatoktól, így védve azokat az illetéktelen felhasználástól. 3.1 Alkalmazások Egy újszerű technika bemutatásakor fontos, hogy érveljünk hasznossága mellett. Ez a fejezet arra hivatott, hogy bemutasson néhány olyan alkalmazási területet, ahol az IK-k az eddig bevált eszközöknél valamilyen szempontból (akár több tekintetben is) jobb megoldást kínál. Sokszor találkozunk olyan szabadalmakkal, melyek áruk vagy nehézkes működtetésük miatt örökké csak papíron léteznek. Az IK-k már több területen bizonyítottak (GSM telefonok) és számos olyan alkalmazási terület van, ahol egyre szélesebb körben kerülnek felhasználásra (e-mail titkosítás). Mennél inkább elterjednek, annál inkább érdekes az általuk szavatolt

biztonság. A teljesség igénye nélkül, tekintsük tehát át az IK-k jelenlegi, valamint rövid távon lehetséges felhasználásait. Egyszerű bankkártyák: legelső és legtesthezállóbb szerepköre az IK-nak az elektronikus számlakezelés segítése. Rajtuk tárolódik az ügyfél egyedi azonosítója, amit az ATM (Automatic Teller Machine) vagy POS (Point Of Sale) terminál a kapcsolódó bankszámla kiválasztásához használ. Alapvető elvárás, hogy a birtokoson/birtokosokon kívül senki sem férjen hozzá a számlához, ne lehessen jogtalanul tranzakciókat végrehajtani rajta. Minden számlaműveletnél tehát szükséges a végrehajtó autentikációja, ezt hivatott a mikroszámítógép ellátni, az alkalmazható módszerekről később lesz szó. Ismeretes, hogy anyagi értékkel bíró kreditünk nem csupán egy banknál lehet, ezért ebbe a kategóriába tartoznak a telefonkártyák, törzsvásárlói/törzsköri kártyák illetve az utazókártyák (travel

card) is. A telefonkártyákat senkinek nem kell bemutatni. A törzsvásárlói kártyákat általában üzletláncok alkalmazzák; minden vásárláskor pontokat gyűjthetünk rájuk, ezeket később levásárolhatjuk. A törzsköri kártyákat egy célzott közönségnek szánják (hallgatók, nyugdíjasok, autósklub, tv csatorna előfizetők), ők a kártyával bizonyos anyagi kedvezményekhez juthatnak. Az utazókártya a busz-, villamosjegy modern változata, a csipen lévő kreditből a tömegközlekedést vehetjük igénybe. Hangsúlyozni kell, hogy ezen kártyatípusok mindegyike számlapénzt hordoz, ezért bizalmas kezelést kíván! Elektronikus pénztárca: eddig olyan elektronikus fizetőeszközök szerepeltek, melyek csak azonosításra szolgálnak, de nem tárolnak effektív pénzt. Az IK-k elég biztonságosak ahhoz, hogy pénztárcaként működjenek. A felhasználó egy bankomatnál 14 Intelligens kártyák elleni támadások taxonómiája feltölti a lapkát,

ekkor a számlája csökken a megadott mértékben, viszont a pénz megjelenik a kártyán. Fizetéskor csökken a bankkártyán lévő összeg és jóváíródik az eladó betétszámláján. Úgy kell elképzelni, mint egy valódi pénztárcát, azzal a plusszal, hogy ezt hiába lopják el, a megfelelő titkok vagy személyjegyek nélkül nem igazán tudnak vele mit kezdeni. Persze ilyen rendszer kiépítésekor garantálni kell, hogy minden résztvevő betartsa a szabályokat. Ezt a külső terminál és a mikroszámítógép kölcsönös hitelesség vizsgálata teszi lehetővé (kézfogásos protokoll). A korábban (sőt még manapság is) előszeretettel alkalmazott mágneskártyák nem alkalmasak egy elektronikus pénztárca megvalósítására. Előnye, hogy nincs szükség egy olyan központi szerverre (esetleg gépparkra), amin az összes tranzakció végbemegy, a fizetés helyben történik. Ennek adatvédelmi pozitívumai is vannak SIM kártya: hazánkban az ilyen típusú

IK-ból van a legtöbb. Leolvasó terminálja maga a mobiltelefon. Ez tárolja az előfizetésünkhöz tartozó telefonszámot, egyedi kulcsokat, a mobilhálózat paramétereit, egy telefonregisztert és a kapott/küldött SMS-eket. Használatukkal válik lehetővé, hogy függetleníteni tudjuk az előfizetést magától a készüléktől. A titkosítás itt olyan szempontból fontos, hogy ne lehessen hamisítani a SIM kártyákat, más ne kaphassa meg a nekünk címzett SMS-eket. Az sem mellékes szempont, hogy más ne tudjon telefonálni a mi kontónkra. A SIM kártyák védelmét kétszintű PIN-kódos konstrukcióval oldották meg. „Kulcstartó” (cipher card): e megnevezést azért került idézőjelek közé, mert az IK-s terminológiában teljesen mást jelent, mint a közismert személyes dísztárgy. A kulcstartó kártyák valamilyen titkosításhoz használt kulcsokat tárolnak. Leginkább az aszimmetrikus kódolások titkos kulcsát/kulcsait hordozzák a

memóriájukban. Jobb esetben arra is képesek, hogy ezt maguk állítsák elő, ami azért praktikus, mert sem a kulcs, sem az előállításához használt átmeneti számok (RSA esetében pl. a prímek) nem kerülhetnek napvilágra, örökké a kártya belső rejtélyét képezik (zero-knowledge azonosítási módszer). Amennyiben új kulcspárt kérünk a lapkától, az csak a nyilvános kulcsot közli velünk (a fogalmak tisztázása érdekében lásd a 6.3 alfejezetet) Az ilyen kártyák csökkentik a hanyag kulcskezelés (publikálás az Interneten, feljegyezés a személyes noteszbe, elfecsegés, nyilvános csatornán továbbítás stb.) veszélyeit Az aszimmetrikus titkosítások (részletesen 6.3 alfejezetben) esetében, egy nyilvános kulccsal rejtjelezett üzenetet csak az tud megfejteni, aki ismeri a hozzá tartozó titkos kulcsot. Mivel jelen esetben azt csak az IK tudja, a csipben elhelyezett számítógép feladata a desifrírozás. Az eljárás a következő; valaki

küld nekünk egy, a nyilvános kulcsunkkal titkosított üzenetet, ezt feltöltjük a kártyára, a csip az inputot a titkos kulcs ismeretében desifrírozza, majd a feladott üzenet eredeti szövegét visszaküldi a terminálnak. A módszer digitális aláírás készítéséhez is használható, ennek módjáról a 6.3 alfejezetben írunk A jövőben sok ilyen IK alkalmazás várható, az elterjedtebb e-mail kliensek (Microsoft Outlook Express, Netscape Messenger) már több éve támogatják ezt a fajta biztonsági megoldást. Az e-mailek területén mindkét funkcióra nagy igény van, hiszen a protokoll öregsége miatt (nem világméretű, nyitott hálózatra tervezték) sok a visszaélés. Az Interneten keresztül zajló e-vásárlás egyre inkább terjedőben van. A pénzintézetek különböző alternatív megoldásokat kínálnak az elektronikus árucsere korrekt lebonyolításához. Kézenfekvő megoldás a digitális 15 Intelligens kártyák elleni támadások

taxonómiája aláírással hitelesített, titkosított vásárlási szerződés alkalmazása, amelyhez tartozó kriptográfiai paraméterek a „kulcstartóban” vannak. Egy ilyen aláírt szerződés jogilag bizonyítványa annak, hogy valóban az aláíró rendelte meg az adott terméket, szolgáltatást és nem valaki „szórakozott”. Egy esetleges visszaélés azonban így sem zárható ki 100%-ig. Világosan látszik, hogy ez egy forradalmian új technika, mely valóban az IK-k belső szuverén világát használják ki. Egész pontosan azt, hogy a mikroszámítógép képes olyan adatot generálni, amit „soha senki” – a macskakörmök a 100%-os biztonsággal szembeni szkepticizmust fejezik ki – nem fog megtudni. Orvosi kórtörténet: már többször említettük, hogy az IK-k programozhatóságuk miatt összetettebb információkezelésre alkalmasak. Egy beteg (vagy kezelt) kórtörténetét a legtöbb civilizált országban már régóta számítógépeken

tárolják. Ez általában egy komplex adatbázis, mely egy központi szerveren foglal helyet, a háziorvos, mentőorvos, műtős terminálja ehhez kapcsolódik és kéri le az adatokat. Világos, hogy ember fizikai paraméterei, gyógyszerérzékenysége, korábbi betegségei stb. egy hatalmas adathalmazt alkotnak, melynek részei más-más szakemberre tartoznak. Milyen jó lenne, ha ezeket az információkat a zsebünkben tudnánk hordani a hozzáférési szabályok megőrzésével. Erre az igényre megoldás az IK-k e területen való alkalmazása. Az orvosi anyagok a kártyán tárolódnak és különböző hozzáférési szinteket hozunk létre a módosításukhoz, ahol a kérelmező autorizációját a belső számítógép biztosítja. Például a vércsoportunk publikus, így baleset esetén a kiérkező mentős azonnal képes a segítségnyújtásra, de az allergiás érzékenységeink listájához csak a szakorvos férhet hozzá. Szembetegségünk paramétereit mondjuk egy

optikus olvashatja, de írására csak a kedvenc szemészünk képes. Ilyen szofisztikált jogkörrendszer megvalósíthatón egy IK-n Előnye, hogy a végső soron ránk vonatkozó adathalmaz a mi birtokunkban van, nem pedig egy központi adatbázisban. Ez a megoldás jobban támogatja a demokratikus államoknak a személyiségi jogokra vonatkozó követelményeit. Az illető maga mondhatja meg, melyik orvos meddig juthat el kórtörténete megismerésében, miközben rá van kényszerítve a társadalom egészségügyi normáinak betartására. Egy ilyen jelegű általános rendszer kiépítése és megszervezése kormányzati feladat, bármelyik résztvevő engedetlensége a szisztéma felborulásához vezethet. Az IK-k ilyetén alkalmazásának progresszív terjedése várható a közeljövőben. Multifunkciós: megoldható, hogy egy darab kártya egyszerre képes legyen az összes felsorolt funkció szolgáltatására. Képzeljünk el egy kártyalap méretű eszközt, mely a GSM

kommunikációban is segítségünkre van, fizetni is tudunk vele, tárolja a digitális aláírásunkat, a benzinkútnál jutalompontot kapunk rá és a rendelőben is hasznát vesszük. Egy ilyen kártya realizálásakor hatalmas infrastrukturális beruházásokkal kell számolnunk, konkrétan, ki kell építenünk egy átfogó, biztonságos, kényelmes kártyakezelő hálózatot. Bár a mérnöki tudás már rendelkezésre áll egy ilyen univerzális kártya bevezetéséhez, az anyagi, politikai és szociális akadályok miatt az eddigi, ezt megcélzó kísérletek kudarcot vallottak. Példának okáért, a hazai diákigazolványok 1998-tól állnak az összes akkreditált felsőoktatási képzésben résztvevő hallgató 16 Intelligens kártyák elleni támadások taxonómiája rendelkezésére, mégis az utóbbi 6 évben kevés helyen használták ki a rajta helyet foglaló intelligens csip adta lehetőségeket. 3.2 Az IK-kon kivitelezett azonosítás formái Egy védett

erőforráshoz való hozzáférés általában két lépésben történik. Az első fázist autentikációnak nevezzük és a felhasználó kilétének kétséget kizáró meghatározását jelenti. Ezt kövei az autorizáció, ami az alany jogokkal való felruházásának szakasza Mondanunk sem kell, hogy az IK-ra fejlesztett adatkezelő algoritmusok is ezt a logikát követik. Az azonosításkor nem elég elhinni a jelöltnek, hogy ő az, akinek mondja magát, ezt valamivel bizonyítania kell. Háromféle módszert szokás alkalmazni, az elsőt „birtoklok valamit”, a másodikat „tudok valamit” vagy jelszavas, a harmadikat egyéni jegy szerinti autentikációnak nevezzük. Egy IK használatához már eleve birtokolnunk kell magát a kártyát. Az azonosítás első fajtája tehát minden IK-s autentikációra jellemző. Lássuk most, milyen formában implementálják az azonosítás két utóbbi formáját az IK-k világában! PIN-kód: a legelemibb (és egyben

legkockázatosabb) védelem, ha egy titkos PIN-kóddal (Personal Identification Number) zároljuk az adatokat. A birtokos ismer egy jelszó szerepű számot (általában 4-8 számjegyű), ez maga a PIN-kód. Ennek párja a kártya memóriájában is tárolva van. Az IK, aktiválása (reset jel) utáni első lépése, hogy bekéri a felhasználótól a PIN-kódot. A megadott szám feltöltődik a kártyára, a belső számítógép összehasonlítja azt saját példányával, amennyiben nem azonosak, megtagadja a válaszadást. Az elv nagyon hasonlít az aktatáskák vagy a páncélszekrények zárjának működéséhez. Plusz defenzíva lehet, hogy 3 darab sikertelen próbálkozás után a IK megsemmisíti önmagát (törli a memóriáját). Azért, hogy a feledékeny birtokosok ne szenvedjenek el nagy tragédiákat, lehetőség van egy középső szint beékelésére. Ilyenkor a „megsemmisült” kártyát egy jóval hosszabb, ún PUKkóddal még újra lehet éleszteni, de a

PUK-kód háromszori elvétésével már tényleg örökre elérhetetlenné válnak az adatok. Ha a PUK-kódot megfelelően nagynak választjuk, ez a kevésbé merev szisztéma nem add több esélyt a véletlen kóddal próbálkozóknak. A védelmi rendszer komplexitását lehet inkrementálni több PIN-kód használatával. A csip tartalmának védelmét az biztosítja, hogy a felhasználó titokban tartja választott számkombinációját. Vigyázni kell a túl elemi számkódokkal (pl 1234, vagy 1111), mert a birtokos ötlettelenségére alapozva, a támadók ezeket fogják először kipróbálni. Az ilyen jellegű kódok elutasítását beépíthetjük a PIN-kód felújító rutinba, így növelve a kártya robosztusságát. Biometria: „minden ember különböző” – hangzik az ismert frázis, ha viszont így van, akkor kell, hogy legyenek sajátságos jegyek, melyek árulkodnak az egyed többitől való differenciáiról. A biometrikus azonosítás arról szól, hogy az

azonosításra váró személytől valamilyen biológia mintát veszünk, amit összehasonlítunk egy referenciával. Amennyiben az eltérés nem szignifikáns, elfogadjuk a célszemély identifikációját. Az azonosításhoz egy könnyen, gyorsan és fájdalommentesen digitalizálható, egyedenként jócskán eltérő jegyre van szükségünk: ujjlenyomat, retina, írisz, arc, DNS, hang, aláírás, egérmozgatási stílus. Az ilyen jellegű kutatások és kísérletek az utóbbi időben komoly eredményeket hoztak. A hatékony összehasonlító 17 Intelligens kártyák elleni támadások taxonómiája algoritmus bonyolultsága mellett, a mintaanyag hatalmas mérete okoz gondot. Példának okáért az emberi DNS több mint 3 milliárd bázispárból áll, ami óriási, 23 000 000 000 bitnyi adatot jelent, ennek 99%-a minden emberben azonos, a maradék 1%-ot kell az azonosításkor megvizsgálni. Rendkívül hasznos lenne, ha ezeket a biometrikus azonosítókat egy IK-n tudnánk

tárolni. A mintát fel tudjuk használni kilétünk igazolására, vagy lehet a kártya kulcsa (egy bonyolult PIN-kóddal analóg módon). A két felhasználás egyfajta ambivalenciát mutatat, az előbbi esetben az a célunk, hogy minél szélesebb körben ismert legyen a minta („ez tényleg az ő ujjlenyomata”), ezzel szemben az utóbbinál pont, hogy félteni kell azt a hamisítóktól. Az azonosítás folyamata igen egyszerű, egy terminál beolvassa például az ujjlenyomatunkat, átküldi az IK-nak, az összehasonlítja a benne lévő etalonnal, és pozitív eredmény esetén szolgálatkész állapotba kapcsol. Sajnos az IK-k jelenlegi, fizikai paraméterei (számítási sebesség, tárméret) nem teszi képessé a biometrikus azonosításra, de sok gazdasági, tudományos projekt foglalkozik ilyen célú fejlesztéssel. A referenciamintát tárolhatnánk egy egyszerű adathordozón is akár, de úgy a támadó kezébe kerülhet és segítségével megalkotható egy hamis

személyjegy. Persze ez nem egyszerű feladat, mert a leolvasók élő mintákat várnak, és vajon ki tud manapság az enyémhez hasonló lenyomatú retinát növeszteni? Mindenesetre jobb, ha a mintát egy olyan „dobozban” tartjuk, ahonnan nem lehet vagy nehéz kiszedni; az intelligens csip egy ilyen doboz. A biometrikus azonosítás nagy problémája, hogy a fogyatékosok számára használhatatlan. Egy kéz nélküli személytől nem tudunk ujjlenyomatot venni, egy vaknak meg nincs élő retinája. Minden külső jegynek megvan a maga fogyatékossága, ezek egyikét sem használhatjuk általánosan. Áthidaló megoldás a DNS vizsgálata, de az mag még lassú és költséges eljárás, egy mikroszámítógép számára pláne elvégezhetetlen feladat. Egyébként még ez sem tökéletes technika, gondoljunk csak az egypetéjű ikerpárokra. Valamilyen tudás, készség (írás, egérmozgatás, fogalmazási stílus) elemzése talán jobb lenne, de itt ismét belefutunk a

fogyatékossággal kapcsolatos problémába. 18 Intelligens kártyák elleni támadások taxonómiája 4. Röviden az ISO/IEC 7816-os szabványról Az International Organization for Standardization (ISO) egy világméretű, elsősorban technológiai szabványok kibocsátásával és gondozásával fogalakozó szervezet. Az általuk kibocsátott szabványok igyekeznek garantálni a termékek közötti kompatibilitást, az elvárható minőséget, az egészség- és környezettudatosságot. Az ISO hálózatának 148 ország a tagja, központja Svédország. 1947 február 23-án rakták le az alapjait, az utóbbi bő 50 év alatt a legszélesebb körben elfogadott szabványkibocsátóvá vált. Általában igaz, hogy minden új keletű kémiai, gépészeti, elektronikai, informatikai technológiát igyekeznek ISO szabvánnyá tenni. Minden, a neve alatt kiadott szabványt egy szám azonosít, ezek mindegyike nyilvános, bárki számára hozzáférhető. Az ISO 7816 az IK-k

nemzetközileg elfogadott standardja. A szabványt támogatja egy másik szervezet, az IEC (International Electrotechnical Commission), ezért szokták használni az ISO/IEC 7816 megnevezést is. Léteznek ugyan egyéb szabványok (pl ISO 14443 – contactless IK-k, CEN 1546, ETSI – telekommunikáció, EMV – bankkártya-forgalmazók szabványa), de az elterjedtsége miatt ezt a szabványt vesszük most górcső alá. Az ISO szervezetről további információkat tudhatunk meg a [16] webcímről. Fejezet ISO 7816-1 ISO 7816-2 ISO 7816-3 ISO 7816-4 ISO 7816-5 ISO 7816-6 ISO 7816-7 ISO 7816-8-9 ISO 7816-10 Leírás Az ISO/IEC 7816 részei: Fizikai paraméterek. A kapcsolódási pontok leírása (kártyaolvasók részére). Az elektronikus jelek és a fizikai szintű átviteli protokoll leírása. Belső utasítások. K. é 1987 1988 1989 1995, 1998 Alkalmazások kezelésének leírása. 1994, 1996 Adatelemek, formátumok leírása. 1995 SCQL (Structured Card Query Language)

parancsok 1998 leírása. Az egész piacot átfogó biztonsági követelmények. 1999 Szinkron kommunikációs IK-k. 1999 A szabványt részekre (fejezetekre) szokás bontani, minden rész egy külön tulajdonsággal, elvárással foglalkozik. Az első rész a fizikai karakterisztikáját adja meg az integrált áramkörnek. Definiálja a külső természeti hatások (mágneses mező, UVfény, statikus elektromos mező, hőmérséklet, mechanikai deformáció) elleni állóképesség küszöbértékeit illetve ezek beállításához ajánl néhány tesztelési technikát (ISO 10373). Hivatkozik továbbá a 7810-es ISO szabványra, ami a intelligens csipet bennfoglaló plasztiklap dimenzióit (szélesség: 85,72 mm/3,375 inch, magasság: 54,03 mm/2,125 inch, vastagság: 0,76 mm [±0,08]/0,03 inch) és a csip pontos helyét írja le (4. ábra). A csip külső felületének és a leolvasó szerkezet lábainak stabilan kell érintkeznie 19 Intelligens kártyák elleni támadások

taxonómiája a számítások alatt, ezért nem hagyhatók figyelmen kívül a szabvány mechanikai tulajdonságokra vonatkozó előírásai. 4. ábra A csip síkbeli dimenziói (az Internetről). A 2. rész a csip kommunikációs interfészének topológiájáról szól Meghatározza, hogy a 8 külső láb (C1-C8) milyen sorrendben és milyen geometriai elrendezésben fedje le a csip külső felületét (5. ábra) Sajnos ezt a fejezetet sok gyártó nem veszi elég komolyan és saját lábelrendezéssel áll elő. 5. ábra Az IK-k szabványos külső felülete (forrás: [16]). Láb Kód C1 C2 VCC RST C3 CLK C4 C5 C6 RFU GND VPP Magyarázat A lábak funkciói: A kártya tápellátása. Ezen a lábon keresztül lehet az mikroszámítógépet alapállapotba hozni (reset jel). Órajel, mellyel szabályozni tudjuk a belső CPU sebességét, elsősorban az adatcserét bonyolító általános protokoll használja. Későbbi felhasználásra fenntartva. A földelés. A

mikroszámítógép programozásához használt tápellátás 20 Intelligens kártyák elleni támadások taxonómiája Láb Kód C7 I/O C8 RFU Magyarázat (opcionális). Half-duplex kommunikációs csatorna a mikroszámítógép és a terminál között. Későbbi felhasználásra fenntartva. A következő, 3. szakasz az elektronikus szignálokat és az adatátviteli protokollok felépítését írja le. Elsősorban azoknak a villamosmérnököknek szól, akik a kártya és a leolvasó közötti legalacsonyabb szintű bitáramlást hivatottak megvalósítani. Az ISO szabvány megszabja az órajelek frekvenciatartományát, a feszültségértékeket (Vih, Vil, Vcc, Vpp, Voh, Vol stb.) és szervezésük karakterisztikáját A specifikált protokollok részletes bemutatása nem kapcsolódik szorosan a dolgozat tárgyához, ezért nem kerül ismertetésre. Dióhéjban annyit érdemes tudnunk, hogy a kommunikáció egy inicializáló reset jellel indul, melyet a terminál ad

ki. Az adatok oda-vissza, sorosan közlekednek egy 1 bites csatornán. Az adatcsere half-duplex módon (kétirányú, adott időben csak egyik üzenhet), hibavizsgálattal zajlik. A tápellátást a terminál szolgáltatja (VCC), a nem felejtő belső memória kaphat külön feszültségértéket (VPP). A 4-es sorszámot viselő rész az IK és az olvasó közötti üzenetek, utasítások, válaszok formáját deklarálja, biztonsági megfontolásokra is kitérve. A dokumentum támogatja, hogy a kártya memóriájában strukturáltan tudjunk információt elhelyezni. Igyekszik laza kereteket szabni, hogy a kártyafejlesztő cégeknek lehetőségük legyen kedvük szerint kiegészíteni a standard sémát. Az adatszervezési logika teljesen analóg az elterjedt fájlos absztrakcióval. A fájlrendszer gyökerében egy kötelező előfordulású MF (master file) helyezkedik el. Ez alá szerveződnek fás adatszerkezetben1 az állományok. A fa csúcsaiban, a szokványos könyvtárakat

kiváltó, DF-ek (dedicated file) helyezkednek el, ezek írják le az alájuk besorolt fájlok listáját. Minden DF-re külön zárat (védelmet) rakhatunk, így egy nagyon kifinomult hozzáférési hálózatot alakíthatunk ki. A fa levelei az ún EF-k (elementary file), melyeknek két fajtáját különböztetjük meg. Míg a belső EF-khez (internal EF) csak a mikroszámítógép férhet hozzá, addig a működő EF-khez (working EF) bárki. Minden fájlnak – típusától függetlenül – egy 2 bájtos azonosítója van, kitüntetett a 3F00162 szám, ez az MF rögzített kódja. Egy konkrét állományt az elérési útjával (DF-ek sorozta az MF-től a levélig, végül a fájl saját kódja) címezhetünk meg. A protokoll négyféle fájlstruktúrát körvonalaz. A legelemibb a szekvenciális adatábrázolás, mely simán a bájtok egy sorozatát jelenti (transparent EF). Az ISO támogatja továbbá a blokkos fájlok kezelését, ami azt takarja, hogy a fájlban az egyes

blokkok külön-külön azonosíthatók. A blokkméret lehet fix vagy változó A 4 formátum a ciklikus blokkfájl Egy adott állomány struktúráját attribútumai mutatják meg. A felhasználói hozzáférést minden egyes fájlnál egyedileg meghatározhatjuk. A szabvány elterjedtségére utal, hogy 1 A fás adatszerkezetről a 8. fejezetben több szó esik 2 A hexadecimális számábrázolást egy „16”-os alsó indexszel jelezzük. 21 Intelligens kártyák elleni támadások taxonómiája már létezik olyan szoftvercsomag (SCFS – Smartcard Filesystem), mellyel UNIX-os operációs rendszer alá tudunk felmountolni1 egy ISO 7816-4-es fájlrendszert [23]. 6. ábra Egy lehetséges fájlstruktúra (nevek hexadecimális formában). Azonosító 000016 000116 000216 001116 001216 010016 101216 2F0116 Magyarázat Fájl elnevezési konvenciók: PIN1-et tartalmazó fájl (CHV1). Belső kulcsfájl autentikációhoz. Egyedi sorszámfájl. Külső kulcsfájl

autentikációhoz. Privát RSA kulcsfájl. PIN2-őt tartalmazó fájl (CHV2). Publikus RSA kulcsfájl. ATR (answer to reset) fájl. A 4-es fejezet tárgyal még egy fizikai réteg feletti kommunikációs protokollt. Alapvetően egy mester-szolga (master-slave) típusú mechanizmusról van szó, ahol a mester a CAD, a feladatvégrehajtó pedig az IK. Az üzenetváltás alapegységét az 1 A UNIX közösség által használt kifejezés, egy adathordozó logikai fájlrendszerhez való csatlakoztatását jelenti. 22 Intelligens kártyák elleni támadások taxonómiája APDU-k (Application Processing Data Unit – szabad fordításban: alkalmazásprotokolladategységekben) képezik. Ennek két típusa létezik, melyek logikailag szorosan kapcsolódnak egymáshoz; utasítás, illetőleg válasz APDU. Az utasítás-válasz párok négy logikai csatornán közlekedhetnek, és az IK teljes körű vezérlését teszik lehetővé. Az utasítás APDU egy 4 bájtos fejlécből és egy

változó méretű törzsből tevődik össze. A fejléc első két bájtja (CLA, INS) lényegében az elvégzendő elemi feladatot határozza meg, a harmadik (P1) és negyedik (P2) bájt az utasítás paraméterei. A törzs az utasításhoz tartozó különleges adatokat tartalmazza (például, hogy mit írjunk egy fájlba). Első bájtja (Lc) – ha az nulla, akkor 2 és 3 bájtja – a törzs hosszát, a valódi adathalmazt követő Ls bájt (esetleg 3 bájt) pedig a várt válasz maximális méretét határozzák meg. Ezek megléte az adott utasítás jellegétől függ, akár az egész törzsrész is hiányozhat. A válasz APDU szintén egy változó kiterjedésű törzsrészből (Lr≤Lc hosszú), valamint két kötelező záró bájtból áll. A válasz APDU méretét az indukáló utasítás tartalmából konzekvensen ki lehet számolni. Az végső két bájt (SW1, SW2), az utasítás végrajtásának sikeréről ad tájékoztatást, hibafelderítésre használhatók. A

kommunikációt a terminál kezdi a reset jel kiadásával, erre a kártya az ATR (answer to reset) fájl tartalmával válaszol. Az ATR a kártya típusát, gyártóját és alapvető paramétereit írja le. A további működés a belső számítógép és a CAD interakciójának függvénye. Utasítás: Válasz: CLA B016 D016 D616 0E16 B216 D216 E216 DC16 CA16 DA16 A416 CLA Az APDU-k szerkezete: INS P1 P2 Lc D1,D2,,DLc D1,D2,,DLr SW1 Ls SW2 Elnevezés Magyarázat A szabványos APDU utasítások: READ BINARY Olvasás egy adott szekvenciális EF-ből. WRITE BINARY Új adat írása egy szekvenciális EF-be. Egy konkrét szekvenciális EF már meglévő UPDATE BINARY részét tudjuk vele felülírni. ERASE BINARY Töröli a megadott szekvenciális EF egy részét. Egy blokkos EF adott blokkjának/blokkjainak READ RECORD(S) olvasása. Egy blokkos EF egyik blokkjának írása WRITE RECORD (felülírás, bináris VAGY-olás, bináris ÉS-elés). Egy folytonos EF esetén a sorozat

végéhez APPEND RECORD konkatenálja, egy ciklikus EF esetén viszont az első pozícióra írja az új rekordot. UPDATE RECORD A parancs kezdeményezi egy blokk felülírását. Segítségével a futó alkalmazás egy változójának GET DATA (rövid élettartamú adat) értékét olvashatjuk ki. Segítségével a futó alkalmazás egy változójának PUT DATA (rövid élettartamú adat) értékét írhatjuk felül. Segítségével kiválaszthatjuk a későbbi SELECT FILE utasítások célfájlját. 23 Intelligens kártyák elleni támadások taxonómiája CLA Elnevezés 2016 VERIFY 8816 INTERNAL AUTHENTICATE 8416 GET CHALLENGE 8216 EXTERNAL AUTHENTICATE 7016 MANAGE CHANNEL C016 GET RESPONSE C216 ENVELOPE Magyarázat Egy kártyán tárolt adatot hasonlít össze az olvasóról érkezővel (pl. jelszó, PIN-kód) Hatására a kártya egy belső titokkal sifrírozza a törzsben kapott kihívást. Kihíváson alapuló azonosításhoz használjuk. Hatására a

kártya egy tesztmintát (általában egy véletlen számot) küld az olvasónak, melynek aláírott változata alapján fogja azonosítani a terminált. Kihíváson alapuló azonosításhoz használjuk. Autentikálja – a legutolsó GET CHALLENGE utasításra kiadott tesztminta aláírt változata segítségével – a felhasználót/terminált. Kihíváson alapuló azonosításhoz használjuk. A 4 logikai csatorna kezelésére használatos. Olyan APDU-k fogadására használhatjuk (a terminál szemszögéből), melyeket a szabványos protokoll másképp nem tesz lehetővé. Olyan APDU-k küldésére használhatjuk (a terminál szemszögéből), melyeket a szabványos protokoll másképp nem tesz lehetővé. Nézzük meg, milyen biztonsági mechanizmusokat támogatnak a szabvány ezen fejezetében definiált parancsok! A legalapvetőbb egy tárolt és egy megadott szöveg (általában PIN-kód) összehasonlítása, ezt a VERIFY utasítás végzi. Egy másik lehetőség, hogy a

kérelmező (CAD) bizonyítja, hogy egy olyan kulcs birtokában van, amit csak ő ismerhet. Ennek alapját a aszimmetrikus sifrírozások adják A kártya a GET CHALLENGE utasításra egy véletlen tartalmú, „kihívó” szöveget küld válaszul, ezt kell digitálisan aláírnunk. Az aláírt szöveget visszatölthetjük a mikroszámítógépbe az EXTERNAL AUTHENTICATE utasítással. Amennyiben a várt titkos kulccsal rejtjeleztünk, a kártya a felhasználó nyilvános kulcsával vissza kell tudja állítani az eredeti szöveget és biztos lehet a kérelmező kilétében. Ez az ún kihívásos azonosítás. Az eljárás kicsit eltérő változata szimmetrikus titkosítással is működik. Az IK és birtokosa ismer egy közös kulcsot. Mind a kártya, mind a kérelmező titkosítja a GET CHALLENGE utasítás adta referenciaszöveget. Ha azonos eredményre jutnak, akkor nagy valószínűséggel egyező kulcsot használtak (ezt az IK ellenőrzi az EXTERNAL AUTHENTICATE hatására). A

módszer gyengébb a digitális aláíráson alapuló változatánál, mivel ebben az esetben a titkot mindkét fél ismeri (IK és birtokos), míg ott az kizárólag csak a birtokos előtt ismert. Egy konkrét példát találunk erre a 641 alfejezetben Az INTERNAL AUTHENTICATE szintén egy kihíváson alapuló azonosítás támogatását szolgáló parancs, azzal a különbséggel, hogy ezzel az utasítással a CAD hívja ki az IK-t 24 Intelligens kártyák elleni támadások taxonómiája és nem fordítva. Általában minkét (külső és belső) kihívásra sor kerül, ez a már megemlített, kézfogásos módszer. A szabvány tehát alapvetően ezeket a módszereket támogatja, de a használt kriptográfiai algoritmus megválasztásában szabad utat enged. Mint az már a fájlrendszer bemutatásánál láttuk, az autentikációs módszer minden DF csomópontban külön-külön megadható, felülbírálható. A szabvány ötödik fejezete a csipen futó applikációk

azonosításának általános módszeréről szól. Az alkalmazásokat egyedi AID (Application Identifiers) kód azonosítja, ez két részből áll. Az első rész az ún RID (Registered Application Provider Identifier), ez az 5 bájt hosszú szám a fejlesztő céget, az azt követő maximálisan 11 bájt hosszú szakasz pedig magát az algoritmust indexeli. A hatodik fejezet a adatformátumokat hivatott egységesíteni (pl. képformátum, betűkészlet). Az adatbázis kezelők világában a lekérdező és definíciós nyelvek (SQL – Structured Query Language) már elnyerték létjogosultságukat. Egy az SQL-lel analóg nyelvet, az SCQL-t (Structured Card Query Language) formalizálja a ISO 7816 szabvány 7. fejezete Ez a standard még csak kísérleti stádiumban van A 8 és 9 fejezet a kártyakibocsátó iparág számára fogalmaz meg közös használatú, az adatbiztonságot elősegítő utasításokat. A általunk vizsgált utolsó fejezet (10) a modern, szinkron

kommunikációs IK-knak szól. 25 Intelligens kártyák elleni támadások taxonómiája 5. Bepillantás a Java Kártyák világába A Java programozási nyelv története valamikor 1990 táján kezdődött. A Sun Microsystems-nél egy intelligens elektronikus eszközökhöz (pl. mobiltelefon, tejrendelő frizsider) használható programnyelv kifejlesztésébe fogtak (Green projekt). Az első sikeres változatot Oaknak keresztelte el egyik alkotója (James Gosling), a legenda szerint az irodája ablakából látható tölgy1 után. Ezt a megszólítást akkor már birtokolta egy másik programozási nyelv, ezért a Sun-nak új név után kellet néznie. Végül a projekt fejlesztői által elfogyasztott rengeteg kávé származási helyének (Jáva sziget – Indonézia) nevét adományozták neki (mi az angol „Java” írásmódot használjuk). Már-már úgy nézett ki, hogy a Green projekt kudarcba fullad, mivel a programozható elektronikus eszközök nem terjedtek a várt

ütemben. A nyelvet az enyészettől a World Wide Web mentette meg. 1993 környékén a web már elég széles népszerűségnek örvendett és igény mutatkozott az addig többnyire statikus dokumentumok életre keltésére. A dinamikus tartalomhoz saját programozási nyelvre volt szükség. Az elektronikus eszközökben megbúvó számítógép teljesítménye, architektúrája nagyon különböző lehet. A Green projekt dolgozóinak az a gondolata támadt, hogy az elkészült program mindig egy fizikailag nem létező, látszólagos processzor tárgykódjára forduljon. Ezt a processzort Java Virtuális Gépnek hívjuk, paraméterei, utasításkészlete kötött. A hardver kibocsátójának feladata, hogy a JVG-t implementálja az adott masinára, és onnantól kezdve az összes Java applikáció futtatható az eszközön. A nyelv portabilitása kapóra jött a webes fejlesztőknek. Ott is alapvetően az a probléma, hogy az összekötött sok ezer számítógéptípus színes

palettáját kell a publikált programnak támogatnia. A befuccsolt Green projekt új erőre kapott, a piacvezető böngészők egyenként implementálták a JVG-t, ami a Java-t az „Internet programozási nyelvévé” tette. Sajnos az üzleti érdek keresztbe tud tenni egy egységesítési törekvésnek, nem úszta meg ezt a Java sem, ennek részletei azonban túlmutatnak e dolgozat témáján. Általánosságban elmondható, hogy a Java egy modern, objektum orientált nyelv. Szintaxisa nagyban hasonlít a C, C++-hoz. Nem csupán támogatja az objektum, osztályok kezelését, valamint az azokkal kapcsolatos technikákat (öröklődés, virtuális függvények, konstruktor/destruktor stb.), hanem teljes mértékben objektum orientált Az adatabsztrakció magas szintjét teszi lehetővé. Támogatja a napjainkban divatos kivételkezelést2. Sok korábbi feladatot igyekszik levenni a programozóról, ilyen például a szemétgyűjtés3. A JVG ágens közbeiktatása miatt a Java-ban

készített programok memóriaigénye jóval nagyobb, sebessége pedig harmada a velük ekvivalens C++-os, 1 Az oak angol főnév magyarul tölgyet jelent. 2 A hibakezelés üzenetorientált módja. Használatával a hiba vagy kivétel kezeléséről nem kell helyileg döntenünk. 3 A dinamikusan lefoglalt memória automatikus falszabadítása. 26 Intelligens kártyák elleni támadások taxonómiája Delphis stb. programoknak Mivel a kód sohasem közvetlenül a processzort irányítja, ezért egy Java-s program tevékenységét a JVG hangolásával tetszőlegesen korlátozhatjuk. Talán ez a tulajdonsága tette népszerűvé az IK-k területén A mikroszámítógépre megírt interpreter figyelheti az illegális kódsorokat (pl. bizonyos fájlok olvasása) és elutasíthatja az ilyet tartalmazó programok végrehajtását. Előnyös az is, hogy a kártyán permanensen csak a JVG-t (IK-s terminológiában inkább a JKVG elnevezést szokásos használni) kell tárolni, miden

érdemi tevékenységet végző alkalmazást elég közvetlenül a végrehajtás előtt letölteni az eszközre. Ez mindenképp elősegíti a multifunkciós IK-k tervezését, hisz minden célfeladat elvégzése előtt szimplán kicseréljük a használatos programot a korábbival és nem kell, hogy egyszerre jelen legyenek. 7. ábra A Java Kártya futtatási környezet (JCRE) vizuális vázlata. A Java nem szakadt el szülőterületétől, így a 90-es évek második felében megszülethetett a nyelv IK-s változata. A Java Kártyák (röviden JK) történetéről és szerepéről a 2. fejezetben már esett szó Most a szabvány 221-es verzióját fogjuk áttekinteni. A JavaCard API 2.21 (továbbiakban JK 221-es specifikáció) tulajdonképpen a Java nyelv speciálisan IK-kra tervezett könyvtárakkal való kiegészítése – már értelemben leszűkítése –. Ráépül az iparágban klasszikusnak számító szabványokra: ISO 7816, EMV. A fejlesztői környezetben lefordított

programokat angolszász szóval 27 Intelligens kártyák elleni támadások taxonómiája cardleteknek hívjuk. Amikor a programozói felületről, a keretrendszerről, natív metódusokról és a JKVG-ről együtt beszélünk, a futtatási környezet (JCRE – Java Card Runtime Environment) elnevezéssel élünk (7. ábra) A valóságban a JKVG két részből áll: a Java Kártya Átalakító (JavaCard Converter) a terminálon helyezkedik el, ez végzi a bonyolult objektumkezelő feladatokat (pl. virtuális függvény tábla kezelése, hivatkozások feloldása), míg a puszta bájtkód értelmező a belső számítógépen helyezkedik el. A kettő közötti interfész maga a cardlet Ráadásul a JVG-nek több olyan funkciója is van, amit a JKVG-be nem raktak bele. A szálak kezelését biztosító osztályok a kártyaprocesszor egyfolyamatos volta miatt kimaradtak. A túl nagy járulékos időköltség miatt a cardleteknél szemétgyűjtés sincs, amit egyszer lefoglaltunk –

értsd egy végrehajtás alatt –, az többé nem szabadul fel. Az elemi típusoknak csak egy része használható: egészek, 1 dimenziós tömbök. A lebegőpontos számokat vagy a karakter típust nem értelmezi a JKVG. 8. ábra A Java Kártyák működése. A JK-kra való programfejlesztés 5 lépésből tevődik össze. Először elkészítjük a cardlet forráskódját. Ezt aztán Java bájtkódra fordítjuk A harmadik lépés, hogy egy konverter segítségével átalakítjuk a tárgykódot úgy, hogy a JKVG fent említett szétbontott működéséhez adekvát formátumú legyen. Az így kapott eredményt szimulátoron tesztelhetjük, validálhatjuk. Végül feltölthetjük a kártyára a végeredményt Egy másik lehetőség, hogy a cardletet az Internet egy konkrét pontján helyezzük el, ahonnan a hálózati hozzáféréssel rendelkező kártyaolvasó igény esetén letöltheti és installálhatja a JK-ra. Az ilyen cardleteknek természetesen valahogy jeleznünk kell

hitelességét, hogy a kártya is meggyőződhessen jogosságáról. Ezt kézenfekvően a program digitális aláírásával tehetjük meg. Ez a bekezdés némiképp bepillant a JKVG programozásába, ezért alapszintű Java ismereteket feltételez. Egy cardlet mindig a javacardframeworkApplet leszármazottja. A megoldandó feladathoz tartozó specifikus algoritmusokat ennek egyes tagfüggvényeinek felülírásával implementálhatjuk. A cardlet betöltése után install() metódusa hívódik meg, itt végezhetjük el az egyszeri, statikus inicializációs feladatokat (pl. fájlok létrehozása) A telepítésnek a része kell legyen a register() metódus meghívása, különben a JCRE nem szerez tudomást a cardletről. Az ISO 7816-ból ismert 28 Intelligens kártyák elleni támadások taxonómiája APDU csomagokat a process() függvény kezeli. Ebben elágazások felhasználásával elérhető, hogy a különböző vezérlő utasításokra a kártya más-más módon reagáljon.

Ha nagyon didaktikusak akarunk lenni, azt mondhatjuk, hogy tulajdonképpen a process() függvény maga a program. Megjegyezzük, hogy vigyázni kell a függvény tervezésekor, mert egy végtelen ciklus az egész kártya blokkolódásához vezet! A select() és deselect() parancsok a már a JCRE-ben regisztrált programok aktiválásának és deaktiválásának a függvényei. Mikor a Java környezet kap egy parancsot, hogy a tárolt néhány eljárás közül most az App-ot futassa, akkor betöltés után rögtön az App.select() utasítás hívódik meg, melyben különféle előfeladatokat követhetünk el (pl. véletlenszám-generátor gyökerének beállítása vagy egy másik cardlet objektumának elérése). Mikor egy új cardletet választunk, az App program működése az App.deselect() végrehajtását követően felfüggesztődik A eljárás párral tehát a cardletek közötti kapcsolgatást kezelhetjük. A program tervezésekor nem szabad figyelmen kívül hagyni, hogy a

felhasználó bármikor kihúzhatja a kártyát a terminálból, leállítva ezzel a program futását. Ha ez valami összetett feladat közben történik meg, az nagyon súlyos következményekkel járhat. A probléma kikerülésére használhatjuk a System.beginTransaction() és a System.commitTransaction() eljárásokat A beginTransaction() kiadását követően, a változtatások csak egy ideiglenes pufferre fejtik ki hatásukat. A JK memóriájának tartalma csak a commitTransaction() parancs után, egyhuzamban módosul. Ezzel a trükkel lehet védekezni egy nem várt külső megszakítás negatív hatásai ellen. 9. ábra Az ISO 7816-os fájltípus-rendszer Java-s reprezentációja. A Java szabványos könyvtárak közül az JK-k világában csak a java.lang és a java.io lebutított változatait használhatjuk. A javacardframework és a javacardx.framework könyvtárak tartalmazzák az alapvető ISO 7816-os szabványhoz kapcsolódó Java-s osztályokat, konstansokat,

objektumokat. A kettő között az a különbség, hogy a javacard.framework tagjainak minden JK-n működniük kell, a javacardx.framework elemei közül viszont szabadon eldöntheti a gyártó, hogy melyeket támogatja kibocsátott kártyája. Mivel az utóbbi lényegében a 4 fejezetben bemutatott fájlrendszert kezelő függvényeket tartalmazza, a gyakorlatban lehet számolni azzal, 29 Intelligens kártyák elleni támadások taxonómiája hogy egy valamirevaló JK támogatni fogja. Az elterjedt biztonsági technikákat javacard.security csomag használatával implementálhatjuk Fontosak még kriptográfiai társprocesszor használatát lehetővé tevő függvények, ezek javacardx.crypto és javacardxcryptoEnc könyvtárakban találhatóak meg témakörben további bőséges anyag található a [4] könyvben és a [17] webcímen. Osztály Object Applet AID APDU ISO ISOException OwnerPIN ProxyPIN Util System FileSystem Checksum KeyBuilder KeyPair MessageDigest

RandomData Rövid leírás A javacard.framework fontosabb osztályai: Minden osztály őse, JK-s környezetben csak az equals metódust lehet használni. Ennek leszármazottja az összes cardlet. A cardletek egyedi azonosítójának kezelésére szolgál. Az ISO 7816-as szabvány kommunikációs protokolljának absztrakt osztálya. Megjegyzendő, hogy biztonsági okokból tagjai csak egy APDU puffert kezelnek, a tényleges adatküldés/fogadás a JKVG feladata. A puffer mérete 37 bájt, vigyázzunk a túlcsordulásra! Az ISO 7816-os szabvány konstansainak beszédes elnevezéseit tartalmazza. A Java kivételkezelő szintaxisát követő, a válasz APDUk SW részének kezelésére szolgáló osztály. A kivételkezeléssel egyébként csínján kell bánnunk, mert a szemétgyűjtés hiánya miatt könnyen „felzabálhatjuk” a memóriát. PIN-kód kezelését segítő osztály. Egy cardlet ruházhat át biztonságos módon PIN-kódot valamelyik másik cardletnek ezen ágens osztály

használatával. Pufferkezelő parancsok gyűjteménye. Objektumok tranzienssé (leállítás után is elérhető) tételét, megosztását és a – már bemutatott – tranzakciókezelést segítő osztály. A javacardx.framework fontosabb osztályai: Az ISO 7816-os szabványban rögzített fájlkezelés Java-s reprezentációja (9. ábra) A javacard.security fontosabb osztályai: CRC (Cyclic Redundancy Check) ellenőrző összegek generálását támogató osztály. Kulcsgyártásra használható osztály (viszonykulcsokhoz). Kulcspárok tárolására szolgáló osztály. Ezzel az osztállyal szövegek rövid kivonatát készíthetjük el – ami digitális aláíráshoz használatos –, a műveletet hash-elésnek is hívjuk. Segítségével véletlen adatokat generálhatunk. 30 a a a A Intelligens kártyák elleni támadások taxonómiája Osztály Signature Cipher Rövid leírás Digitális aláírások kezelésének osztálya. A javacardx.crypto fontosabb osztályai: A

sifrírozó eljárások absztrakt osztálya. 31 Intelligens kártyák elleni támadások taxonómiája 6. A sifrírozó algoritmusokról Ebben a fejezetben áttekintjük a különböző titkosítási és adatvédelemi módszereket. Minden típushoz igyekszünk néhány konkrét algoritmust is vázolni. Mindig kitérünk az adott algoritmus IK-kon való alkalmazhatóságára. A fejezet végén bemutatunk két gyakorlatban használt biztonsági protokollt. Az egyik a lehallgathatatlan kommunikációt, a másik a bizalmas, többrétegű adatkezelést megvalósító szisztémák iskolapéldája. Az itt bemutatott fogalmakra a taxonómiában hivatkozni fogunk A titkosításokról bővebb ismertetést találhatunk az [1], [2] irodalomban. 6.1 Hashfüggvények Mikor egy szöveget visszafejthetően akarunk rejtjelezni, valamilyen bijektív leképezést kell használnunk, hogy az eredeti üzenet előállítható legyen a kriptogramból1. Néha azonban elég, ha csak egyirányú a

transzformáció. Ezt úgy képzelhetjük el, mint a húsdarálót, ahol a kijövő cafatokból soha többé nem állítható elő a nyers hús. Ki lehet találni a darálóval analóg viselkedésű matematikai függvényeket, ezeket összességében hashfüggvényeknek (vagy egyirányú függvénynek) nevezzük. A lehetséges hashfüggvények közül csak az olyanokat szeretjük, amelyek rendelkeznek néhány jó tulajdonsággal. Az egyik ilyen az ún lavinahatás Ha a bemenetet egy kicsit megváltoztatjuk, akár csak 1 bittel is, az eredmény lényegesen más lesz, a függvény nem mutat semmiféle folytonosságot. A hópehely méretű módosítás lavinává duzzad a végeredményben. Egy másik kritérium, hogy a hash-elés minden inputra fix méretű kimenetet produkáljon, és ez lehetőleg jóval kisebb legyen a bemenő paraméter átlagos méreténél. Ennek okát a felhasználási területek bemutatásakor érthetjük meg Az előző elvárásból triviálisan következik, hogy

biztos vannak olyan különböző bemenetek, melyeket a hashfüggvény ugyanoda képez. Mivel a függvény értelmezési tartományának számossága nagyobb a képtérénél, ezért elkerülhetetlen, hogy néhány függvényeredmény több lehetséges bemenetnek egyaránt hozzárendeltje legyen. Követelmény még az is, hogy a hash értékből ne legyen visszafejthető az eredeti adat, illetve annak egyenértékű – leképezés szempontjából ekvivalens – társa. Az egyirányú függvényeknek két komolyabb alkalmazási területe van. Egyrészt szokták a jelszavakat hash értékük alapján tárolni. Mikor bejelentkezés történik, a kapott jelszót szintén hash-eljük, majd a „darált” értékek egyenlőségét vizsgáljuk (a helyes működést a függvény tulajdonság garantálja). Amennyiben csak simán elmentjük a jelszómintát, és azonosításkor a kapott jelszót ezzel hasonlítjuk össze, fennáll a veszélye annak, hogy rossz kezekben kerül a jelszavakat

tároló fájl, és onnantól kezdve nem beszélhetünk biztonságról. Ha viszont csak a hash értékeket tároljuk, az előző bekezdésben kimondott visszafejthetetlenségi tulajdonságnak köszönhetően – még ha a támadó ismeri is hashfüggvényünket – a megszerzett jelszófájl számára hasztalan. Másrétű felhasználási terület a lenyomatkészítés. Egy szöveges dokumentum digitális aláírásakor alapesetben az egész dokumentumot felhasználjuk az aláírás generálásakor. 1 A titkosított szöveg. 32 Intelligens kártyák elleni támadások taxonómiája Egy 100 oldalas szerződés esetében ez nagyon sok számítási időt venne igényben. Egy gyorsan processzáló hashfüggvény alkalmazásával egy sokkal rövidebb és ráadásul fix méretű lenyomatát kapjuk a szövegnek. Így ezt már gyorsabban alá tudjuk írni, anélkül hogy a védjegy függetlenné válna a dokumentum tartalmától. A statikus méretet ezért kötöttük ki az előző

bekezdésben. Az is látszik, hogy a lavina tulajdonság miatt, hiába írom át csupán a dokumentum 1%-át, a hiteles aláírás azonnal gyökeresen megváltozik. Nem lehet tehát az „eléírok egy 1-est” jellegű csalásokat véghezvinni. Ugyanezért nem alkalmazható a hash-elés biometrikus azonosításra, hisz ott csak statisztikusan egyezik a tárolt és a mért minta, sok a kettő közötti különbség, ami drasztikus hatással van a hash értékre. Azonos személy ujjlenyomata a legkülönfélébb hash értékeket produkálhatja, azok összehasonlítása értelmetlen. Vessünk most egy-egy pillantást a két legelterjedtebb hashfüggvényre! 6.11 MD5 (Message Digest) A módszert 1992-ben publikálták. Tetszőleges hosszúságú szövegből 128 bites sorozatot generál. A pecsét kiszámítását egy kitöltési szakasz előzi meg A szöveg végéhez konkatenáljuk az <10000> végtelen bitsorozatot úgy, hogy az eredmény mérete 512-vel osztva pontosan 448-at

adjon (ha már az eredeti üzenet is ennyit adott, akkor is végzünk kiegészítést). Ezzel még nem fejeztük be a szöveg kiegészítését, az egész végére kerül a szöveg 64 bites mérete (low-order bájtsorrendben), így a bemenet mérete az 512-nek többszöröse lesz. A lenyomat elkészítéséhez egy 128 bites puffert használunk, melyet induláskor a 0123456789ABCDEF16 értékkel töltünk fel. Ezek után végigiterálunk a szöveg 512 bites blokkjain, és egy keverőfüggvénnyel előállítjuk az aktuális blokk és a puffer egy 128 bites „ötvözetét”, ami a puffer új értéke lesz (10. ábra). A keverőfüggvény a mindenki számára ismerhető szinusz függvény adott pontjaiban felvett értékeit használja fel a keveréshez. Az eljárás 32 bites processzorokhoz lett tervezve, de mivel csupán primitív számításokat igényel (kivéve talán a szinusz értékek kiszámítását, de ez táblázattal helyettesíthető), könnyedén implementálható IK-kra

is. Hash-elhetjük pl a PIN-kódokat az MD5 eljárással, bár ez a 16 bájtos méret miatt pazarlásnak tűnik, viszont a digitális aláíráshoz veterán pecsétfüggvénynek számít. 33 Intelligens kártyák elleni támadások taxonómiája Az üzenetek blokkjai X1 X3 X2 H3 H2 H1 0123456789ABCDEF16 H0 Keverőfüggvény 10. ábra Az MD5 működési elve ([1] alapján). 6.12 SHA-1 (Secure Hash Algorithm) Keletkezése 1995 áprilisára tehető. Az MD5-höz hasonlóan 512 bites blokkokban dolgozza fel a szöveget, de 160 bites hash értéket generál. Az üzenet mérete nem lehet nagyobb 264 bitnél. Ezt az algoritmust is az MD5-tel megegyező kiegészítési lépéssel kezdjük. Egy blokk keverése 4 szakaszból ál, minden szakasz 20 kört foglal magába Minden kör egy elemi keverési lépést jelent, melynek programkódját itt nem közöljük (megtalálható [1] irodalomban). Elég annyit tudnunk, hogy szakaszonként változik a keverőfüggvény, illetve egy

eltolásra használt konstans. Egy 512 bit hosszú blokk 16 darab 32 bites szóból áll, az SHA-1 ezeket cserélgeti, transzformálja körönként 5 db 32 bites munkaváltozó felhasználásával. A változók induláskor rögzített értékeket kapnak, később mindig az előző blokk feldolgozása utáni értékekkel folytatják munkájukat. A végeredményt, a szöveg bejárása után, a munkaváltozók összefűzésével kapott szám adja (5×32=160). Az algoritmus erősebb az MD5-nél, viszont sokkal nagyobb a számítási igénye, ráadásul nem követi az Intel számábrázolási konvencióját, ami a legtöbb architektúra esetében külön problémákat okoz. IK-n való alkalmazása, bár nem lehetetlen, de semmiképp sem egyszerű feladat. 6.2 Szimmetrikus titkosítás Szimmetrikus titkosításnak nevezzük azt, amikor egy kulccsal sifrírozunk valamilyen nyílt szöveget, úgy, hogy ugyanazzal a kulccsal – esetleg egy másik eljárás használatával – vissza is lehet

azt fejteni. Már nagyon régóta alkalmaznak szimmetrikus titkosításokat, sőt, egészen a XX. századig csak ilyen kriptográfiai módszerek voltak 34 Intelligens kártyák elleni támadások taxonómiája használatban. Tökéletesen biztonságosnak nevezünk egy szimmetrikus rejtjelező algoritmust, ha végtelen számítási kapacitással sem lehet a nyílt szöveget visszafejteni. A tökéletes biztonságnak egyébként szükséges feltétele, hogy a kulcs mérete megegyezzen a nyílt szöveg mértével, valamint a kulcstér entrópiája1 nagyobb vagy egyenlő legyen, mint az üzenetek terének entrópiája. Ezt a tételt alapul véve alkalmaznak is OTP (One Time Pad – egyszer használatos bitminta) alapú titkosításokat. Ennek lényege és egyben gyengesége is, hogy a kulcs olyan hosszú, hogy le lehet vele takarni az teljes üzenetet. Általában nem várjuk el, hogy végtelen idő kelljen rejtjelezésünk töréséhez, a gyakorlatban megelégszünk azzal, ha

„csak” tízszer annyi időbe kerül, mint a Föld kora. Cserében használhatunk lényegesen rövidebb állandó kulcsot. Most megnézzük a számítógépek világában legelterjedtebb szimmetrikus algoritmus prosperálásának főbb mérföldköveit, valamit egy továbbfejlesztett utódját. 6.21 A DES (Data Encryption Standard) A DES elnevezésű algoritmust 1975-ben tették közkinccsé, bizonyos (nem elvi) részeit azonban ekkor még titokban tartották. 1977-ben vált nemzetközi szabvánnyá, azóta nagy karriert futott be a számítástechnika minden szegmensében. A DES a nyílt szöveget 64 bites blokkonként, 64 bites kulccsal titkosítja. A kulcs 64 bitjéből minden nyolcadikat ellenőrzési célokra használunk, így igazából a kulcs csupán 56 bites. Maga az algoritmus szerkezete a Feistel-struktúrát követi. Minden blokkot külön-külön dolgozunk fel. Először kötött módon összekeverjük a bemenet bitjeit, ennek inverzét a kódolás végén szintén

elvégezzük. A 64 bites adatot két (bal, jobb) 32 bites részre vágjuk. A jobb oldali részt átadjuk egy speciális transzformátor függvénynek, a kimenet és a blokk bal oldalát, mint bitvektorokat, összeadjuk (másképp mondva XOR művelet végzünk). Majd az így kapott 32 bites számot a blokk jobb oldalára írjuk, a régi jobb oldal kerül a bal helyére (11. ábra) Ezt a lépéssort 16-szor hajtjuk végre, befejezésképp csinálunk még egy sima bal-jobb cserét. A transzformátor függvényt minden iterációban egy saját körkulcs vezérel, feladata, hogy megszüntessen minden linearitást. A 48 bites körkulcsokat, az 56 bit hosszú globális kulcs, két 28 bit nagyságú összefüggő darabjának (bal, jobb) iterációnkénti balra forgatásával (adott ciklusban 1 vagy 2 bitnyivel forgatjuk tovább), valamint a bitek keverésével kapjuk. A megfejtő algoritmus a föntinek a fordított irányú megfelelője (a körkulcsok élőállítása és a cserék visszafelé

zajlanak). 1 Az entrópia egy matematikai mérőszám, mely az információ kaotikusságára utal. Mennél zűrzavarosabb az információ, annál nagyobb az entrópiája, várhatóan annál több biten tudjuk csak ábrázolni. 35 Intelligens kártyák elleni támadások taxonómiája Ji-1 Bi-1 32 32 Ki 48 32 f Ji Bi 11. ábra Grafikus vázlat a DES főciklusának belsejéről ([1] alapján). A DES alkalmazása az IK-k területén is nagyon elterjedt. Erre utal, hogy a JK 2.21-es specifikációban külön interfésze van: DESKey Egyetlen gond vele, hogy megnyugtatóan biztonságos használatához a fent említett 64 bites, általánosan elfogadott méretnél nagyobb kulccsal kell implementálni. A nagy kulcsok kezelése a zsenge mikroszámítógépeken nehézkes. 6.22 A TripleDES és a 3DES A TripleDES és a 3DES sifrírozások a fent bemutatott DES algoritmus egyfajta kiterjesztései. A trükk az, hogy háromszor akkora kulcsot használunk (192 bit), mint azt az ős

esetében tettük. A kulcsot 3 db 64 bites darabra vágjuk, majd az elsővel DES sifrírozást hajtunk végre, a másodikkal desifrírozzuk az első menet eredményét, végül a harmadik kulcsdarabbal újabb DES-elés alá vetjük a szöveget (az angol elnevezések nyomán, szokás a CDC rövidítést használni). Észrevehető, hogy amennyiben az első két részkulcs azonos, valójában csak a harmadik kulccsal rejtjelezünk, az első két ellentétes kör kioltja egymást. Ez pedig úgy tekinthető, mintha a sima DES algoritmust alkalmaztunk volna, ezért mondhatjuk, hogy a címbeli kriptográfiai eljárások, annak egyfajta kiterjesztései. Ha mind a három kulcs különböző, akkor TripleDES-ről, amennyiben a két szélső kulcs azonos, akkor pedig 3DES-ről beszélünk. A visszafejtés két desifrírozásból és középen egy sifrírozásból áll (DCD), a kulcsokat fordított sorrendben kell felhasználni. Mindkét algoritmus kihasználja az eredeti DES azon tulajdonságát,

hogy a be- és kikódolási procedúra megválasztása önkényes. Mindegy tehát, hogy először desifrírozunk, aztán sifrírozunk, vagy fordítva, végeredményben egyaránt a nyílt szöveget kapjuk vissza. A 3DES-t széles körben alkalmazzák, mert bonyolultsága megegyezik a szimpla DES-ével, viszont sokkal nagyobb biztonságot 36 Intelligens kártyák elleni támadások taxonómiája nyújt, ráadásul kompatibilis is vele. A TripleDES elterjedtsége kisebb, mert az emberiség jelenleg nem igényel ilyen erős titkosítást, sőt az USA-ban a törvény egyenesen tiltja az ilyen rejtjelezések polgári igénybevételét. 6.23 AES (Rijndael – Rijmen & Daemen) 1996-ban az NIST (National Institute for Standards and Technology) tendert írt ki egy DES-nél jobb algoritmus kiötlésére, a pályázatot AES-re (Advanced Encryption Standard) keresztelték el. 2000-ben hirdettek eredményt, a sok beérkezett algoritmus közül a Rijndael került ki győztesen, ami

később a DES hivatalos utódja lett. A szabvány 3 darab kulcsméretet enged meg, ezek rendre 128, 192, 256 bit nagyságúak. A DES-hez hasonlóan, ennek az algoritmusnak is egy ciklus képezi a vázát. A ciklus lépésszáma a kulcs méretétől függ. A ciklus magjában 4 különböző transzformáció foglal helyet, ezeket a Rijndael terminológiában rétegeknek nevezzük (SubBytes, ShiftRows, MixColumns, AddRoundKey). A algoritmus működésének megértéséhez vezessük be a state struktúra fogalmát, ami nem más, mint a nyílt szöveg bájtjainak mátrixa. A mátrix szélessége a kulcs mérete bájtokban, magassága fixen 4, és sorfolytonosan tartalmazza a titkosítandó bájtokat (a nyílt szöveg egy blokkját): B00, B10, B20, A SubBytes réteg egy egyszerű jelcserés kódolást hajt végre. A ShiftRows transzformáció adott mértékben elforgatja a state struktúra sorait. A következő réteg (MixColumns) a state struktúra elemeit 2-es maradékosztály fölötti

8-as rendű polinomokként kezeli, oszloponként kiszámolja ezek 4 darab lineáris kombinációját, az eredmények adják az új oszlopot (pl. B’00:=2×B00+3×B10+B20+B30) A kombinációk úgy vannak kitalálva, hogy egy egyszerű 8-bites processzoron is nehézség nélkül implementálhatóak legyenek. A negyedik réteg (AddRoundKey) XOR-olja a körkulcs mátrixos alakját a state struktúrával. A körkulcsokat az eredeti kulcs „felduzzasztásával” kapjuk meg. Az így kiterjesztett kulcs ciklusszámlálóval indexelt darabja lesz az aktuális körkulcs. A desifrírozáshoz a fenti rétegek megfelelő inverzét alkalmazzuk. A state struktúra: kulcsméret: 128 bit 192 bit B00 B01 B02 B03 B04 B05 B10 B11 B12 B13 B14 B15 B20 B21 B22 B23 B24 B25 B30 B31 B32 B33 B34 B35 256 bit B06 B07 B16 B17 B26 B27 B36 B37 A Rijndael nem csupán rejtjelezési erősségben jobb a DES-nél, hanem a kis erőforrású architektúrákon való implementálhatóságban is. Nem kell mondanunk, hogy

ez különösen kedveltté teszi az IK alkalmazások területén. A már sokat emlegetett Java Kártya szabvány az AES algoritmus fogadására is felkészült (AESKey interfész). 2002ben megjelent egy publikáció [14], mely a Rijndael törhetőségi komplexitásának redukciójáról szól. 37 Intelligens kártyák elleni támadások taxonómiája 6.3 Aszimmetrikus titkosítás Egészen a XX. századig a kriptográfia egyik alapelve volt, hogy a védett üzenetváltásban résztvevő felek rendelkeznek egy közös titokkal. Ezt a principiát cáfolják meg a aszimmetrikus rejtjelező algoritmusok. Itt ugyanis minden szereplőnek két kulcsa van; egy titkos és egy nyilvános. A titkos kulcsot csak a tulajdonosa ismeri, még a kommunikációs partner sincs tisztában vele. A nyilvános kulcs viszont mindenki számára elérhető, beleértve a potenciális támadókat, adattolvajokat is. A kulcspár két tagja a sifrírozás szempontjából egyfajta erős korrelációt mutat, de

ennek ellenére nehézkes az egyik ismeretében a másikat kiszámolni. A nehézkest itt nyomatékosan értjük, mert a kulcsok között meglévő kapcsolat miatt ez sohasem lehetetlen. Az összes aszimmetrikusan titkosító algoritmus azt használja ki, hogy a nyilvános kulcsból csak exponenciális időben tudjuk megfejteni a titkos kulcsot. Azt pedig, hogy elvileg elképzelhetetlen egy gyorsabb algoritmus, a legtöbb esetben nem tudhatjuk bizonyossággal, ezért gyakran az emberiség „tudatlanságára” hagyatkozunk. A dolgot úgy lehet elképzelni, hogy nem azonos nehézségű Böhönyéről Budapestre (kulcspár előállítása), mint Budapestről Böhönyére (kulcspár törése) eltalálni. Egyszerűen jelenleg Böhönye nincs a főutakon kitáblázva, míg Budapest szinte mindenhol. Egy konkrét aszimmetrikus sifrírozás feltörése tehát egy hatékony nyilvános kulcs elemző számítás feltalálásán múlik, az analógiával élve: „Böhönye országos

kitáblázásán”. Az aszimmetrikus titkosításnak nemcsak elméleti jelentősége van, több, gyakorlatias szemmel igencsak jelentős, jó tulajdonsággal rendelkezik. A klasszikus rejtjelezések nehézsége volt, hogy a feleknek egy biztonságos csatornán meg kellett egyezniük valamilyen titkos kulcsban. Ez a felgyorsult, elektronikus világban szinte elképzelhetetlen. Gondoljunk bele mennyi plusz fáradtsággal járna minden banki tranzakció előtt befáradni a bankba kulcsegyeztetés végett. Ráadásul egy n tagú közösségben n×(n-1)/2 darab kulcsra van szükség ahhoz, hogy mindenki mindenkivel tudjon bizalmas párbeszédet folytatni. Ha nyilvános-titkos kulcspárt használunk, egyrészt nem kell titkos csatornán egyeztetnünk, másrészt csupán 2×n db kulcs kívánatos. Az aszimmetrikus rejtjelezés prosperálását úgy tudjuk elképzelni, mintha először a nyílt üzenetet egy páncélládikába zárnánk, lelakatolnánk és elküldenénk a címzettnek. Ő nem

tudja leszedni a lakatunkat, de rárakhatja a sajátját, és a duplán lezárt ládát visszaküldheti. Ekkor leszedhetjük saját lakatunkat, majd ismételten elpostázhatjuk, az immáron csak a címzett lakatja által óvott ládikót. A célszemély képes eltávolítani saját lakatját, és a sok munka után végre hozzájut az üzenethez. Sőt, még abban is biztos lehet, hogy tényleg tőlünk jött az üzenet (a lakat 100%-ig hiteles eredetét feltételezve), különben sosem került volna le a ládáról az eredeti lakat. A valóságba ez úgy működik, hogy először a saját titkos kulcsunkkal, majd a címzett nyilvános kulcsával sifrírozzuk az üzenetet. Fogadáskor a szöveg a címzett titkos, majd a saját nyilvános kulcsunkkal desifríroztatik. A rendszer működése a nyilvános kulcs hitelén áll vagy bukik. Ha ugyanis mondjuk Bob akar Alice-nak üzenni (lásd a 13.2 függeléket), de Trudy képes saját nyilvános kulcsát, mint Alice-ét eladni, Bob

jóhiszeműen Trudy kezére játssza bizalmas 38 Intelligens kártyák elleni támadások taxonómiája üzeneteit. Ezért fontos a nyilvános kulcsok hitelesítése, melyet egy harmadik fél (hitelesítő központ) tehet meg. Jelenleg, a szubszidiaritás elvét követe, hierarchikusan csatolt kulcshitelesítő szerverek látják el ezt a feladatot. Az általuk szolgáltatott kulcsok valódiságát saját önigazoló kulccsal garantálják. A rendszer nagyban hasonlít a piramisjátékhoz. Ha megbízunk egy ismerősünkben, akinek van olyan őszinte kapcsolata, aki igazolni tudja a nekünk üzenő személy nyilvános kulcsának valódiságát, akkor az ismeretségek bonyolult, skálafüggetlen hálózatának egy útját jártuk be. A kulcsszerverek hálózata, az ilyen ismerősi láncolatok informatikai realizációja. Több ízben esett már szó a digitális aláírásról, melyet az aszimmetrikus titkosítás „tudom, hogy ki küldte” tulajdonsága teszi lehetővé. Ha az

aláírás mondjuk Bob nyilvános kulcsával desifrírozva az eredeti szöveget adja, akkor biztosak lehetünk abban, hogy Bob az aláíró, hiszen csak ő ismeri a megfelelő titkos kulcsot. Valójában a gyorsabb számítás érdekében, nem az egész dokumentumot, hanem annak egy hash eredményét és a keletkezés dátumát szoktuk digitálisan aláírni. Másik módja a digitális aláírás azonosításra való felhasználásának a kihíváson alapuló autentikáció. Alice küld Bobnak egy nagy véletlen számot, a kihívást Ezt Bob titkosítja a titkos kulcsával és visszaküldi Alice-nak. Ha Alice Bob nyilvános kulcsával desifrírozva a visszakapott üzenetet az eredeti számot kapja, akkor biztos lehet benne, hogy Bob van a vonal másik végén (vagy legalábbis valaki, aki ismeri az ő titkos kulcsát). Most nézzünk meg két létező aszimmetrikus kriptográfiai módszert 6.31 RSA (Rivest, Shamir, Adleman) Az algoritmust Ronald Rivest, Adi Shamir és Leonard Adleman

publikálták 1997-ben. Alapját a moduláris algebrák képezik. Az alfejezetben a matematikai jelöléseket a [3] jegyzet alapján használjuk. A titkosítás megértéséhez induljunk ki a matematikában jól ismert kis Fermat-tételből a p −1 − 1 ≡ 0 (mod p) Itt p egy tetszőleges prím, a pedig egy [0, p-1] intervallumba eső egész. A kongruencia mindkét oldalához adjunk hozzá egyet, majd szorozzuk meg az egészet aval a p ≡ a (mod p) A kis Fermat-tételnek létezik egy általánosabb, Euler φ függvényes alakja is (minden természetes számhoz a nála kisebb, vele relatív prímek számát rendeli) lnko(a, n) = 1 ⇒ a ϕ ( n ) ≡ 1 (mod n) Könnyedén bizonyítható, hogy az egyenlet mindkét oldalát pozitív egyész k-adik hatványra emelve, valamint a tétel második alakjára áttérve, a következő összefüggést kapjuk 39 Intelligens kártyák elleni támadások taxonómiája a kϕ ( n )+1 ≡ a (mod p) Keressünk két nagy prímet (p, q), ami

valószínűségi prímtesztekkel „gyorsan” megtehető. Válasszuk a fönti n-t p és q szorzatának Ekkor elemi módon bizonyítható, hogy φ(n)=(p-1)(q-1). Ezt beírva az Euler függvény helyére, és a bal oldali kitevő egy szorzatalakját keresve (ed=kφ(n)+1) az alábbi feladathoz jutunk ed ≡ 1 (mod ( p − 1)(q − 1)) Egy megfelelő (e, d) páros gyorsan meghatározható. A nyílt szöveget ezek után a min(p, q) méreténél kisebb méretű blokkokra bontjuk (általában a blokkméret az, ami adott, és ahhoz keresünk kellően nagy prímeket). A blokkokat sorban az e-edik hatványra emeljük, majd vesszük az n szerinti maradékát, így kapjuk meg a titkosított szöveget. Ha a kriptogram blokkjait most az d-dik hatványra emeljük, akkor előáll az eredeti betűsorozat (a e ) d ≡ a ed ≡ a kϕ ( n )+1 ≡ a Az e-t és az n-et nyilvános, a d-t titkos kulcsnak választva kész is van az aszimmetrikus sifrírozásunk. Rendkívül fontos tulajdonság, hogy a

kódoló algoritmus igen egyszerű műveletekből áll, ráadásul lehetőség van némi optimalizálásra is. Ahhoz, hogy valaki kiszámolja d-t, az n-et kellene faktorizálnia, ami nagy számok esetén mai tudásunk alapján kivárhatatlanul lassú folyamat. Vannak azonban bizonyos speciális prímek, melyekből generált (gyenge) kulcsok esetlenek abban az értelemben, hogy a velük titkosított üzenetek könnyebben visszafejthetők az általánosnál. Napjainkban használatos kulcsméret: 1028 bit. Az RSA implementációk elterjedésének sokáig a jogdíjfizetési kötelezettség szabott gátat, ami azonban 2000-ben feloldódott. Sok digitális aláírás RSA alapon működik, ezért a modern IK-ból sem hiányozhat. Egyetlen baj vele a viszonylag méretes kulcs szükségessége, ami kis kapacitású tárolókat számottevően igénybe vesz. A JK 2.21-es specifikációban a kapcsolódó interfészek: RSAPrivateCrtKey, RSAPrivateKey, RSAPublicKey. 6.32 ECC (elliptikus görbék)

Mint arra már utaltunk, az RSA legfőbb problémája, hogy relatíve tetemes méretű kulcsok esetén nyújt csak megnyugtató biztonságot. Az elliptikus görbék (EG) matematikai vizsgálata egy sokkal kisebb kulcsigényű aszimmetrikus rejtjelezést adott az emberiségnek. Először tisztázni kell, mit nevezünk elliptikus görbének Az EG olyan pontok halmaza a síkban, melyek kielégíti a következő egyenletet y 2 = x 3 + ax + b Az a-t és a b-t a görbe paramétereinek tekintjük. Az egyenlettel leírt halmazhoz definíció szerint még egy extra pontot hozzáveszünk; a végtelen pontot (jelölés: O). Az olyan paraméterezésű görbéket, melyekre igaz, hogy D:=4a3+27b2=0, nem tekintjük 40 Intelligens kártyák elleni támadások taxonómiája elliptikus görbéknek. Egyszerű igazolni, hogy minden elliptikus görbe szimmetrikus az x-tengelyre. Vegyünk most egy tetszőleges EG-t Egy ezen lévő P pont ellentettje (-P) legyen x-tengelyre vett tükörképe (amiről

már tudjuk, hogy eleme az EG-nek). A végtelen pont ellentettje önmaga (O=-O). Vezessünk be a pontokra egy összeadás műveletet! 12. ábra Az EG-k pontjaira definiált összeadás geometriai modellje ([22] alapján). Kezdetben tegyük fel, hogy P≠±Q és egyik sem végtelen. Ilyenkor az R=P+Q pont kiszámítása úgy történik, hogy a Q és a P pontokat összekötő egyenes EG-vel való 3. metszéspontját (-R) tükrözzük az x-tengelyre (12 ábra) Előfordulhat, hogy nincs külön 3. metszéspont Ez esetben az egyenes a P és Q pontok egyikében az EG érintője, ott „kétszeres” metszéspontot feltételezünk, tehát P+Q=-P (13. ábra) 41 Intelligens kártyák elleni támadások taxonómiája 13. ábra 14. ábra Összeadás eredménye, ha P érintési pont ([22] alapján). Összeadás eredménye, ha P=Q ([22] alapján). Amennyiben P=Q, de egyik sem a végtelén pont, akkor az R=P+P=:2P az EG P pontjához húzott érintő és a görbe metszéspontjának

ellentettje (14. ábra) Ilyen metszéspont az E-n (x3+ax+b=0) kívül mindig létezik, legyen 2E:=O. A P=-Q esetben R=P+Q=P+(-P)=:O módon definiáljuk a művelet eredményét (15. ábra) 42 Intelligens kártyák elleni támadások taxonómiája 15. ábra 16. ábra Összeadás eredménye, ha P=-Q ([22] alapján). Összeadás eredménye, ha Q=O ([22] alapján). Maradt még az az eset, amikor Q végtelen és P tetszőleges. Ilyenkor a P+Q összeg nem más, mint P (16. ábra) Az EG pontjai a most meghatározott összeadás műveletére nézve csoportot alkotnak (bizonyítás elmarad, lásd [22]), melynek egységeleme az extremális végtelen pont (P+(-P)=O). Térjünk most át a folytonos síkról a természetes számok halmazára. Ha az EG egyenletét moduláris aritmetikával írjuk fel, máris egy diszkrét rendszerhez jutunk y 2 ≡ x 3 + ax + b (mod p), ahol p prím és x,y,a,b ∈ [0, p − 1] egészek Erre a furcsa görbére ([0, p-1] speciális részhalmazára) is

definiálható az imént bemutatott összeadás, ez is hordozza a folytonos görbe kriptográfiai szempontból hasznos tulajdonságait, vagyis ez az összeadás is csoportművelet. A továbbiakban ezt értjük EG alatt, a folytonos definícióra csak a geometriai reprezentáció miatt volt szükség. Nézzük most meg, hogyan használható fel az EG-k pontjainak matematikája aszimmetrikus titkosításra! Legelőször választunk egy tetszőleges EG-t és egy rajta lévő G bázispontot. Ezek legyenek nyilvánosak Tegyük fel, hogy Alice akar Bobbal privát kommunikációt folytatni. Mindketten kiötölnek egy tikos egész számot, jelöljük ezeket a (Alice) illetőleg b-vel (Bob). Fejenként összeszorozzák a titkos kulcsukat – az imént választott számok – a G referenciaponttal a 44 6447 8 aG = G + G + . + G 43 Intelligens kártyák elleni támadások taxonómiája Az összeg eredménye a nyilvános kulcs. Mikor mondjuk Alice üzen Bobnak, választ egy k véletlen

egész számot, ami a kommunikáció során viszonykulcs szerepet fog betölteni. A közölni kívánt üzenetet bijektív módon leképezi az EG egy M pontjára (az ECC egyik sarkalatosan nehéz lépése). Ezek után elküldi a (kG, M+kbG) kódolt szöveget. Bob a kapott páros első tagját megszorozza a csak általa ismert b számmal, majd az eredmény ellentettjét hozzáadja a második taghoz M + kbG + (-b(kG)) = M Eve akkor tudná elolvasni az üzenetet, ha ismerné a b számot, amit a nyilvános bG-ből kéne tudnia kiszámolni. A visszafejtés módszerét a „diszkrét logaritmus elliptikus görbék felett” megnevezéssel illetik, csak exponenciális idejű algoritmust ismerünk rá, így Eve-nek, nagy modulusú algebrák esetén nagyon türelmesnek kell lennie. Az ECC nagy problémája a megfelelő véletlen EG generálása, valamint a nyílt szöveg erre történő bijektív ráképezése. Eleve sok számolással jár eldönteni egy tetszőleges pontról (jelen esetben

véges egész), hogy eleme-e a diszkrét EG-nek. A komplexebb számítási igényért cserébe, sokkal kisebb az elvárhatóan erős kulcs mérete. Egyre több szoftverben cserélik le a matuzsálem RSA-t az ECC-re, ez alól nem kivételek az IK-s alkalmazások sem. Megszoktuk, hogy egy-egy rejtjelezés mikroszámítógépes létjogosultságát a JK 1.22-es specifikáció adekvát interfészeivel igazoljuk: ECKey, ECPrivateKey, ECPublicKey. 6.4 Titkosító protokollok IK-kon Az IK-kon alkalmazott leggyakoribb általános kriptográfiai metodikák után, vizsgáljunk most meg két konkrét protokollt. Az egyik mindennapjaink maroktelefonon bonyolított üzenetváltásának titkosságáért felelős. A másik protokoll a hiteles, ugyanakkor nyomon követhetetlen adatkezelést teszi lehetővé. 6.41 Titkosítás a GSM kommunikációban Alapvető igény a GSM kommunikációval szemben, hogy az adatátvitel mások számára (kémhálózat, üzleti ellenfél) lehallgathatatlanul folyjon. A

klasszikus telekommunikációban sok ilyen visszaélés történt, főleg a politika részéről, mindenki életében ismerős a „Nem telefontéma!” vagy hasonló megjegyzés. Ennek a telefonok hangátvivő csatornáihoz kötődött általános bizalmatlanság az oka. Pedig a GSM szabvány előírja az éteren áthaladó információ titkosítását. E titkosítás logikai vázát mutatjuk most be. A titkosítás a mobilkészülék és a központ között zajlik. Az IP protokollhoz hasonlóan az adatok keretekben (frame) közlekednek. A keret mérete 228 bit, mindegyiket egy 22 biten ábrázolt, egyedi szekvenciaszám (frame number) indexel. Lényegében 3 darab speciális algoritmus használunk; az A3 egy azonosító, az A8 egy viszonykulcs generáló, az A5 család tagjai (A5/1, A5/2, A5/3) pedig kriptográfiai eljárások. Az első két algoritmust a SIM kártya tartalmazza, az A5 valamelyikét a 44 Intelligens kártyák elleni támadások taxonómiája mobiltelefon

ismeri, modelltől függően. A szolgáltatónál egy azonosító központ (AuC – Authentication unit Center) működteti az A3 és A8 algoritmusokat. Minden telefonbeszélgetés az azonosítással kezdődik. Az AuC-tól kapott R véletlen számból és a SIM kártyán tárolt egyedi, „kártyába zárt” kulcsból (Ki) az A3mal egy válaszüzenetet állítunk elő, ez a SRES. Mivel az azonosító központ is ismeri a Ki kulcsot – minden hozzá tartozó SIM kártyáét ismeri – és a saját maga generálta R titkot, ellenőrizni tudja a SRES helyességét. Jó SRES érkezése esetén az azonosítás megtörtént. Egymástól függetlenül az A8 algoritmussal 64 bites viszonykulcsot generálnak (Kc) a SRES-ből. A SIM kártya ezt adja át a mobiltelefonnak, az AuC pedig a hálózati központnak, így a kommunikációban résztvevő felek – vigyázat, nem a két telefon! – ismernek egy közös kulcsot, ami sohasem járt az éterben. Minden keretet „átfuttatunk” a

kiválasztott A5 algoritmuson, mely a rejtjelezéshez a keret szekvenciaszámát és a Kc-t használja, a központban aztán az átérkezett adat desifrírozásra kerül (17. ábra) Sajnos itt, de csakis itt, lehetőség van a lehallgatásra, azért a szolgáltató és az ügyfél kölcsönös bizalma rendkívül fontos. AuC R Ki A3 A3 Ki SRES ? SIM A8 A8 Kc Kc Titkos adat A5 A5 MOBIL SZOLGÁLTATÓ 17. ábra A GSM autentikáció és kommunikáció grafikus vázlata ([1] alapján). Pillantsunk most bele az A5/1-es algoritmus belsejébe. 1987-ben publikálták Franciaországban, az LFSR (linear feedback shift register – lineáris visszacsatolt léptetőregiszter) rejtjelezők családjába tartozik. Működését titokban akarták tartani, de mint oly sok más rébusz, végül ez is az Interneten kötött ki. Feltörésére, érthetően, sok kísérlet született. Az eddig legjobbnak bizonyult törés, a beszélgetés első 2 percének analizálása után, az adatfolyam

maradék részét valós időben fejti meg. A mobilkommunikáció során folyamatosan keletkezik az adat, ezeket valós időben folyamatosan kell titkosítanunk, a tejes szöveg átfogó sifrírozására nincs mód. 45 Intelligens kártyák elleni támadások taxonómiája Kézenfekvő megoldás egy már említett OTP-n alapuló technika. Az LFSR eljárások a nyílt szöveget egy regiszterforgatásokkal előállított végtelen hosszú (valójában csupán determinisztikusan generatív) kulccsal XOR-olják össze. A kulcsot előállító rendszert szakszóval kulcsfolyam-generátornak nevezzük. Az egyvégtében előállított kulcsnak az elérhető legnagyobb entrópiájúnak kell lennie, különben a módszer gyengén titkosít. Az A5/1 kulcsfolyam-generátorának lelkét három léptetőregiszter (R1 19 bit, R2 22 bit, R3 23 bit) képezi, ezeket kezdetben a 64 bites A5/1-es kulcs megfelelően hosszú darabjaival inicializáljuk. A kulcsfolyamba R1, R2 és R3 vezető bitjeinek

XOR-ja kerül. A regiszterek bizonyos, állapottól függő részhalmazát minden kiszámolt bit után elforgatjuk. A legbaloldalibb bit elvész, jobbról néhány, a specifikációban lefixált helyiértékű bitek összege (valójában XOR-ja) jön be. Azt, hogy mikor melyik regisztert kell elforgatni, az MCC (Majority Clock Control) függvény vezérli. Az MCC leszámolja a regiszterekben szereplő nullák és egyesek gyakoriságát. Azok a regiszterek kerülnek forgatásra, melyek középső bitje gyakrabban fordul elő a regiszterek együttes bináris tartalmában. Belátható, hogy az algoritmus, a regiszterméretekhez viszonyított leghosszabb periódusú kulcsfolyamot állítja elő, ami a nagy entrópia miatt fontos. Az A5/1 IC szinten is nehézség nélkül implementálható, ami, mobiltelefonokról lévén szó, valószínűleg nagyban segítette elterjedését, végül szabvánnyá válását. Az A5/2-es az egyszerűbb hardverrel felvértezett mobiltelefonokhoz készült,

értelemszerűen gyengébb az A5/1-nél. Az A5/3 az A5/1-nek egy továbbfejlesztett változata, mely minden eddiginél nagyobb biztonságit ígér. Részletesebb információk a [27] webcímen találhatók. 6.42 A vak aláíráson alapuló bizalmas adatkezelés Az elektronikus adatkezelés felveti az emberi kiszolgáltatottság problémáját. Az egyén minden tevékenysége, kapcsolatai, életvitele követhetővé válik. A számítógép által naplózott és nyomon követett emberi lét utópiája régóta foglalkoztatja a jogászokat, politikusokat, tudósokat és sci-fi írókat [10]. A személyiségi jogok látszólag szemben állnak a progresszív informatikai fejlődéssel. A most bemutatásra kerülő protokoll, ezzel ellentétben egy ellenőrizhetetlen, mégis megbízható autentikációs módszert ír le. Képzeljünk el egy olyan szituációt, amikor egy valamilyen jogosítványt kiadó szervezetnek vagyunk kötelesek speciális orvosi adatainkat rendelkezésére

bocsátani. Fontos, hogy a jogosítványért folyamodó személy hiteles adatokat szolgáltasson, de a két hivatal adatbázisa (a teljes kórtörténet és a jogosítvány attribútumai) mégse legyen összekapcsolható. Ezt úgy lehet megoldani, hogy mindkét szervezetnél más-más álnévvel szerepelünk. Ilyenkor viszont az álnevek összetartozását kell garantálnunk úgy, hogy sehol se fedjük fel inkognitónkat. Jelöljük az orvosi osztályt röviden O-val, a jogosítvány kibocsátóját B-vel. Szükségünk van még egy központi hitelesítő szervezetre, mely egyfajta „egy-személy” igazolást adományoz nekünk, legyen ez tömören KH. A mi rendelkezésünkre áll egy IK, ami kezdetben csak a nevünket tartalmazza: n. Használni fogunk még egy szimmetrikus (adat×kulcs alakban ábrázoljuk) és egy aszimmetrikus (adatkulcs alakban ábrázoljuk) titkosítást, valamint egy h hashfüggvényt is. Mivel a 631 alfejezetben bemutatott RSA gyakorlatilag egy nyilvános vagy

titkos kulccsal végzett, moduláris hatványozás, 46 Intelligens kártyák elleni támadások taxonómiája válasszuk azt aszimmetrikus algoritmusnak. Szimmetrikus sifrírozásnak megfelelő lesz a sima moduláris szorzás. Ennek hatásfoka jóval gyengébb ugyan a DES-nél, de így teljesül egyfajta disztributivitás (a × b )c = ac × bc Ezt többször ki is fogjuk használni. A h egy tetszőleges hashfüggvény (pl MD5). Legyen O-nak, a kiadott adatok típusához tartozó, nyilvános kulcsa o, KH-é pedig kh (a titkos párt mindig felülvonással jelöljük). Első lépés néhány KH által hitelesített álnév generálása. Ehhez az IK előállít egy csomó álnév jelöltet ani = h(n × h( si ) o ) × h(t i ) kh Az si és a ti a kártya által előállított véletlen kulcsok. Ezek közül KH sztochasztikusan kiválaszt néhányat, elkéri az IK-tól a hozzájuk tartozó kulcsokat, majd ezen ismertekkel verifikálja n hitelességét. Ha az összes kiválasztott

álnév kiállja a próbát, a maradék ani-ket aláírással látja el ani = h(n × h( si ) o ) kh × h(t i ) Ezeket az IK visszakapja, majd h(ti)-vel desifrírozza őket és máris van egy csomó O által potenciálisan hitelesíthető álneve. Ezek közül most válasszunk ki egyet, mely - a belső h függvényt elhagyva – az adódó alakot ölti an1 = h(n × s1o ) kh ∧ ean1 = n × s1o O bejelentkezéskor ellenőrzi az álnév KH szerinti valódiságát az (an1)kh=h(ean1) reláció vizsgálatával. Amennyiben mindent rendben talál, átadja a szükséges adatokat és feloldja az álnevet, az az e1 := ean1o = n o × s1 A biztonság kedvéért az IK is ellenőrzi O-t a visszakapott eredmény nyilvános o kulccsal való újrasifrírozásával. Ezek után e1-et desifrírozzuk s1-el, majd s2-vel ismételten rejtjelezzük, ez formulában megfogalmazva e2 := e1 × s2 = n o × s2 s1 Így az s2 kulccsal generált álnevünkkel immáron felkereshetjük B-t, és közölhetjük vele a

bekért orvosi adatokat. Személyazonosságunkat a e1, e2 és an2-vel tudjuk igazolni (az o nyilvános kulcsot B ismerheti) an2kh = h(e1 ) e2o = e1 47 Intelligens kártyák elleni támadások taxonómiája Látható, hogy a protokoll használja a fejezetben bemutatott mindhárom sifrírozási típust (hashfüggvény, szimmetrikus, aszimmetrikus). Megjegyzendő, hogy a vak aláírásnak e leírása igazából a protokollnak csak egy didaktikus vázlata, a pontos specifikáció több apparátust igényel. Mivel számukra a működés elvének megértése elegendő, beérjük ennyivel, a részletek [11] és [12] irodalomban megtalálhatók. 48 Intelligens kártyák elleni támadások taxonómiája 7. Egy taxonómia célja Amikor egy téma felderítésébe fogunk, az első lépés, hogy minél több kapcsolódó tudást igyekszünk begyűjteni. Jó esetben a rendelkezésre álló információk halmaza dinamikusan bővül, előbb-utóbb átláthatatlanul naggyá válik. Ilyenkor

szoktunk valamilyen osztályozó szisztémához folyamodni. Gondoljunk arra, hogy van egy könyvespolcunk, amit napról-napra könyvekkel töltünk fel. Amíg csupán 10-20 olvasmányunk van, akár fejben is számon tudjuk tartani őket. Mikor már 10 éve űzzük a gyűjtögetést, csereberéléssel és kölcsönadásokkal megbolondítva, és egy 10000 könyvből álló könyvtárat hoztunk létre, nehézzé válik az állomány nyilvántartása. Ekkor egy könyvtár esetén, már érdemes jegyzék segítségével számon tartani a könyveket. Példánkkal analóg a felhalmozott temérdek tudás áttekinthetetlenségének problémája. Egy osztályozás elkészítésekor érdemes az információfűzéshez valamilyen praktikus logikát követni. A könyvek esetén például a használt papírminőség kevésbé fontos, inkább a szerző, cím, kiadó, ISBN szám alapján érdemes nyilvántartásba venni őket. Praktikus például kategóriák szerint osztályokba sorolni a könyveket a

keresés megkönnyítése érdekében. A polcon pedig hasznos alfanumerikus sorrendben tárolni a köteteket, hogy a nyilvántartásból való kiválasztás után egy egyszerű „algoritmussal” tudjuk őket fizikai értelemben is elérni. A közeljövőben megszerzendő könyvek számára célszerű lyukakat hagyni a polcon, hogy realizálódásuk esetén ne kelljen az egész könyvtárat átrendeznünk. Ilyen, és az ehhez hasonló kérdések merülnek fel minden taxonómia kapcsán. A tudománytörténetből több klasszikus taxonómiát ismerünk. A kémiai elemek táblázatszerű osztályozása a Mengyelejev–féle periódusos rendszer. Ez a mai napig a legteljesebb módon strukturálja az ismert atomfajtákat. Jelentősége nem merül ki didaktikus szerepében. Az orosz kémikus által 1871-ben elkészített táblázat, a ma ismert atomok csupán egy részét tartalmazta. A tudatosan üresen hagyok cellák később egytőlegyik értelmet nyertek Maga a periódusos rendszer

tehát az atomok olyan logikai osztályozását „kapta el”, melynek teljességét a természet később igazolta. A taxonómiák ilyen értelemben vett jóslási képessége tudományos szemszögből nagy horderővel bír. Az olyan osztályozások, melyek képtelenek befogadni a friss információkat, nem tudják kiállni az idő próbáját. Egy másik közismert taxonómia a biológiai rendszertan. A XVIII században megalapozott mai rendszertan a természet változatosságán próbál úrrá lenni. A növény- és állatvilágot hierarchikus osztályokba soroljuk az egyedek bizonyos tulajdonságai szerint, egy konkrét réteget taxonnak nevezünk. A használt taxonfajták, a hierarchikus fában lefelé haladva: világ, törzs, osztály, rend, család, nemzetség, faj, alfaj. Minden taxon tagjai néhány jól értelmezhető attribútummal rendelkeznek. Ezek az attribútumok lefelé öröklődnek A növények világába tartozó élőlények például mind fotoszintetizálnak1. A

különböző fajok tagjai 1 Nem célunk precíz biológiai állításokat tenni, a rendszertant csupán, mint élő taxonómiát kívánjuk vizsgálni, a szerkezeti összefüggésekre összpontosítva. 49 Intelligens kártyák elleni támadások taxonómiája képesek egy termékeny közös utód nemzésére. A gerincesek törzsébe sorolható állatok mindegyikének van gerincoszlopa. Az egyes közös attribútumok egy esetleges közös ős hajdani létére utalhatnak, a rendszertan tehát segítheti az evolúciót kutató tudósokat. Vagy például a faj taxon „elárulhatja” egy termelőnek, hogy eredményes lesz-e a két termény keresztezése. Szemléltetheti továbbá bizonyos tulajdonságok között meglévő korrelációt; pl. minden emlősnek van gerince stb Egy taxonómia tehát nem csupán rendet teremt a zűrzavarban, hanem néhány addig ismeretlen következtetés leszűrésében is segít. Ilyen új eredmény a periódusos rendszer fehér foltjainak

kitöltése, vagy az osztályozásból kivilágló evolúciós láncok felfedezése. A biztonsági rendszerekhez (security system) készített taxonómiák a támadásfajták osztályozását jelentik. A betörési, feltörési kísérletek – sikere ilyen szempontból nem érdekes – gyűjtésével újabb és újabb fenyegetettségre tudunk felkészülni. A tárgykörben általában keserű tapasztalatok árán szerzünk friss ismereteket rendszerünk gyengeségéről. A támadások terén szerzett jártasságok összegzése és az emberi társadalommal való megosztása nem csupán erkölcsi, hanem szakmai feladat is. A szoftveres illetve hardveres fejlesztők az adott berendezés, program újabb generációjában már befoltozhatják a felfedezett védelmi lyukakat. Hogy egy konkrét eszközt milyen védelemmel ruházunk fel, nem triviális kérdés. Minden egyes biztonsági megoldás külön költséggel jár és nem valószínű, hogy egy 5 €–t érő dolgot 1000 €-s

költségvetésű rablás megszervezésével tulajdonítanak el. A fejlesztők számára tehát hasznos lehet egy olyan taxonómia, ami az ismert támadások terén igazít el. Egy biztonságtechnikai taxonómiától szintén elvárjuk, hogy a rendszertanhoz hasonlóan reprezentáljon bizonyos összefüggéseket. Például egy szerver biztonságát tárgyaló taxonómiából látszódjon, hogy a merevlemez mechanikai vizsgálatával való visszaélésnek előfeltétele a számítógép ellopása. Másrész fontos az is, hogy befogadó legyen az új trükkök terén, ne váljon avíttá. Egy jó taxonómia hasznos lehet mind a fejlesztési, mind a validálási fázisban. Az egyik legismertebb biztonsággal foglalkozó taxonómia a Landwehr, Bull, McDermott, Choi által 1994-ben publikált komputer programokkal fogalakozó írás [7]. A taxonómia a rendszertanhoz hasonlóan, osztályokba és alosztályokba sorolja a biztonsági réseket, törési módszereket. Az így kialakított

kategóriákhoz egy-egy konkrét esettanulmánnyal szolgál. A cikkben találkozhatunk néhány szép diagrammal is, melyek a támadások tapasztalt gyakoriságát hivatottak ábrázolni. Mint arról már sok szó esett, az IK-k elsősorban biztonságtechnikai feladatokat látnak el. Mint ilyen, megérdemel egy saját támadási taxonómiát, ami dolgozatunk fő témája. 50 Intelligens kártyák elleni támadások taxonómiája 8. A támadási fák (attack trees) Az előző fejezetben a taxonómiákról általánosságban volt szó. Most egy konkrét reprezentációs módszert nézünk meg részletesebben. Tesszük ezt azért, mert a 9 fejezetben az IK-ról készült taxonómia is ebbe a fajtába tartozik. A szakasz végén érvekkel igyekszünk megindokolni, hogy miért döntöttünk a támadási fás modellezés mellet. A támadási fa a támadások egy grafikus modellezése. A reprezentációs módszert, a matematikából ismerős gráfokból kiindulva mutatjuk be. Egy gráf

csomópontok és köztük lévő kapcsolatok rendszere. A kapcsolatokhoz mérőszámokat rendelhetünk, ezeket egységesen súlyoknak nevezzük. Egy kapcsolatnak lehet iránya is (aszimmetrikus), ekkor irányított gráfról beszélünk. Ha minden csomópont minden csomóponttal kapcsolatban van, akkor a gráfot, körmérkőzéses verseny jelleg miatt tournamentnek (viadal) hívjuk. A kapcsolatokat gráfos terminológiában éleknek is nevezzük. Általában nem tekintjük valódi élnek a csomópontot önmagával összekötő hurkot. Két tetszőleges csomópontot összekötő élsorozatot útnak nevezzük Ha a gráfban minden csomópontból minden csomópontba vezet út, akkor a gráf összefüggő. Amennyiben létezik egy adott csomópontból induló és ugyanoda érkező út (kör), akkor az adott gráfot ciklikusnak tituláljuk, egyébként aciklikus. A bevezetett fogalmakkal most már definiálhatjuk a fa gráfot. Fának tekintünk minden összefüggő aciklikus gráfot. Az ilyen

gráfok minden csomópontból bokorszerűen ágaznak szét, akár egy fa lombkoronája, ebből adódik a beszédes elnevezés. A fa gráf csupán egy kapcsolattal rendelkező csomópontjai a levelek. Létezik még egy speciális csomópont, a gyökér Ennek egyedi tulajdonsága, hogy az összes, leveleket összekötő út átmegy rajta. Egy fa gráffal tipikusan egy hierarchikus kapcsolatrendszert írhatunk le. Közismerten ilyen hálózat a családfa, ahol minden őshöz vezet egy leszármazotti viszonyokból álló út, de mivel senki nem lehet saját nagyapja, körrel nem találkozunk benne. Ebből kifolyólag, szokásos a csomópontokra is mint gyermek, vagy mint szülő hivatkozni. A támadási fa is gyakorlatilag egy fa gráf. Miniden csomópontja egy-egy biztonsági kérdéssel, problémával, jelenséggel foglalkozó absztrakt vagy konkrét fogalommal van megcímkézve. A gyökerében a vizsgált rendszer legáltalánosabban megfogalmazott biztonsági problematikája

helyezkedik el, mondjuk egy háznak a kifosztása vagy egy szerver feltörése. Ahogy haladunk a fában lefelé, egyre finomodik a támadás módja, egyre konkrétabbá válik az alkalmazott módszer. A levelek akár lehetnek tényszerű esettanulmányok is. A rendszer biztonságának egyik sarkalatos kérdése az egyenszilárdsága. Hiába véd erős tűzfal egy szervert, ha az ablakon be lehet mászni a gépterembe és helyileg könnyedén fel lehet törni. Egy fás modell jól tudja ábrázolni a sokoldalú veszélyeztetettséget a gyökérből induló utak által. A fában a csomópontoknak két fajtáját különböztetjük meg. Az egyik típus, mikor a gyerekek között mellérendelő viszony van, tehát az ős egy-egy független válfaját képviselik. A támadás „jöhet” mindkét irányból Hogy a magánházba való betörés példájánál maradjunk, az ajtón keresztül, a betörő bejuthat úgy is, hogy egyszerűen áttöri azt, vagy úgy is, hogy álkulccsal kinyitja a

zárat. A két módszer bármelyikével próbálkozhat a betörő, egyaránt azt fogjuk mondani, hogy az ajtón jutott 51 Intelligens kártyák elleni támadások taxonómiája be. Más a helyzet, ha a leszármazottak együtt alkotnak egy támadást Ebben az esetben a gyerekek között ÉS kapcsol áll fenn. Ha például a garázs falát átfúrva próbálnak betörni a házba, azt két részfeladatra lehet bontani. Egyrészt fel kell feszíteni a garázs redőnyajtaját, másrészt át kell fúrni a falat. Csak együtt hatékony a módszer, egy részfeladat elvégzésével a bűnöző még nem ér célba. A kétféle csomópont típus a 18 és 19. ábrákon látható, a rajzok egyben a használatos jelöléseket is mutatják 18. ábra 19. ábra ÉS típusú csomópont. VAGY típusú csomópont. A támadási fákhoz indikátorokat rendelhetünk. Ezek olyan mérőszámok, melyek valamilyen okból érdekesek lehetnek (támadás anyagi költsége, támadás kivitelezéséhez

szükséges tudás mértéke stb.) Az indikátorok tulajdonképpen a gráf egyfajta súlyozását jelentik. Arra jók, hogy a leveleket rangsorolni tudjuk Ha egy olyan ház biztonsági rendszerét igyekszünk megtervezni, melyet 1000 €–nyi értékben fognak berendezni, az olyan támadásokat, melyek ennél nagyobb költségűek, nem kell figyelembe vennünk. Magyarul ezeket a csomópontokat el is hagyhatjuk a gráfból. Az ilyen és ennél jóval bonyolultabb portfoliók alkalmazhatóságára szolgálnak az indikátorok. Egy indikátort két tulajdonság ír le, egyrészt a súlyozási intervallum, másrészt a csomópontoknál alkalmazott értékkulminálási módszer. Egy ÉS típusú csomópontban ez utóbbi lehet például a gyerekek értékeinek összege. A VAGY típus esetén pedig egy maximum függvény. A választás mindig az indikátor jellegétől függ Mivel egy támadási fa nagyon szerteágazó lehet, dokumentációja nehézkessé válhat. Ezt egy aggregációs

technikával tudjuk áthidalni (20 ábra) Bizonyos részfákat külön faként kezelünk, ezek gyökere (absztrakt neve) a főfában levélként jelenik meg. Amennyiben ezt következetesen tesszük, javíthatjuk a taxonómia áttekinthetőségét. 52 Intelligens kártyák elleni támadások taxonómiája 20. ábra Részfa típusú csomópont. A dolgozatban szereplő taxonómia az Amenaza Technologies Limited cég SecurITree 2.2-es tervezőprogramjával készült A stílus és a jelölések követik a szoftver kifejezésmódját. Az IK-kat nagyon eltérő módon lehet feltörni. A támadások több részfeladatra bonthatók és sok esetben csak együttes alkalmazásuk vezet eredményre. Ez nagyon látványosan és áttekinthetően modellezhető a támadási fák segítségével. Általában az adott IK egy komplexebb védelmi rendszer egy részletét képezi. Az IK-król készített támadási fa könnyedén „becsatlakoztatható” a komplexebb rendszer taxonómiájába. A

támadási fák rétegeltsége lehetővé teszi, hogy a rendszerről és alrendszerről készült fákat összekössük. A dolgozatunkban szereplő taxonómia tehát teljes egészében, változtatás nélkül integrálható egy banki rendszerről készült támadási fába. A reprezentáció egy további előnye, hogy nem hordoz semmi merevséget. Ha egy támadási módszer a technológia haladásnak köszönhetően okafogyottá válik, a megfelelő csomópont a taxonómia felborulása nélkül törölhető. Igaz ez fordítva is, egy új keletű támadás akadály nélkül elhelyezhető a struktúrában, egy vagy több újdonsült csomópont céltudatos felvételével. 53 Intelligens kártyák elleni támadások taxonómiája 9. A taxonómia A közhiedelemmel ellentétben, korunk IK-i igenis törhetőek, történik is töméntelen visszaélés velük. A jelenlegi taxonómia a legismertebb feltörési technikákat tartalmazza. Bár mindegyik (értsd, itt bemutatott) ellen létezik

megnyugtató védelem, borsos anyagi vonzatuk miatt, ezek nem minden esetben növelik az IK-k biztonságát. A taxonómia feltételezi, hogy valami minimális védelem azért van az IK-n és nem lehet memóriáját akadály nélkül módosítani. A szabadon módosítható kártyákat leginkább csak tesztelők használnak, biztonságtechnológiai szempontból csöppet sem érdekesek. Mindig arra próbálunk választ kapni, hogy ha már valahogyan védekezünk, annak milyen előnyei, hátulütői vannak. A szoftveres vagy hardveres bugokból1 eredő biztonsági rések (egy példa erre [24]) nem elemei a taxonómiának. A támadási fába elsősorban absztrakt támadásokat vettünk fel. Konkrét IK-k ismert biztonsági lyukai szintén nem kerültek bele, mivel egy általános modell felépítése volt a cél. 9.1 Az indikátorok A taxonómia csomópontjait három indikátor jellemzi. Az indikátorok értékét effektíve csak a leveleknek adjuk meg, a köztes csomópontok gyerekeik

alapján számolják ki saját mérőszámukat. A taxonómiában szereplő számok csupán hozzávetőlegesek, tájékoztató jellegűek. A pontos értékek megbecslése egy külön dolgozat tárgya lehetne Ha valaki precízebb eredményt kíván, a struktúra mentén, saját konstansaiból kiindulva újraszámolhatja az indikátorváltozók tartalmát. A Próbálkozás sikere egy 0 és 1 közötti valós szám, azt fejezi ki, hogy védekezés hiányában a támadás mekkora valószínűséggel jár sikerrel. ÉS típusú csomópontokban a gyerekek szorzatát számoljuk (gy1××gyn), míg a VAGY típusúaknál az 1-(1-gy1)××(1-gyn) képlet adja a csúcs sikerességi valószínűségét (a képletek kihasználják, hogy a gyerekek valószínűségei egymástól függetlenek). Az indikátor segítségével megfigyelhetjük, hogy némely támadások kiiktatása után mennyivel nő az IK biztonsága. Egész pontosan azt kapjuk meg, hogy milyen mértékben van kevesebb esély a kártya

törésére. A Relatív költség egy olyan indikátor, mely a támadás anyagi vonzatát hivatott kifejezni. A összeg egy fiktív ár, nincs köze semelyik létező valutához vagy devizához, csupán a pénzügyi arányokat mutatja meg. Ezek természetesen az idővel változhatnak, ekkor a taxonómia egy eltorzult képet fog mutatni, szükségessé válik a összegek frissítése. ÉS csúcsokban az árak kumulálódnak, egy VAGY típusú csomópontban pedig a legkisebb kerül kiválasztásra. A harmadik indikátort Technológiai ráfordításnak neveztük el. Ez elsősorban a támadáshoz szükséges szellemi tőke költségét fejezi ki egy 1 és 100 közötti számmal. 1 Az angol szó jelentése bogár. A programozói figyelmetlenségből adódó, könnyűszerrel javítható hibákat illetjük ezzel a beszédes megnevezéssel. 54 Intelligens kártyák elleni támadások taxonómiája Mérhet matematikai, fizikai, mérnöki vagy informatikai ismereteket. Mondjuk egy

kriptográfiai eljárás feltörése más karakterű tudást igényel, mint egy elektronmikroszkópos memóriaelemzés, annak ellenére, hogy mindkettő komoly feladat. A fában, a gyökér felé haladva, a gyerekek maximumát illetve minimumát számoljuk aszerint, hogy ÉS vagy VAGY csúcsról van szó. 9.2 A támadási fa Ebben az alfejezetben kerül bemutatásra a támadási fa, tipográfiai okokból részfákra bontva. A csomópontok jelentését részletesen a 93-913 alfejezetekben fejtjük ki. A taxonómia összefüggő, Amenaza SecurITree-hez készült elektronikus változata letölthető a [28] webcímről. 55 Intelligens kártyák elleni támadások taxonómiája 56 Intelligens kártyák elleni támadások taxonómiája 57 Intelligens kártyák elleni támadások taxonómiája 58 Intelligens kártyák elleni támadások taxonómiája 59 Intelligens kártyák elleni támadások taxonómiája 60 Intelligens kártyák elleni támadások

taxonómiája 61 Intelligens kártyák elleni támadások taxonómiája 62 Intelligens kártyák elleni támadások taxonómiája 63 Intelligens kártyák elleni támadások taxonómiája 64 Intelligens kártyák elleni támadások taxonómiája 9.3 Különbség a közvetlen (1) és a távoli (2) hozzáférés között Az IK-k ellen elkövethető támadásoknak alapvetően két fajtája van. Közvetlen hozzáférésről beszélünk (11), amikor az IK a támadó rendelkezésére áll, mondjuk, mivel ellopta azt tulajdonosától (1.11), vagy, mert saját kártyájának tartalmát akarja meghamisítani (1.12) Egy saját kártya törési kísérlete például egy elektromos pénztárca esetén merülhet fel. A másik eset, mikor csak távolról tudunk hozzáférni az IK-hoz (2). Ez történhet, mondjuk egy Internetre kötött CAD-en keresztül Az IK-k elleni támadások ilyetén differenciálását a [6] irodalomban is megtaláljuk. 9.4 Az IK elektronmikroszkópos

vizsgálata (1211) A Cambridge-i Egyetemen kivitelezett kísérletek igazolták, hogy a legtöbb IK csipjének külső borítását viszonylag könnyű eltávolítani. A meztelen lapkát aztán elektronmikroszkóppal rétegről rétegre letapogathatjuk (1.211) A vizsgálatok alapján rekonstruálhatjuk az áramkör felépítését. Az elektronmikroszkóp alkalmas arra is, hogy a kártya memóriáját elolvassuk (1.2111) Védekezni ebben az esetben olyan külső borítással lehet, melynek eltávolítása a belső IC sérülése nélkül se fizikai, se kémiai módszerrel nem lehetséges. 9.5 Az abnormális környezet hatásai (1212) Mint az az ISO 7816-os szabványból kiderül, a processzor és a programozható memória külön tápellátással rendelkezik. Ennek oka, hogy az EPROM írásához nagyobb feszültségre van szükség, mint a belső számítógép működéséhez. Ha a VPP csatornát elfedjük, az IK memóriáját nem lehet megváltoztatni (1.21211) Néhány televíziós

társaság az előfizetett csatornákat egy kliensnél lévő IK-n tartotta nyilván. A kiadott kártyán eredetileg az összes létező tv csatorna engedélyezve volt, az előfizetésnek megfelelően, használat közben tiltották le a nem járó műsorokat. Ha valaki a VPP bemenetet leragasztotta, a memória tartalma nem volt írható, az IK az összes csatorna broadcast jelét engedélyezte a tv készüléknek. Hasonló jellegű, mégis más technika, hogy a processzor tápfeszültségét alacsonyan tartjuk (1.21212) Bizonyos IK-k véletlenszám-generátora alacsony feszültség hatására csupa egyesből álló „véletlen számot” állít elő. Ilyen ismerhető titok esetén a 6.3 alfejezetben bemutatott kihíváson alapuló azonosítás könnyen kijátszható Csak ennek ez egy számnak az aláírt párját kell ismernie a támadónak, ezt pedig kikényszerítheti a titkos kulcs tulajdonosától egy műkihívás segítségével. Eredményes lehet, ha a megengedettnél gyorsabb

órajelet adunk a CLK bemenetre (1.21231), vagy a felső küszöböt meghaladó tranziensű tápfeszültséget biztosítunk (1.21232) Ekkor a belső processzor hibás utasításokat fog végrehajtani, ezeket az angolból eredően glitch-eknek (zavar) nevezzük, melyek jól jöhetnek egy támadónak. Van olyan glitch, mellyel a teljes memóriát kilistázhatjuk az outputra 1 Hivatkozás a támadási fa megfelelő csomópontjára. 65 Intelligens kártyák elleni támadások taxonómiája Persze előre nem kitalálható melyik glitch jár támadói szempontból pozitív eredménnyel, de ez kitapasztalható. Tipikus fizikai támadás az is, mikor lehűtjük vagy éppen felmelegítjük az IK-t (1.2122) A hőmanipulációval általában az azonosító protokoll hibás döntését akarják elérni, hogy szabadon hozzáférhessenek az IK belsejéhez. Az ilyen „trükkök” ellen leginkább a küszöbértékek túllépésének pótáramkörökkel való figyelésével lehet védekezni.

Például túl magas tápfeszültség vagy órajel esetén az IK megtagadja a működést. Az ilyen pótáramkörök természetesen növelik a kártya gyártási költségeit. A VCC és a VPP által igényelt feszültségek közötti különbséget egy belső feszültségátalakítóval (transzformátorral) küszöbölhetjük ki. 9.6 Kártya kommunikációjának fizikai lehallgatása (122) Az IK-k a távoli szolgáltatókkal általában titkosított üzenetekkel kommunikálnak. Nincs ez így a terminál és a kártya közötti párbeszéd esetén. A parancsok és egyes adatok a CAD-on belül nyíltan közlekednek (pl. a véletlen kihívás vagy a PIN-kód) Ha birtokunkban van egy olvasó és egy kártya, az üzenetcserét könnyedén lehallgathatjuk. Csupán egy olyan álkártyára van szükségünk (ún. kártyakivezető), ami látszólag hasonlít egy valódi IK-ra. Valójában nincs benne számítógép, hátul pedig drótok jönnek ki belőle. A drótok a 8 darab 1 bites

kommunikációs csatorna kivezetésére szolgálnak Kívül aztán – középen egy lehallgató számítógépet helyezhetünk el – a drótok végét az IK interfészéhez csatlakoztathatjuk. Így teljes egészében megfigyelhetjük a kérés-válasz párokat (1.2213) Ezeket azután egy általános IK-ra írt szoftverrel utánozni tudjuk (1.2211) A módszerrel gyakorlatilag olcsón tudunk egy jogokkal felruházó, hamis IK-t készíteni (pl. hamis tv előfizetői kártya) A módszer ellen az IK kommunikációjának következetes megtervezésével védekezhetünk. Ha a CAD és az IK között áthaladó adatokból semmiféle belső titokra nem következtethetünk (1.222), és a válaszok emulálásával nem készíthetünk álkártyát, a kommunikációs protokoll helyes. 9.7 Gyári kulcsokkal való próbálkozás (123) Bár a technika elsősorban nem a kártya, hanem a kártyán futó kriptográfiai módszer kijátszására irányul, mégis inkább eltulajdonított IK-k fizikai

törésének minősül. Egyszerűen azért, mert nem érdekes a használt titkosító algoritmus, a próbálkozás eredménye csöppet sem függ annak erősségétől. A támadó azt használja ki, hogy az eredeti felhasználó elmulasztotta személyre szabni a kártyát, megmaradt a gyári beállításoknál. Ez körülbelül olyan, mint amikor valaki elfelejti lezárni gépkocsiját, a tolvaj egy sima ajtónyitással az utastérbe képes kerülni. A támadás tehát az emberi hanyagságon alapszik. A technika ellen védekezhetünk úgy, hogy kibocsátáskor nem adunk meg alapértelmezett adatokat. Ez persze azt jelenti, hogy védelem nélkül kerül az ügyfél kezébe az eszköz, ami nem sokkal jobb egy közismert, de mégis prosperáló kulcsnál. Annyival azért mégis, hogy a birtokos legalább tudatában van annak, hogy elektronikus 66 Intelligens kártyák elleni támadások taxonómiája eszköze védtelen. Másik lehetőség, hogy a kártya bizonyos próbálkozás után

megsemmisíti a rajta lévő információkat, így többé nem hasznosítható. Példának okáért, ha 30 különböző gyári kulcs ismert, és 3 kísérlet után az IK törli magát, egy hanyag kártyabirtokosnak is 9/10-ed százalék esélye van arra, hogy ilyen módon nem szenved kárt. 9.8 A kártya távoli lehallgatása (22) A CAD-ok egy része hálózatra kötött kiszolgálóként működik (akár egy hálózati nyomtató). A hálózaton az adatok rejtjelezés nélkül közlekedhetnek Az üzenetváltás, egy nyilvános csatornán történő hálózati kommunikációhoz hasonlóan, lehallgatható. Amikor egy felhasználó a terminálba helyezi a kártyáját, majd egy másik hálózati eszközön – mondjuk irodai számítógépén – beüti a PIN-kódját, a szám nyílt szövegként fog áthaladni a dróton, csakúgy, mint a telnet1 protokoll esetében a jelszó (2.22) Amennyiben a kritikus adatok titkosítva vannak, még mindig kivitelezhető egy 9.6 alfejezetből

megismert utánzási módszer (221) A kommunikáció jellegét kiismerve, olyan hálózati csomagokat állíthatunk elő, melyek látszólag egy IK-ról jönnek. Egy kártyás azonosításon alapuló szervertől így erőforrásokat csalhatunk ki Amennyiben a CAD internetes kapcsolattal rendelkezik, a jószágot egy világhálóra kötött szerver szokásos védelmével (tűzfal, proxy) illik ellátni. Távoli lehallgatásnak tekintjük azt is, amikor a támadók egy rádiófrekvenciás olvasó közelében egy átjátszót helyeznek el, és figyelik vele az éterben megjelenő parancsokat, adatokat (2.22) A CAD-ot tartalmazó helyiség klasszikus védelme esetén a támadónak nincs módja egy ilyen átjátszó telepítésére. 9.9 Beavatkozás azonosítás után (223) A módszert szokás man-in-the-middle (szabad fordításban: ember középen) támadásnak is nevezni. A legtöbb IK nem képes a logikai csatornák kezelésére, ezért az azonosítás után érkező parancsokról nem

tudja eldönteni, hogy a hiteles felhasználótól érkezett-e vagy sem. Ha valaki egy multifelhasználós számítógéppel használja kártyáját, a támadó (aki, mint távoli felhasználó jelen van a rendszerben) figyelheti a kártyára küldött parancsokat, miután észleli az autentikáció megtörténtét, maga is beavatkozhat. A CAD általában soros vagy USB porton kapcsolódik a számítógéphez, az ezeket kezelő driverek feltörése, a legtöbb operációs rendszer esetén (UNIX, Windows), az egyszerűbb feladatok közé tartozik. A man-in-the-middle támadás, rádiós CAD-ek esetén egy átjátszóval is megvalósítható. Az effajta sunyi betörést a folyamatos azonosítással kerülhetjük el. Ez történhet úgy, hogy egy-egy üzenetblokkot digitálisan aláírunk. Amikor az aláírás megérkezett, az IK csak azt követően hajtja végre a pufferben kötegelt utasításokat. Egy folyamatos 1 Egy számítógép távoli vezérlése szolgáló protokoll. A

kommunikáció nyílt csatornán történik 67 Intelligens kártyák elleni támadások taxonómiája DES-es titkosítás is növeli a biztonságot, hiszen a DES kulcs töréséhez a támadónak nagy mennyiségű titkosított üzenetre van szüksége. 9.10 A kriptográfiát törő módszerek (21) A kriptográfiai módszerekről a 6. szakaszban már sok szó esett Nem szolgálnak újdonsággal a törési technikák sem. Az IK-k titkosítását leginkább a belső véletlenszám-generátor gyengeségével akarják megfogni (2.131) Némely IK-k a titkosításhoz használt kulcsokat maguk állítják elő és soha nem adják ki. A kulcsot, logikus módon, valamilyen véletlenből generálják. Ha ennek a véletlennek kicsi az entrópiája, gyenge kulcsot kapunk. A hangsúly tehát egy nagy entrópiájú véletlen szám „gyártására” tevődik. Drága megoldás, ha a csipbe egy hardveres véletlenszámgenerátort ültetünk (pl nukleáris hasadáson alapuló generátor) Az

újabban elterjedt USB-be ágyazott IK-k kihasználhatják, hogy egy USB csatornára egyre inkább egér illetve tasztatúra is van kötve. Az egér össze-vissza görgetése tipikusan rekonstruálhatatlanul sztochasztikus esemény. A kulcsfejtést tovább nehezíti, ha a támadó nem képes nagy mennyiségű sifrírozott szöveghez hozzájutni. Minél több titkosított szöveg áll rendelkezésére, annál könnyebb dolga van. Sok esetben azt szokták kihasználni, hogy nagyjából sejthető, mi is lett titkosítva. 9.11 Hamis eszköz használata (3) Amikor valamilyen igazolvány nélküli CAD vagy cardlet képes bejutni a kártyába, hamis eszközzel történő támadásról beszélünk. A támadó dolga, hogy az IK-t saját áltermináljába csalogassa, ami aztán képes információt hamisítani vagy ellopni az eszközről. A multifunkcionális IK-k jelenleg a tárolt applikációk cserélgetésével érik el sokoldalúságukat. A megfelelő programkódot vagy a CAD-ról, vagy az

Internetről töltik le. Az, hogy a kártyába kívülről kerül be a futtatott kód, a támadók által kihasználható (3.1), lásd 912 alfejezet Egy hamis eszköz hozzáférését kézfogásos technikával zárhatjuk ki. Ez azt jelenti, hogy mind az IK, mind a CAD vagy szoftvert szolgáltató központ igazolja kilétét. Az igazolás digitális aláírással történik Az IK előre „ismeri” azokat a nyilvános kulcsokat, melyeknek párját csak a legális eszközök ismerik. Egy legális CAD pedig azt ígéri, hogy nem fog „meglepő” manipulációt végezni az IK-n. 9.12 Trójai programok feltöltése (31) Az Iliászból mindenki ismeri a trójai faló történetét. Kártékony applikációk olyan álcázásáról van szó, hogy a jóhiszemű IK maga töltse be operatív tárába, majd indítsa el. A JK-k például lehetővé teszik több cardlet tárolását a kártyán, illetve azok időszakos cseréjét. Annak érdekében, hogy csak megbízható szoftver futhasson a

kártyán, a fejlesztők a tárgykód digitális aláírásával védekeznek. Amennyiben a támadók meg tudják hamisítani az aláírást, gyakorlatilag bármilyen feladatra programozott cardletet futtathatnak a JK-n. Még könnyebb a behatoló dolga, ha a kártya 68 Intelligens kártyák elleni támadások taxonómiája semmilyen formában nem ellenőrzi a rátöltött programok hitelességét. A trójai falovak ellen az IK körültekintő használatával lehet védekezni. 9.13 Hamis CAD (32) Vigyázni kell az általános célú olvasóterminálokkal, mert egy rosszindulatú CAD ellophatja, és adott címre továbbíthatja PIN-kódunkat. Sőt olyan utasításokat adhat ki, amelyeket a felhasználó nem szándékozott elvégeztetni (3.22) Esetleg összeköttetésben lehet egy támadóval, aki a háttérből befolyásolni tudja a CAD által kiadott utasításokat. Ezek általában az IK memóriában lévő fájlrendszer ellen irányulnak. Érdemes a már említett, kézfogásos

technikát alkalmazni Sok példa van arra, amikor az IK tartalmát időnként egy központi adatbázissal szinkronizáljuk. Elérhető az, hogy a szinkronizáláskor fals adatok kerüljenek a kártya memóriájába (3.21) Ekkor valójában nem a CAD-ot hamisítjuk meg, hanem a központi adatbázist. Ez megtehető úgy, hogy betörünk az adatbázis szerverbe és átírjuk a megfelelő rekordokat. Másik módszer, mikor útközben lecseréljük az adatbázisból érkező adatokat. Hangsúlyozni kell tehát a titkos csatornán keresztül történő szinkronizáció fontosságát! 69 Intelligens kártyák elleni támadások taxonómiája 10. Összefoglalás és elért eredmények A dolgozatban az intelligens kártyák biztonságát jártuk körül. Végigkísértük fejlődéstörténetük fő mérföldköveit, manapság leggyakoribb felhasználásait. Miután adatbiztonság szempontjából a felhasználói azonosítás kiemelten fontos, egy külön alfejezetet szenteltünk ennek a

témának. Az általános áttekintés után röviden szóltunk két népszerű protokollról. Az ISO/IEC 7816-os szabvány az IK-k alacsony színtű karakterisztikáját határozza meg, míg a JK 2.21-es specifikáció egy absztrakt programozói környezetet, melyet egyre több gyártó támogat. Lényegesnek éreztük ezek bemutatását, mert nagyban befolyásolják az IK-ról való gondolkodást. Nem maradhattak ki a dolgozatból a legelterjedtebb kriptográfiai eljárások sem. Ezek ismertetése azért mondható szükségesnek mert ismeretük nélkül a taxonómia ide vonatkozó része nem lenne teljes. Tekinthetünk úgy rájuk, mint az általános modell konkrét eseteire. A titkosítások fejezetet kiegészítendő, bemutattunk két valódi titkosító protokollt az IK-k világából. A dolgozat fő témája, egy új elveket követő taxonómia kidolgozása. Miután ismertettük a taxonómiák hasznosságát a biztonságtechnika területén, vázoltuk a támadási fa modellt.

Több szempontból megvizsgáltuk, hogy egy támadási fa alapú modellezés miért célszerűbb a korábban használt osztályozásoknál (pl. [6]) Az előkészítő feladatok után, bemutattuk magát a kidolgozott taxonómiát. Az egyes elemek leírásánál minden esetben kitértünk a lehetséges biztonsági megoldásokra. Nem ismert a szakirodalomban hasonló taxonómia az intelligens kártyákról, pedig azok széleskörű használta, és mintegy 25 éves múltja ezt indokolttá tenné. Mindazonáltal újabb és újabb támadási módszerek ütik fel fejüket, ezekkel folyamatosan ki kell egészíteni a jelenlegi struktúrát. Igyekeztünk olyan alapokat lefektetni, melyekre a későbbiekben logikusan lehet építeni. A támadási technikák szofisztikáltabb ábrázolása, valamint a gyakorlat szempontjából hasznos mérőszámok (indikátorok) bevezetése mindenképp fejlesztési lehetőség. Az IK-knak az informatikusok komoly jövőt jósolnak. Elképzelhető, hogy a ma még

többnyire csak GSM kommunikációra használt SIM kártyákon fogjuk tartani pénzünket, orvosi adatainkat, digitális aláírásunkat. Sőt, vele fogunk utazni a metrón, segítségével azonosítjuk magunkat munkahelyünkön. Ezen felhasználások biztonságának garantálása egyre szükségesebb lesz, egyre több fog múlni a kártya védelmén. A dolgozatban összegyűjtött biztonsági problémák és az azok alapján készült taxonómia talán segítséget nyújthat egy robosztusabb IK kifejlesztéséhez. 70 Intelligens kártyák elleni támadások taxonómiája 11. Irodalomjegyzék [1] Virasztó Tamás: Titkosítás és adatrejtés, NetAcademia Kft., 2004, [335 o], ISBN-9632142535 [2] Simon Singh: Kódkönyv (A rejtjelezés és rejtjelfejtés története), Park Könyvkiadó, 2001, [400 o.], ISBN-9635305257 [3] Láng Csabáné: Bevezető fejezetek a matematikába I-II., ELTE Budapest, 1997, [200 és 150 o.], egyetemi jegyzet [4] Nyékiné G. Judit: Java 2

Útikalauz Programozóknak 13 I-II, ELTE TTK Hallgatói Alapítvány, 2001, [750 és 650 o.], ISBN-9634634850 [5] Scott Guthery, Tim Jurgensen: Smart Card Developers Kit, Macmillan Computer Publishing, 1998, ISBN-1578700272, http://www.scdkcom/ (2004.0601) [6] David Corcoran: Security-Related Exposures and Solutions in Smartcards, Information Security Bulletin, Vol. 5, Iss 9, 2000, [13-22 o] [7] Carl E. Landwehr, Alan R Bull, John P McDermott, William S Choi: A Taxonomy of Computer Program Security Flaws, with Examples, ACM Computing Surveys, Vol. 26, Iss 3, 1994, [211-254 o] [8] J. Kelsey, B Schneier, D Wagner, C Hall: Cryptanalytic Attacks on Pseudorandom Number Generators, Springer-Verlag, 1998, [168-188. o] [9] J. Kelsey, B Schneier, D Wagner, C Hall: Side Channel Cryptanalysis of Product Ciphers, Springer-Verlag, 1998, [97-110. o] [10] W. Madsen: Smart cards: big brother on a chip, Information Systems Security, Vol. 5, Iss 3, 1996, [10-20 o] [11] M. Abe, E Fujisaki:

How to date blind signatures, Advances in Cryptology – ASIACRYPT96 International Conference on the Theory and Applications of Cryptology and Information Security Proceedings, 1996, [244-251. o] [12] Chun-I Fan, Chin-Laung Lei: Low-computation partially blind signatures for electronic cash, Communications and Computer Sciences, Vol. E81-A, Iss 5, [759-760. o] [13] Shiuh-Jeng Wang, Jin-Fu Chang: Smart card based password authentication scheme, Computer & Security, Vol. 15, Iss 3, 1996, [231-237 o] [14] Nicolas T. Courtois, Josef Pieprzyk: Cryptanalysis of Block Ciphers with Overdefined Systems of Equations, 2000 71 Intelligens kártyák elleni támadások taxonómiája [15] B. Schneier, A Shostack: Breaking Up Is Hard to Do: Modeling Security Threats for Smart Cards, USENIX Workshop on Smart Card Technology, 1999, [175-185. o], http://wwwschneiercom/paper-smart-card-threatshtml (2004.0601) [16] ISO 7816/1-10 szabvány, http://www.isoorg/ (20040601) [17] JK 2.21-es

specifikáció angol dokumentációja, http://java.suncom/products/javacard/specshtml (20040601) [18] Intelligens Kártya Fórum, http://www.njsztiifhu/ikf/ (20040601) [19] A SecurITree szoftver honlapja, http://www.amenazacom/ (20040601) [20] MagnePrint, http://www.magneprintcom/ (20040601) [21] B. Schneier: Attack Trees, Dr Dobbs Journal, 1999, http://www.schneiercom/paper-attacktrees-ddj-fthtml (20040601) [22] Az elliptikus görbe pontjaiból alkotott csoport, http://www.biztostuhu/oktatas/kriptologia/ECC 3 csoportmuvelethtm (2004.0601) [23] Smartcard Filesystem (SCFS), http://www.citiumichedu/projects/smartcard/scfs v2html (20040601) [24] Insecure Soda Machines (Feltört Üdítőautomaták), http://www.voltsampscom/pages/projects/sodamach/ (20040601) [25] Cyberflex IK honlapja, http://www.cyberflexcom/ (20040601) [26] M.USCLE, http://wwwlinuxnetcom/ (20040601) [27] Az A3, A5 és A8 kriptográfiai algoritmusok forráskódja,

http://www.mirrorswiretappednet/security/cryptography/algorithms/gsm/ (2004.0601) [28] A dolgozatban bemutatott támadási fa elektronikus változata, http://people.infeltehu/wavezone/ikrit (20040601) 72 Intelligens kártyák elleni támadások taxonómiája 12. Tárgymutató 3DES, 36 EG, 40, 41, 42, 43 A3, 44 egyenszilárdság, 50 A5, 44, 45 elektronikus pénztárca, 8, 15, 16 A8, 44 EMV, 14, 20, 28 AES, 37 fa gráf, 50 APDU, 23, 24, 25, 29, 31 glitch, 63 aszimmetrikus, 16, 25, 37, 38, 39, 40, 42, 46, 47, 50 gráf, 50, 51 Green projekt, 27 ATR, 23, 24 gyökér, 50, 52, 54 autentikáció, 17, 18, 23, 25, 26, 39, 45, 65 hashfüggvény, 32, 33, 46, 47 autorizáció, 17 iButton, 13 biometria, 18, 19, 33 indikátor, 51, 53, 67 CAD, 12, 23, 24, 25, 62, 63, 64, 65, 66 ISO, 11, 12, 13, 14, 20, 22, 26, 28, 29, 30, 31, 63, 67 cardlet, 28, 29, 30, 31, 65, 66 Java, 12, 13, 27, 28, 29, 30, 31, 37 ciklikus gráf, 50 JavaCard, 12, 14, 28 contactless, 12, 20 JCRE, 28,

29, 30 csipkártya, 10, 11 JKVG, 28, 29, 31 csomópont, 50, 51, 52, 53 kézfogás, 16, 25, 66 DES, 35, 36, 37, 46, 65 kihívásos azonosítás, 24, 25, 39, 63 DF, 22, 26 kredit, 15 digitális aláírás, 16, 17, 25, 29, 31, 32, 33, 39, 40, 65, 66, 67 kulcspár, 16, 31, 38 ECC, 43 kulcstartó, 16 EF, 22, 24 levél, 22, 50, 51, 52, 53 73 Intelligens kártyák elleni támadások taxonómiája Linux, 14 SCQL, 20, 26 man-in-the-middle, 65 SHA-1, 34 MD5, 33, 34, 46 SIM, 8, 16, 44, 67 memóriakártya, 10 szimmetrikus, 25, 34, 35, 40, 46, 47 MF, 22 támadási fa, 9, 50, 51, 52, 67 nyilvános kulcs, 25, 38, 39, 40, 43, 46 taxonómia, 9, 48, 49, 50, 52, 53, 62, 67 PIN-kód, 16, 18, 23, 24, 25, 31, 33, 63, 64, 66 titkos kulcs, 25, 38, 40, 43, 46 TripleDES, 36 PUK-kód, 18 UNIX, 22, 65 reset, 18, 21, 22, 23, 24 viszonykulcs, 31, 43, 44 Rijndael, 37 Windows, 14, 65 RSA, 16, 23, 40, 43, 46 XOR, 35, 37, 45 74 Intelligens kártyák elleni támadások taxonómiája 13.

Függelék 13.1 Memóriafajták RAM ROM PROM EPROM EEPROM Írható/olvasható, tápfeszültség nélkül tartalma törlődik. Lehet dinamikus (állandó frissítést igényel) vagy statikus (nem igényel frissítést). Gyárilag programozott, nem módosítható. Felhasználó által egyszer programozható ROM. Felhasználó által programozható, UV fénnyel törölhető. Felhasználó által programozható, elektronikusan törölhető. 13.2 A tikos információcsere sztereotip alanyai A kriptográfiával foglalkozó publikációkban elterjedt, hogy egy protokoll bemutatásakor az emberi szereplőket beszédes nevekkel ruházzuk fel. A nevek az angol utónévszótárból valók és Bruce Schneier vezette be őket. Név Alice Bob Carol Dave Trudy Eve Mallory Trent Peggy Walter Victor A névhez kapcsolódó angol kifejezés angol ábécé elejéből generált nevek Szerepkör a feladó a fogadó az üzenetváltás extra résztvevője intruder eye, eaves dropper malicious active

attacker trusted arbitrator prover warden verifier támadó általános szándékkal a passzív támadó az aktív támadó a döntőbíró a bizonyító a felügyelő az ellenőrző 75 Intelligens kártyák elleni támadások taxonómiája Köszönetnyilvánítás Szeretnék köszönetet mondani mindenkinek, aki segített engem abban, hogy ez a dolgozat létrejöhessen. Kiemelt köszönet jár Kincses Zoltán témavezetőmnek, aki lelkiismeretesen követte nyomon és irányította a dolgozat összeállítását. Töméntelen tartalmi és szerkezeti tanácsot kaptam tőle. A dolgozat nyelvtani lektorálását, valamint az ábrákhoz nyújtott segédkezését szeretném megköszönni Groma Saroltnak. Hálás vagyok továbbá Iványi Antal Tanár Úrnak, aki megtanított rá, hogyan kell egy tudományos munkának formailag kinézni, illetve mert a szakirodalomban való eligazodás terén is sok mindent elsajátíthattam tőle. Köszönöm az Ötödkor nevű együttesnek, hogy

inspiráló zenéjükkel tartották bennem a lelket a szövegszerkesztési munkálatok alatt. Groma István 76