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