動態密鑰在Mifare射頻IC卡識別系統中的應用
文章出處:http://www.nyfzw.net 作者:謝高生 易靈芝 王根平 人氣: 發表時間:2009年08月10日
0 引言
射頻識別(Radio Frequency Identification, 以下簡稱RFID)技術是利用無線射頻方式進行非接觸雙向通信并交換數據,以達到識別目的。與傳統的條碼或磁條識別技術相比,RFID技術具有非接觸、精度高、作用距離遠、可動態識別多個數據及應用環境適用性較好等優點,在自動化眾多領域中得到了很好的應用與發展。
Mifare射頻IC卡在硬件本身上具有比較強的安全機制,但射頻IC卡應用系統的開放性使它更容易越廣泛,由于在最初的RFID應用設計和開發過程中,沒有考慮安全問題,導致安全問題日益凸顯,已經成為制約RFID應用的重要因素?;诖?,針對RFID系統中射頻IC卡密鑰的使用單一、過于簡單等受到攻擊,人們可以輕易地對卡進行細致分析研究, 因此安全問題就稱為IC卡應用中的一個重要問題。隨著大規模集成電路技術的進步以及生產規模的不斷擴大,RFID產品的成本不斷降低,其應用也越來越暴露出本身缺點。本文結合TEA加密算法,引入動態密鑰方案,使得射頻IC卡操作一次,其應用扇區密鑰實時更新一次,從而大大增強了RFID系統的安全性能。
1 Mifare射頻IC卡中的密鑰使用及權限設置
射頻IC卡分為16個扇區,每區有4塊(塊0~塊3),共64塊,按塊號編址為0~63。第0扇區的塊0(即絕對地址塊0)用于存放芯片商、卡商相關代碼,塊1、塊2位數據塊。其他扇區的塊0、塊1、塊2為數據塊,用于存貯用戶數據;各個扇區的塊3為各扇區控制塊,用于存放密鑰A、存取控制條件設置、密鑰B。各區控制塊結構相同,如表1所示。
表1 各扇區控制塊3結構
(注:KeyA/B表示密鑰A或密鑰B,Never表示任何條件下都不能實現)
每個扇區的密鑰和存取控制都是獨立的,可以根據實際需要設定各自的密鑰及存取控制。扇區中每個塊的存取條件都是由密鑰和存取控制共同決定的,在存取控制中每個塊都有相應的三個控制位,三個控制位以正和反兩種形式存在于控制字節中,決定了該塊的訪問權限。數據塊的存取控制條件如表2所示。
射頻IC卡片中的其他扇區由于其有各自的密鑰,因此不能對其進行進一步的操作,如果想對其他扇區進行操作,必須完成各自的密鑰認證。認證過程中的任何一環出現差錯,整個認證將告失敗,必須從新開始。
2 TEA加密算法
極小加密算法(Tiny Encrypt Algorithm,簡稱TEA)是一種極為簡單的對稱加密算法,運用比較普遍,簡單、高速、有效,以加密解密速度快、實現簡單著稱。它不是通過算法的復雜性來提供安全保障,而是依賴加密的輪數。TEA算法最初是由劍橋計算機實驗室的David Wheeler和Roger Needham在1994年設計的,該算法采用一個128位的密鑰來加密64位的數據明文,能產生一個64位的密文,具有較好的抗差分性能。TEA算法使用了一個神秘常數δ作為倍數,其來源于黃金比率,以保證每一輪加密都不相同,TEA把它定義為(即為下面算法描述中的0x9E3779B9)。下面對TEA算法的實現分加密和解密兩個過程進行描述,加密輪數為32輪。
2.1 TEA加密
利用128位密鑰對64位的明文數據進行加密得到64位的密文數據,過程如下:
(1)初始化:
64位的明文數據分為兩部分x 和 y,每部分各占32位;Delta←0x9E3779B9;
Sum←0;;128位的密鑰分為4個部分:a、b、c、d,每部分各占32位。
(2)對明文數據進行32次循環迭代計算:
2.2 TEA解密
利用128位密鑰對64位的密文數據進行解密得到64位的明文數據,過程如下:
(1)初始化:
64位的明文數據分為兩部分x和Y,每部分都為32位;Delta ←Ox9E3779B9;Sum←Delta< 5;128位的密鑰分為4個部分:a、b、c、d,每部分都為32位。
(2)對密文數據進行32次循環迭代計算:
(3)合并解密結果:
r(0)←x
r(1)←y
在TEA算法中:<<為向左移位;>>為向右移位;⊕為異或邏輯運算。TEA算法迭代次數為32輪,實際上,TEA加密算法的迭代次數是可以改變的,32輪迭代很充分,16輪就足夠。
TEA加密算法實現相當簡單, 速度比DES算法(Data Encryption Standard,簡稱DES,一種數據加密標準的對稱分組密碼算法)要快3倍,加密密鑰128位,加密強度遠遠高于DES算法。另外,TEA也沒有DES那樣的轉換矩陣,占用存儲空間較少,而且可以采用DES模式運行,是一種很有前途的低成本加密算法。
3 動態密鑰
Mifare射頻IC卡在實際應用中多使用“一卡一密”的方案,也就是一張卡片每個應用扇區固定一個密鑰。Desfire MF3D40型號的卡也是采用這個方案,使用卡片唯一的序列號對系統主密鑰進行分散,得到不同的密鑰,然后寫入卡中作為卡片的主密鑰。盡管可以為系統提供一定的安全保護,但隨著現代計算機技術的迅速發展,攻擊者的力量也越來越強,尤其是在用戶卡的密鑰長度不夠的情況下,用戶卡受到攻擊是很容易的。因此,本文提出動態密鑰的方案,結合TEA加密技術,提高系統安全性能。
3.1 基本原理
動態密鑰的基本思想是在保持系統主密鑰不變的情況下,每讀一次用戶卡就使用本次通信中產生的數據 動態改寫用戶卡密鑰一次,以此來確保用戶卡的密鑰不斷更新,從而不被破解。數據A可以為當前通信時間、操作機具體標識或者隨機數的組合。
3.2 設計與實現
基于TEA加密算法的動態密鑰在Mifare射頻IC卡識別系統的具體設計與實現過程如下:本設計選用隨機數作為數據 (6字節),系統主密鑰為UK(6字節),用戶卡密鑰SK(6字節),射頻卡序列號SN(4字節),通過下列計算過程得到動態密鑰SK’。
式(5)中:奇偶填充是指分別計算序列號SN的奇數值(1的個數)和偶數值(0的個數),然后將這兩個字節的值填充至序列號的后面作為低位,使得SN為6個字節。在本次交易中產生的隨機數A (明文數據)經TEA加密存人事先協議好的射頻IC卡共享扇區,下次操作時,經TEA解密提取A,然后就可以計算出用戶卡的密鑰,其過程如下:
式(6)中,同樣的方法將明文隨機數 A 用奇偶填充至8個字再TEA加密成密文A進行存儲。
動態密鑰的流程框圖如圖1所示。
圖1基于TEA的動態密鑰實現流程
4 試驗結果
本試驗選用Microchip公司的一款中檔型8位閃存單片機PIC16F873A,外部晶振頻率11.0592MHz, 在MPLAB IDE開發環境下,采用C語言編程進行試驗測試。下面給出一組試驗結果:
系統主密鑰UK:0x43d63c72a59e(6Byte)
卡序列號SN:0xaa03230c(4Byte)
隨機數A:0x3f862b3d75 1 8(6Byte)
奇偶填充序列號得SN, :0xaa03230c0bl5
計算得到動態密鑰SK :0xe9d5 lf7eae8b
奇偶填充隨機數 得到明文隨機數包:0x3f862b3d75181917
TEA加密密鑰(分a,b,c,d四部分):
a=0x56c7f235;b=0xa2l6589c;
c=0xb4386ae5;d=0xbc675a17.
經TEA加密隨機數A得到密文隨機數包:
0x9d968a5e0f79e787經過TEA解密算法,可以成功還原隨機數A。試驗證明:加解密速度可達21.3kb/s,本設計的隨機數A加解密只費時約375μs。這樣的速度對系統運行影響很少,加上TEA算法的高可靠性,確保了系統的實時性和通信安全。
5 結束語
RFID射頻識別系統正贏得越來越廣泛的應用,在一定程度上安全敏感應用的滲透必然離不開系統安全性設計的要求。本文從射頻識別系統的安全性需求出發,提出了基于TEA加密算法的動態密鑰設計方案,并對其進行了試驗仿真具體實現,另外我們已經將該方案成功地應用于停車場管理系統中的車用RFID系統中,經過試驗和實踐都證明其具有很好的實時性,大大提升了射頻識別系統的安全性能。
(文/湘潭大學信息工程學院,深圳職業技術學院,謝高生 易靈芝 王根平)