MIFARE Classic S50技术详解
Mifare Classic 簡介
MIFARE Classic是恩智浦半導體開發的可用于非接觸式智能卡,符合ISO/IEC 14443 A類標準。用于公共交通票證等應用,還可用于各類其他應用有S20,S50(M1),S70幾種規格,主要是根據存儲器容量劃分,存儲器容量分別有320B,1K,4K。具有以下防干擾、輕松簡便以及安全等特性:
防干擾
智能防干擾功能允許同時有多張卡在現場工作。防干擾算法分別選擇每一張卡,并確保選定的卡正確執行交易,不會受到現場另一張卡的干擾。
輕松集成,使用簡便
針對輕松集成和使用簡便而設計,允許在不到100 ms的時間內完成整個票證交易。
安全
· 每器件具有制造商編程的7字節UID或4字節NUID標識符
· 支持隨機ID
· 三道雙向認證(ISO/IEC DIS 9798-2)
· 每扇區提供兩組獨立的密鑰,支持多用途密鑰體系
本文以S50進行著重講解,對于S20及S70可訪問官方網站詳細了解。
邏輯框圖
對于S50來說,芯片由1KB E2P,非接接口,數字控制單元組成。其中:
非接接口(RF Interface),包括:
· 調制解調器(Modulator/demodulator)
· 整流器(Rectifier)
· 時鐘再生器(Clock regenerator)
· 上電復位(Power-On Reset )
· 電壓調節器(Voltage regulator)
防沖突管理
認證管理
控制和算術邏輯單元
存儲器及訪問接口:對于S50來說,存儲器(E2P)只需要1KB分為16個扇區,每個扇區為4塊,每塊16個字節,以塊為存取單位。
加密單元
執行流程
執行流程包括三個部分,分別是初始化及選擇過程,認證過程以及數據操作過程,如下圖所示:
· 呼叫
讀卡器發送 REQA/WUPA 命令,卡返回 ATQA 的過程。
· 防沖突循環
在防沖突循環過程中將讀取卡片的ID,如果存在多張卡,則通過ID進行區別,并選擇一張卡進一步處理,其它卡回到 IDLE 狀態等待REQA/WUPA 命令。
· 選卡
讀寫器發送 SELECT,卡返回 SAK 的過程, SAK 指示當前卡是否支持 14443-4 協議和 UID 是否完整。
· 三輪認證
選卡后,讀寫器指定后續讀寫的存儲器位置,并用相應密鑰進行三輪認證。認證成功后,所有的存儲器操作都是加密的。
· 存儲器操作
認證后可執行下列操作:
讀塊
寫塊
減值:減少數值塊內的值,并將結果保存在數據寄存器中。
加值:增加數值塊內的值,并將結果保存在數據寄存器中。
恢復:將數據塊內容移入數據寄存器。
轉存:將數據寄存器的內容寫入數值塊。
數據存儲結構
廠商代碼塊
這是第 0 區的第 0 塊存儲制造商代碼,它含有 UID 和廠商數據,只讀。如果是4字節UID,則0~3字節為序列號,第4字節為校驗字節(異或值),第5字節國卡片容量,第6、7字節為卡片類型。
數據塊
所有扇區都由3個塊組成,每個塊由16字節用于存儲數據(扇區0只有兩個數據塊,一個只讀的廠商數據塊)。數據塊可以設置為:
· 讀寫塊,例如用于非接觸門禁管理,有效命令: read, write
· 數值塊,例如用于電子錢包。
數值塊
數值塊允許執行電子錢包功能(有效的命令是:讀、寫增量、減量、恢復、轉移)。數值塊有一個固定的數據格式允許錯誤檢測和校正和備份管理。
· 數值:有符號 4 字節數值。數值的最低字節存儲在最低地址字節。負值以標準的 2 的補碼形式存儲。數值存儲三次,兩次不取反,一次取反。
· 地址( Adr): 1 字節絕對地址,當進行備份管理時,可用于保存塊的地址(即地址不一定與當前的塊號相同)。地址保存四次,兩次取反,兩次不取反。在 increment、decrement、 restore 和 transfer 操作中,地址保持不變。它只能通過 write。
例:
對于十進制數1234567,地址17來說,首先十進制數轉成十六進制為0x0012D687,低字節存儲在第0字節,高字節為第3字節,補碼為0xFFED2978,低字節存儲在第4字節,高字節存儲在第7字節。對于十六進制的地址0x11來說,補碼為0xEE。存儲結果如下表所示:
尾塊
各區均有一個尾塊,存有:
· 密鑰 A 和 B(可選):卡片發行時,所有的密鑰被設置為 FFFFFFFFFFFF。如果讀密鑰的權限不滿足則讀出的密鑰值為全 0.
· 該區四個塊(或16個塊)的讀寫條件,存儲在字節 6 至 9 。讀寫控制位也指定了數據塊的類型(讀寫塊或數值塊)。
如果不需要密鑰 B,尾塊的最后 6 字節可以用作數據字節。尾塊的字節 9 可用于用戶數據。此字節享有與字節 6、 7、 8 相同的讀寫權限。對于訪問條件,參考后面章節的詳細說明。
訪問控制
任何內存操作之前,卡必須選擇和驗證,對一個特定的塊的訪問,依賴于驗證過程中的密鑰以及存儲在當前的扇區尾部的訪問條件。內存操作如下表所示:
訪問條件
每個數據塊和尾塊的訪問條件是由3位數據組成,在訪問條件及其補碼形式存儲在指定塊的尾塊中。
訪問控制位使用密鑰A和密鑰B控制內存的訪問,訪問條件可能會改變,只要知道相關的密鑰和當前訪問條件即允許此操作。如下圖所示:
控制位的組成
尾塊訪問條件
根據尾塊的訪問控制位,對于key的讀/寫訪問的權限包括:never,keyA,keyB或者keyA|B。
卡片發行時的控制字節為: FF078069,即:
C10 C20 C30=000,塊 0 的讀、寫、增、減、恢復、傳送的權限都是 key A 或 keyB
C11 C21 C31=000,塊 1 的讀、寫、增、減、恢復、傳送的權限都是 key A 或 keyB
C12 C22 C32=000,塊 2 的讀、寫、增、減、恢復、傳送的權限都是 key A 或 keyB
C13 C23 C33=001,塊 3 的 keyA 讀權限 never, keyA 的寫權限、 Access bits 和 keyB 的讀寫權限都是 keyA。
例一: C11 C21 C31=010,即塊 1 的讀權限為 keyA/keyB,寫、增、減、恢復、傳送的權限為never。修改尾塊的值為: FFFFFFFFFFFFDF078200FFFFFFFFFFFF
例二: C1x C2x C3x=111,即數據塊的所有權限都為 never,尾塊的讀控制字節權限為 keyA|B,
其它權限為 never。
修改尾塊的值為: FFFFFFFFFFFF00F0FF00FFFFFFFFFFFF
數據塊訪問條件
根據訪問控制位的數據塊(塊0~2),讀/寫訪問被指定為“從不”,“KeyA”,“KeyB”或“KeyA| B”。訪問控制位定義了應用程序和相應的適用的命令。
?讀/寫塊:允許讀和寫操作。
?數值塊:允許額外的值操作,增量、減量、轉移和恢復。
?制造商塊:只讀,不受訪問控制位設置影響!
?密鑰管理:在運輸時配置必須用于身份驗證的KeyA
執行命令
MIFARE Classic卡激活遵循ISO / IEC 14443 TypeA,MIFARE Classic卡被選中后,它可以使用ISO / IEC 14443命令停用,或可以執行MIFARE Classic命令。
ACK與NAK
Mifare classic 使用4位ACK/NAK,如下表所示:
個人化
SET_MOD_TYPE命令
認證命令
讀命令
寫命令
增、減、恢復命令
轉存命令
安全與保護
數據完整性
以下機制在非接通訊過程中于讀卡器與卡片之間實現,卡片確保數據正確性:
?每個數據塊有16位CRC
?為每個字節奇偶校驗位
?位數檢查
?位編碼區分“1”,“0”和“無信息”
?監測信道(協議序列和位流分析)
三輪認證
1. 卡從指定扇區的尾塊讀出密鑰和訪問權限,并產生 4 字節隨機數發送給讀卡器。
2. 讀卡器使用密鑰加密收到的隨機數,把加密結果連同自己產生的隨機數一起發送給卡(共 8 字節)。
3. 卡使用第 1 輪中讀出的密鑰驗證讀卡器返回的加密數據,如正確則把收到的隨機數加密后發送給讀卡器,否則不發送數據。
RF接口
RF-interface根據非接觸式智能卡ISO / IEC 14443標準實現。兩個方向的數據通信在每一幀的開始只有一個起始位。每個字節一位校驗位(奇校驗)。選擇塊的最低(LSB)的字節最選傳輸,最大幀長度為163位(16字節數據+ 2 CRC字節= 16′2′9 + 9 + 1起始位)。
資料參考
1.官方網站:http://www.nxp.com
2.MIFARE Classic EV1 1K - Mainstream contactless smart card IC for fast and easy solution development.pdf Rev. 3.0
3.MIFARE Platform Update &Infrastructure Introduction.Steven CJ Chang2012.Feb.27
4.《智能卡技術》
作者:SCPlatform
Email:SCPlatform@outlook.com
本文旨在學習、交流使用,任何對文章內容的出版、印刷,對文章中提到的技術的商業使用時,請注意可能存在的法律風險。
總結
以上是生活随笔為你收集整理的MIFARE Classic S50技术详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诛仙手游鬼道厉害吗
- 下一篇: dnf江山如画怎么升级(地下城与勇士)