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