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