• No results found

Zranitelnost technologie Mifare Classic

N/A
N/A
Protected

Academic year: 2022

Share "Zranitelnost technologie Mifare Classic"

Copied!
63
0
0

Loading.... (view fulltext now)

Full text

(1)

Zranitelnost technologie Mifare Classic

Diplomov´ a pr´ ace

Studijn´ı program: N2612 – Elektrotechnika a informatika Studijn´ı obor: 1802T007 – Informaˇcn´ı technologie Autor pr´ace: Bc. Jan Petˇrvalsk´y

Vedouc´ı pr´ace: doc. Ing. Milan Kol´aˇr, CSc.

(2)

Mifare Classic Technology Vulnerabilities

Diploma thesis

Study programme: N2612 – Electrotechnology and informatics Study branch: 1802T007 – Information technology

Author: Bc. Jan Petˇrvalsk´y Supervisor: doc. Ing. Milan Kol´aˇr, CSc.

(3)
(4)
(5)

Prohl´ aˇsen´ı

Byl jsem sezn´amen s t´ım, ˇze na mou diplomovou pr´aci se plnˇe vztahuje z´akon ˇc. 121/2000 Sb., o pr´avu autorsk´em, zejm´ena § 60 – ˇskoln´ı d´ılo.

Beru na vˇedom´ı, ˇze Technick´a univerzita v Liberci (TUL) nezasahuje do m´ych au- torsk´ych pr´av uˇzit´ım m´e diplomov´e pr´ace pro vnitˇrn´ı potˇrebu TUL.

Uˇziji-li diplomovou pr´aci nebo poskytnu-li licenci k jej´ımu vyuˇzit´ı, jsem si vˇedom povinnosti informovat o t´eto skuteˇcnosti TUL; v tomto pˇr´ıpadˇe m´a TUL pr´avo ode mne poˇzadovat ´uhradu n´aklad˚u, kter´e vynaloˇzila na vytvoˇren´ı d´ıla, aˇz do jejich skuteˇcn´e v´yˇse.

Diplomovou pr´aci jsem vypracoval samostatnˇe s pouˇzit´ım uveden´e literatury a na z´akladˇe konzultac´ı s vedouc´ım m´e diplomov´e pr´ace a konzultantem.

Souˇcasnˇe ˇcestnˇe prohlaˇsuji, ˇze tiˇstˇen´a verze pr´ace se shoduje s elektronickou verz´ı, vloˇzenou do IS STAG.

Datum:

Podpis:

(6)

Abstrakt

Technologie pro bezdr´atovou identifikaci Mifare Classic m´a i pˇres zn´am´e bezpeˇcnostn´ı nedostatky st´ale v´yznamn´y trˇzn´ı pod´ıl. Na trhu se vyskytuj´ı starˇs´ı transpond´ery a tak´e transpond´ery od r˚uzn´ych v´yrobc˚u, kter´e mohou m´ıt r˚uznou

´

uroveˇn zranitelnosti.

Tato pr´ace se zamˇeˇruje na anal´yzu zn´am´ych nedostatk˚u t´eto technologie, identifikaci hlavn´ıch m´ıst zranitelnosti a n´asledn´ym n´avrhem metodiky pro testov´an´ı zranitel- nosti transpond´er˚u.

Z´ıskan´e poznatky byly vyuˇzity pˇri n´avrhu a implementaci n´astroje pro testov´an´ı zranitelnosti, kter´y je postaven nad knihovnou Libnfc.

V posledn´ı ˇc´asti byly navrˇzeny zmˇeny slouˇz´ıc´ı k odstranˇen´ı zranitelnosti. Prakticky by vˇsak bylo obt´ıˇzn´e tyto zmˇeny snadno aplikovat, tak byla jeˇstˇe nav´ıc navrˇzena me- todika pro vyuˇzit´ı technologie Mifare Classic s d˚urazem na minimalizaci pˇr´ıpadn´ych bezpeˇcnostn´ıch rizik.

Kl´ıˇcov´a slova:

Mifare Classic, Crypto1, kryptografie, bezpeˇcnost, testov´an´ı, Libnfc

Abstract

Technology for radio identification Mifare Classic has even through well known secu- rity issues still dominant position on market. It is possible to purchase old trans- ponders and transponders from various manufacturers with different level of vulne- rability.

This work focuses on analysis of known security issues of this technology, identifies main vulnerability spots and proposes testing methodics.

Acquired findings were used to design and implement vulnerability testing tool based on Libnfc library.

There were also proposed changes to remove vulnerability. It is practically very difficult to apply these changes, so there was also proposed methodics for using Mifare Classic with focus to minimize security risks.

Key words:

Mifare Classic, Crypto1, cryptography, security, testing, Libnfc

(7)

Podˇ ekov´ an´ı

Dˇekuji Ing. Milanu Kol´aˇrovi, CSc. za cenn´e podnˇety, odborn´e konzultace a pomoc pˇri ´upravˇe form´aln´ı str´anky t´eto pr´ace.

(8)

Obsah

Seznam obr´azk˚u . . . 9

Seznam tabulek . . . 10

Seznam zdrojov´ych k´od˚u . . . 11

Seznam zkratek . . . 12

1 Uvod do problematiky´ 13 2 Mifare Classic 15 2.1 Antikolizn´ı protokol . . . 15

2.2 Organizace pamˇeti . . . 16

2.2.1 Blok v´yrobce . . . 16

2.2.2 Datov´y blok . . . 17

2.2.3 Konfiguraˇcn´ı blok . . . 18

2.3 Ochrana pamˇeti . . . 18

2.4 Pˇr´ıkazy aplikaˇcn´ıho protokolu . . . 19

2.5 Zabezpeˇcen´ı pˇrenosu . . . 19

3 Crypto1 21 3.1 Gener´ator pseudon´ahodn´ych ˇc´ısel . . . 21

3.2 Proudov´a ˇsifra . . . 22

3.3 Autentizaˇcn´ı protokol . . . 25

3.4 Zranitelnosti . . . 26

3.4.1 N´ızk´a entropie gener´atoru pseudon´ahodn´ych ˇc´ısel . . . 26

3.4.2 Kontrola integrity dat . . . 30

3.4.3 V´ypoˇcet proudu kl´ıˇce pouze z lich´ych bit˚u . . . 34

3.4.4 Nejsou pouˇzit´e lev´e bity pro generov´an´ı proudu kl´ıˇce . . . 35

3.4.5 Mal´a variabilita proudu kl´ıˇce . . . 36

3.4.6 Pouˇzit´ı implicitn´ıch kl´ıˇc˚u . . . 37

4 N´avrh n´astroje pro testov´an´ı 39 4.1 Pouˇzit´e knihovny a zaˇr´ızen´ı . . . 39

4.1.1 PN532 NFC/RFID controller breakout board . . . 39

4.1.2 Libnfc 1.7.0 . . . 39

4.1.3 Crapto1 . . . 40

4.1.4 wxPython a matplotlib . . . 40

4.2 Funkce . . . 40

(9)

4.3 N´ızko´urovˇnov´e funkce a wrapper pro Python . . . 41

4.3.1 NfcContext . . . 41

4.3.2 NfcDevice . . . 42

4.3.3 N´ızko´urovˇnov´e funkce . . . 42

4.3.4 Ostatn´ı ˇc´asti . . . 42

4.4 Tˇr´ıdy pro pr´aci s NFC zaˇr´ızen´ım . . . 44

4.4.1 MifareBlockStream . . . 44

4.4.2 MifareBlockReader . . . 45

4.4.3 MifareBlockWriter . . . 46

4.4.4 MifareException . . . 46

4.5 Tˇr´ıdy pro testov´an´ı zranitelnosti . . . 47

4.5.1 BaseTest . . . 47

4.5.2 PrngDetermTest . . . 47

4.5.3 DefaultKeysTest . . . 47

4.5.4 NackProbTest . . . 49

4.6 Datov´y model transpond´eru . . . 50

4.6.1 MifareModel . . . 51

4.6.2 SectorModel . . . 51

4.6.3 BlockModel . . . 51

4.7 Prezentaˇcn´ı vrstva . . . 52

4.7.1 Hlavn´ı okno . . . 52

4.7.2 Okno pro testov´an´ı entropie PRNG . . . 54

4.7.3 Dialogy . . . 54

5 Doporuˇcen´ı pro zabezpeˇcen´ı 55

6 Z´avˇer 58

Pˇr´ılohy 61

A Obsah pˇriloˇzen´eho CD 61

B Postup pˇreloˇzen´ı Libnfc 62

(10)

Seznam obr´ azk˚ u

1.1 Typick´y pˇr´ıpad pouˇzit´ı RFID . . . 14

2.1 Organizace pamˇeti . . . 17

2.2 Konfiguraˇcn´ı blok . . . 18

2.3 Konfigurace pˇr´ıstupu . . . 19

2.4 V´ypoˇcet parity a jej´ı ˇsifrov´an´ı . . . 20

3.1 Gener´ator pseudon´ahodn´ych ˇc´ısel . . . 22

3.2 Sifra Crypto1 . . . 22ˇ 3.3 Inicializace ˇsifry Crypto1 . . . 24

3.4 Cetnosti hodnot bez virtualizace . . . 27ˇ 3.5 Cetnosti hodnot s virtualizac´ı . . . 28ˇ 3.6 Poruˇsen´ı one-time pad pˇri ˇsifrov´an´ı paritn´ıho bitu . . . 31

3.7 Upraven´e ˇsifrovac´ı sch´ema . . . 33

4.1 Tˇr´ıdy pro manipulaci s pamˇet´ı transpond´eru . . . 45

4.2 Datov´y model . . . 50

4.3 Hlavn´ı okno s naˇcten´ymi daty . . . 52

4.4 Okno pro testov´an´ı entropie PRNG . . . 54

5.1 Autorizace uˇzivatele pomoc´ı RFID karty . . . 56

(11)

Seznam tabulek

2.1 Pr˚ubˇeh antikolizn´ıho protokolu . . . 16

2.2 Pˇr´ıkazy Mifare Classic . . . 19

3.1 Pr˚ubˇeh autentizaˇcn´ıho protokolu . . . 26

3.2 Seznam implicitn´ıch kl´ıˇc˚u . . . 38

