基于MD5和DES算法的RFID標(biāo)簽簽發(fā)和驗(yàn)證機(jī)制
引 言
RFID(Radio Frequency Identification, 射頻識(shí)別技術(shù)) 是自動(dòng)識(shí)別技術(shù)的一種,通過(guò)無(wú)線射頻方式進(jìn)行非接觸雙向數(shù)據(jù)通信,對(duì)目標(biāo)加以識(shí)別并獲取相關(guān)數(shù)據(jù)。它的主要核心部件是電子標(biāo)簽,通過(guò)相距幾厘米到幾米距離內(nèi)讀寫器發(fā)射的無(wú)線電波,可以讀取電子標(biāo)簽內(nèi)儲(chǔ)存的信息,識(shí)別電子標(biāo)簽代表的物品、人和器具的身份。射頻識(shí)別技術(shù)具有很多突出的優(yōu)點(diǎn) :RFID 技術(shù)不需要人工干預(yù)、不需要直接接觸、不需要光學(xué)可視即可完成信息輸入和處理,可工作于各種惡劣環(huán)境, 可識(shí)別高速運(yùn)動(dòng)物體并可同時(shí)識(shí)別多個(gè)標(biāo)簽,操作快捷方便, 實(shí)現(xiàn)了無(wú)源和免接觸操作,應(yīng)用便利、無(wú)機(jī)械磨損、壽命長(zhǎng)。目前 RFID 技術(shù)已在倉(cāng)儲(chǔ)、物流、交通、海關(guān)、追溯、金融等諸多領(lǐng)域得到了廣泛應(yīng)用,其安全特性的重要性不言而喻, 它決定了各個(gè) RFID 應(yīng)用項(xiàng)目的成敗。
RFID標(biāo)簽的簽發(fā)是整個(gè)RFID應(yīng)用鏈的起點(diǎn)和源點(diǎn),是整個(gè)RFID應(yīng)用的安全體系中最重要的核心環(huán)節(jié)之一,是后續(xù)安全要素的基礎(chǔ)和前提。同樣,RFID標(biāo)簽的驗(yàn)證也是RFID 應(yīng)用安全體系的核心環(huán)節(jié)和重要節(jié)點(diǎn)。本文通過(guò)引入MD5算法和DES算法,從技術(shù)上提高了 RFID標(biāo)簽應(yīng)用的安全特性, 有效減低了RFID標(biāo)簽被偽造、篡改和攻擊的風(fēng)險(xiǎn)。
1 MD5和 DES算法
MD5(Message-Digest Algorithm 5[1], 信息摘要算法 5) 用于確保信息傳輸完整一致,是計(jì)算機(jī)廣泛使用的摘要算法之一。作為典型應(yīng)用,MD5 可對(duì)一段信息(Message)產(chǎn)生信息摘要(Message-Digest),以防止被篡改。MD5 報(bào)文摘要算法將任意長(zhǎng)度的信息作為輸入值,并將其換算成一個(gè) 128 位長(zhǎng)度的" 指紋信息" 或" 報(bào)文摘要" 值來(lái)代表這個(gè)輸入值,并以換算后的值作為結(jié)果。
一般情況下,MD5算法是非常安全的。MD5算法的優(yōu)勢(shì)在于其使用不需要支付版權(quán)費(fèi)用的,且已有各種計(jì)算機(jī)語(yǔ)言的算法實(shí)現(xiàn)。
DES(DataEncryptionStandard)[2]是在 1975年由 IBM公司公開發(fā)表的。DES是對(duì)稱加密算法體系中的代表,在計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)中廣泛使用。在DES 算法中,明文按 64位進(jìn)行分組,密鑰長(zhǎng) 64位,密鑰事實(shí)上是 56位參與DES運(yùn)算分組后的明文組和 56位的密鑰按位替代或交換的方法形成密文組的加密方法。
DES 算法具有很高的安全性,到目前為止,除了用窮舉搜索法對(duì)DES 算法進(jìn)行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。
由于MD5 算法存在一定的碰撞幾率[3],為避免對(duì)RFID 標(biāo)簽摘要信息的惡意攻擊、復(fù)制和克隆,本文提出,在對(duì)RFID 核心數(shù)據(jù)進(jìn)行散列算法獲得摘要信息后,用DES 算法予以加密,從而避免對(duì)現(xiàn)有 RFID 標(biāo)簽數(shù)據(jù)的篡改、復(fù)制和克隆,以及非授權(quán)RFID 標(biāo)簽的出現(xiàn),提高了RFID 標(biāo)簽的安全可靠性。
2 RFID標(biāo)簽的簽發(fā)
RFID 標(biāo)簽的簽發(fā),是指對(duì)對(duì)即將進(jìn)入RFID 應(yīng)用領(lǐng)域的標(biāo)簽進(jìn)行發(fā)行機(jī)構(gòu)的數(shù)字簽發(fā),賦予其應(yīng)用屬性和特征,標(biāo)明該標(biāo)簽的作用域、適用范圍和發(fā)行機(jī)構(gòu),避免與其他標(biāo)簽或業(yè)務(wù)系統(tǒng)的混用、誤用、非授權(quán)使用等,并盡量使其具備防偽造、防篡改和防攻擊等能力的過(guò)程。通常,對(duì)RFID 的標(biāo)簽需經(jīng)過(guò)系統(tǒng)權(quán)限驗(yàn)證、讀取預(yù)發(fā)行標(biāo)簽的基本特征數(shù)據(jù)并驗(yàn)證,對(duì)標(biāo)簽進(jìn)行數(shù)字簽名等若干步驟。在本文中,如圖 1 所示, 我們將整個(gè)簽發(fā)過(guò)程分為:
①驗(yàn)證標(biāo)簽發(fā)行權(quán)限 ;②驗(yàn)證使用者權(quán)限 ;③讀標(biāo)簽特征數(shù)據(jù) ;④讀標(biāo)簽 TID ;⑤對(duì) TID、系統(tǒng)預(yù)設(shè)的標(biāo)簽編號(hào)以及其他的標(biāo)簽特征數(shù)據(jù)進(jìn)行MD5 散列算法并進(jìn)行DES 加密;
⑥將⑤的結(jié)果寫入標(biāo)簽發(fā)行數(shù)據(jù)區(qū)。
本發(fā)行簽發(fā)模式的最大特點(diǎn)是將RFID 標(biāo)簽固有的物理特征數(shù)據(jù)TID 納入了MD5 數(shù)據(jù)摘要并進(jìn)行了DES 數(shù)據(jù)加密, 結(jié)合后續(xù)的驗(yàn)證機(jī)制,可有效避免 RFID 標(biāo)簽被偽造、克隆或篡改,提高了RFID 標(biāo)簽的安全防偽能力。
簽發(fā)過(guò)程的部分核心源碼實(shí)現(xiàn)如下:
Procedure issue
begin
...
tagValue=tagBasicValue+tagTid ;
tagMD5Value :=MD5Encrypt(tagValue);
//MD5 散列,得到信息摘要
tagDESValue :=DESEncrypt(tagMD5Value,Password);
//DES 加密
Res :=WriteLabelBlock(Handle_Scanner, tagDESValue,USER,@mask,@AccessPassword);
// 結(jié)果寫入標(biāo)簽
...
end ;
3 RFID標(biāo)簽的驗(yàn)證
RFID 標(biāo)簽的驗(yàn)證是RFID 應(yīng)用系統(tǒng)對(duì)本其使用的RFID 的標(biāo)簽的合法性進(jìn)行確認(rèn)的過(guò)程。本文提出的RFID 標(biāo)簽的驗(yàn)證基本流程如圖 2 所示。
RFID 標(biāo)簽驗(yàn)證的基本流程包括:①驗(yàn)證 RFID 讀權(quán)限;②讀標(biāo)簽 TID、標(biāo)簽編號(hào)及其他標(biāo)簽特征數(shù)據(jù),讀標(biāo)簽發(fā)行數(shù)據(jù)區(qū)數(shù)據(jù) ;③ DES 解密標(biāo)簽散列數(shù)據(jù)、HASH(TID+ 標(biāo)簽編號(hào) + 其他標(biāo)簽特征數(shù)據(jù));④比較解密數(shù)據(jù)與 HASH 散列數(shù)據(jù) ;⑤簽名認(rèn)證完畢。
結(jié)合 RFID 標(biāo)簽的簽發(fā)流程不難看出, 通過(guò)對(duì)標(biāo)簽固有的物理特征數(shù)據(jù)TID、標(biāo)簽編號(hào)和其他標(biāo)簽特征數(shù)據(jù)進(jìn)行HASH 散列,并將結(jié)果與解密后的發(fā)行簽發(fā)數(shù)據(jù)進(jìn)行比較, 可有效驗(yàn)證 RFID 標(biāo)簽的合法性,降低了 RFID 標(biāo)簽被偽造和非法入侵的風(fēng)險(xiǎn),提高了 RFID 應(yīng)用系統(tǒng)的安全保障。
驗(yàn)證過(guò)程的部分核心源碼實(shí)現(xiàn)如下:
Procedure Verification
begin
res :=ReadWordBlock(Handle_Scanner,USER,@IDTemp, @ nCounter);
if res=_OK then
begin
for j :=0 to nCounter do
begin
VerifyValues := VerifyValues +chr(IDTemp [j]);
End ;
TidMD5Value :=DESDecode(VerifyValues,,Password);
//DES 解密
end ;
ReadLabelID(Handle_Scanner,Tid,Tid_len,@mask,@ IDBuffer,@nCounter);// 讀
for j :=0 to nCounter do
begin
TidValues := TidValues +chr(IDBuffer [j]);
End ;
If TidMD5Value = MD5Encrypt(TidValues)then
// 比較 MD5 值
Begin
...
End;
end;
結(jié) 語(yǔ)
本文針對(duì) RFID 標(biāo)簽的簽發(fā)和驗(yàn)證提出了基于DES 和HASH 算法的鏈?zhǔn)浇Y(jié)構(gòu),有效解決了 RFID 標(biāo)簽可能存在的 可能被偽造、盜用或非法入侵的安全隱患,提升了 RFID 標(biāo)簽 的安全和可用性。 在現(xiàn)有的諸多 RFID 應(yīng)用體系框架中,還存在著很多安 全隱患,亟待相關(guān) RFID 從業(yè)人員從技術(shù)或管理角度予以解決, 這也將是我們下一步的工作內(nèi)容和研究方向。