一種基于動(dòng)態(tài)共享密鑰的移動(dòng)rfid雙向認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及無線射頻識(shí)別技術(shù),特別是涉及移動(dòng)無線射頻識(shí)別有關(guān)的基于隨機(jī)動(dòng) 態(tài)共享密鑰的安全認(rèn)證方法。
【背景技術(shù)】
[0002] 無線射頻識(shí)別(RadioFrequencyIdentification,RFID)是物聯(lián)網(wǎng)的關(guān)鍵實(shí)現(xiàn)技 術(shù)之一。RFID在推動(dòng)物聯(lián)網(wǎng)快速發(fā)展的同時(shí)伴隨著嚴(yán)重的安全威脅,其中最重要的兩方面 是身份認(rèn)證和隱私保護(hù)。在移動(dòng)RFID系統(tǒng)中,可移動(dòng)閱讀器與后臺(tái)數(shù)據(jù)庫、可移動(dòng)閱讀器 與標(biāo)簽之間均以無線信號(hào)方式在不安全的開放信道進(jìn)行通信。因此移動(dòng)RFID系統(tǒng)面臨的 安全風(fēng)險(xiǎn)也更加嚴(yán)重和多樣化。
[0003] 在國內(nèi)外學(xué)者提出的認(rèn)證方法中,大多數(shù)是針對(duì)傳統(tǒng)的RFID系統(tǒng)進(jìn)行設(shè)計(jì),這些 方法以固定式閱讀器有線連接后臺(tái)數(shù)據(jù)庫并進(jìn)行安全通信為前提,因此不能適用于閱讀器 和后臺(tái)數(shù)據(jù)庫以無線信號(hào)方式進(jìn)行不安全通信的移動(dòng)RFID系統(tǒng)。在移動(dòng)RFID認(rèn)證方法中, 采用動(dòng)態(tài)更新共享密鑰的機(jī)制可以有效解決密鑰管理困難的問題,但卻存在一個(gè)非常重要 的數(shù)據(jù)同步問題:后臺(tái)數(shù)據(jù)庫中所保存的標(biāo)簽密鑰必須和存儲(chǔ)在標(biāo)簽中的密鑰同步進(jìn)行更 新。然而在RFID系統(tǒng)中,低成本的標(biāo)簽依靠外部電磁感應(yīng)供給能量,一旦出現(xiàn)掉電或通信 阻塞,就會(huì)造成后臺(tái)數(shù)據(jù)庫和標(biāo)簽之間的共享密鑰不一致,使得在下一次認(rèn)證過程中合法 標(biāo)簽無法通過認(rèn)證和識(shí)別。此外,如果更新共享密鑰的參數(shù)不具有機(jī)密性,使得通過截獲不 安全通道中傳輸?shù)臄?shù)據(jù)進(jìn)而計(jì)算出更新后的密鑰,則會(huì)帶來密鑰泄漏的風(fēng)險(xiǎn)。因此,密鑰的 安全同步更新和遭受攻擊后的同步機(jī)制成為此類移動(dòng)RFID認(rèn)證協(xié)議的難題。
[0004] 目前的認(rèn)證方法只能在一定程度上防范去同步化攻擊,且不能防范連續(xù)發(fā)生超過 2次以上的去同步化攻擊;還有的認(rèn)證方法當(dāng)偽造標(biāo)簽和相應(yīng)的合法標(biāo)簽在閱讀器無線信 號(hào)覆蓋范圍內(nèi)時(shí),敵手可通過偽造的第三方偽造標(biāo)簽欺騙合法閱讀器解鎖并顯示合法標(biāo)簽 的信息,因此不能防范標(biāo)簽偽造且存在中間人攻擊和重放攻擊漏洞,也不能防范標(biāo)簽偽造 和重放攻擊。
【發(fā)明內(nèi)容】
[0005] 為解決采用動(dòng)態(tài)共享密鑰的移動(dòng)RFID認(rèn)證方法中不能徹底防范去同步化攻擊、 動(dòng)態(tài)共享密鑰無法安全更新問題,以及易遭受各種安全攻擊問題,本發(fā)明提出一種基于動(dòng) 態(tài)共享密鑰的移動(dòng)RFID雙向認(rèn)證方法,在防范針對(duì)移動(dòng)RFID的安全攻擊的同時(shí),具有較高 的標(biāo)簽性能。
[0006] 為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案如下:
[0007] -、初始化階段:后臺(tái)數(shù)據(jù)庫設(shè)置四張數(shù)據(jù)表用于存儲(chǔ)標(biāo)簽和閱讀器與后臺(tái)數(shù)據(jù) 庫的共享密鑰和身份標(biāo)識(shí)信息,其中標(biāo)簽的當(dāng)前信息表Tag_c_au中存儲(chǔ)標(biāo)簽ID、當(dāng)前共享 密鑰、標(biāo)簽ID以當(dāng)前密鑰為參數(shù)的Hash碼;標(biāo)簽的歷史信息表Tag_h_au中存儲(chǔ)標(biāo)簽ID、 標(biāo)簽歷史共享密鑰、標(biāo)簽ID以歷史共享密鑰為參數(shù)的Hash碼;閱讀器當(dāng)前信息表Reader_ c_au中存儲(chǔ)閱讀器身份標(biāo)識(shí)和當(dāng)前密鑰;閱讀器歷史信息表Reader_h_au中存儲(chǔ)閱讀器身 份標(biāo)識(shí)和歷史密鑰;每個(gè)標(biāo)簽中存儲(chǔ)與后臺(tái)數(shù)據(jù)庫的共享密鑰,并包含一個(gè)單向Hash函數(shù) 和偽隨機(jī)數(shù)生成器;閱讀器存儲(chǔ)和后臺(tái)數(shù)據(jù)庫的共享密鑰,并包含同樣的Hash函數(shù)和偽隨 機(jī)數(shù)生成器;
[0008] 二、認(rèn)證階段:
[0009] 第一步:閱讀器向標(biāo)簽發(fā)送認(rèn)證請(qǐng)求Query;
[0010] 第二步:標(biāo)簽產(chǎn)生隨機(jī)數(shù)St并計(jì)算單向哈希函數(shù)4;(碼)、和偽隨機(jī)數(shù) ⑷,然后將^(碼)、[;和層\從)發(fā)送給閱讀器,其中IDt為標(biāo)簽的ID標(biāo)識(shí), I;為標(biāo)簽與后臺(tái)數(shù)據(jù)庫的當(dāng)前共享密鑰,<+1為標(biāo)簽與后臺(tái)數(shù)據(jù)庫更新后的共享密鑰,< 為閱讀器與后臺(tái)數(shù)據(jù)庫的當(dāng)前共享密鑰;
[0011] 第三步:閱讀器生成隨機(jī)數(shù)S,,計(jì)算乂叫U,然后將 4(JA)、<?&、規(guī)%〇5,)和Sr以及~(/D,. ||幻發(fā)送給后臺(tái)數(shù)據(jù)庫,其中IDr為閱讀器的ID 標(biāo)識(shí),;
[0012] 第四步:后臺(tái)數(shù)據(jù)庫分別對(duì)閱讀器和標(biāo)簽進(jìn)行認(rèn)證;
[0013] 1)閱讀器認(rèn)證:后臺(tái)數(shù)據(jù)庫遍歷Reader_C_au數(shù)據(jù)表并根據(jù)接收到的&計(jì)算每 個(gè)(/A+1|M,然后和接收到的(/A+IIM進(jìn)行比較,若存在一致,則閱讀器通過認(rèn)證;若 不存在一致,則遍歷Reader_h_au數(shù)據(jù)表計(jì)算每個(gè)\ II&)并和接收到的〃f0^ || 5;)進(jìn) 行比較,若存在一致,則閱讀器通過認(rèn)證;若兩次遍歷均不存在一致的情況,則閱讀器非法, 認(rèn)證失?。?br>[0014] 2)標(biāo)簽認(rèn)證:在閱讀器認(rèn)證通過的情況下,后臺(tái)數(shù)據(jù)庫根據(jù)^ (埤)查詢Tag_ c_au數(shù)據(jù)表:(1)若在Tag_c_au表查詢到結(jié)果,則取出€,然后和接收到的進(jìn)行 異或運(yùn)算,可得5; = < ? & ?X;,然后進(jìn)行_\6)運(yùn)算,并和接收到的進(jìn)行比 較,若一致,則標(biāo)簽通過認(rèn)證,若不一致,則標(biāo)簽非法,認(rèn)證結(jié)束;(2)若在Tag_c_au數(shù)據(jù) 表查詢不到結(jié)果,則遍歷Tag_h_au數(shù)據(jù)表進(jìn)行查詢,如果查詢到結(jié)果,取出<,然后進(jìn)行 K?& ?尺;5;)運(yùn)算,并和接收到的進(jìn)行比較,若一至女,則標(biāo)簽通過認(rèn) 證,若不一致,則標(biāo)簽非法,認(rèn)證結(jié)束;3)若在Tag_c_au表和Tag_c_au表均查詢不到結(jié)果, 說明標(biāo)簽非法,認(rèn)證失敗;
[0015] 3)在閱讀器和標(biāo)簽均通過認(rèn)證的情況下:
[0016] (1)后臺(tái)數(shù)據(jù)庫計(jì)算C1 = ,并將Reader_C_aU中IDr對(duì)應(yīng)的當(dāng)前共享密 鑰更新為<+1,后臺(tái)數(shù)據(jù)庫根據(jù)第四步閱讀器認(rèn)證過程中進(jìn)行一致性比較的來源數(shù)據(jù)表進(jìn) 行判斷和操作:如果是Reader_c_au數(shù)據(jù)表,貝1」后臺(tái)數(shù)據(jù)庫刪除Reader_h_au數(shù)據(jù)表中該閱 讀器對(duì)應(yīng)的數(shù)據(jù),然后將〃和1化添加到Reader_h_au數(shù)據(jù)表中;如果是Reader_h_au數(shù)據(jù) 表,貝U不對(duì)Reader_h_au數(shù)據(jù)表進(jìn)行任何操作;
[0017] (2)后臺(tái)數(shù)據(jù)庫計(jì)算<+1 = 〃H's(◎,并將Tag_c_au中IDt對(duì)應(yīng)的當(dāng)前共享密鑰更 新為<+1、標(biāo)簽ID的Hash碼更新為〃,然后根據(jù)第四步標(biāo)簽認(rèn)證過程中查詢到IDt的 來源數(shù)據(jù)表進(jìn)行判斷和計(jì)算:如果是Tag_c_au數(shù)據(jù)表,后臺(tái)數(shù)據(jù)庫刪除Tag_h_au數(shù)據(jù)表中 該標(biāo)簽對(duì)應(yīng)的數(shù)據(jù),然后將&;、IDt和添加到Tag_h_au數(shù)據(jù)表中;如果是Tag_h_au 數(shù)據(jù)表,則不對(duì)Tag_h_au數(shù)據(jù)表進(jìn)行任何操作;
[0018] 4)后臺(tái)數(shù)據(jù)庫使用與閱讀器的共享密鑰< 加密計(jì)算對(duì)稱加密算法& 然 后將\ (5JS,.)和W|| /A)轉(zhuǎn)發(fā)給閱讀器;
[0019] 第五步:閱讀器使用與后臺(tái)數(shù)據(jù)庫的共享密鑰解密接收到的&KIK),計(jì)算 ,然后根據(jù)獲得的&和原來的隨機(jī)數(shù)L進(jìn)行比較,若一致,則后臺(tái)數(shù)據(jù)庫 通過認(rèn)證,閱讀器使用獲得的st更新共享密鑰<+1 ,然后發(fā)送W給 標(biāo)簽;若比較不一致,則認(rèn)證失敗。
[0020] 第六步:標(biāo)簽接收到數(shù)據(jù)后,計(jì)算II)并和接收到的raMVXII/A) 進(jìn)行比較,若比較不一致,認(rèn)證失??;若一致,則閱讀器合法,標(biāo)簽更新共享密鑰 < +1 = /^VG:S (<)。本發(fā)明有益效果:
[0021] 采用本發(fā)明后,在認(rèn)證時(shí),可防范針對(duì)RFID系統(tǒng)的位置追蹤、重放攻擊、去同步化 攻擊、中間人攻擊等多項(xiàng)安全威脅,彌補(bǔ)同類RFID認(rèn)證方法存在的安全缺陷。
[0022] 另外,本發(fā)明還能夠?qū)崿F(xiàn)共享密鑰隨機(jī)動(dòng)態(tài)安全更新,且不能通過認(rèn)證過程中的 數(shù)據(jù)進(jìn)行推導(dǎo),標(biāo)簽效率性能更好。
【附圖說明】
[0023] 圖1是本發(fā)明的認(rèn)證基本流程圖。
【具體實(shí)施方式】
[0024] 符號(hào)說明
[0025] 表1符號(hào)說明
[0026]
[0027] 以下結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0028] 初始化階段:系統(tǒng)初始化時(shí),后臺(tái)數(shù)據(jù)庫設(shè)置四張數(shù)據(jù)表用于存儲(chǔ)標(biāo)簽和閱讀器 與后臺(tái)數(shù)據(jù)庫的共享密鑰和身份標(biāo)識(shí)信息。其中標(biāo)簽的當(dāng)前信息表Tag_c_au中存儲(chǔ)標(biāo)簽 ID、當(dāng)前共享密鑰、標(biāo)簽ID以當(dāng)前密鑰為參數(shù)的Hash碼;標(biāo)簽的歷史信息表Tag_h_au中存 儲(chǔ)標(biāo)簽ID、標(biāo)簽歷史共享密鑰、標(biāo)簽ID以歷史共享密鑰為參數(shù)的Hash碼;閱讀器當(dāng)前信息 表Reader_c_au中存儲(chǔ)閱讀器身份標(biāo)識(shí)和當(dāng)前密鑰;閱讀器歷史信息表Reader_h_au中存 儲(chǔ)閱讀器身份標(biāo)識(shí)和歷史密鑰。每個(gè)標(biāo)簽中存儲(chǔ)與后臺(tái)數(shù)據(jù)庫的共享密鑰,并包含一個(gè)單 向Hash函數(shù)和偽隨機(jī)數(shù)生成器;閱讀器存儲(chǔ)和后臺(tái)數(shù)據(jù)庫的共享密鑰,并包含同樣的Hash 函數(shù)和偽隨機(jī)數(shù)生成器。
[0029] 認(rèn)證階段:
[0030] 第一步:閱讀器向標(biāo)簽發(fā)送認(rèn)證請(qǐng)求Query。
[0031] 第二步:標(biāo)簽產(chǎn)生隨機(jī)數(shù)St并計(jì)算乂叫)、[;?4和觀叫;(幻,然后將心叫)、 iT; ? 5;和(幻發(fā)送給閱讀器。
[0032] 第三步:閱讀器生成隨機(jī)數(shù)S,,計(jì)算^(取.11足),然后將 (/