4.1 Chybov´e k´ody . . . 46

(12)

Seznam zdrojov´ ych k´ od˚ u

3.1 Z´ısk´an´ı hodnoty s nejvyˇsˇs´ı ˇcetnost´ı v´yskytu . . . 29

3.2 Detekce slab´ych implementac´ı . . . 32

4.1 Wrapper pro nfc device . . . 43

4.2 Funkce realizuj´ıc´ı antikolizn´ı protokol . . . 48

4.3 Kontrola form´atu konfiguraˇcn´ıho bloku . . . 51

4.4 Pˇred´av´an´ı hodnot z pracovn´ıch vl´aken pomoc´ı ud´alost´ı . . . 53

(13)

Seznam zkratek

RFID Radio Frequency Identification . . . 13

DOS Denial of Service . . . 13

REQA Request Command, Type A . . . 15

ATQA Answer To Request . . . 15

UID Unique IDentifier . . . 15

EEPROM Electrically Erasable Programmable Read-Only Memory16 NUID Non-Unique IDentifier . . . 17

CRC Cyclic Redundancy Check . . . 20

PRNG Pseudorandom Number Generator . . . 21

LFSR Linear Feedback Shift Register . . . 24

FPGA Field Programmable Gate Array . . . 29

SDK Software Development Kit . . . 33

I2C Inter-Integrated Circuit . . . 39

SPI Serial Peripheral Interface . . . 39

NFC Near Field Communication. . . .42

SAK Select Acknowledge, Type A . . . 50

(14)

1 Uvod do problematiky ´

Technologie RFID1 se pomalu pˇresunuly z pr˚umyslov´e sf´ery do kaˇzdodenn´ıho ˇzivota bˇeˇzn´eho ˇclovˇeka, aniˇz by si to uvˇedomoval. V souˇcasn´e dobˇe jsou r˚uzn´e standardy RFID pˇrenosu vyuˇz´ıv´any zejm´ena k identifikaci osob (napˇr´ıklad pˇri pˇr´ıstupu do budov), pro ´uˇcely ´uˇctov´an´ı pˇrepravy a tak´e drobn´e bezhotovostn´ı platby.

Pouˇzit´ı RFID karet je jednoduch´e a rychl´e, jelikoˇz uˇzivatel nemus´ı zn´at ˇz´adn´e pˇr´ıstupov´e k´ody ˇci vkl´adat kartu do ˇcteˇcky, jako je tomu u tradiˇcn´ıch karet s mag- netick´ymi prouˇzky. ˇCten´ı je bezkontaktn´ı a staˇc´ı tedy, kdyˇz uˇzivatel pˇriloˇz´ı kartu do bl´ızkosti elektromagnetick´eho pole ˇcteˇcky.

Z d˚uvodu velice n´ızk´e ceny m´a i pˇres zn´am´e bezpeˇcnostn´ı nedostatky vysok´y trˇzn´ı pod´ıl standard Mifare Classic.

Na obr´azku 1.1 jsou zobrazeny prvky pˇri typick´em vyuˇzit´ı RFID. Uˇzivatel pro- kazuje svoj´ı identitu pomoc´ı RFID karty, kterou pˇrikl´ad´a ke ˇcteˇcce. ˇCteˇcka z karty z´ısk´a identifik´ator uˇzivatele a pˇred´a jej do dalˇs´ı vrstvy aplikace. N´aslednˇe je pro- vedena autentizace, napˇr´ıklad ovˇeˇren´ım pomoc´ı dotazu do datab´aze s dan´ym iden- tifik´atorem uˇzivatele. V kladn´em pˇr´ıpadˇe je uˇzivatel autorizov´an a jsou napˇr´ıklad otevˇreny vstupn´ı dveˇre, nebo vykon´ana jin´a ˇcinnost.

Samozˇrejmˇe bezdr´atov´a komunikace m˚uˇze b´yt pˇrij´ım´ana libovoln´ym spr´avnˇe na- staven´ym zaˇr´ızen´ım v dosahu a do komunikace m˚uˇze b´yt tak´e zasahov´ano z nelegi- timn´ıho zaˇr´ızen´ı. Obecnˇe mohou b´yt na bezdr´atovˇe komunikuj´ıc´ı zaˇr´ızen´ı prov´adˇeny n´asledujc´ı ´utoky:

1. Odposlech

2. Opakov´an´ı (replay attack)

3. Ruˇsen´ı komunikace, pˇr´ıpadnˇe jin´a forma DOS2 ´utoku 4. Neopr´avnˇen´e ˇcten´ı a z´apis

1Radio Frequency Identification

2Denial of Service

(15)

Reader

Application Application

Antenna

Transponder

Antenna

RFID Middleware

Energy Timing Data

Obr´azek 1.1: Typick´y pˇr´ıpad pouˇzit´ı RFID

K zamezen´ı prost´eho odposlouch´av´an´ı komunikace ´utoˇcn´ıkem je standard Mi- fare Classic vybaven proudovou ˇsifrou Crypto-1. Veˇsker´a komunikace mezi trans- pond´erem a legitimn´ı ˇcteˇckou je ˇsifrovan´a a ´utoˇcn´ık ji bez znalosti kl´ıˇce nedok´aˇze deˇsifrovat. Tato forma obrany vˇsak nen´ı ´uˇcinn´a, pokud v dan´e aplikaci je uˇzivatel rozpozn´av´an pouze na z´akladˇe identifik´atoru karty, kter´y je pˇren´aˇsen v ˇcist´em textu.

Pˇri prov´adˇen´ı opakovac´ıho ´utoku (replay attack) ´utoˇcn´ık pˇrehr´av´a komunikaci, kterou dˇr´ıve z´ıskal odposlechem komunikace mezi transpond´erem a legitimn´ıˇcteˇckou.

Utoˇcn´ık dokonce ani nemus´ı b´´ yt schopen z´ıskat obsah komunikace, ponˇevadˇz mu staˇc´ı zn´at pouze v´yznam. Obrana je zde ˇreˇsena pomoc´ı autentizace bloku ˇc´ıslem z gener´atoru pseudon´ahodn´ych ˇc´ısel. ˇSifrovan´a komunikace pak vypad´a pokaˇzd´e ji- nak3.

Ponˇevadˇz by obrana proti z´amˇern´emu ruˇsen´ı komunikace byla obt´ıˇzn´a, a tedy i n´akladn´a, tak tak´e nijak nen´ı ˇreˇsena. Proti DOS ´utok˚um, jako je napˇr´ıklad pouˇzit´ı velk´eho upraven´ych mnoˇzstv´ı karet, je moˇzn´e se br´anit na ´urovni konkr´etn´ı aplikace.

Proti neopr´avnˇen´emu ˇcten´ı (identifikace osob) ˇci zmˇenˇe (zv´yˇsen´ı z˚ustatku, sn´ıˇzen´ı ceny zboˇz´ı) je technologie Mifare Classic chr´anˇena v´yˇse zm´ınˇen´ym ˇsifrov´an´ım. Bez znalosti kl´ıˇce by nemˇelo j´ıt s pamˇet´ı jakkoliv manipulovat.

Na trhu se objevuj´ı r˚uzn´e implementace transpond´er˚u tohoto standardu, kter´e maj´ı r˚uznou ´uroveˇn zranitelnosti. Tato pr´ace se zab´yv´a anal´yzou bezpeˇcnostn´ıch nedostatk˚u a n´avrhem n´astroje, kter´y by umoˇzˇnoval v r´amci moˇznost´ı technologie bezpeˇcnost testovat.

3aleˇz´ı na rozsahu gener´atoru

(16)

2 Mifare Classic

Mifare Classic je aplikaˇcn´ı protokol postaven´y nad transportn´ı vrstvou realizova- nou RFID standardem ISO 14443. Mifare Classic popisuje organizaci pamˇeti trans- pond´eru, komunikaˇcn´ı protokol na aplikaˇcn´ı vrstvˇe a ˇsifrov´an´ı pˇrenosu.

2.1 Antikolizn´ı protokol

Antikolizn´ı protokol slouˇz´ı k v´ybˇeru jednoho z transpond´er˚u, kter´e jsou v dosahu vys´ılaˇce.

Po vloˇzen´ı transpond´eru do elektromagnetick´eho pole vys´ılaˇce transpond´er ˇcek´a na v´yzvu k zah´ajen´ı sv´eho ohl´aˇsen´ı ˇcteˇcce. D´ıky tomuto pˇr´ıstupu se nem˚uˇze st´at, ˇze zaˇr´ızen´ı vys´ılala souˇcasnˇe.

Cteˇcka v pravideln´ˇ ych intervalech odes´ıl´a 7bitov´y pˇr´ıkaz pro identifikaci REQA1. Po pˇr´ıjmu vˇsechny transpond´ery v dosahu najednou odeˇslou odpovˇed’ ATQA2 a pˇrestanou vys´ılat aˇz do n´asleduj´ıc´ıho vyzv´an´ı.

T´ım zaˇc´ın´a antikolizn´ı smyˇcka, jej´ıˇz smyslem je z´ıskat identifik´atory UID3 vˇsech dostupn´ych zaˇr´ızen´ı. Kroky antikolizn´ı smyˇcky jsou n´asleduj´ıc´ı:

1. ˇCteˇcka odeˇsle pˇr´ıkaz SEL (Anti-collision CL1) 2. Vˇsechny dostupn´e transpond´ery odeˇslou sv´e UID 3. ˇCteˇcka odeˇsle pˇr´ıkaz SEL UID (Select CL1)

4. Vybran´y transpond´er odeˇsle identifik´ator standardu.

V pˇr´ıpadˇe, ˇze bylo v dosahu v´ıce zaˇr´ızen´ı, tak mohlo v bodˇe 2 doj´ıt ke kolizi.

Kolize je detekov´ana jako vysok´a ´uroveˇn po celou dobu hodinov´eho taktu. ˇCteˇcka zvol´ı hodnotu prvn´ıho bitu – prefix UID a odeˇsle znovu poˇzadavek na identifikaci,

1Request Command, Type A

2Answer To Request

3Unique IDentifier

(17)

