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