智能卡ISO 14443 1-4詳解

1.詳情

非接觸卡規範主要有ISO 14443 1-4這四本:

  1. 14443-1定義了非接觸卡的物理特性。
  2. 14443-2定義了非接觸卡的射頻功率和信號接口。
  3. 14443-3定義了非接觸卡的初始化和防衝突。
  4. 14443-3定義了非接觸卡的傳輸協議。
本文主要講解第3,4本規範,和講解typeA類型的mifare卡,作爲最近兩個月的學習成果。

2規範具體講解

2.1 14443-1

14443-1定義了非接觸卡的物理特性,PICC(智能卡)是符合ISO / IEC 7810或ISO / IEC 15457-1的規範的物理特性,同時定義了線圈的具體位置等。

2.2 14443-2

14443-2定義了非接觸卡的射頻功率和信號接口。那個讀卡設備和卡是怎麼進行通訊的呢,是由PCD應產生高頻交變磁場。 這個場感應地耦合到PICC傳輸電力並進行調製通信,其通訊頻率爲13.56Mhz。具體一些物理的數據交互過程也在這裏定義,本人物理知識相對薄弱,未能參透,望知曉的通知可以留言告知本人。

2.2 14443-3

14443-3定義了非接觸卡的初始化和防衝突過程,具體流程如下:
1:polling輪尋
檢測在操作區域中的PICC,PCD應發送重複的請求命令PCD應以任何順序發送REQA(或WUPA)和REQB(或WUPB)輪詢類型A和類型B時的相等或可配置的佔空比。既在線圈內的所有卡發送REQA或是REQB指令。然後就介紹type A命令對typeB類型卡的影響,它能夠接受這些指令,但是這些指令對卡沒有影響,他最終會在IDLE狀態。但是注意的是typeB命令對typeA類型的有一個特別的地方在於如果typeA處於ready和active狀態時如果收到TYPEB的指令會立刻變成HALTstate。
2: typeA和typeB的防衝突方式個人感覺網上的老司機會講的好點,所以轉載了老司機的兩種防衝突方式。

1.面向比特的防衝突機制。

    ISO14443A中使用這種防衝突機制,其原理是基於卡片有一個全球唯一的序列號。比如Mifare1卡,每張卡片有一個全球唯一的32位二進制序列號。顯而易見,卡號的每一位上不是“1”就是“0”,而且由於是全世界唯一,所以任何兩張卡片的序列號總有一位的值是不一樣的,也就說總存在某一位,一張卡片上是“0”,而另一張卡片上是“1”。

    當兩張以上卡片同時進入射頻場,讀寫器向射頻場發出卡呼叫命令,問射頻場中有沒有卡片。這些卡片同時回答“有卡片”;

    然後讀寫器發送防衝突命令“把你們的卡號告訴我”,收到命令後所有卡片同時回送自己的卡號。

    可能這些卡片卡號的前幾位都是一樣的。比如前四位都是1010,第五位上有一張卡片是“0”而其他卡片是“1”,於是所有卡片在一起說自己的第五位卡號的時候,由於有卡片說“0”,有卡片說“1”,讀寫器聽出來發生了衝突。

    讀寫器檢測到衝突後,對射頻場中的卡片說,讓卡號前四位是“1010”,第五位是“1”的卡片繼續說自己的卡號,其他的卡片不要發言了。

    結果第五位是“1”的卡片繼續發言,可能第五位是“1”的卡片不止一張,於是在這些卡片回送卡號的過程中又發生了衝突,讀寫器仍然用上面的辦法讓衝突位是“1”的卡片繼續發言,其他卡片禁止發言,最終經過多次的防衝突循環,當只剩下一張卡片的時候,就沒有衝突了,最後勝出的卡片把自己完整的卡號回送給讀寫器,讀寫器發出卡選擇命令,這張卡片就被選中了,而其他卡片只有等待下次卡呼叫時才能再次參與防衝突過程。

    上述防衝突過程中,當衝突發生時,讀寫器總是選擇衝突位爲“1”的卡片勝出,當然也可以指定衝突位爲“0”的卡片勝出。

    上述過程有點擬人化了,實際情況下讀寫器是怎麼知道發生衝突了呢?在前面的數據編碼中我們已經提到,卡片向讀寫器發送命令使用副載波調製的曼側斯特(Manchester)碼,副載波調製碼元的右半部分表示數據“0”,副載波調製碼元的左半部分表示數據“1”,當發生衝突時,由於同時有卡片回送“0”和“1”,導致整個碼元都有副載波調製,讀寫器收到這樣的碼元,就知道發生衝突了。

    這種方法可以保證任何情況下都能選出一張卡片,即使把全世界同類型的所有卡片都拿來防衝突,最多經過32個防衝突循環就能選出一張卡片。缺點是由於卡序列號全世界唯一,而卡號的長度是固定的,所以某一類型的卡片的生產數量也是一定的,比如常見的Mifare1卡,由於只有4個字節的卡序列號,所以其生產數量最多爲2的32次方,即4294967296張。

    2.面向時隙的防衝突機制

    ISO14443B中使用這種防衝突機制。這裏的時隙(timeslot)其實就是個序號。這個序號的取值範圍由讀寫器指定,可能的範圍有1-1、1-2、1-4、1-8、1-16。當兩張以上卡片同時進入射頻場,讀寫器向射頻場發出卡呼叫命令,命令中指定了時隙的範圍,讓卡片在這個指定的範圍內隨機選擇一個數作爲自己的臨時識別號。然後讀寫器從1開始叫號,如果叫到某個號恰好只有一張卡片選擇了這個號,則這張卡片被選中勝出。如果叫到的號沒有卡片應答或者有多於一張卡片應答,則繼續向下叫號。如果取值範圍內的所有號都叫了一遍還沒有選出一張卡片,則重新讓卡片隨機選擇臨時識別號,直到叫出一張卡片爲止。

    這種辦法不要求卡片有一個全球唯一序列號,所以卡片的生產數量沒有限制,但是理論上存在一種可能,就是永遠也選不出一張卡片來。

    Felica採用的也是這種機制。

    3.位和時隙相結合的防衝突機制

    ISO15693中使用這種機制。一方面每張卡片有一個7字節的全球唯一序列號,另一方面讀寫器在防衝突的過程中也使用時隙叫號的方式,不過這裏的號不是卡片隨機選擇的,而是卡片唯一序列號的一部分。

    叫號的數值範圍分爲0-1和0-15兩種。其大體過程是,當有多張卡片進入射頻場,讀寫器發出清點請求命令,假如指定卡片的叫號範圍是0-15,則卡片序列號最低4位爲0000的卡片回送自己的7字節序列號。如果沒有衝突,卡片的序列號就被登記在PCD中。然後讀寫器發送一個幀結束標誌,表示讓卡片序列號最低4位爲0001的卡片作出應答;之後讀寫器每發送一個幀結束標誌,表示序列號的最低4位加1,直到最低4位爲1111的卡片被要求應答。如果此過程中某一個卡片回送序列號時沒有發生衝突,讀寫器就可選擇此張卡片;如果巡檢過程中沒有卡片反應,表示射頻場中沒有卡片;如果有卡片反應的時隙發生了衝突,比如最低4位是1010的卡片回送卡號時發生了衝突,則讀寫器在下一次防衝突循環中指定只有最低4位是1010的卡片參與防衝突,然後用卡片的5-8位作爲時隙,重複前面的巡檢。如果被叫卡片的5-8位時隙也相同,之後再用卡片的9-12位作爲時隙,重複前面的巡檢,依次類推。讀寫器可以從低位起指定任意位數的序列號,讓卡號低位和指定的低位序列號相同的卡片參與防衝突循環,卡片用指定號前面的一位或4位作爲時隙對讀寫器的叫號作出應答。由於卡片的序列號全球唯一,所以任何兩張卡片總有某個連續的4位二進制數不一樣,因而總能選出一張卡片。需要指出的是,當選定的時隙數爲1時,這種防衝突機制等同於面向比特的防衝突機制。