nav´ıc pˇripoj´ı prefix. Ted’ vˇsak odpov´ıdaj´ı jiˇz jen zaˇr´ızen´ı s dan´ym prefixem. Tento postup opakuje, dokud ˇcteˇcka nez´ısk´a UID vˇsech zaˇr´ızen´ı v dosahu.

Vytv´aˇren´ı modulace sign´alu a probl´em s kolizemi ˇreˇs´ı automaticky ovladaˇc v j´adru a pouˇzit´y integrovan´y obvod PN532.

V´ıce detail˚u ohlednˇe modulace, k´odov´an´ı a ˇreˇsen´ı koliz´ı lze nal´ezt v normˇe (ISO 14443-3) a dokumentaci k Mifare Classic od NXP Semiconductors (NXP Semicon- ductors, 2014).

Ve vytvoˇren´e aplikaci je moˇzn´e vyuˇz´ıt antikolizn´ı protokol ˇr´ızen´y samotn´ym ovladaˇcem a knihovnou Libnfc, nebo vyuˇz´ıt ˇcip PN532 pouze pro generov´an´ı modu- lace a samotn´y antikolizn´ı protokol prov´est ruˇcnˇe. To m˚uˇze b´yt vhodn´e napˇr´ıklad, pokud je nutn´e pr˚ubˇeh ˇr´ıdit manu´alnˇe nebo je potˇreba m´ıt detailn´ı v´ypisy (pˇri au- tomatick´em pr˚ubˇehu pomoci hardwaru nen´ı moˇzn´e detaily z´ıskat).

V´ystup pˇri softwarov´em ˇr´ızen´ı antikolizn´ıho protokolu je uveden v tabulce 2.1.

Tabulka 2.1: Pr˚ubˇeh antikolizn´ıho protokolu

Akce Hex V´yznam

Sent bits: 26 (7 bits) Request type A

Received bits: 04 00 Response type A

Sent bytes: 93 20 Select All

Received bytes: 7d e7 c1 78 23 UID

Sent bytes: 93 70 7d e7 c1 78 23 6b 2e Select UID

Received bytes: 08 b6 dd Mifare Classic 1k

2.2 Organizace pamˇ eti

Datov´a pamˇet’ je u karet technologie Mifare Classic realizov´ana pamˇet´ı typu EEPROM4 o velikosti 1 kB. Pamˇet’ (Obr´azek 2.1) je rozdˇelena do ˇsestn´acti ˇctyˇrblokov´ych sektor˚u. Kaˇzd´y sektor se skl´ad´a ze ˇctyˇr blok˚u, do kter´ych lze uloˇzit aˇz 16 bajt˚u aplikaˇcn´ıch dat.

Prvn´ı sektor prvn´ıho bloku je rezervov´an v´yrobcem pro uloˇzen´ı provozn´ıch in- formac´ı.

2.2.1 Blok v´ yrobce

V sektoru 0 se v bloku 0 nach´az´ı prvn´ı datov´y blok. Tento blok je rezervov´an v´yrobcem pro uloˇzen´ı informac´ı o kartˇe, z nichˇz nejd˚uleˇzitˇejˇs´ı informac´ı je ˇc´ıslo

4Electrically Erasable Programmable Read-Only Memory

(18)

UID, BCC, Manufacturer data Data block Data block Key A, Access conditions, Key B

Data block Data block Data block Key A, Access conditions, Key B

Data block Key A, Access conditions, Key B

Sector trailer

0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0xf0 0xff

Sector 0x00 4 blocks 64 bytes Sector 0x01 4 blocks 64 bytes

Obr´azek 2.1: Organizace pamˇeti

NUID5 uloˇzen´e na prvn´ıch ˇctyˇrech bajtech.

Tento identifik´ator je pouˇzit pro rozliˇsen´ı jednotliv´ych zaˇr´ızen´ı pˇri prov´adˇen´ı antikolizn´ıho protokolu. Podle dokumentace (NXP Semiconductors, 2011) nemus´ı b´yt tento identifik´ator nutnˇe unik´atn´ı.

V´yrobce pˇri produkˇcn´ım testu tento blok naprogramoval a jiˇz nen´ı moˇzn´e jeho obsah mˇenit nehledˇe na nastaven´ı pˇr´ıstupov´ych bit˚u (NXP Semiconductors, 2011).

2.2.2 Datov´ y blok

Pro uloˇzen´ı aplikaˇcn´ıch dat je moˇzn´e vyuˇz´ıvat datov´e bloky. V kaˇzd´em boku je k dispozici 16 bajt˚u, kter´e jsou ve v´ychoz´ı konfiguraci vyuˇziteln´e vˇsechny.

Datov´y blok m˚uˇze b´yt nakonfigurov´an do ˇctyˇrbajtov´eho reˇzimu naz´yvan´eho

”va- lue block“, pro tuto pr´aci vˇsak nen´ı tato vlastnost pˇr´ıliˇs d˚uleˇzit´a. V´ıce informac´ı lze nal´ezt v (NXP Semiconductors, 2011, s. 9).

5Non-Unique IDentifier

(19)

2.2.3 Konfiguraˇ cn´ı blok

Kaˇzd´y ze ˇsestn´acti sektor˚u obsahuje jeden konfiguraˇcn´ı blok naz´yvan´y sector trailer.

V tomto bloku jsou uloˇzeny ˇsifrovac´ı kl´ıˇce (Key A a Key B) a pˇr´ıstupov´a pr´ava k jednotliv´ym blok˚um dan´eho sektoru. Konfiguraˇcn´ı blok je zobrazen na obr´azku 2.2.

Key A

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Key B Access Bits

Obr´azek 2.2: Konfiguraˇcn´ı blok

Pokud aplikace nevyuˇz´ıv´a kl´ıˇc B, tak je moˇzn´e na pˇr´ısluˇsn´e pamˇet’ov´e m´ısto po spr´avn´em nastaven´ı pˇr´ıstupov´ych pr´av uloˇzit aplikaˇcn´ı data. Data mohou b´yt uloˇzena tak´e na dev´at´em bajtu a podle (NXP Semiconductors, 2011) pro nˇe plat´ı stejn´a opr´avnˇen´ı jako pro bajty ˇc´ıslo 6, 7 a 8. Je nutn´e, aby byl vˇzdy dodrˇzen form´at konfiguraˇcn´ıch bit˚u pro nastaven´ı pˇr´ıstupov´ych pr´av.

2.3 Ochrana pamˇ eti

ˇSifrovac´ı kl´ıˇce A a B slouˇz´ı pouze k ˇsifrov´an´ı pˇrenosu, samotn´a data jsou v pamˇeti uloˇzena v podobˇe ˇcist´eho textu. Standard Mifare Classic umoˇzˇnuje pomoc´ı tˇr´ı bit˚u nastavit n´asleduj´ıc´ı opr´avnˇen´ı:

• ˇCten´ı kl´ıˇcem X

• Z´apis kl´ıˇcem X

• ˇCten´ı obˇema kl´ıˇci

• Z´apis obˇema kl´ıˇci kde X je A, nebo B.

Na obr´azku 2.3 jsou zn´azornˇeny jednotliv´e bity konfiguraˇcn´ıho registru. Pro kaˇzd´y bit Ci,j plat´ı, ˇze i je pozice konfiguraˇcn´ıho bitu a j znaˇc´ı pˇr´ısluˇsnost k bloku.

Jednotliv´e bity jsou zde uloˇzeny v norm´aln´ı podobˇe jako Ci,j a v invertovan´e podobˇe Ci,j. Podle citeMF1S503x, 11 pˇri kaˇzd´em pˇr´ıstupu do pamˇeti intern´ı logika ovˇeˇruje strukturu. Pokud detekuje poruˇsen´ı form´atu, tak nevratnˇe zablokuje cel´y sektor.

(20)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Key A Access Bits Key B (optional)

C23 C22 C21 C20 C13 C12 C11 C10

C13 C12 C11 C11 C33 C32 C31 C30

C33 C32 C31 C30 C23 C22 C21 C20

User data Byte number

Description

Bit 7 Byte 6 Byte 7

Byte 8

Byte 9

Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

Obr´azek 2.3: Konfigurace pˇr´ıstupu

2.4 Pˇr´ıkazy aplikaˇ cn´ıho protokolu

Pˇr´ıkazy (uveden´e v tabulce 2.2) aplikaˇcn´ıho protokolu byly z´ısk´any pomoc´ı re- verzn´ıho inˇzen´yrstv´ı a publikov´any v pr´aci (Nohl et al., 2008). V souˇcasn´e dobˇe je moˇzn´e z´ıskat detaln´ı popis vˇsech pˇr´ıkaz˚u i s pouˇzit´ym ˇcasov´an´ım z ofici´aln´ı do- kumentace (NXP Semiconductors, 2011).

Tabulka 2.2: Pˇr´ıkazy Mifare Classic Pˇr´ıkaz Hex Popis

AUTH A 60 xx CRC Autentizace bloku xx kl´ıˇcem B AUTH B 61 xx CRC Autentizace bloku xx kl´ıˇcem B READ 30 xx CRC Cten´ı bloku xxˇ

WRITE A0 xx CRC Z´apis bloku dat do bloku xx HALT 50 00 CRC Vypnut´ı transpond´eru

ACK A Potvrzeno

NACK 4 Zam´ıtnuto

NACK 5 Zam´ıtnuto (chyba pˇrenosu)

2.5 Zabezpeˇ cen´ı pˇrenosu

Norma ISO 14443A pˇredepisuje, ˇze za kaˇzd´ym datov´ym bajtem mus´ı n´asledovat jeden bit lich´e parity. Pokud komunikace jiˇz prob´ıh´a ˇsifrovanˇe, tak je paritn´ı bit zaˇsifrov´an stejn´ym bitem proudu kl´ıˇce jako n´asleduj´ıc´ı datov´y bit. V tomto form´atu

(21)

jsou data pˇren´aˇsena nejen pˇri bˇeˇzn´e komunikaci, ale tak´e pˇri prov´adˇen´ı auten- tizaˇcn´ımho protokolu.

Na obr´azku 2.4 je sch´ematicky zobrazen v´ypoˇcet hodnoty paritn´ıho bitu a jeho ˇsifrov´an´ı v druh´em kroku autentizaˇcn´ıho protokolu.

