本發(fā)明涉及射頻識別技術(shù)領(lǐng)域,特別涉及一種rfid系統(tǒng)中標(biāo)簽與讀寫器之間共享密鑰生成的方法。
背景技術(shù):
無線射頻識別技術(shù)(radiofrequencyidentification,rfid)是一種利用射頻信號實現(xiàn)的無接觸信息傳輸,并且通過所傳輸?shù)男畔磉_到識別的目的。現(xiàn)有的無線射頻識別系統(tǒng)一般包括三部分組成:標(biāo)簽、讀寫器、后端數(shù)據(jù)庫,因其系統(tǒng)中的標(biāo)簽具有體積小、成本低、易攜帶等優(yōu)點,rfid系統(tǒng)被運用在各個領(lǐng)域中。
在rfid系統(tǒng)中,標(biāo)簽與讀寫器之間經(jīng)常要進行通信,兩者在通信之前存在一個雙向認(rèn)證過程,當(dāng)且僅當(dāng)雙向認(rèn)證成功之后,才會進行后面的信息傳輸?,F(xiàn)有的rfid系統(tǒng)中,標(biāo)簽與讀寫器之間進行雙向認(rèn)證用到的共享密鑰都是事先設(shè)置好的,該方案或多或少存在一定的安全隱患。為了解決上述存在的安全問題,提出一種基于字合成運算的動態(tài)密鑰生成算法,該算法使用的具體場景是讀寫器為單個標(biāo)簽生成一個共享密鑰值。該算法中,共享密鑰不再是事先設(shè)置好,而是在認(rèn)證之前通過無線方式生成共享密鑰,共享密鑰最終是由讀寫器與標(biāo)簽各自生成的隨機數(shù)通過字合成運算加密得到的,從而確保密鑰的安全。
技術(shù)實現(xiàn)要素:
本發(fā)明提出了一種利用字合成運算來實現(xiàn)單標(biāo)簽密鑰無線生成的方法,通過此方法解決了rfid系統(tǒng)中標(biāo)簽與讀寫器之間共享密鑰無需事先設(shè)置好的問題。
為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案分為以下五個步驟:
(1)讀寫器r向標(biāo)簽ti發(fā)送密鑰生成請求命令;
(2)標(biāo)簽ti將自身存放的編號i發(fā)送給讀寫器r作為響應(yīng)信息;
(3)讀寫器r找到與編號i相對應(yīng)的idi_l與idi_r,且生成隨機數(shù)r1,然后計算a和b的值,最后將a、b的值一塊傳送給標(biāo)簽ti;
(4)標(biāo)簽ti通過a和b的值驗證讀寫器r的真?zhèn)?,然后生成隨機數(shù)r2,接著在計算d、e、ki的值,最后將d和e傳送給讀寫器r,同時將ki作為共享密鑰值;
(5)讀寫器r通過d和e的值來驗證標(biāo)簽ti的真?zhèn)?,為真,計算ki的值,并將ki作為共享密鑰值;否則,算法終止。
在步驟(1)中,讀寫器r向標(biāo)簽ti發(fā)送密鑰生成請求命令。
在步驟(2)中,標(biāo)簽ti將自身存放的編號i發(fā)送給讀寫器r作為響應(yīng)信息
在步驟(3)中,讀寫器r找到與編號i相對應(yīng)的idi_l與idi_r,且生成隨機數(shù)r1,然后計算a和b的值,最后將a、b的值一塊傳送給標(biāo)簽ti。
在步驟(4)中,標(biāo)簽ti通過a和b的值驗證讀寫器r的真?zhèn)?,然后生成隨機數(shù)r2,接著在計算d、e、ki的值,最后將d和e傳送給讀寫器r,同時將ki作為共享密鑰值。
在步驟(5)中,讀寫器r通過d和e的值來驗證標(biāo)簽ti的真?zhèn)?,為真,計算ki的值,并將ki作為共享密鑰值;否則,算法終止。
附圖說明
圖1是字合成運算流程圖;
圖2是單個標(biāo)簽密鑰生成算法流程圖。
具體實施方式
下面結(jié)合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限于此。
對協(xié)議中出現(xiàn)的符號進行如下說明:
r:讀寫器(可以理解成是讀寫器與后臺數(shù)據(jù)庫的一個整體);
t:標(biāo)簽;
ti:編號為i的標(biāo)簽;
i:標(biāo)簽的編號(假設(shè)標(biāo)簽數(shù)量為n個);
id_l:標(biāo)簽的左半部分標(biāo)識符;
id_r:標(biāo)簽的右半部分標(biāo)識符;
idi_l:標(biāo)簽ti的左半部分標(biāo)識符;
idi_r:標(biāo)簽ti的右半部分標(biāo)識符;
r1:讀寫器產(chǎn)生的隨機數(shù);
r2:標(biāo)簽產(chǎn)生的隨機數(shù);
syn():字合成運算;
⊕:異或運算;
﹠:與運算。
設(shè)x、y是兩個具有l(wèi)位的二進制數(shù),x=x1x2x3...xl,y=y(tǒng)1y2y3...yl;其中,xi,yi取值范圍為{0,1},i=1,2,..l,syn(x,y)=y(tǒng)l-m+1yl-m+2···ylx1x2···xl-m;字合成運算syn(x,y)是指由x的前l(fā)-m位與y的后m位組合而形成新的l位數(shù)組;其中m的設(shè)定為:m=hw(y),也可以為m=l-hw(y);或者是m=hw(x),也可以為m=l-hw(x);或者是m=hd(x,y),也可以為m=l-hd(x,y);hw(x)表示為x的漢明重量,hw(y)表示為y的漢明重量,hd(x,y)表示為x與y的漢明距離。
例如,取長度l=12,設(shè)x=101001100011,y=100101101101,設(shè)定m=hw(y)=7,則根據(jù)上述字合成運算的定義可以得到syn(x,y)=110110110100,具體運算過程如圖1所示。該運算只需要移位以及按位或運算既可以實現(xiàn),從而可以有效的降低標(biāo)簽的計算量和存儲空間,最終達到降低標(biāo)簽成本的目標(biāo)。上例中m可以根據(jù)需要設(shè)定其他不同的數(shù)值,在這里不再一一的列出其實現(xiàn)的過程,并且在運用過程中m的值要保密,以防攻擊者惡意攻擊,m的值保密,使得攻擊者沒有辦法進行暴力破解攻擊。
為了使協(xié)議具有一定的應(yīng)用價值,對協(xié)議使用的環(huán)境作出如下假設(shè):標(biāo)簽與讀寫器之間的通信信道是不安全的,讀寫器與后臺數(shù)據(jù)庫之間的通信信道是安全的,因此將讀寫器與后臺數(shù)據(jù)庫看成一個整體。
同時假設(shè)標(biāo)簽與讀寫器之間共享的idi_l與idi_r是安全可靠的,且攻擊者事先不知曉該信息。單個標(biāo)簽密鑰無線生成算法具體過程如圖2所示:
對圖2中出現(xiàn)的a、b、d、e的說明:
a=idi_l⊕r1;
b=idi_r⊕r1;
d=idi_l⊕r2;
e=idi_r⊕r1⊕r2;
ki=syn(r1⊕r2,r1﹠r2)。
整個密鑰無線生成算法步驟描述如下:
(1)讀寫器r向標(biāo)簽ti發(fā)送密鑰生成請求命令query,開始單個標(biāo)簽密鑰無線生成算法。
(2)標(biāo)簽ti在接收到讀寫器r發(fā)送來的信息后,將自身存放的編號i發(fā)送給讀寫器r作為響應(yīng)信息。
(3)讀寫器r在接收到標(biāo)簽ti發(fā)送來的信息后,先比對數(shù)據(jù)庫中是否存放與i相等的該編號,若不存在,算法立刻終止;若存在,接著讀寫器r找到與編號i相對應(yīng)的idi_l與idi_r,然后讀寫器r生成一個長度為l位的隨機數(shù)r1,再用生成的隨機數(shù)r1、自身存放的與編號i相對應(yīng)的idi_l與idi_r分別來計算a和b的值,最后將a和b的值一并傳送給標(biāo)簽ti。
(4)標(biāo)簽ti在接收到讀寫器r發(fā)送來的信息后,首先標(biāo)簽ti用接收到的a、自身存放的idi_l來計算idi_l⊕a,用接收到的b、自身存放的idi_r來計算idi_r⊕b,然后比對idi_l⊕a的值與idi_r⊕b的值是否相等。
若兩者的值不相等,說明讀寫器是偽造的,密鑰生成算法立刻終止;若兩者的值相等,即可通過計算得出隨機數(shù)r1的值,接著標(biāo)簽ti生成一個長度為l位的隨機數(shù)r2,用生成的隨機數(shù)r2、計算得到的隨機數(shù)r1、自身存放的idi_l與idi_r分別來計算d和e的值,用生成的隨機數(shù)r2、計算得到的隨機數(shù)r1來計算ki的值,并將ki作為標(biāo)簽ti與讀寫器r之間的共享生成密鑰值,最后將d和e的值一并傳送給讀寫器r。
(5)讀寫器r在接收到標(biāo)簽ti發(fā)送來的信息后,首先讀寫器r用接收到的d、自身存放的idi_l來計算idi_l⊕d,用接收到的e、自身存放的idi_r、自身生成的隨機數(shù)r1來計算idi_r⊕r1⊕e,然后比對idi_l⊕d的值與idi_r⊕r1⊕e的值是否相等。
若兩者的值不相等,說明標(biāo)簽ti是偽造的,密鑰無線生成算法立刻終止;若兩者的值相等,即可通過計算得到隨機數(shù)r2的值,接著讀寫器r用自身生成的隨機數(shù)r1、計算得到的隨機數(shù)r2來計算ki的值,并將ki作為標(biāo)簽ti與讀寫器r之間的共享生成密鑰值。到此標(biāo)簽ti與讀寫器r之間的共享密鑰通過無線生成的方法完成,單個標(biāo)簽密鑰無線生成算法結(jié)束。
攻擊者偽裝成標(biāo)簽發(fā)起假冒攻擊。當(dāng)讀寫器向標(biāo)簽發(fā)送密鑰生成命令的時候,攻擊者偽裝成合法的標(biāo)簽并向讀寫器發(fā)送響應(yīng)信息。因攻擊者事先不知道標(biāo)簽ti的左右兩部分標(biāo)識符idi_l與idi_r的值,因此攻擊者在第四步驟中無法通過計算得出正確的隨機數(shù)r1的值;當(dāng)讀寫器接收到e和d的值之后,讀寫器在第五步驟中可以簡單的驗證出標(biāo)簽是攻擊者偽造的。當(dāng)讀寫器判斷出標(biāo)簽是攻擊者偽造之后,密鑰生成算法將會立刻終止,而到此時為止,攻擊者并沒有獲取任何有用的隱私信息,故該算法可以抵抗假冒攻擊。
攻擊者偽裝成讀寫器發(fā)起假冒攻擊。當(dāng)攻擊者偽裝成合法的讀寫器向標(biāo)簽發(fā)送密鑰生成命令的時候,合法的標(biāo)簽會向攻擊者發(fā)送編號i作為響應(yīng)信息。因攻擊者事先不知道標(biāo)簽ti的左右兩部分標(biāo)識符idi_l與idi_r的值,因此攻擊者在第三步驟中無法利用正確的idi_l與idi_r計算出a和b的值,而當(dāng)合法的標(biāo)簽在接收到a和b之后,會在第四步驟中驗證出讀寫器的真?zhèn)?,判斷出讀寫器是攻擊者偽造的,密鑰生成算法將會立刻終止,而到此時為止,攻擊者并沒有獲取任何有用的隱私信息,故該算法可以抵抗假冒攻擊。
攻擊者通過監(jiān)聽一個完整的通信過程可以獲取a、b、d、e的值,但這些信息都是密文,且計算過程中用到的信息idi_l、idi_r、r1、r2對于攻擊者來說都是未知的。比如攻擊者對消息a進行強行破解攻擊,在a=idi_l⊕r1式子中,idi_l和r1攻擊者都不知曉,且idi_l在整個通信過程中沒有明文出現(xiàn),隨機數(shù)r1是由讀寫器端隨機產(chǎn)生的且無法提前預(yù)測,因此攻擊者無法暴力破解出任何有用的隱私信息,同樣的道理,對于其他信息,攻擊者也還是不能獲取任何有用的隱私信息,故該算法可以抵抗暴力破解攻擊。
攻擊者試圖通過截獲的信息a、b、d、e來追蹤定位標(biāo)簽的位置,但攻擊者無法成功。消息a、b、d、e中都有用到隨機數(shù),且隨機數(shù)是隨機產(chǎn)生,攻擊者更是無法提前預(yù)測知曉,因此消息a、b、d、e的值每一輪都是不同的,從而導(dǎo)致攻擊者無法定位分析出標(biāo)簽的具體位置,攻擊者也就沒辦法進行追蹤攻擊,故該算法可以抵抗追蹤攻擊。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。