• No results found

Pˇr´ıkazy Mifare Classic

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

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

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

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.

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

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

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.