Na aplikaˇcn´ı vrstvˇe je pak dalˇs´ı zabezpeˇcen´ı spr´avnosti pˇrenosu zajiˇstˇeno pomoc´ı 16bitov´eho CRC6, kter´e vˇsak nemus´ı b´yt nutnˇe pˇrid´av´ano za kaˇzd´y blok dat.

Program´ator koncov´e aplikace nemus´ı tato zabezpeˇcen´ı pˇrenosu manu´alnˇe ˇreˇsit v programu, pokud to nen´ı vyˇzadov´ano, ponˇevadˇz o generov´an´ı a kontrolu spr´avnosti paritn´ıch bit˚u se star´a s´am integrovan´y obvod ve ˇcteˇcce. Kontroln´ı souˇcet CRC pak m˚uˇze b´yt takt´eˇz generov´an ˇcipem.

{nR,16 … nR,23} {p2} {nR,8 … nR,15} {p1}

{nR,0 … nR,7} {p0} {nR,24 … nR,31} {p3}

nR,16 … nR,23 p2

nR,8 … nR,15 p1

nR,0 … nR,7 p0 nR,24 … nR,31 p3

1 1 1 1

nT,16 … nT,23 p2

nT,8 … nT,15 p1

nT,0 … nT,7 p0 nT,24 … nT,31 p3

b32 … b39 b40 … b47 b48 … b55 b56 … b63

nT

nR

{nR}

ks1

Obr´azek 2.4: V´ypoˇcet parity a jej´ı ˇsifrov´an´ı

6Cyclic Redundancy Check

(22)

3 Crypto1

3.1 Gener´ ator pseudon´ ahodn´ ych ˇ c´ısel

Pˇri autentizaci blok˚u Mifare Classic pouˇz´ıv´a protokol zaloˇzen´y na challenge-response.

Kaˇzd´a strana tedy mus´ı m´ıt moˇznost vygenerovat 32bitovou autentizaˇcn´ı hodnotu nonce oznaˇcovanou jako nT resp. nR.

Z bezpeˇcnostn´ıch d˚uvod˚u je nutn´e, aby tato hodnota byla n´ahodn´a, proto na obou komunikuj´ıc´ıch zaˇr´ızen´ıch mus´ı b´yt pˇr´ıtomen mechanismus ke generov´an´ı n´ahodn´ych resp. psudon´ahodn´ych ˇc´ısel . Gener´ator pouˇzit´y v zaˇr´ızen´ıch standardu Mifare Clas- sic m˚uˇze b´yt pops´an pomoc´ı generuj´ıc´ıho polynomu G(x) = x16+ x14+ x13+ x11+ 1.

Definice 1 Funkce zpˇetn´e vazby gener´atoru L : F232 → F2 je definov´ana jako L(x0, ..., x31) = x16⊕ x18⊕ x19⊕ x21

Definice 2 Funkce F232 → F232 pro v´ypoˇcet odpovˇedi pˇri autentizaci je definov´ana jako

suc(x0, ..., x31) = (x1, ..., x31, L(x0, ..., x31)) sucn(x0, ..., x31) = sucn−1(suc(x0, ..., x31))

Definice 3 Hodnota je platnou hodnotou pro autentizaci tehdy a jen tehdy, kdyˇz

∀k ∈ {0, 1, ..., 15} : nk⊕ nk+2⊕ nk+3⊕ nk+5⊕ nk+16= 0

V samotn´em ˇcipu je tento PRNG1 implementov´an pomoc´ı posuvn´eho registru (Obr´azek 3.1) s line´arn´ı zpˇetnou vazbou (Definice 1).

V r´amci autentizaˇcn´ıho protokolu jsou poˇc´ıt´any odpovˇedi podle definice 2.

Podle (Garcia et al., 2008) z´avis´ı pˇri komunikaci okamˇzik generov´an´ı nov´e hod- noty na stranˇe, kde je gener´ator pouˇzit. V pˇr´ıpadˇe ˇcteˇcky je nov´a hodnota gene- rov´ana aˇz pˇri poˇzadavku na nov´e n´ahodn´e ˇc´ıslo, oproti tomu transpond´er vytv´aˇr´ı novou hodnotu s kaˇzdou n´abˇeˇznou hranou hodinov´eho sign´alu.

D´ale je d˚uleˇzit´e zm´ınit, ˇze po restartu zaˇr´ızen´ı gener´ator vytv´aˇr´ı pokaˇzd´e stejnou sekvenci pseudon´ahodn´ych hodnot.

1Pseudorandom Number Generator

(23)

LFSR

16 18 19 21

32 bit value

Obr´azek 3.1: Gener´ator pseudon´ahodn´ych ˇc´ısel

3.2 Proudov´ a ˇsifra

Pro ˇsifrov´an´ı komunikace v Mifare Classic je pouˇzita propriet´arn´ı ˇsifra Crypto1 (Obr´azek 3.2).

Ofici´aln´ı implementace t´eto ˇsifry nebyla nikdy v´yrobcem zveˇrejnˇena a je k dis- pozici pouze popis z´ıskan´y pomoc´ı reverzn´ıho inˇzen´yrstv´ı v prac´ıch (Garcia et al., 2008) a (Nohl et al., 2008).

ˇSifra Crypto1 je velice jednoduch´a proudov´a ˇsifra tvoˇren´a registrem s line´arn´ı zpˇetnou vazbou a v´ystupn´ımi filtrov´ymi funkcemi.

LFSR

input

0 5 9 10 12 14 15 17 19 24 25 27 29 35 39 41 42 43

39

37 41 43 45 47

21 23 25 27 29 31 33 35 9 11 13 15 17 19

fa fb fb fa fb

fc

keystream plaintext

ciphertext

Obr´azek 3.2: ˇSifra Crypto1

Pro odvozen´ı n´asleduj´ıc´ıho stavu posuvn´eho registru je pouˇzit generuj´ıc´ı polynom G(x) = x48+ x43+ x39+ x38+ x36+ x34+ x33+ x31+ x29+ x24+ x23+ x21+ x19+ x13+ x9+ x7+ x6+ x5+ 1.

(24)

Definice 4 Funkce zpˇetn´e vazby L : F248→ F2 je definov´ana jako

L(x0, x1, x47) = x0⊕ x5⊕ x9⊕ x10⊕ x12⊕ x14⊕ x15⊕ x17⊕ x19⊕ x24⊕ x25⊕ x27⊕ x29⊕ x35⊕ x39⊕ x41⊕ x42⊕ x43

Definice 5 V´ystupn´ı neline´arn´ı funkce f : F248→ F2 je definov´ana pˇredpisem f (x0, x1, ..., x47) = fc(

fa(x9, x11, x13, x15), fb(x17, x19, x21, x23), fb(x25, x27, x29, x31), fa(x33, x35, x37, x39), fb(x41, x43, x45, x47))

