1 def OnFinished(self, evt):
2 ’’’
3 Handles results from working threads
4 ’’’
5 message = None
6 icon = None
7
8 if evt._data:
9 message = "Transponder is vulnerable!"
10 icon = wx.ICON_WARNING
11
12 if evt.GetValue() == self.EVT_TEST_KEYS:
13 message = message + " Sector key = {}".format(evt._data)
14 else:
15 message = "Transponder is not vulnerable."
16 icon = wx.ICON_INFORMATION
17
18 # Show result in Alertbox
19 wx.MessageBox(message, "Test {} is finished".format(evt._value ), wx.OK | icon)
25 EVT_WORK = wx.PyEventBinder(myEVT_WORK, 1)
26
27 # Bind event to OnFinished method
28 self.Bind(EVT_WORK, self.OnFinished)
29 ...
4.7.2 Okno pro testov´ an´ı entropie PRNG
Uˇzivatel m˚uˇze prov´adˇet testy entropie PRNG z okna pˇredstavovan´eho tˇr´ıdou Prng-TestFrame.
V lev´e ˇc´asti tohoto okna se nach´az´ı graf vykreslen´y pomoc´ı knihovny matplotlib.
V prav´e ˇc´asti okna se nach´az´ı textov´e pole, do kter´eho je zad´an poˇcet sb´ıran´ych hodnot z gener´atoru pseudon´ahodn´ych ˇc´ısel (resp. poˇcet odes´ılan´ych poˇzadavk˚u).
Po dokonˇcen´ı bˇehu testu jsou z´ıskan´e hodnoty vykresleny do grafu (Obr´azek 4.4).
Obr´azek 4.4: Okno pro testov´an´ı entropie PRNG
4.7.3 Dialogy
Aplikace vyuˇz´ıv´a k z´ısk´av´an´ı hodnot mod´aln´ı dialogy, do kter´ych uˇzivatel vyplˇnuje potˇrebn´y ´udaj.
Tˇr´ıdy jednotliv´ych dialog˚u dˇed´ı od tˇr´ıdy wx.Dialog a jsou vol´any pomoc´ı me-tody dlg.ShowModal(). Po odesl´an´ı dialogu je do hlavn´ıho okna vr´acena n´avratov´a hodnota, kter´a je wx.ID OK v pˇr´ıpadˇe, ˇze byl formul´aˇr odesl´an. Dalˇs´ı informac´ı jsou samotn´a data, kter´a jsou z´ısk´ana pˇr´ımo z instance dialogu.
Tˇr´ıda DefaultKeyDialog slouˇz´ı k z´ısk´an´ı ˇc´ısla bloku, kter´e m´a b´yt pouˇzito pro spuˇstˇen´ı testu z DefaultKeysTest.
K z´ısk´an´ı hodnoty v´yzvy a spuˇstˇen´ı testu slab´ych implementac´ı slouˇz´ı dialog NackDialog.
5 Doporuˇ cen´ı pro zabezpeˇ cen´ı
Bohuˇzel z d˚uvodu kompatibility je prakticky t´emˇeˇr nemoˇzn´e odstranit vˇsechny ne-dostatky vedouc´ı ke zranitelnosti, ponˇevadˇz by bylo nutn´e vymˇenit vˇsechna zaˇr´ızen´ı nebo zav´est m´od kompatibility se starˇs´ımi transpond´ery a probl´em by tak pˇretrv´aval.
Teoreticky byly vˇsak zmˇeny ˇsifrovac´ıho sch´ematu pops´any v ˇc´asti 3.4.
Existuj´ı vˇsak urˇcit´e segmenty trhu, ve kter´ych je rozhoduj´ıc´ı pˇredevˇs´ım cena a bezpeˇcnost je aˇz na druh´em m´ıstˇe. Pro tento pˇr´ıpad zde byla seps´ana metodika, kter´a minimalizuje rizika spojen´a s nasazen´ım takto slabˇe zabezpeˇcen´e technologie.
Doporuˇcen´ı pro pouˇzit´ı technologie Mifare Classic jsou:
1. Pouˇzit´ı pro nekritick´e aplikace
Nasazen´ı ovˇeˇrov´an´ı uˇzivatel˚u pomoc´ı technologie Mifare Classic je nevhodn´e pro kritick´e aplikace – kl´ıˇcov´e objekty jako jsou napˇr´ıklad elektr´arny. Avˇsak pˇri vyuˇz´ıt´ı v m´enˇe kritick´ych aplikac´ıch, jako je napˇr´ıklad mˇestsk´a hromadn´a doprava, nemus´ı b´yt vyˇsˇs´ı m´ıra zranitelnosti takov´ym probl´emem.
V pˇr´ıpadˇe mˇestsk´e hromadn´e dopravy nen´ı finanˇcn´ı ztr´ata zp˚usoben´a tech-nicky vybaven´ym ˇcern´ym pasaˇz´erem ani zdaleka tak vysok´a, jako jsou n´aklady spojen´e se zmˇenou vyuˇz´ıvan´e technologie. Nav´ıc je nutn´e poˇc´ıtat s vyˇsˇs´ı cenou bezpeˇcnˇejˇs´ı technologie.
2. Nastaven´ı opr´avnˇen´ı
Minimalizovat riziko pr˚uniku do syst´emu lze spr´avn´ym nastaven´ım uˇzivatelsk´ych opr´avnˇen´ı.
Nejjednoduˇsˇs´ı a z´aroveˇn nejv´ıce n´achyln´y pˇr´ıstup je nastavit do pamˇeti karty jeden identifik´ator (pˇr´ıpadnˇe identifik´ator opr´avnˇen´ı), kter´ym se uˇzivatel´e bu-dou prokazovat. Bohuˇzel pokud ´utoˇcn´ık z´ısk´a tento identifik´ator z jedn´e karty, tak dojde ke kompromitaci cel´eho syst´emu, ˇci jeho ˇc´asti dan´e opr´avnˇen´ım–
napˇr´ıklad bude m´ıt neomezen´y pˇr´ıstup po cel´em objektu.
Na kartu je pak vhodn´e uloˇzit pouze identifik´ator uˇzivatele, kter´y je pˇred´an ˇcteˇckou vyˇsˇs´ı vrstvˇe. Tato vrstva se postar´a d´ale o autentizaci uˇzivatele, napˇr´ıklad
oproti datab´azov´emu serveru, a pˇr´ıpadnˇe d´ale pˇriˇrad´ı urˇcit´a opr´avnˇen´ı. N´aslednˇe je provedena akce na z´akladˇe pˇriˇrazen´ych opr´avnˇen´ı a typu zaˇr´ızen´ı. Tento pˇr´ıstup je zn´azornˇen na obr´azku 5.1.
Autentizace s ID
Databáze
Transpondér ID
Oprávnění Čtečka
Aplikační logika Obsluha hw
ID akce
Obr´azek 5.1: Autorizace uˇzivatele pomoc´ı RFID karty
3. Filtrov´an´ı vstup˚u
Je nutn´e uplatˇnovat stejn´e filtrov´an´ı vstup˚u do datab´aze, jak z webov´e apli-kace, tak z RFID ˇcteˇcek. Pokud ´utoˇcn´ık m˚uˇze manipulovat s pamˇet´ı karty, tak m˚uˇze b´yt schopen pˇridat do jej´ı pamˇeti nebezpeˇcn´y k´od.
4. Omezen´ı dosahu
R´adiov´e ˇcteˇcky je vhodn´e nastavit tak, aby byl omezen jejich vys´ılac´ı dosah a to nastaven´ım nejmenˇs´ıho moˇzn´eho vys´ılac´ıho v´ykonu, pˇr´ıpadnˇe vhodn´ym um´ıstˇen´ım ant´en. Takto lze ´utoˇcn´ıkovi zt´ıˇzit moˇznosti odposlechu a pˇr´ıpadn´e dalˇs´ı ´utoky.
5. Uloˇzen´ı dat
Je nutn´e peˇclivˇe zv´aˇzit kolik dat ukl´adat v pamˇeti karty. Typicky by se mˇelo jednat o nejmenˇs´ı moˇzn´e mnoˇzstv´ı informace, ponˇevadˇz v pˇr´ıpadˇe zraniteln´e technologie lze tyto informace povaˇzovat za dostupn´e ´utoˇcn´ıkovi.
Dalˇs´ı informace je pak vhodn´e v pˇr´ıpadˇe nutnosti naˇc´ıtat z datab´aze, nebo jin´eho vzd´alen´eho a zabezpeˇcen´eho uloˇziˇstˇe.
6. St´ınˇen´ı
Ve vˇsech ´utoc´ıch na samotn´y transpond´er mus´ı m´ıt ´utoˇcn´ık minim´alnˇe ˇcasovˇe omezen´y pˇr´ıstup k transpond´eru. Pokud nen´ı schopen nasb´ırat urˇcit´e mnoˇzstv´ı dat z komunikace s ˇcipem karty, tak ´utok nem˚uˇze prov´est.
Z tohoto d˚uvodu je velice ´uˇcinnou obranou prost´e elektromagnetick´e st´ınˇen´ı karty. S rozˇs´ıˇren´ım pas˚u s RFID ˇcipem nen´ı probl´em poˇr´ıdit takto st´ınˇen´e pouzdro na karty.
7. Zmˇena technologie
Pˇrechod na bezpeˇcnˇejˇs´ı technologii je logick´ym krokem k odstranˇen´ı zranitel-nosti.
Na stranˇe ˇcteˇcky a aplikaˇcn´ı logiky m˚uˇze b´yt pˇrechod pomˇernˇe bezbolestn´y, ponevadˇz existuj´ı ˇcteˇcky operuj´ıc´ı na v´ıce standardech a ve st´avaj´ıc´ı aplikaci je pak nutn´e pouze pˇridat obsluhu tˇechto poˇzadavk˚u.
Postupnˇe je pak moˇzn´e vymˇeˇnovat transpond´ery a migrovat kompletnˇe smˇerem k bezpeˇcnˇejˇs´ı technologii.
8. Zmˇena implicitn´ıch nastaven´ı
Nen´ı vhodn´e spol´ehat na implicitn´ı nastaven´ı od v´yrobce zaˇr´ızen´ı, protoˇze tato konfigurace m˚uˇze b´yt dostupn´a i ´utoˇcn´ıkovi (Thornton – Sanghera, 2011).
Nejlepˇs´ım ˇreˇsen´ım je zmˇenit veˇskerou konfiguraci pˇresnˇe na m´ıru dan´e aplikaci.
6 Z´ avˇ er
V t´eto pr´aci byly prozkoum´any dosud publikovan´e ´utoky na technologii Mifare Clas-sic a to zejm´ena ty c´ılen´e na samotn´y transpond´er.
Po proveden´ı anal´yzy byly pops´any hlavn´ı nedostatky v n´avrhu vedouc´ı ke zra-nitelnosti, bylo naznaˇceno moˇzn´e zneuˇzit´ı a na z´akladˇe z´ıskan´ych informac´ı byla navrˇzena metodika pro testov´an´ı transpond´er˚u.
V praktick´e ˇc´asti byl navrˇzen a vytvoˇren v jazyce Python s pouˇzit´ım knihovny Libnfc n´astroj pro testov´an´ı transpond´eru na dan´e nedostatky. Tato aplikace byla vyv´ıjena pro zaˇr´ızen´ı PN532 NFC/RFID controller breakout board, ale mˇelo by b´yt moˇzn´e jej pouˇz´ıt s libovolnou ˇcteˇckou, kter´a je kompatibiln´ı s knihovnou Libnfc.
Z d˚uvodu obt´ıˇzn´eho dodrˇzov´an´ı ˇcasov´ych interval˚u v bˇeˇzn´em operaˇcn´ım syst´emu by bylo vhodn´e nam´ısto knihovny Libnfc zaˇradit mezi osobn´ı poˇc´ıtaˇc a ˇcteˇcku jeˇstˇe mikrokontrol´er, kter´y by prov´adˇel ˇcasovˇe kritick´e operace. V souˇcasn´em stavu je napˇr´ıklad moˇzn´e dos´ahnout konstatn´ı hodnoty v´yzvy pˇrinejlepˇs´ım v 35 % pˇr´ıpad˚u a to m˚uˇze v´est k delˇs´ımu bˇehu testu, ponˇevadˇz mus´ı b´yt odesl´ano mnohem v´ıce poˇzadavk˚u.
V r´amci v´yvoje n´astroje byly implementov´any funkce pro bˇeˇznou komunikaci s transpond´erem (v´ybˇer, autentizace, ˇcten´ı a z´apis) a funkce pro samotn´e testov´an´ı zranitelnosti transpond´eru (entropie PRNG, implicitn´ı kl´ıˇce, vadn´e implementace).
Vˇsechny tyto funkce je moˇzn´e pouˇz´ıvat z grafick´eho uˇzivatelsk´eho rozhran´ı n´astroje.
Byly navrˇzeny metody pro odstranˇen´ı zranitelnosti, ale lze je jen obt´ıˇznˇe apliko-vat kv˚uli obt´ıˇzn´emu zachov´an´ı zpˇetn´e kompatibility a nezanedbateln´ym finanˇcn´ım n´aklad˚um (plat´ı zejm´ena pro nedostatky v samotn´e ˇsifrovac´ı funkci).
Z tohoto d˚uvodu byly nav´ıc doporuˇceny obecn´e z´asady pro pouˇzit´ı t´eto techno-logie tak, aby byla pˇr´ıpadn´a bezpeˇcnostn´ı rizika minimalizov´ana.
Literatura
Courtois, N. T. THE DARK SIDE OF SECURITY BY OBSCURITY
and Cloning MiFare Classic Rail and Building Passes, Anywhere, Anytime.
Insticc-Inst Syst Technologies Information Control & Communication, 2009.
WOS:000282088500052. ISBN 978-989-674-005-4.
Garcia, F. D. et al. Dismantling MIFARE Classic. In Jajodia, S. – Lopez, J.
(Ed.) Computer Security - Esoric 2008, Proceedings, 5283. Springer-Verlag Berlin, 2008. s. 97–114. ISBN 978-3-540-88312-8, WOS:000262462900007.
Garcia, F. D. et al. Wirelessly Pickpocketing a Mifare Classic Card. In Proceedings of the 2009 30th Ieee Symposium on Security and Privacy. Los Alamitos: Ieee Computer Soc, 2009. s. 3–15. ISBN 978-0-7695-3633-0, WOS:000273336900001.
ISO 14443-3. Identification cards – Contactless integrated circuit(s) cards – Proxi-mity cards - Part 3: Initialization and anticollision. ˇC. ISO 14443. ISO, Geneva, Switzerland, 2011.
Koning Gans, G. – Hoepman, J.-H. – Garcia, F. D. A Practical Attack on the MIFARE Classic. In Proceedings of the 8th IFIP WG 8.8/11.2 International Conference on Smart Card Research and Advanced Applications, CARDIS ’08, s.
267–282, Berlin, Heidelberg, 2008. Springer-Verlag. ISBN 978-3-540-85892-8.
Nohl, K. Cryptanalysis of crypto-1. Computer Science Department University of Virginia, White Paper. 2008.
Nohl, K. et al. Reverse-engineering a Cryptographic RFID Tag. In Proceedings of the 17th Conference on Security Symposium, SS’08, s. 185–193, Berkeley, CA, USA, 2008. USENIX Association.
NXP Semiconductors. MF1S503x: MIFARE Classic 1K - Mainstream contact-less smart card IC for fast and easy solution development. NXP Semiconductors, 3.1 edition, February 2011.
NXP Semiconductors. AN10833: MIFARE Type Identification Procedure. NXP Semiconductors, 3.5 edition, March 2014.
NXP Semiconductors. AN10927: MIFARE and handling of UIDs. NXP Semi-conductors, 3.1 edition, October .
Thornton, F. – Lanthem, C. RFID Security. Syngress, May 2006. ISBN 9780080489650.
Thornton, F. – Sanghera, P. How to Cheat at Deploying and Securing RFID.
Syngress, April 2011. ISBN 9780080556895.
A Obsah pˇriloˇzen´ eho CD
Na pˇriloˇzen´em CD je uloˇzen text pr´ace ve form´atu PDF. D´ale jsou v adres´aˇr´ıch obsaˇzeny:
• dist – pˇreloˇzen´a aktu´aln´ı verze ˇc´asti aplikace naps´an´e v jazyce C
• src c – zdrojov´e k´ody ˇc´asti aplikace naps´an´e v jazyce C
• src python – zdrojov´e k´ody ˇc´asti aplikace naps´an´e v jazyce Python
• libs – pouˇzit´e knihovny, kter´e nejsou dostupn´e z bal´ıˇckovac´ıho syst´emu (Libnfc 1.7.0, crapto)
B Postup pˇreloˇzen´ı Libnfc
Pro pˇreloˇzen´ı knihovny Libnfc je nutn´e prov´est n´asleduj´ıc´ı kroky:
1. Rozbalen´ı zdrojov´ych k´od˚u knihovny tar -xvzf libnfc-1.7.0.tar.gz
cd libnfc-1.7.0
2. Konfigurace Libnfc pro PN532 a UART
./configure –with-drivers=pn532 uart –enable-serial-autoprobe 3. Pˇreklad a instalace
make clean make
make install
Po proveden´ı pˇredchoz´ıch krok˚u lze funkˇcnost ovˇeˇrit pomoc´ı pˇr´ıkazu nfc-poll s opr´avnˇen´ımi superuˇzivatele (root).