MIFARE Classic是恩智浦半導體開發的可用於非接觸式智能卡,符合ISO/IEC 14443 A類標準。用於公共交通票證等應用,還可用於各種其餘應用有S20,S50(M1),S70幾種規格,主要是根據存儲器容量劃分,存儲器容量分別有320B,1K,4K。具備如下防干擾、輕鬆簡便以及安全等特性:算法
智能防干擾功能容許同時有多張卡在現場工做。防干擾算法分別選擇每一張卡,並確保選定的卡正確執行交易,不會受到現場另外一張卡的干擾。編程
針對輕鬆集成和使用簡便而設計,容許在不到100 ms的時間內完成整個票證交易。安全
· 每器件具備製造商編程的7字節UID或4字節NUID標識符less
· 支持隨機ID網站
· 三道雙向認證(ISO/IEC DIS 9798-2)編碼
· 每扇區提供兩組獨立的密鑰,支持多用途密鑰體系加密
本文以S50進行着重講解,對於S20及S70可訪問官方網站詳細瞭解。設計
對於S50來講,芯片由1KB E2P,非接接口,數字控制單元組成。其中:3d
· 調制解調器(Modulator/demodulator)rest
· 整流器(Rectifier)
· 時鐘再生器(Clock regenerator)
· 上電覆位(Power-On Reset )
· 電壓調節器(Voltage regulator)
執行流程包括三個部分,分別是初始化及選擇過程,認證過程以及數據操做過程,以下圖所示:
· 呼叫
讀卡器發送 REQA/WUPA 命令,卡返回 ATQA 的過程。
· 防衝突循環
在防衝突循環過程當中將讀取卡片的ID,若是存在多張卡,則經過ID進行區別,並選擇一張卡進一步處理,其它卡回到 IDLE 狀態等待REQA/WUPA 命令。
· 選卡
讀寫器發送 SELECT,卡返回 SAK 的過程, SAK 指示當前卡是否支持 14443-4 協議和 UID 是否完整。
· 三輪認證
選卡後,讀寫器指定後續讀寫的存儲器位置,並用相應密鑰進行三輪認證。認證成功後,全部的存儲器操做都是加密的。
· 存儲器操做
認證後可執行下列操做:
這是第 0 區的第 0 塊存儲製造商代碼,它含有 UID 和廠商數據,只讀。若是是4字節UID,則0~3字節爲序列號,第4字節爲校驗字節(異或值),第5字節國卡片容量,第六、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 可用於用戶數據。此字節享有與字節 六、 七、 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命令。
Mifare classic 使用4位ACK/NAK,以下表所示:
如下機制在非接通信過程當中於讀卡器與卡片之間實現,卡片確保數據正確性:
•每一個數據塊有16位CRC
•爲每一個字節奇偶校驗位
•位數檢查
•位編碼區分「1」,「0」和「無信息」
•監測信道(協議序列和位流分析)
1. 卡從指定扇區的尾塊讀出密鑰和訪問權限,併產生 4 字節隨機數發送給讀卡器。
2. 讀卡器使用密鑰加密收到的隨機數,把加密結果連同本身產生的隨機數一塊兒發送給卡(共 8 字節)。
3. 卡使用第 1 輪中讀出的密鑰驗證讀卡器返回的加密數據,如正確則把收到的隨機數加密後發送給讀卡器,不然不發送數據。
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 Chang 2012.Feb.27
4.《智能卡技術》