Definice 6 Filtrov´e funkce fa, fb a fc jsou definov´any n´aslednovnˇe fa(y0, y1, y2, y3) = ((y0∨ y1)⊕ (y0∧ y3))⊕ (y2∧ ((y0⊕ y1)∨ y3)) fb(y0, y1, y2, y3) = ((y0∧ y1)∨ y2)⊕ ((y0⊕ y1)∧ (y2∨ y3)

fc(y0, y1, y2, y3, y4) = (y0∨((y1∨y4)∧(y3⊕y4)))⊕((y0⊕(y1∧y3))∧((y2⊕y3)∨(y1∧y4))) Tvrzen´ı 1 Vˇsechny filtrov´e funkce generuj´ı hodnotu logick´a 1 s pravdˇepodobnost´ı12. D˚ukaz 1 Necht’ y0, y1, y2 a y3 ∈ F2 jsou jsou n´ahodn´e s rovnomˇern´ym rozdˇelen´ım a navz´ajem nez´avisl´e promˇenn´e. Pak pravdˇepodobnost P r[fa(y0, y1, y2, y3) = 1] =

= P r[(((y0∨ y1)⊕ (y0∧ y3))⊕ (y2∧ ((y0⊕ y1)∨ y3))) = 1] =

= P r[(y0∨ y1)⊕ (y0∧ y3)6= (y2∧ ((y0⊕ y1)∨ y3))]

y0 = 0, y1 = 0 :

P r[06= y2∧ y3] = P r[y2∧ y3 = 1] = P r[y2 = 1]∧ P r[y3 = 1] = 12 · 12 = 14

y0 = 0, y1 = 0 :

P r[1⊕ 0 6= (y2∧ (1 ∨ y3))] = P r[16= y2] = P r[y2 = 0] = 12

y0 = 1, y0 = 0 :

P r[1⊕ y3 6= y2∧ 1] = P r[y3⊕ 1 6= y2] = P r[¬y3 6= y2] = P r[y3 =2] = P r[y3 = 0|y2 = 0] + P r[y3 = 1|y2 = 1] = 12 · 12 + 12 · 12 = 12

y0 = 1, y0 = 1 :

P r[1⊕ y3 6= y2∧ (0 ∨ y3)] = P r[y3⊕ 1 6= y2∧ y3] = P r[y3 = y2∧ y3] = 1− P r[y2 = 0]· P r[y3 = 1] = 1− 12 · 12 = 1−14 = 34

(25)

A celkem tedy z´ısk´av´ame P r[fa(y0, y1, y2, y3) = 1] = 14 · 14 + 14 · 12 + 14 · 12 + 14 · 34 =

1

16 +18 + 18 +163 = 12. Obdobnˇe lze tvrzen´ı dok´azat pro ostatn´ı filtrov´e funkce.

Pˇri kaˇzd´e hranˇe hodinov´eho sign´alu2 je cel´y registr posunut doleva a na pozici nejm´enˇe v´yznamn´eho bitu r47 je zaps´ana hodnota ze zpˇetnovazebn´ı funkce L(x).

Pokud v ˇcase k je stav LFSR3 rk, rk+1, ..., rk+47 a vstupn´ı bit je i, pak v ˇcase k + 1 je stav registru rk+1, rk+2, rk+3, ..., rk+48.

Hodnota bitu nejv´ıce vpravo je rk+48= xr⊕ xr+5⊕ xr+9⊕ xr+10⊕ xr+12⊕ xr+14⊕ xr+15⊕ xr+17⊕ xr+19⊕ xr+24⊕ xr+25⊕ xr+27⊕ xr+29⊕ xr+35⊕ xr+39⊕ xr+41⊕ xr+42⊕ xr+43⊕ i.

Vstupn´ı bit i je vyuˇzit pouze pˇri inicializaci (Obr´azek 3.3). Pˇri bˇeˇzn´em provozu se registr vyv´ıj´ı jen na z´akladˇe aktu´aln´ıho stavu.

0/1 first 32 clock ticks

Obr´azek 3.3: Inicializace ˇsifry Crypto1

Aktu´aln´ı hodnota proudu kl´ıˇce je vypoˇctena ze stavu posuvn´eho registru. ˇCtveˇrice vybran´ych bit˚u jsou pˇred´any do filtrov´ych funkc´ı fa a fb. Z nich je z´ısk´ano pˇet hod- not, kter´e jsou pˇred´any v´ystupn´ı filtrov´e funkci fc vracej´ıc´ı jeden bit proudu kl´ıˇce.

Pro ˇsifrov´an´ı ˇci deˇsifrov´an´ı je proveden exkluzivn´ı souˇcet proudu kl´ıˇce s ˇcist´ym textem.

2V pˇr´ıpadˇe ˇcteˇcky pˇri poˇzadavku na novou hodnotu nikoliv hranˇe hodinov´eho sign´alu.

3Linear Feedback Shift Register

(26)

3.3 Autentizaˇ cn´ı protokol

Po vybr´an´ı transpond´eru bˇehem antikolizn´ıho protokolu je moˇzn´e d´ale pokraˇcovat v komunikaci pouze dvˇema zp˚usoby. Prvn´ı moˇznost´ı je ukonˇcen´ı komunikace odesl´an´ım pˇr´ıkazu HALT a druhou moˇznost´ı je prov´est autentizaˇcn´ı protokol.

Pomoc´ı tohoto protokolu, kter´y je typu v´yzva-odpoved’ (challenge-response), obˇe strany prokazuj´ı znalost sd´ılen´eho symetrick´eho kl´ıˇce. Pokud jedna ze stran kl´ıˇc nezn´a, tak protokol nen´ı ´uspˇeˇsnˇe dokonˇcen a nelze ˇc´ıst data.

Pˇri autentizaˇcn´ım protokolu jsou provedeny n´asleduj´ıc´ı kroky:

1. ˇCteˇcka zas´ıl´a poˇzadavek na autentizaci bloku kl´ıˇcem A, nebo B.

2. Transpond´er na z´akladˇe konfiguraˇcn´ıch bit˚u poˇzadavek zam´ıtne a odeˇsle chy- bovou hl´aˇsku v ˇcist´em textu. Pokud je poˇzadavek platn´y, tak pˇreˇcte z PRNG n´ahodn´e ˇc´ıslo nT a odeˇsle ho protistranˇe.

Obˇe strany nyn´ı maj´ı k dispozici symetrick´y kl´ıˇc K, identifik´ator UID a hod- notu v´yzvy nT. Do registru ˇsifry Crypto1 je pˇr´ımo naˇcten kl´ıˇc K a n´aslednˇe je postupnˇe pomoc´ı zpˇetn´e vazby naˇctena hodnota uid⊕ nT.

Dalˇs´ı komunikace od t´eto chv´ıle prob´ıh´a ˇsifrovanˇe.

3. ˇCteˇcka vygeneruje svoj´ı vlastn´ı v´yzvu nR a nahraje ji postupnˇe pomoc´ı zpˇetn´e vazby do registru. Je d˚uleˇzit´e poznamenat, ˇze hodnota nRtedy pˇr´ımo ovlivˇnuje generovan´y proud kl´ıˇce a pˇri ˇsifrov´an´ı nR. Tedy bity v´ıce vlevo ovlivˇnuj´ı bity v´ıce vpravo.

Cteˇcka vypoˇcte odpovˇed’ aˇ R na v´yzvu transpond´eru nT a odeˇsle ji spoleˇcnˇe s v´yzvou nR.

4. Transpond´er vypoˇcte aT na v´yzvu nR a odeˇsle ji ˇsifrovanˇe ˇcteˇcce.

5. Stav ˇsifry je na obou stran´ach stejn´y a je tedy moˇzn´e datov´y pˇrenos ˇsifrovat.

Od t´eto chv´ıle se stav ˇsifry vyv´ıj´ı jiˇz pouze na z´akladˇe zpˇetn´e vazby.

Re´aln´y pr˚ubˇeh autentizace je zn´azornˇen v tabulce 3.1.

(27)

Tabulka 3.1: Pr˚ubˇeh autentizaˇcn´ıho protokolu

Akce Hex V´yznam

Sent bytes: 60 30 76 4a auth(block 30)

Received bytes: 42 97 c0 a4 nT

Sent bytes: 7d db 9b 83 67 eb 5d 83 nR⊕ ks1, aR⊕ ks2

Received bytes: 8b d4 10 08 aT ⊕ ks3

3.4 Zranitelnosti

Nedostatky v n´avrhu technologie Mifare Classic vedly k objeven´ı mnoha zranitelnost´ı a jejich vyuˇzit´ı v konkr´etn´ıch ´utoc´ıch. Prvn´ı ´utoky vyˇzadovaly aktivn´ı sbˇer dat pˇri komunikaci mezi legitimn´ı ˇcteˇckou a transpond´erem (Koning Gans et al., 2008), avˇsak pozdˇeji byly objeveny i ´utoky, kter´e odposlouh´av´an´ı komunikace jiˇz nevyˇzaduj´ı (Garcia et al., 2009) a (Courtois, 2009).

Slabiny pak lze rozdˇelit do skupin podle m´ısta v´yskytu:

1. Slabiny v gener´atoru pseudon´ahodn´ych ˇc´ısel – umoˇzˇnuj´ı manipulaci s genero- vanou hodnotou, kter´a pak jiˇz nen´ı n´ahodn´a

2. Slabiny samotn´e ˇsifrovac´ı funkce – slabiny v samotn´e proudov´e ˇsifˇre a jej´ı v´ystupn´ı funkci

3. Slabiny v komunikaˇcn´ım protokolu – zranitelnosti vznikl´e nespr´avn´ym vyuˇzit´ım ˇsifry vedouc´ı k ´uniku bit˚u proudu kl´ıˇce

4. Slabiny v implementaci standardu – chyby, kter´ych se dopustili v´yrobci pˇri ne- spr´avn´e implementaci standardu Mifare Classic. Tyto chyby napˇr´ıklad mohou umoˇzˇnovat vyˇsˇs´ı m´ıru zranitelnosti ˇci m˚uˇze doch´azet k ´uniku vyˇsˇs´ıho mnoˇzstv´ı informace o kl´ıˇci ˇci ˇcist´em textu.

3.4.1 N´ızk´ a entropie gener´ atoru pseudon´ ahodn´ ych ˇ c´ısel

Gener´ator pseudon´ahodn´ych ˇc´ısel pouˇzit´y v Mifare Classic m´a dvˇe m´ısta zranitel- nosti – kr´atkou generovanou sekvenci a resetov´an´ı do v´ychoz´ı hodnoty.

Popis zranitelnosti

Ke generov´an´ı 32bitov´ych hodnot nonce pouˇzit´ych pro autentizaci je pouˇzit PRNG, kter´y je sice definov´an jako 32bitov´y LFSR, ale pro vytvoˇren´ı n´asleduj´ıc´ı hodnoty se vyuˇz´ıv´a pouze ˇc´ast bit˚u a gener´ator se pak chov´a jako 16bitov´y (Garcia et al., 2008).

(28)

Generuje tak sekvenci 65536 ˇc´ısel, kter´a je podle (Nohl et al., 2008) vygenerov´ana za 0.6 sekundy.

Dalˇs´ım probl´emem je nesmysln´e rozhodnut´ı n´avrh´aˇr˚u obvodu resetovat hodnotu do poˇc´ateˇcn´ı pevnˇe dan´e hodnoty (Nohl et al., 2008). Toto rozhodnut´ı nejenˇze niˇc´ı n´ahodnost z´ıskanou pˇredchoz´ı komunikac´ı a dˇel´a tak gener´ator vlastnˇe determinis- tick´ym, ale nav´ıc vyˇzaduje nav´ıc hardware pro nastavov´an´ı poˇc´ateˇcn´ı hodnoty.

A posledn´ı zneuˇzitelnou vlastnost´ı tohoto n´avrhu je doba vytvoˇren´ı nov´e hodnoty – u transpond´eru s hodinov´ym sign´alem a u ˇcteˇcky pˇri poˇzadavku na hodnotu.

Bezpeˇcnostn´ı d˚usledek

D´ıky v´yˇse zm´ınˇen´ym nedostatk˚um v n´avrhu je moˇzn´e prov´adˇet ´utoky na trans- pond´er, ponˇevadˇz ´utoˇcn´ık je schopen pouh´ym vyp´ın´an´ım a zap´ın´an´ım elektromag- netick´eho pole kontrolovat hodnotu vyuˇz´ıvanou pˇri autentizaci blok˚u.

Pˇri ´utoku na ˇcteˇcku je d´ıky determinismu PRNG situace jeˇstˇe jednoduˇsˇs´ı (za pˇredpokladu, ˇze nen´ı pouˇzit extern´ı gener´ator pseudon´ahodn´ych ˇc´ısel).

Moˇznost testov´an´ı

Pˇri pouˇzit´ı bˇeˇzn´e ˇcteˇcky nam´ısto specializovan´eho hardwaru je obt´ıˇzn´e dos´ahnout pˇresn´eho ˇr´ızen´ı ˇcasov´ych interval˚u mezi zapnut´ım a vypnut´ım gener´atoru.

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0

1e9 0.0

0.2 0.4 0.6 0.8 1.0

Pr

nonce

Obr´azek 3.4: ˇCetnosti hodnot bez virtualizace

(29)

Tento probl´em lze ˇc´asteˇcnˇe kompenzovat vytvoˇren´ım statistiky a dos´ahnout kon- statn´ı hodnoty zhruba ve 35 % pˇr´ıpad˚u. Hodnota s touto pravdˇepodobnost´ı byla nalezena vygenerov´an´ım 10000 n´ahodn´ych hodnot a n´asledn´ym vypoˇcten´ım histo- gramu (Obr´azek 3.4).

Nav´ıc byl objeven probl´em s ˇcasov´an´ım ve virtualizovan´em syst´emu pomoc´ı n´astroje VMWare Workstation 10.0. Na obr´azku 3.5 jsou zobrazeny ˇcetnosti jed- notliv´ych hodnot pˇri pouˇzit´ı z virtualizovan´eho syst´emu.

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0

1e9 0.0

0.2 0.4 0.6 0.8 1.0

Pr

nonce

Obr´azek 3.5: ˇCetnosti hodnot s virtualizac´ı

Utoˇcn´ık pak pro z´ısk´an´ı vhodn´e konstatn´ı hodnoty nonce mus´ı prov´est n´asleduj´ıc´ı´ kroky:

1. Zapnut´ı nap´ajen´ı

2. Proveden´ı antikoliz´ıho protokolu 3. Odesl´an´ı poˇzadavku autentizace 4. Vypnut´ı nap´ajen´ı

5. Uloˇzen´ı hodnoty

Tento postup provede pˇri pouˇzit´ı generick´e ˇcteˇcky 1000kr´at a vybere hodnotu s nejvyˇsˇs´ı ˇcetnost´ı, kterou n´aslednˇe m˚uˇze pouˇz´ıt pro dalˇs´ı ˇc´asti ´utoku. V pˇr´ıpadˇe

(30)

pouˇzit´ı specializovan´eho hardwaru nen´ı nutn´e prov´adˇet dotaz˚u tolik, ponˇevadˇz je moˇzn´e napˇr´ıklad pomoc´ıˇc´ıtaˇc˚u v FPGA4generovat intervaly nesrovnatelnˇe pˇresnˇejˇs´ı neˇz na poˇc´ıtaˇci bez syst´emu re´aln´eho ˇcasu.

Obdobn´y postup byl pouˇzit ve vytvoˇren´em n´astroji (k´od 3.1) jako souˇc´ast de- tekce vadn´ych implementac´ı standardu Mifare Classic.

Zdrojov´y k´od 3.1: Z´ısk´an´ı hodnoty s nejvyˇs´ı ˇcetnost´ı v´yskytu

1 for(i = 0; i < noncesCount; i++) {

2 nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, true);

3

4 // Select tag

5 anticol(pnd);

6

7 // Get nonce

8 sizeRx = transmit_bytes(pnd, dataTx, dataRx, 4);

9 print_hex(dataRx, sizeRx);

10

11 // Store nonce

12 memcpy(nonces+cursor, dataRx, sizeRx);

13 memset(dataRx, 0, sizeRx);

14 cursor += sizeRx;

15

16 if(sizeRx > MAX_FRAME_LEN) {

17 sizeRx = 0;

18 }

19

20 memset(dataRx, 0, sizeRx);

21

22 nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, false);