上面用文字講述了14443防衝突機制大概是怎麼回事,但是具體讀卡器和卡片是怎麼進行防衝突的在下面流程圖中會具體講述,但是在講這個流程圖之前,我們先要了解在卡片的輪尋和選卡之間發生的狀態變化。

3狀態講解

3.1 POWER-OFF state

該狀態即爲卡片還是放到讀卡器上面,沒有獲得啓動電源的意思。
           

3.2 IDLE state

卡片處於通電狀態,等待接收讀卡器發來的請求命令(REQA and WUPA )。

3.3 READY state

在接收到讀卡器發來的指令是卡片有idle state狀態變爲 ready state,在ready state 就開始面向比特的防衝突機制,和選卡的過程

3.4 ACTIVE state

卡片在防衝突後,就衝ready狀態轉到了active狀態,在這個過程中接收到RATS之後,進入PROTOCOL state

3.5 PROTOCOL state

數據交互過程。

3.6 halt state

即是睡眠狀態,當接收到WUPA時就變回ready* state,之後和過程的前面的是一樣的。
以上是卡片在整個數據交互過程中的狀態,下面通過具體流程圖來講解器具體的操作過程。



4具體流程講解:



上圖是讀卡器的和進行交互的第一過程輪尋,PCD發出REQA,REQA大小是一個字節,26代表是從IDLE state 轉到 ready state,而52代表從halt state 轉到ready* state。其中還有50是可選時隙方法。PICC都收到PCD的要求,要求picc給pcd發送卡的uid,,但是它不會直接告訴你uid而是先告訴你UID的長度,和最多鏈接級別,讓你先有個準備。所以會發送ATQA告訴讀卡器這些事,B16-B13是RFU(預留位)默認設置爲0,B9-B13是專有編碼,有廠商自己定義,b7b8是定義UID的大小b6時預留位,B1-B5只要有一位置1代表有響應。



這是b8和b7和代表圖,若B8B7爲0,則UID是單字節的,其他的如圖,我就不說了,PICC吧這些信息告訴了卡,那個接下來就是抗衝突過程和,選卡過程了。

下面是沒有發生衝突下的選卡過程。

如果發生了衝突,那麼抗衝突過程如下:


防衝突和選卡過程就如上了,本人講了一些規範講的不夠的地方進行補充,所以具體某些位是什麼意思就請看規範。最後發送RATS獲取ATS,ATS由T0TLTATB....等等組成。。。未完待續










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章