Mifare是NXP公司生產(chǎn)的一系列遵守ISO14443A標(biāo)準(zhǔn)的射頻卡,包Mifare S50、Mifare S70、Mifare UltraLight、Mifare Pro、Mifare Desfire等,由于Mifare的巨大影響力,業(yè)內(nèi)有時把其它公司生產(chǎn)的遵守ISO14443A標(biāo)準(zhǔn)的射頻卡也稱為“Mifare”,尤其是Mifare S50卡片,幾乎就是ISO14443A標(biāo)準(zhǔn)的代言人。
至于“Mifare”這個名字的由來,據(jù)說1998年P(guān)hilips收購了瑞士的米克朗(Mikron)公司,該公司之前開發(fā)了一套收費(fèi)系統(tǒng)叫作MIkron FARE-collection System,即米克朗收費(fèi)系統(tǒng),簡寫為Mifare。
Mifare系列卡片有時也根據(jù)卡內(nèi)使用芯片的不同,把Mifare UltraLight稱為MF0,Mifare S50和S70稱為MF1,Mifare Pro稱為MF2,Mifare Desfire稱為MF3。
Mifare系列的共同特征就是遵守ISO14443A國際標(biāo)準(zhǔn),這些共同特征描述如下:
1.它們都是接近卡PICC(Proximity ICC),讀寫距離最大10cm。
2.它們的射頻頻率都是13.56MHz±7KHz。
3.這些卡片都是無源免接觸的,能量由讀寫器產(chǎn)生的射頻場提供。
4.讀寫器產(chǎn)生的射頻場的磁場強(qiáng)度在1.5A/m~7.5A/m之間,卡片在這個場強(qiáng)區(qū)間內(nèi)可以連續(xù)的正常工作。
5.卡片首先進(jìn)入讀寫器的射頻場得電完成初始化,之后等待讀寫器的命令。讀寫器與卡片的數(shù)據(jù)交流總是采用RTF模式,即讀寫器先發(fā)出命令,卡片在規(guī)定的時間內(nèi)對命令作出應(yīng)答,如果讀寫器沒有命令,卡片無論如何也不能先發(fā)言。
6.讀寫器向卡片發(fā)送命令使用100% ASK調(diào)制的修正米勒(Modified Miller)碼,卡片應(yīng)答時使用副載波調(diào)制的曼側(cè)斯特(Manchester)碼。
7.卡片與讀寫器之間通訊的數(shù)據(jù)速率有4種:106Kbps,212Kbps,424Kbps,847Kbps。但在讀卡選擇命令(含)之前,通訊速率只能是106Kbps。讀卡選擇之后,卡片和讀寫器可以協(xié)商使用什么樣的速率。106Kbps是怎么來的,它是載波頻率13.56MHz除以128得來的,通俗的說法是“載波128分頻”。
8.卡片未進(jìn)入射頻場時稱為斷電(Power-Off)狀態(tài),進(jìn)入射頻場得電復(fù)位后進(jìn)入休閑(Idle)狀態(tài),收到讀寫器的呼叫命令后進(jìn)入準(zhǔn)備(Ready)狀態(tài),經(jīng)過防沖突循環(huán)被選中后進(jìn)入激活(Active)狀態(tài),在激活狀態(tài)收到休眠命令或不認(rèn)識的命令后進(jìn)入休眠(Halt)狀態(tài)。
9.這些卡片都有一個全球唯一的序列號,序列號的長度可能是4字節(jié),7字節(jié)或10字節(jié)。當(dāng)多張卡片同時進(jìn)入讀寫器的射頻場時,卡片們遵守面向比特的防沖突機(jī)制,由讀卡器選出唯一的一張卡片進(jìn)行操作。讀寫器操作完一張卡片后,可以發(fā)送休眠命令讓這張卡片進(jìn)入休眠狀態(tài),而讀卡器繼續(xù)對其他卡片進(jìn)行操作。
10.這些卡片在卡選擇(含)之前的操作步驟都是一樣的,卡選擇之后的操作就不一樣了,比如有的需要驗(yàn)證密碼,有的不需要,而且驗(yàn)證密碼的方式也有區(qū)別。
11.從卡片進(jìn)入磁場到卡片被選中要經(jīng)過兩步。
第一步是讀寫器呼叫磁場內(nèi)的卡片,卡片對呼叫做出應(yīng)答。
(1)由于磁場內(nèi)可能有剛進(jìn)入磁場并得電復(fù)位處于休閑狀態(tài)的卡片,也可能有已經(jīng)被讀寫器操作過,被讀寫器發(fā)送休眠命令進(jìn)入休眠狀態(tài)的卡片,對這兩類不同的卡片,讀寫器使用兩種不同的命令進(jìn)行呼叫:卡請求(REQA,0x26)和卡喚醒(WAKE-UP,0x52)。
(2)其中卡請求(REQA)只能呼叫處于休閑(Idle)狀態(tài)的卡片,卡喚醒(WAKE-UP)可以呼叫所有卡片,包括處于休眠(Halt)和休閑狀態(tài)的卡片。
(3)收到卡呼叫命令后,卡片將對命令做出應(yīng)答(Answer To Request,ATQA),告訴讀寫器自己是否遵守面向比特的防沖突機(jī)制,如果不遵守,讀寫器自然就不會往下操作了,除非雙方約好了一種特殊的防沖突協(xié)議,不過那就不叫“遵守ISO14443A”了。ATQA有兩個字節(jié),第一個字節(jié)的值沒有規(guī)定(RFU),第二個字節(jié)的高兩位b7b6表示卡序列號長度(“00”為4字節(jié),“01”為7字節(jié),“10”為10字節(jié)), b5位的值沒有規(guī)定(RFU),b4-b0表示是否遵守面向比特的防沖突機(jī)制,如果遵守,b4-b0必須有且僅有1位為1。通常情況下,Mifare S50的ATQA是0004H,Mifare S70的ATQA是0002H,Mifare UltraLight的ATQA是0044H,Mifare Light的ATQA是0010H,Mifare Desfire的ATQA是0344H。業(yè)內(nèi)習(xí)慣稱ATQA為卡類型,并且稱“Mifare S50的卡類型是0004H,Mifare S70的卡類型是0002H,Mifare UltraLight的卡類型是0044H,Mifare Desfire的卡類型是0344H……”,這種說法其實(shí)是不嚴(yán)謹(jǐn)?shù)。已?jīng)出現(xiàn)了ATQA為0044H和0344H的卡片,但這種卡片并不是Mifare UltraLight和Mifare Desfire,而是一種新的7字節(jié)的Mifare S50。這很正常,因?yàn)镮SO14443A中規(guī)定,ATQA的作用是卡片表明自己是否遵守面向比特的防沖突機(jī)制以及自身卡序列號的長度,并不是表示哪種類型的卡片。
(1)之所以把“防沖突”和“選擇”放在一塊說,是因?yàn)槎叩拿畲a是一樣的,區(qū)別在于命令碼后面包含多少位已經(jīng)確認(rèn)的卡序列號。
(2)面向比特的防沖突機(jī)制每個防沖突循環(huán)需要32bit的卡號參加。讀寫器向所有參加防沖突的卡片發(fā)出一個防沖突命令碼,并告訴卡片們已經(jīng)確定了多少位卡序列號,讓卡序列號前面部分與讀寫器發(fā)出的已經(jīng)確認(rèn)的序列號相同的卡片做出應(yīng)答。
(3)如果已確認(rèn)的卡序列號小于32位,就是防沖突命令,卡片將回送除了已確認(rèn)卡序列號之外的剩余的卡序列號部分;如果已確認(rèn)的卡序列號等于32位,就是卡選擇命令了,被選中的卡片將作出對選擇的應(yīng)答(Select AcKnowledge,SAK)。
(4)防沖突和卡選擇命令還有一個區(qū)別就是,卡選擇命令有CRC_A校驗(yàn),而防沖突命令沒有CRC_A校驗(yàn)。
(5)如果卡片卡號是4個字節(jié),防沖突選擇的命令碼是0x93。
(6)如果卡片卡號是7個字節(jié),則要進(jìn)行兩個層次(cascade level)的防沖突選擇,第一層(cascade level 1)的命令碼是0x93;卡號的前3個字節(jié)參加;第二層(cascade level 2)的命令碼是0x95,卡號的后4個字節(jié)參加。
(7)如果卡片卡號是10個字節(jié),則要進(jìn)行三個層次(cascade level)的防沖突選擇,第一層(cascade level 1)的命令碼是0x93,卡號的前3個字節(jié)參加;第二層(cascade level 2)的命令碼是0x95,卡號的第4、5、6個字節(jié)參加;第三層(cascade level 3)的命令碼是0x97,卡號的后4個字節(jié)參加。
(8)大家可能已經(jīng)發(fā)現(xiàn),前面說每個防沖突循環(huán)需要32bit的卡號參加,后面又說可以3個字節(jié)(24bit)參加,是不是前后矛盾?是的,為了湊夠32bit,如果只有3個字節(jié)的卡號參加防沖突循環(huán),則卡片自動在3個卡號字節(jié)之前增加一個字節(jié)0x88,這個0x88被稱為層標(biāo)簽(cascade tag),從而滿足防沖突循環(huán)對32bit卡號的要求。
(9)每一層的防沖突選擇循環(huán)如果卡被選中,卡片都要返回“選擇應(yīng)答”(Select AcKnowledge,SAK),告訴讀寫器是否需要下一層的防沖突選擇循環(huán)以及是否遵守ISO14443-4。
12.最后再次強(qiáng)調(diào)以上就是“共同遵守ISO14443A”的含義,也就是從卡片進(jìn)入磁場到卡片被選中,它們的操作流程都是一樣的。之后大家便分道揚(yáng)鑣,有的繼續(xù)遵守ISO14443-4,有的開始驗(yàn)證密碼,有的就直接可以進(jìn)行讀寫操作了。