23 }

N´avrh ˇreˇsen´ı

Na obou stran´ach by bylo vhodn´e zv´yˇsit rozsah gener´atoru zohledˇen´ım druh´e ˇc´asti bit˚u v generuj´ıc´ı funkci, avˇsak tato ´uprava nen´ı realizovateln´a kv˚uli funkci ovˇeˇruj´ıc´ı platnost v´yzvy.

4Field Programmable Gate Array

(31)

Aby mohl b´yt gener´ator pseudon´ahodn´ych ˇc´ısel povaˇzov´an za bezpˇeˇcn´y, tak by bylo nutn´e jej uˇcinit nedeterministick´ym odstranˇen´ım resetov´an´ı do zn´am´e kon- stantn´ı hodnoty a ˇr´ıdit na obou stran´ach gener´ator pouze hodinov´ym sign´alem.

Prakticky by pak byla hodnota z gener´atoru ukl´ad´ana do nevolatiln´ı pamˇeti a pˇri spuˇstˇen´ı by na tuto hodnotu byl vˇzdy gener´ator inicializov´an.

3.4.2 Kontrola integrity dat

Mifare Classic pouˇz´ıv´a na transportn´ı vrstvˇe standard ISO/IEC 14443. V normˇe (ISO 14443-3) je pˇredeps´ano, ˇze za kaˇzd´ym pˇrenesen´ym datov´ym bajtem mus´ı n´asledovat jeden kontroln´ı bit realizovan´y lichou paritou.

Pˇri n´avrhu aplikaˇcn´ı vrstvy vˇsak doˇslo k chybn´emu pˇredpokladu, ˇze kontrola integrity m˚uˇze b´yt prov´adˇena na aplikaˇcn´ı vrstvˇe m´ısto na transportn´ı vrstvˇe, jak bylo zam´yˇsleno v normˇe (ISO 14443-3).

Popis zranitelnosti

Pˇri implementaci kontroly integrity doˇslo ke vzniku n´asleduj´ıc´ıch nedostatk˚u 1. V´ypoˇcet paritn´ıch bit˚u se prov´ad´ı z otevˇren´eho textu. Tento pˇr´ıstup je ne-

vhodn´y, ponˇevadˇz doch´az´ı k ´uniku informace o ˇcist´em textu z paritn´ıch bit˚u.

Definice 7

pj = nT,8j ⊕ ... ⊕ nT,8j+7⊕ 1 pj+4 = nR,8j⊕ ... ⊕ nR,8j+7⊕ 1 pj+8 = aR,8j⊕ ... ⊕ aR,8j+7⊕ 1 pj+12 = aT,8j ⊕ ... ⊕ aT,8j+7⊕ 1

2. Paritn´ı bit je ˇsifrov´an stejn´ym bitem proudu kl´ıˇce jako n´asleduj´ıc´ı datov´y bit.

Definice 8 {pj} = pj ⊕ b8+8j

Tento n´avrh ˇsifrov´an´ı poruˇsuje jednor´azovou tabulkovou ˇsifru (one-time pad) t´ım, ˇze vyuˇz´ıv´a jeden stejn´y bit proudu kl´ıˇce k ˇsifrov´an´ı dvou bit˚u ˇcist´eho textu (Obr´azek 3.6).

3. Kontrola integrity dat je prov´adˇena jeˇstˇe pˇred ovˇeˇren´ım znalosti sd´ılen´eho kl´ıˇce protistranou. Je-li alespoˇn jeden paritn´ı bit chybn´y, tak transpond´er neodpov´ı a zablokuje se jako pˇri proveden´ı pˇr´ıkazu HALT.

(32)

Otevřený text

Proud klíče

0 1 2 3 4 5 6 7 P 0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

Datové bity Paritní bit

Obr´azek 3.6: Poruˇsen´ı one-time pad pˇri ˇsifrov´an´ı paritn´ıho bitu

Podle Courtois (2009) pˇri nastaven´ı libovoln´e kombinace hodnot paritn´ıch bit˚u je pravdˇepodobnost 1/256, ˇze transpond´er odpov´ı zaˇsifrovanou konstantn´ı hodnotou NACK (0x5).

Jin´ymi slovy pˇri spr´avn´em nastaven´ı vˇsech osmi paritn´ıch bit˚u a nespr´avn´e od- povˇedi aR transpond´er odpov´ıd´a zaˇsifrovanou konstantn´ı hodnotou a ´utoˇcn´ık takto dok´aˇze z´ıskat ˇctyˇri bity proudu kl´ıˇce.

V pr´aci (Courtois, 2009) byla publikov´ana skuteˇcnost, ˇze nˇekter´e karty jsou zranitelnˇejˇs´ı neˇz jin´e. Tyto slabˇs´ı implementace totiˇz odpov´ıdaj´ı hodnotou NACK s pravdˇepodobnost´ı 1 m´ısto 1/256, neboli na kaˇzdou kombinaci paritn´ıch bit˚u odpov´ı hodnotou NACK. ´Utoˇcn´ık takto z´ısk´a ˇctyˇri bity proudu kl´ıˇce s kaˇzd´ym poˇzadavkem a d´ıky tomu je moˇzn´e tyto karty prolomit bˇehem nˇekolika vteˇrin5.

Bezpeˇcnostn´ı d˚usledek

Utoˇcn´ık m˚´ uˇze udrˇzovat konstantn´ı hodnotu v´yzvy nT. V pˇr´ıpadˇe, ˇze z´ıskan´a hodnota nT odpov´ıd´a zvolen´e hodnotˇe, tak zkus´ı n´asleduj´ıc´ı moˇznost nastaven´ı paritn´ıch bit˚u.

S pravˇepodobnost´ı 1/256 z´ısk´a hodnotu {0x5}, ze kter´e snadno z´ısk´a ˇctyˇri po sobˇe jdouc´ı bity proudu kl´ıˇce{0x5} ⊕ 0x5 = ks. Pokud hodnota nT neodpov´ıd´a zvolen´e hodnotˇe, tak transpond´er resetuje.

Nav´ıc v r´amci autentizaˇcn´ıho protokolu je nahr´ana v´yzva nRdo registru ˇsifry pro- tistrany. Kdyˇz je takto ´utoˇcn´ık schopen odliˇsit v´yˇse zm´ınˇen´e dva chybov´e stavy, tak je mu umoˇznˇeno pˇr´ımo manipulovat s generovan´ym proudem kl´ıˇce. Tento postup byl vyuˇzit napˇr´ıklad ´utokem publikovan´ym v (Garcia et al., 2009), kde je mˇenˇen pouze jeden bit v´yzvy nR a sledov´ano, jestli je ovlivnˇen generovan´y proud kl´ıˇce. Tento

5Za pˇredpokladu konstantn´ı hodnoty nT.

(33)

´

unik informace pak umoˇzˇnuje naj´ıt urˇcitou hodnotu v´yzvy, kter´a zmenˇs´ı prostor pro vyhled´av´an´ı kl´ıˇce hrubou silou.

Tento nedostatek je kl´ıˇcov´y ve vˇsech publikovan´ych ´utoc´ıch, napˇr´ıklad v (Cour- tois, 2009) je pops´an ´utok vyuˇz´ıvaj´ıc´ı tuto slabinu ke sbˇeru informac´ı, kter´e je d´ale moˇzn´e vyuˇz´ıt k z´ısk´an´ı stavu registru ˇsifry pomoc´ı diferenci´aln´ı kryptoanal´yzy a n´asledn´emu vypoˇcten´ı pouˇzit´eho kl´ıˇce.

Moˇznost testov´an´ı

V n´astroji byl implementov´an test pro detekci v´yˇse zm´ınˇen´ych slab´ych implementac´ı.

Nejdˇr´ıve mus´ı b´yt zaruˇcena platnost pˇredpokladu konstantn´ı hodnoty nT (napˇr´ıklad ˇr´ızen´ım nap´ajen´ı) a n´aslednˇe jsou postupnˇe odesl´any dva poˇzadavky s r˚uzn´ymi n´ahodn´ymi kombinacemi paritn´ıch bit˚u.

Pokud na oba tyto poˇzadavky odpov´ı transpond´er hodnotou NACK, tak se jistˇe jedn´a o slabˇs´ı implementaci, ponˇevadˇz pravdˇepodobnost je vyˇsˇs´ı neˇz 1/256.

Funkce prov´adˇej´ıc´ı detekci chybn´ych implementac´ı je uvedena ve v´ypisu 3.2.

Zdrojov´y k´od 3.2: Detekce slab´ych implementac´ı

1 ...

2 nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, true);

3

4 anticol(pnd);

5

6 // Get nonce

7 if( (sizeRx = transmit_bytes(pnd, dataTx, dataRx, 4)) < 0 ) {

8 nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, false);

9 run = false;

10 continue;

11 }

12

13 // When nonce is equal try parity

14 if(nt[0] == dataRx[0] && nt[1] == dataRx[1] && nt[2] == dataRx[2]

&& nt[3] == dataRx[3]) {

15 // Try parity

16 if( (sizeRx = transmit_bytes_as_bits(pnd, cryptogram, dataRx, 8, parity, NULL)) < 0 ) {

17 nextVariation(parity, 8, 0);

(34)

18 } else {

19 okParity++;

20 run = (okParity > 1) ? false : true;

21 }

22 }

23

24 nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, false);

25 ...

N´avrh ˇreˇsen´ı

Zranitelnost lze odstranit zmˇenou ˇsifrovac´ıho sch´ematu (3.7). V t´eto zmˇenˇe je paritn´ı bit poˇc´ıt´an aˇz z ˇsifrov´eho textu, aby nedoch´azelo k ´uniku informace, a d´ale je tento bit ˇsifrov´an samostatn´ym bitem proudu kl´ıˇce (splˇnuje tedy jednor´azovou tabulkovou ˇsifru). Tato zmˇena by ovˇsem tak´e vyˇzadovala ´upravy v ˇr´ızen´ı ˇsifrovac´ıho obvodu, ponˇevadˇz pro kaˇzd´y datov´y bajt je nutn´e vygenerovat jeden bit nav´ıc pro ˇsifrov´an´ı parity.

{nR,16 … nR,23} {p2} {nR,8 … nR,15} {p1}

{nR,0 … nR,7} {p0} {nR,24 … nR,31} {p3}

nR,16 … nR,23

nR,8 … nR,15

nR,0 … nR,7 nR,24 … nR,31

1

nT,16 … nT,23 p2

nT,8 … nT,15 p1

nT,0 … nT,7 p0 nT,24 … nT,31 p3

b32 … b39 b41 … b48 b50 … b57 b59 … b66

nT

nR

{nR}

ks1 b40 b49 b58 b67

7

1

7

1

7

1

7 7

7

7

7

7

7

7

7

Obr´azek 3.7: Upraven´e ˇsifrovac´ı sch´ema

Teoreticky je odstranˇen´ı t´eto zranitelnosti jednoduch´e, ale prakticky ho realizovat lze jen s vysok´ymi obt´ıˇzemi, ponˇevadˇz zmˇena protokolu je realizovateln´a bez vˇetˇs´ıch z´asah˚u jen na stranˇe ˇcteˇcky6 zmˇenou softwaru v poskytovan´e knihovnˇe, SDK7, nebo

6Nemus´ı nutnˇe platit pro vˇsechna zaˇr´ızen´ı

7Software Development Kit

(35)

pˇr´ımo v konkr´etn´ı aplikaci. Na stranˇe transpond´eru by pak musel b´yt vymˇenˇen cel´y integrovan´y obvod a nav´ıc by d´ale bylo zˇrejmˇe nutn´e ˇreˇsit probl´emy se zpˇetnou kompatibilitou.

Minim´alnˇe by vˇsak mˇelo b´yt moˇzn´e sjednotit odpovˇed’ pˇri spr´avn´e a nespr´avn´e kombinaci paritn´ıch bit˚u, aby v obou pˇr´ıpadech doˇslo k zablokov´an´ı, ˇci odesl´an´ı jednotn´e chybov´e zpr´avy v ˇcist´em textu. Tuto vlastnost s nejvyˇsˇs´ı pravdˇepodobnost´ı legitimn´ı zaˇr´ızen´ı nevyuˇzij´ı.

3.4.3 V´ ypoˇ cet proudu kl´ıˇ ce pouze z lich´ ych bit˚ u

Aktu´aln´ı hodnota proudu kl´ıˇce je v ˇsifˇre Crypto-1 z´avisl´a na aktu´aln´ım stavu po- suvn´eho registru. Zranitelnost spoˇc´ıv´a v pouˇzit´ı pouze lich´ych bit˚u stavu registru pro v´ypoˇcet hodnoty proudu kl´ıˇce pomoc´ı v´ystupn´ıch filtrov´ych funkc´ı.

Utoˇcn´ık takto m˚´ uˇze pouˇz´ıt kryptoanalytickou metodu

”Rozdˇel a panuj“ a prak- ticky tak zmenˇsit prohled´avan´y prostor moˇzn´ych stav˚u.

Popis zranitelnosti

Na obr´azku 3.2 si lze povˇsimnout, ˇze jsou pro v´ypoˇcet hodnoty proudu kl´ıˇce pouˇzity pouze lich´e bity 9, 11, 13, ..., 47.

V prvn´ım kroku jsou vˇsechny bity na sv´em m´ıstˇe a ´utoˇcn´ık m˚uˇze nal´ezt kombinaci 20 bit˚u pro lich´e bity.

Pro kaˇzdou takto z´ıskanou kombinaci 20 bit˚u je vypoˇctena hodnota proudu kl´ıˇce (ks3)0 pomoc´ı v´ystupn´ı funkce. Jednotliv´e kombinace mohou b´yt vylouˇceny po- moc´ı porovn´an´ı hodnoty (ks3)0 s hodnotou proudu kl´ıˇce, kter´a byla pˇredem z´ısk´ana napˇr´ıklad vyuˇzit´ım zranitelnosti v kontrole integrity (viz ˇc´ast 3.4.2).

Po proveden´ı dvou rotac´ı vlevo ˇsifra vyuˇz´ıv´a 19 bit˚u jako v pˇredchoz´ım pˇr´ıpadˇe.

Pˇri hled´an´ı kombinac´ı lze v´ypoˇctem v´ystupn´ı funkce z´ıskat (ks3)2. Je tedy vidˇet, ˇze je pro vytvoˇren´ı tˇechto dvou bit˚u proudu kl´ıˇce vyuˇzito jen 21 bit˚u z registru ˇsifry.

Pokud je stejn´y postup proveden i pro druhou sadu bit˚u s (ks3)1 a (ks3)3, tak lze v´ysledky snadno spojit, ponˇevadˇz nesd´ılej´ı ˇz´adn´e bity.

Nespr´avn´e kombinace je moˇzn´e vyluˇcovat napˇr´ıklad d´ıky znalosti nˇekolika po sobˇe jdouc´ıch bit˚u proudu kl´ıˇce z´ıskan´ych pomoc´ı zranitelnosti pˇri kontrole integrity.

Takto m˚uˇze b´yt za urˇcit´ych podm´ınek ´utoˇcn´ık schopen zrekonstruovat 39 bit˚u (resp. 40, kdyˇz je poˇc´ıt´an i bit ze zpˇetn´e vazby) stavu registru ˇsifry a zbytek prohledat hrubou silou.

(36)

Bezpeˇcnostn´ı d˚usledek

Tato vlastnost umoˇzˇnuje zkouˇset kl´ıˇce mnohem efektivnˇeji neˇz pˇri prost´em vyuˇzit´ı hrub´e s´ıly. Pˇri prohled´av´an´ı stavov´eho prostoru hrubou silou existuje 248 moˇzn´ych stav˚u, ale v (Courtois, 2009) byla vyuˇzita tato vlastnost a bylo nutn´e vyzkouˇset pouze 216 moˇzn´ych hodnot (pˇrevinout tyto stavy zpˇet).

D´ale byl v (Garcia et al., 2009) publikov´an ´utok, kter´y pomoc´ı t´eto vlastnosti umoˇzˇnuje nal´ezt speci´aln´ı hodnotu v´yzvy nR, jej´ıˇz posledn´ı bit neovlivˇnuje proud kl´ıˇce. ´Utoˇcn´ık pˇri vyuˇzit´ı takov´eto v´yzvy mus´ı vyzkouˇset jen 7, 3· 109 r˚uzn´ych kl´ıˇc˚u.

Moˇznost testov´an´ı

Pomoc´ı aplikace testovat tuto zranitelnost nem´a smysl, ponˇevadˇz kaˇzd´e zaˇr´ızen´ı tohoto standardu bude zraniteln´e.

N´avrh ˇreˇsen´ı

Reˇsen´ım zranitelnosti by bylo odstranit toto rovnomˇern´e rozdˇelen´ı na sud´e a lich´eˇ bity z pohledu generov´an´ı hodnoty. Do v´ystupn´ı funkce by mˇely b´yt pˇred´av´any bity ze sud´ych i lich´ych pozic. Nav´ıc by bylo vhodn´e zajistit, aby bylo pro vytv´aˇren´ı hodnot ks0 a ks2 (ks1 a ks3) vyuˇzito co nejm´enˇe spoleˇcn´ych bit˚u.

Prakticky bohuˇzel nen´ı moˇzn´e tuto zranitelnost napravit, ponˇevadˇz by se pak jednalo o ´uplnˇe jinou ˇsifru. Bylo by pak nutn´e vymˇenit vˇsechna zaˇr´ızen´ı, ˇci zav´est reˇzim kompatibility pro starˇs´ı zaˇr´ızen´ı, kter´a by ovˇsem z˚ust´avala zraniteln´a.

3.4.4 Nejsou pouˇzit´ e lev´ e bity pro generov´ an´ı proudu kl´ıˇ ce

Z obr´azku 3.2 je patrn´e, ˇze pro generov´an´ı proudu kl´ıˇce nejsou pouˇzity bity 0 aˇz 8.

Popis zranitelnosti

Reknˇeme, ˇze ˇsifra m´a aktu´aln´ı stav registru rˇ krk+1...rk+47 v urˇcit´em ˇcase k. ´Utoˇcn´ık m˚uˇze pouˇz´ıt vztah (Definice 9) k v´ypoˇctu pˇredchoz´ıho stavu ˇsifry rk−1rk...rk+46.

Pokud m´a ´utoˇcn´ık k dispozici stav ˇsifry v ˇcase k, hodnoty pˇren´aˇsen´e v otevˇren´em textu uid a nT a hodnotu{nR}. Ponˇevadˇz nen´ı zn´ama hodnota nR(zn´am´a je pouze jej´ı zaˇsifrovan´a hodnota), tak nen´ı moˇzn´e prov´est

”rollback“ ˇsifry pˇr´ımo.

Definice 9 Rollback funkce R : F248→ F2 je definov´ana jako

R(x1, x2, ..., x48) = x5⊕ x9⊕ x10⊕ x12⊕ x14⊕ x15⊕ x17⊕ x19⊕ x24⊕ x25⊕ x27⊕ x29⊕ x35⊕ x39⊕ x41⊕ x42⊕ x43⊕ x48

(37)

Pˇri posuvu vpravo vypadne bit 47 a bit 0 je nastaven na hodnotu r. Ponˇevadˇz na prvn´ıch dev´ıti bitech nez´avis´ı proud kl´ıˇce, tak na hodnotˇe r nez´aleˇz´ı a je moˇzn´e ji volit n´ahodnˇe. N´aslednˇe je moˇzn´e z´ıskat nT,31={nT,31}⊕fc(x0, x1, ..., x47) a vypoˇc´ıst hodnotu ri+80 = L(ri+32, ri+33, ..., ri+79)⊕nR,i. Pokud je tento postup zopakov´an jeˇstˇe 31kr´at, tak se registr nach´az´ı ve stavu pˇred naˇcten´ım hodnoty v´yzvy ˇcteˇcky nR.

N´aslednˇe lze obdobn´y postup vyuˇz´ıt d´ale pro nT ⊕ uid a pˇrevinout ˇsifru do v´ychoz´ıho stavu po pˇr´ım´em naˇcten´ı ˇsifrovac´ıho kl´ıˇce.

Tento postup byl publikov´an v pr´aci (Garcia et al., 2008).

Bezpeˇcnostn´ı d˚usledek

Utoˇcn´ık je schopen postupnˇe pˇrevinout stav ˇsifry aˇz do v´´ ychoz´ıho stavu, ve kter´em je obsahem registru ˇsifry pouze pouˇzit´y kl´ıˇc.

Moˇznost testov´an´ı

Vˇsechna zaˇr´ızen´ı budou zraniteln´a, proto nem´a cenu testovat.

N´avrh ˇreˇsen´ı

Pˇridat filtrovou funkci vyuˇz´ıvaj´ıc´ı bity na tˇechto pozic´ıch. Je ovˇsem nutn´e aby v´ystup filtrov´e funkce mˇel rovnomˇern´e rozdˇelen´ı (Tvrzen´ı 1). D´ale by musel b´yt v´ystup zohlednˇen v samotn´e v´ystupn´ı funkci f .

Ponˇevadˇz n´aprava spoˇc´ıv´a pˇr´ımo ve zmˇenˇe ˇsifrovac´ı funkce, tak opˇet vyvst´av´a praktick´y probl´em se zachov´an´ım kompatibility se st´avaj´ıc´ımi zaˇr´ızen´ımi.

3.4.5 Mal´ a variabilita proudu kl´ıˇ ce

Jedn´a se o vlastnost pouˇzit´e logick´e funkce spoˇc´ıvaj´ıc´ı v tom, ˇze v´ystupn´ı bit funkce s urˇcitou pravdˇepodobnost´ı nez´avis´ı na v´ıce vstupn´ıch bitech.

Popis zranitelnosti

Mˇejme konstantn´ı v´yzvu karty nT a 8bajtov´y kryptogram C = (c1, c2, c3, c4, c5, c6, c7, c8) = (nR, aR). Prvn´ı tˇri bajty {nR} budou fixnˇe nastaven´e a u posledn´ıho bajtu se mohou mˇenit nejniˇzˇs´ı tˇri bity.

Pro dotaz se spr´avnˇe nastavenou kombinac´ı paritn´ıch bit˚u je pˇri deˇsifrov´an´ı pravdˇepodobnost 0,75, ˇze proud kl´ıˇce ks1 = (b32, ..., b64) bude stejn´y bez ohledu na hodnotu nTtj., nez´avisl´y na posledn´ıch tˇri bitech nT.

(38)

Bezpeˇcnostn´ı d˚usledek

Pokud vytv´aˇren´y proud kl´ıˇce je konstatn´ı a tedy nez´avis´ı na ˇctvrt´em bajtu krypto- gramu c3, tak diference mezi stavem ˇsifry pˇri v´ypoˇctu ks2 a ks3 je nˇejak´a line´arn´ı funkce z´avisej´ıc´ı pouze na diferenci v hodnot´ach c3 a niˇcem jin´em.

Tato zranitelnost umoˇzˇnuje prov´est ´utok pomoc´ı diferenci´aln´ı kryptoanal´yzy po- psan´y v (Courtois, 2009).

N´avrh ˇreˇsen´ı

Reˇsen´ım by byla zmˇena v´ˇ ystupn´ı funkce tak, aby pravdˇepodobnost z´avislosti proudu kl´ıˇce na vstupn´ı hodnotˇe byla 0,5, avˇsak chyby samotn´e ˇsifrovac´ı funkce nelze opravit se zachov´an´ım kompatibility se st´avaj´ıc´ımi zaˇr´ızen´ımi. Jedin´ym moˇzn´ym zp˚usobem obrany je pak pouˇzit´ı elektromagnetick´eho st´ınˇen´ı k zamezen´ı komunikace karty s nelegitimn´ımi zaˇr´ızen´ımi.

3.4.6 Pouˇzit´ı implicitn´ıch kl´ıˇ c˚ u

V´yrobce pro ´uˇcely testov´an´ı nastavuje pˇri v´yrobˇe ˇcipu implicitn´ı kl´ıˇce, se kter´ymi jsou n´aslednˇe odesl´any k prodeji.

Bezpeˇcnostn´ı d˚usledek

Pokud v´yvoj´aˇr koncov´e aplikace tyto kl´ıˇce nezmˇen´ı, tak mohou b´yt velice snadno pˇreˇcteny, ponˇevadˇz implicitn´ı kl´ıˇce jsou veˇrejnˇe dostupn´e – souˇc´ast´ı knihovny LibNfc je tabulka nejˇcastˇejˇs´ıch implicitn´ıch kl´ıˇc˚u.

D´ale m˚uˇze b´yt pˇri ´uspˇeˇsn´e autentizaci jednoho bloku vyuˇzit

”Nested Attack“

publikovan´y v pr´aci (Garcia et al., 2009) k z´ısk´an´ı ˇsifrovac´ıch kl´ıˇc˚u ostatn´ıch blok˚u.

Moˇznost testov´an´ı

Pomoc´ı slovn´ıkov´eho ´utoku lze snadno ovˇeˇrit, zda je dan´y blok pˇr´ıstupn´y nˇejak´ym zn´am´ym kl´ıˇcem. Vytvoˇren´y n´astroj vyuˇz´ıv´a nejˇcastˇeji pouˇz´ıvan´e tov´arn´ı kl´ıˇce uve- den´e v tabulce 3.2.

References

Related documents

V pˇr´ıpadˇe, ˇze je z´ıskan´a kˇrivka zahnut´a pouze na urˇcit´em ´ useku v pˇredn´ı nebo zadn´ı ˇc´asti, je moˇzn´e tento ´ usek ruˇcnˇe vybrat. Na obr´azku 5

V t´ eto kapitole se budeme vˇ enovat rozˇ s´ıˇ ren´ı line´ arn´ıho regresn´ıho modelu pro n vysvˇ etluj´ıc promˇ enn´ ych, tedy X 1..

Pomoc´ı nˇekolika technik jsem provedl anal´ yzu dat o nemovi- tostech a na jeho z´akladˇe jsem vybral nˇekolik atribut˚ u, kter´e jsem n´aslednˇe pouˇzil pro tvorbu

Potlaˇ cov´ an´ı odezvy existuj´ı dva druhy, Network Echo Cancellation (potlaˇ cov´ an´ı odezvy v s´ıt’ov´ ych sign´ alech) a Acoustic Echo Cancellation (potlaˇ cov´

Na z´ akladˇ e minim a maxim porovn´ avan´ ych element˚ u se vyhodnot´ı, zda elementy mohou nebo nemohou m´ıt spoleˇ cn´ y pr˚ unik, pokud elementy nemohou m´ıt spoleˇ cn´

Uveden´ a simulace je zaloˇ zena, jak jiˇ z bylo zm´ınˇ eno, na opakovan´ em gene- rov´ an´ı n´ ahodn´ ych dat, na kter´ ych se prov´ ad´ı dan´ y algoritmus a jsou

Bˇ ehem procesu repasov´ an´ı se z´ısk´ av´ a velk´ e mnoˇ zstv´ı dat, kter´ e je nutn´ e ukl´ adat kv˚ uli zpˇ etn´ e kontrole procesu.. nice v libovoln´ em okamˇ

Jak jiˇz bylo zm´ınˇeno v ´ uvodu pr´ace, je n´avrh vlastn´ı ˇr´ıdic´ı jednotky vynucen t´ım, ˇze stan- dardn´ı ˇr´ıdic´ı jednotky, urˇcen´e pro ovl´ ad´ an´ı krokov´ ych