專利名稱:一種驗(yàn)證信息完整性的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種驗(yàn)證信息完整性的方法和系統(tǒng)。
背景技術(shù):
現(xiàn)有技術(shù)利用可信計(jì)算技術(shù)和雙線性對的簽密方案(一種同時(shí)實(shí)現(xiàn)數(shù)字簽名和加密的密碼技術(shù))提出了一個(gè)物聯(lián)網(wǎng)安全傳輸模型,滿足了物聯(lián)網(wǎng)的ONS (Object NamingService,對象名解析服務(wù))查詢以及物品信息傳輸兩個(gè)環(huán)節(jié)的安全需求,具有安全性、匿名性、可信性和抗攻擊性等特點(diǎn)。然而,現(xiàn)有技術(shù)需要進(jìn)行較為復(fù)雜的計(jì)算,對物聯(lián)網(wǎng)節(jié)點(diǎn)設(shè)備的運(yùn)算能力提出了較高要求。與數(shù)字簽名相比,消息認(rèn)證碼(MAC)的計(jì)算復(fù)雜度相對較小,更適合應(yīng)用于實(shí)際的物聯(lián)網(wǎng)節(jié)點(diǎn)設(shè)備。輕量化的密碼算法、密碼協(xié)議以及可設(shè)定安全等級的密碼技術(shù)屬于物聯(lián)網(wǎng)安全體系的關(guān)鍵技術(shù)。但是,傳統(tǒng)的MAC機(jī)制只能用于驗(yàn)證消息 完整性,不能抵御重放攻擊。另一方面,作為物聯(lián)網(wǎng)所使用的主要網(wǎng)絡(luò)架構(gòu)之一,無線傳感器網(wǎng)絡(luò)存在節(jié)點(diǎn)控制、節(jié)點(diǎn)捕獲等固有的安全威脅。因此,應(yīng)用于物聯(lián)網(wǎng)的安全機(jī)制還應(yīng)考慮如何防止上述威脅導(dǎo)致的安全風(fēng)險(xiǎn)影響整個(gè)安全體系。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供了一種驗(yàn)證信息完整性的方法和系統(tǒng),其具有安全性高、防重放、適用于多種環(huán)境的特點(diǎn)。本發(fā)明提供的一種驗(yàn)證信息完整性的方法,包括步驟SI :消息認(rèn)證碼生成設(shè)備接收主機(jī)發(fā)送的待發(fā)送消息,更新并獲取第一動態(tài)因子;步驟S2 :所述消息認(rèn)證碼生成設(shè)備對所述第一動態(tài)因子做單向變換,得到第一數(shù)值;步驟S3 :所述消息認(rèn)證碼生成設(shè)備更新所述第一動態(tài)因子,并獲取當(dāng)前第一動態(tài)因子;步驟S4 :所述消息認(rèn)證碼生成設(shè)備對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼,根據(jù)所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼生成傳輸報(bào)文;步驟S5 :所述消息認(rèn)證碼生成設(shè)備向所述主機(jī)發(fā)送所述傳輸報(bào)文;步驟S6 :所述主機(jī)接收所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器;步驟S7 :所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其拆分;步驟S8 :所述認(rèn)證服務(wù)器更新其內(nèi)部存儲的第二動態(tài)因子并獲取當(dāng)前第二動態(tài)因子,根據(jù)當(dāng)前第二動態(tài)因子生成驗(yàn)證窗口 ;步驟S9 :所述認(rèn)證服務(wù)器依序?qū)λ鲵?yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到
一系列第二數(shù)值;步驟SlO :所述認(rèn)證服務(wù)器用所述驗(yàn)證窗口中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對拆分結(jié)果進(jìn)行驗(yàn)證,如驗(yàn)證通過,則給所述主機(jī)返回消息完整的信息;如驗(yàn)證失敗,則給所述主機(jī)返回消息不完整的信息。所述第一動態(tài)因子與所述第二動態(tài)因子類型相同,具體為時(shí)間因子或事件因子或時(shí)間因子與事件因子計(jì)算得到的結(jié)果。當(dāng)所述第一動態(tài)因子與所述第二動態(tài)因子為事件因子時(shí),所述步驟S4具體包括所述消息認(rèn)證碼生成設(shè)備對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行加密計(jì)算,得到所述第一消息認(rèn)證碼,將所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文;所述步驟S7中所述認(rèn)證服務(wù)器對所述傳輸報(bào)文拆分得到拆分后的第一數(shù)值、拆分后的消息、拆分后的第一消息認(rèn)證碼;所述步驟SlO具體包括
步驟S10-1 :所述認(rèn)證服務(wù)器依序?qū)⑺鲵?yàn)證窗口中的所述第二數(shù)值與所述拆分后的第一數(shù)值比對,如果存在與所述拆分后的第一數(shù)值一致的第二數(shù)值,則將當(dāng)前第二動態(tài)因子設(shè)置為與所述第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給所述主機(jī)返回完整性驗(yàn)證失敗的信息;步驟S10-2 :所述認(rèn)證服務(wù)器更新并獲取當(dāng)前第二動態(tài)因子;步驟S10-3 :所述認(rèn)證服務(wù)器對所述拆分后的消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼;步驟S10-4 :所述認(rèn)證服務(wù)器比對所述第二消息認(rèn)證碼和所述拆分后的第一消息認(rèn)證碼;如果一致,則驗(yàn)證通過,給所述主機(jī)返回消息完整的信息;否則,給所述主機(jī)返回消息不完整的信息。當(dāng)所述第一動態(tài)因子與所述第二動態(tài)因子為時(shí)間因子時(shí),所述步驟S4-步驟S7替換為步驟S4’ 所述消息認(rèn)證碼生成設(shè)備使用密鑰對設(shè)備標(biāo)識、所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼,并將所述第一消息認(rèn)證碼和所述第一數(shù)值發(fā)送給所述主機(jī);步驟S5’ 所述主機(jī)從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識,將所述設(shè)備標(biāo)識、所述待發(fā)送消息、接收到的所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器;步驟S6’ 所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其進(jìn)行拆分,如果拆分成功,則得到所述設(shè)備標(biāo)識、所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼,執(zhí)行步驟S7’ ;否則,向所述主機(jī)返回驗(yàn)證失敗的響應(yīng);步驟S7’ 所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的密鑰,如果檢索到,則執(zhí)行步驟S8 ;否則,向所述主機(jī)返回所述驗(yàn)證失敗的響應(yīng)。所述步驟SlO具體包括步驟S10-1’ 所述認(rèn)證服務(wù)器依序?qū)⑺鲵?yàn)證窗口中的所述第二數(shù)值與所述拆分得到的第一數(shù)值比對,如果存在與所述拆分得到的第一數(shù)值一致的所述第二數(shù)值,則將當(dāng)前第二動態(tài)因子設(shè)置為與所述第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給所述主機(jī)返回完整性驗(yàn)證失敗的信息;
步驟S10-2’ 所述認(rèn)證服務(wù)器更新并獲取當(dāng)前第二動態(tài)因子;步驟S10-3’ 所述認(rèn)證服務(wù)器使用所述檢索到的密鑰對所述設(shè)備標(biāo)識、所述拆分后消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼;步驟S10-4’ 所述認(rèn)證服務(wù)器比對所述第二消息認(rèn)證碼和拆分得到的所述第一消息認(rèn)證碼;如果一致,則驗(yàn)證通過,給所述主機(jī)返回消息完整的信息;否則,給所述主機(jī)返回消息不完整的信息。根據(jù)所述時(shí)間因子與所述事件因子得到所述第一動態(tài)因子,所述步驟S4-步驟S7替換為步驟S4’ ’ 所述消息認(rèn)證碼生成設(shè)備按照摘要算法對所述設(shè)備標(biāo)識、內(nèi)置時(shí)鐘當(dāng)前時(shí)刻、待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行計(jì)算,得到第一摘要,對所述第一摘要進(jìn)行加密,得到數(shù)字簽名,將所述數(shù)字簽名作為所述第一消息認(rèn)證碼,將所述第一消息認(rèn)證碼和第一數(shù)值發(fā)送給所述主機(jī); 步驟S5’ ’ 所述主機(jī)從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識和當(dāng)前時(shí)亥IJ,將所述設(shè)備標(biāo)識、當(dāng)前時(shí)刻、所述待發(fā)送消息、接收到的所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器;步驟S6’ ’ 所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其拆分,如果拆分成功,則得到所述設(shè)備標(biāo)識、時(shí)刻、消息、所述第一數(shù)值和所述第一消息認(rèn)證碼,執(zhí)行步驟S7’ ’ ;否則,向所述主機(jī)返回驗(yàn)證失敗的響應(yīng);步驟S7’ ’ 所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的第二動態(tài)因子和公鑰,如果檢索到,則執(zhí)行步驟S8 ;否則,向所述主機(jī)返回所述驗(yàn)證失敗的響應(yīng)。所述步驟SlO具體包括步驟S10-1’ ’ 所述認(rèn)證服務(wù)器使用所述公鑰對所述拆分后的第一消息認(rèn)證碼進(jìn)行解密,得到所述第一摘要;步驟S10-2’ ’ 所述認(rèn)證服務(wù)器按所述照摘要算法依次對所述第二數(shù)值、所述設(shè)備標(biāo)識、所述時(shí)刻、所述消息進(jìn)行計(jì)算,得到第二摘要;步驟S10-3’’ 所述認(rèn)證服務(wù)器比較所述第二摘要和所述第一摘要,如果一致,給所述主機(jī)返回消息完整信息;否則,給所述主機(jī)返回消息不完整信息。所述傳輸報(bào)文組合方式是預(yù)先設(shè)定的,包括依序拼接、分段拼接。所述拆分傳輸報(bào)文的方式與所述傳輸報(bào)文的組合方式互逆。所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備將當(dāng)前保存的計(jì)數(shù)值自加預(yù)先設(shè)定的步長,以所述計(jì)數(shù)值作為所述第一動態(tài)因子。所述步驟S4中使用對稱加密算法對所述待發(fā)送的消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼。所述步驟S8中生成所述驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列動態(tài)因子,即生成所述驗(yàn)證窗口。所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,以所述時(shí)刻作為所述第一動態(tài)因子。所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備根據(jù)內(nèi)置時(shí)鐘當(dāng)前時(shí)刻以及預(yù)先設(shè)定的步長確定所述第一動態(tài)因子。
所述步驟S4’中使用對稱加密算法對所述設(shè)備標(biāo)識、所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼。所述步驟S8中生成驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前時(shí)刻為中點(diǎn),根據(jù)所述預(yù)定的幅度值和所述預(yù)先設(shè)定的步長生成一系列動態(tài)因子,即生成所述驗(yàn)證窗口。所述步驟S8中還包括根據(jù)當(dāng)前保存的最近驗(yàn)證成功時(shí)刻,從所述驗(yàn)證窗口中去掉所述最近驗(yàn)證成功時(shí)刻之前的部分。所述步驟SlO中,驗(yàn)證通過后還包括更新并保存所述最近驗(yàn)證成功時(shí)刻。
所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備將當(dāng)前保存的計(jì)數(shù)值自加所述預(yù)先設(shè)定的步長,并獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,對計(jì)數(shù)值和當(dāng)前時(shí)刻進(jìn)行計(jì)算,以計(jì)算結(jié)果作為所述第一動態(tài)因子。所述生成驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前計(jì)時(shí)值為中點(diǎn),根據(jù)預(yù)定的幅度值和所述預(yù)先設(shè)定的步長生成一系列時(shí)刻;以所述認(rèn)證服務(wù)器當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列計(jì)數(shù)值,對所述對應(yīng)的時(shí)刻與所述對應(yīng)的計(jì)數(shù)值進(jìn)行計(jì)算,得到一系列動態(tài)因子,即生成所述驗(yàn)證窗口。步驟S10-1’ ’替換為步驟S10-1’ ’ -I :所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識尋找對應(yīng)的生成消息驗(yàn)證碼的設(shè)備,如找到則使用所述設(shè)備對應(yīng)公鑰對所述拆分后的第一消息認(rèn)證碼進(jìn)行解密,得到所述第一摘要,如找不到則給所述主機(jī)返回驗(yàn)證失敗信息。本發(fā)明提供的一種驗(yàn)證信息完整性的系統(tǒng),包括消息認(rèn)證碼生成設(shè)備、主機(jī)和認(rèn)證服務(wù)器;所述消息認(rèn)證碼生成設(shè)備包括第一存儲模塊、第一接收模塊、第一獲取模塊、第一計(jì)算模塊、第二計(jì)算模塊、組合模塊、第一發(fā)送模塊;所述第一存儲模塊,用于存儲第一動態(tài)因子;所述第一接收模塊,用于接收所述主機(jī)發(fā)送的待發(fā)送消息;所述第一獲取模塊,用于更新所述第一存儲模塊中的所述第一動態(tài)因子并從中獲取當(dāng)前第一動態(tài)因子;所述第一計(jì)算模塊,用于對當(dāng)前第一動態(tài)因子做單向變換,得到第一數(shù)值;所述第二計(jì)算模塊,用于對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼;所述生成模塊,用于根據(jù)所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼生成所述傳輸報(bào)文;所述第一發(fā)送模塊,用于向所述主機(jī)發(fā)送所述傳輸報(bào)文;所述主機(jī)包括第二接收模塊和第二發(fā)送模塊;所述第二接收模塊,用于接收所述傳輸報(bào)文;所述第二發(fā)送模塊,用于將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器,并將所述待發(fā)送信息發(fā)送給所述消息認(rèn)證碼生成設(shè)備;所述認(rèn)證服務(wù)器包括第三接收模塊、拆分模塊、第二存儲模塊、第二獲取模塊、窗口模塊、第三計(jì)算模塊、驗(yàn)證模塊、第三發(fā)送模塊;所述第三接收模塊,用于接收所述傳輸報(bào)文;
所述拆分模塊,用于對所述傳輸報(bào)文進(jìn)行拆分;所述第二存儲模塊,用于存儲第二動態(tài)因子;所述第二獲取模塊,用于更新所述第二存儲模塊中的第二動態(tài)因子并從中獲取當(dāng)前第二動態(tài)因子;所述窗口模塊,用于根據(jù)所述第二獲取模塊獲取的當(dāng)前第二動態(tài)因子計(jì)算得到多個(gè)動態(tài)因子,并進(jìn)行存儲;所述第三計(jì)算模塊,用于對所述驗(yàn)證窗口的所述各個(gè)動態(tài)因子做單向變換,得到所述一系列第二數(shù)值;所述驗(yàn)證模塊,用于用所述驗(yàn)證窗口中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對所述拆分模塊的拆分結(jié)果進(jìn)行驗(yàn)證;
所述第三發(fā)送模塊,用于將所述驗(yàn)證模塊的驗(yàn)證結(jié)果返回給主機(jī)。所述拆分模塊拆分得到信息、第一數(shù)值和第一消息認(rèn)證碼,所述驗(yàn)證模塊包括第一比較單元,第一計(jì)算單元,第二比較單元;所述第一比較單元,用于比較所述第二數(shù)值與所述第一數(shù)值是否相同;所述第一計(jì)算單元,用于對所述消息和當(dāng)前第二動態(tài)因子計(jì)算得到所述第二消息認(rèn)證碼;所述第二比較單元,用于比較所述第二消息認(rèn)證碼和所述第一消息認(rèn)證碼是否相同。所述消息認(rèn)證碼生成設(shè)備中的所述組合模塊也可以放在所述主機(jī)中,所述第一發(fā)送模塊還用于將所述第一消息認(rèn)證碼和所述第一數(shù)值發(fā)送給所述主機(jī),所述第二接收模塊還用于接收所述第一發(fā)送模塊發(fā)送的所述第一消息認(rèn)證碼和所述第一數(shù)值;所述主機(jī)還包括第三獲取模塊,用于從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識;所述組合模塊具體用于將所述待發(fā)送消息、所述第一數(shù)值、設(shè)備標(biāo)識和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文。所述第二存儲模塊還用于存儲最近驗(yàn)證成功時(shí)刻。所述認(rèn)證服務(wù)器還包括檢索模塊,用于根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的密鑰。所述驗(yàn)證模塊包括第一比較單元,第一計(jì)算單元,第二比較單元;所述第一比較單元,用于比較所述第二數(shù)值與所述第一數(shù)值是否相同;所述第一計(jì)算單元,用于對所述設(shè)備標(biāo)識、所述消息和當(dāng)前第二動態(tài)因子計(jì)算得到所述第二消息認(rèn)證碼;所述第二比較單元,用于比較所述第二消息認(rèn)證碼和所述第一消息認(rèn)證碼是否相同。所述第一獲取模塊包括第一獲取單元、第二獲取單元和第一計(jì)算單元;所述第一獲取單元,用于獲取所述消息認(rèn)證碼生成設(shè)備的計(jì)數(shù)值;所述第二獲取單元,用于獲取所述消息認(rèn)證碼生成設(shè)備的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻;所述第一計(jì)算單元,用于對所述計(jì)數(shù)值和內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到所述第一動態(tài)因子。所述消息認(rèn)證碼生成設(shè)備中的所述組合模塊也可以放在所述主機(jī)中,所述第一發(fā)送模塊還用于將所述第一消息認(rèn)證碼和所述第一數(shù)值發(fā)送給所述主機(jī),所述第二接收模塊還用于接收所述第一發(fā)送模塊發(fā)送的所述第一消息認(rèn)證碼和所述第一數(shù)值;所述主機(jī)還包括第二獲取模塊,用于從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識、計(jì)數(shù)值和當(dāng)前時(shí)刻;生成模塊,用于根據(jù)所述計(jì)數(shù)值和所述當(dāng)前時(shí)刻生成所述第一數(shù)值;所述組合模塊具體用于將所述設(shè)備標(biāo)識、當(dāng)前時(shí)刻、消息、所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文。31、根據(jù)權(quán)利要求30所述的系統(tǒng),其特征在于,所述第三獲取模塊包括第三獲取單元、第四獲取單元和第二計(jì)算單元;所述第三獲取單元,用于獲取所述認(rèn)證服務(wù)器的計(jì)數(shù)值;所述第四獲取單元,用于獲取所述認(rèn)證服務(wù)器的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻;
所述第二計(jì)算單元,用于對所述計(jì)數(shù)值和所述內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到第二動態(tài)因子;所述窗口模塊,具體用于根據(jù)所述第三獲取單元獲取的計(jì)數(shù)值和第四獲取單元獲取的當(dāng)前時(shí)刻生成多個(gè)動態(tài)因子,并進(jìn)行存儲。所述驗(yàn)證模塊包括第三計(jì)算單元、第四計(jì)算單元和比較單元;所述第三計(jì)算單元,用于對所述拆分得到的第一消息認(rèn)證碼進(jìn)行解密,得到第一摘要;所述第四計(jì)算單元,用于按照摘要算法依次對所述驗(yàn)證窗口中的動態(tài)因子、所述設(shè)備標(biāo)識、所述時(shí)刻和所述消息進(jìn)行計(jì)算,得到第二摘要;所述比較單元,用于比較所述第二摘要和所述第一摘要是否相同。所述認(rèn)證服務(wù)器還包括檢查模塊,用于檢查拆分得到的時(shí)刻的合法性。本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)安全性高本發(fā)明中計(jì)算消息認(rèn)證碼所使用的動態(tài)因子不在傳輸網(wǎng)絡(luò)中出現(xiàn),能夠有效避免被攻擊者偽造;防重放本發(fā)明中使用的動態(tài)因子是非重復(fù)的,具有“一次一密”的特性,能夠有效地抵御重放攻擊;若使用時(shí)間作為動態(tài)因子,還可具備時(shí)間戳的效果;適用于多種環(huán)境本發(fā)明以單向變換為基礎(chǔ),不包含高強(qiáng)度的密碼運(yùn)算,適用于性能受限的環(huán)境。
圖I是本發(fā)明實(shí)施例I提供的一種驗(yàn)證信息完整性的方法的流程圖;圖2是本發(fā)明實(shí)施例2提供的一種驗(yàn)證信息完整性的方法的流程圖;圖3是本發(fā)明實(shí)施例3提供的一種驗(yàn)證信息完整性的方法的流程圖;圖4是本發(fā)明實(shí)施例4提供的一種驗(yàn)證信息完整性的系統(tǒng)的方框示意圖;圖5是本發(fā)明實(shí)施例5提供的一種驗(yàn)證信息完整性的系統(tǒng)的方框示意圖;圖6是本發(fā)明實(shí)施例6提供的一種驗(yàn)證信息完整性的系統(tǒng)的方框示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例I本發(fā)明的實(shí)施例I提供一種驗(yàn)證信息完整性的方法,如圖I所示,包括步驟101 :消息認(rèn)證碼生成設(shè)備接收待發(fā)送消息,更新并獲取第一動態(tài)因子;本實(shí)施例中的待發(fā)送消息由主機(jī)發(fā)送給消息認(rèn)證碼生成設(shè)備;在本實(shí)施例中,所述更新并獲取第一動態(tài)因子的方法具體為消息認(rèn)證碼生成設(shè)備將當(dāng)前設(shè)備保存的計(jì)數(shù)值自加預(yù)先設(shè)定的步長,以計(jì)數(shù)值作 為第一動態(tài)因子;優(yōu)選的本實(shí)施例中計(jì)數(shù)值自加I;例如,接收待發(fā)送的消息時(shí),消息認(rèn)證碼生成設(shè)備當(dāng)前保存的計(jì)數(shù)值為100,則第一動態(tài)因子為101,相應(yīng)地,此時(shí)的計(jì)數(shù)值更新為101 ;本實(shí)施例中,第一動態(tài)因子是事件因子;更新時(shí)的步長是預(yù)先設(shè)定的,除了 I之外也可以是其他非O數(shù)值;步驟102 :消息認(rèn)證碼生成設(shè)備對第一動態(tài)因子按照第一預(yù)設(shè)規(guī)則做單向變換,得到第一數(shù)值;優(yōu)選地,在本實(shí)施例中,第一預(yù)設(shè)規(guī)則為SHA-I算法;除此之外,也可使用其他算法,如 MD5、SHA-256 等;步驟103 :消息認(rèn)證碼生成設(shè)備更新第一動態(tài)因子,并獲取當(dāng)前第一動態(tài)因子;更新第一動態(tài)因子的方法與步驟101相同,在此不在贅述;若更新前第一動態(tài)因子為101,則當(dāng)前第一動態(tài)因子為102 ;步驟104 :消息認(rèn)證碼生成設(shè)備對待發(fā)送消息和當(dāng)前第一動態(tài)因子按照第二預(yù)設(shè)規(guī)則計(jì)算得到第一消息認(rèn)證碼,將待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文;優(yōu)選地,在本實(shí)施例中,第二預(yù)設(shè)規(guī)則為RFC2104所規(guī)定的HMAC方法;除此之外,也可使用其他方法,如對稱加密等;本實(shí)施例中,組合方式是預(yù)先設(shè)定的;優(yōu)選地,在本實(shí)施例中,將待發(fā)送的消息、第一數(shù)值和第一消息認(rèn)證碼依序拼接,得到傳輸報(bào)文。除此之外,還可使用其他可逆的組合方式,如分段拼接等;消息認(rèn)證碼生成設(shè)備再次計(jì)算消息認(rèn)證碼時(shí),從當(dāng)前計(jì)數(shù)值開始,如本實(shí)施例中可從102開始;本實(shí)施例中,可在步驟101中使用當(dāng)前計(jì)數(shù)值,相應(yīng)地,在步驟104之后進(jìn)行更新當(dāng)前計(jì)數(shù)值操作;步驟105 :消息認(rèn)證碼生成設(shè)備向主機(jī)發(fā)送傳輸報(bào)文;步驟106 :主機(jī)接收傳輸報(bào)文,將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器;本實(shí)施例中,步驟107-步驟113為認(rèn)證服務(wù)器對傳輸報(bào)文進(jìn)行驗(yàn)證的實(shí)現(xiàn)方法;步驟107 :認(rèn)證服務(wù)器接收傳輸報(bào)文并將其拆分為消息、第一數(shù)值和第一消息認(rèn)證碼;本實(shí)施例中拆分報(bào)文的方法和與步驟104中拼接報(bào)文的方法互逆;
步驟108 :認(rèn)證服務(wù)器更新第二動態(tài)因子并獲取當(dāng)前第二動態(tài)因子,根據(jù)當(dāng)前第二動態(tài)因子生成驗(yàn)證窗口;在本實(shí)施例中,第二動 態(tài)因子保存于認(rèn)證服務(wù)器中,認(rèn)證服務(wù)器的第二動態(tài)因子類型與生成傳輸報(bào)文時(shí)消息認(rèn)證碼生成設(shè)備的第一動態(tài)因子類型相同,更新并獲取當(dāng)前第二動態(tài)因子的方法與步驟101中更新并獲取第一動態(tài)因子的方法相同;具體地,在本實(shí)施例中,使用事件因子;所述生成驗(yàn)證窗口具體為以當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列動態(tài)因子;例如,當(dāng)前計(jì)數(shù)值為95,幅度值為10,則生成的驗(yàn)證窗口為96,97,98,99,100,101,102,103,104,105 ;步驟109 :認(rèn)證服務(wù)器依序按照第一預(yù)設(shè)規(guī)則對驗(yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值;本步驟使用的單向變換方法與步驟102中相同;步驟110 :認(rèn)證服務(wù)器依序?qū)⒏鱾€(gè)第二數(shù)值與所述第一數(shù)值比對,如果存在與所述第一數(shù)值一致的第二數(shù)值,則將第二動態(tài)因子設(shè)置為與第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給主機(jī)返回完整性驗(yàn)證失敗的信息;例如,如果由101單向變換而來的第二數(shù)值與所述第一數(shù)值相同,則將第二動態(tài)因子設(shè)置為101 ;步驟111 :認(rèn)證服務(wù)器更新并獲取第二動態(tài)因子;更新的具體方法與步驟101相同,在此不再贅述;若更新前第二動態(tài)因子為101,則當(dāng)前第二動態(tài)因子為102 ;步驟112 :認(rèn)證服務(wù)器將拆分得到的消息和當(dāng)前第二動態(tài)因子按照第二預(yù)設(shè)規(guī)則計(jì)算得到第二消息認(rèn)證碼;生成第二消息認(rèn)證碼的方法與步驟104相同,在此不再贅述。步驟113 :認(rèn)證服務(wù)器比對第二消息認(rèn)證碼和第一消息認(rèn)證碼。如果一致,則驗(yàn)證通過,給主機(jī)返回消息完整的信息;否則,給主機(jī)返回消息不完整的信息。實(shí)施例2本發(fā)明的實(shí)施例2提供一種驗(yàn)證信息完整性的方法,如圖2所示,包括步驟201 :消息認(rèn)證碼生成設(shè)備接收待發(fā)送消息,更新并獲取第一動態(tài)因子;在本實(shí)施例中,所述獲取第一動態(tài)因子具體為時(shí)間因子,具體地,所述更新并獲取第一動態(tài)因子的方法具體為消息認(rèn)證碼生成設(shè)備獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,以該時(shí)刻作為第一動態(tài)因子;進(jìn)一步地,還可以為消息認(rèn)證碼生成設(shè)備根據(jù)內(nèi)置時(shí)鐘的當(dāng)前時(shí)刻以及預(yù)先約定的步長確定第一動態(tài)因子;例如,當(dāng)前時(shí)刻為12:00:20,步長為I分鐘,則第一動態(tài)因子為12:01:20 ;步驟202 :消息認(rèn)證碼生成設(shè)備按照第一預(yù)設(shè)規(guī)則對第一動態(tài)因子做單向變換,得到第一數(shù)值;優(yōu)選地,在本實(shí)施例中,使用SHA-I算法做單向變換。除此之外,也可使用其他算法,如 MD5、SHA-256 等。
步驟203 :當(dāng)消息認(rèn)證碼生成設(shè)備等待第一動態(tài)因子更新后,獲取當(dāng)前第一動態(tài)因子;步驟204 :消息認(rèn)證碼生成設(shè)備將設(shè)備標(biāo)識、待發(fā)送消息和當(dāng)前第一動態(tài)因子按照第二預(yù)設(shè)規(guī)則計(jì)算得到第一消息認(rèn)證碼;本實(shí)施例中,設(shè)備標(biāo)識預(yù)先存儲在消息認(rèn)證碼生成設(shè)備內(nèi)部,用于標(biāo)識消息認(rèn)證碼生成設(shè)備的信息和對應(yīng)的密鑰,本實(shí)施例中的密鑰為對稱密鑰;優(yōu)選地,在本實(shí)施例中,使用RFC6287所規(guī)定的OTP方法計(jì)算消息認(rèn)證碼。相應(yīng)地,消息認(rèn)證碼生成設(shè)備預(yù)置有生成OTP所需的密鑰;步驟204具體為用對稱密鑰對設(shè)備標(biāo)識、待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行
加密生成第一消息認(rèn)證碼;步驟205 :消息認(rèn)證碼生成設(shè)備向主機(jī)發(fā)送第一數(shù)值和第一消息認(rèn)證碼,主機(jī)從消息認(rèn)證碼生成設(shè)備獲取設(shè)備標(biāo)識;步驟206 :主機(jī)將設(shè)備標(biāo)識、待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文,將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器;本實(shí)施例中,組合方式是預(yù)先設(shè)定的。優(yōu)選地,在本實(shí)施例中,將設(shè)備標(biāo)識、待發(fā)送的消息、第一數(shù)值和第一消息認(rèn)證碼依序拼接,得到傳輸報(bào)文。除此之外,還可使用其他可逆的組合方式,如分段拼接等;從步驟207開始,為認(rèn)證服務(wù)器對傳輸報(bào)文的進(jìn)行處理的方法;步驟207 :認(rèn)證服務(wù)器接收傳輸報(bào)文并將其拆分為設(shè)備標(biāo)識、消息、第一數(shù)值和第一消息認(rèn)證碼,如果拆分成功,執(zhí)行步驟208,否則,向主機(jī)返回驗(yàn)證失敗的響應(yīng);本實(shí)施例中拆分報(bào)文的方法和與步驟205中拼接報(bào)文的方法互逆;步驟208 :認(rèn)證服務(wù)器根據(jù)設(shè)備標(biāo)識檢索對應(yīng)的密鑰。如果檢索到對應(yīng)的密鑰,執(zhí)行步驟209,否則,向主機(jī)返回驗(yàn)證失敗的響應(yīng);進(jìn)一步地,在本實(shí)施例中,檢索結(jié)果還可包括動態(tài)因子參數(shù),例如時(shí)間偏移值;步驟209 :認(rèn)證服務(wù)器根據(jù)服務(wù)器端的內(nèi)置時(shí)鐘更新第二動態(tài)因子并獲取當(dāng)前第二動態(tài)因子,根據(jù)當(dāng)前第二動態(tài)因子生成驗(yàn)證窗口 ;在本實(shí)施例中,認(rèn)證服務(wù)器更新并獲取第二動態(tài)因子的方法與步驟201中更新并獲取第一動態(tài)因子的方法相同;具體地,在本實(shí)施例中,使用時(shí)間因子;本實(shí)施例中,所述生成驗(yàn)證窗口的方法具體為以當(dāng)前時(shí)刻為中點(diǎn),根據(jù)預(yù)定的幅度和步長生成一系列動態(tài)因子。例如,當(dāng)前時(shí)刻為12:00:00,幅度為11,步長為I秒,則生成的驗(yàn)證窗口為11:59:56, 11:59:57, 11:59:58, 11:59:59, 12:00:00, 12:00:01, 12:00:02,12:00:03, 12:00:04, 12:00:05 ;進(jìn)一步地,在檢索結(jié)果包括動態(tài)因子參數(shù)的情況下,則根據(jù)參數(shù)對驗(yàn)證窗口進(jìn)行調(diào)整。例如,偏移值為I秒,則調(diào)整后的驗(yàn)證窗口為11:59:57,11:59:58,11:59:59,12:00:00,12:00:01,12:00:02, 12:00:03,12:00:04,12:00:05,12:00:06 ;進(jìn)一步地,所述生成驗(yàn)證窗口還包括
根據(jù)當(dāng)前保存的“最近驗(yàn)證成功時(shí)刻”,從動態(tài)因子序列中去掉最近驗(yàn)證成功時(shí)刻之前的部分。例如,當(dāng)前保存的“最近驗(yàn)證成功時(shí)刻”為11:59:58,則去掉后的驗(yàn)證窗口為11:59:59, 12:00:00, 12:00:01, 12:00:02, 12:00:03, 12:00:04,12:00:05 ;步驟210 :認(rèn)證服務(wù)器依序按照第一預(yù)設(shè)規(guī)則對驗(yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值;本步驟使用的單向變換方法與步驟202中相同;步驟211 :認(rèn)證服務(wù)器依序?qū)⒏鱾€(gè)第二數(shù)值與所述第一數(shù)值比對。如果存在與所 述第一數(shù)值一致的第二數(shù)值,則將第二動態(tài)因子設(shè)置為與第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給主機(jī)返回完整性驗(yàn)證失敗信息;例如,如果由12:00:01單向變換而來的第二數(shù)值與所述第一數(shù)值相同,則將第二動態(tài)因子設(shè)置為12:00:01 ;步驟212 :當(dāng)認(rèn)證服務(wù)器檢測到第二動態(tài)因子更新后,獲取當(dāng)前第二動態(tài)因子;更新的具體方法與步驟201相同,在此不再贅述;若更新前第二動態(tài)因子為12:00:01,則當(dāng)前第二動態(tài)因子為12:00:02 ;步驟213 :認(rèn)證服務(wù)器根據(jù)設(shè)備標(biāo)識、檢索得到的密鑰、拆分得到的消息和當(dāng)前第二動態(tài)因子按照第二預(yù)設(shè)規(guī)則生成第二消息認(rèn)證碼;具體地,生成第二消息認(rèn)證碼的方法與步驟204相同,在此不再贅述;步驟214 :認(rèn)證服務(wù)器比對第二消息認(rèn)證碼和第一消息認(rèn)證碼,如果一致,則驗(yàn)證通過,給主機(jī)返回消息完整信息;否則,給主機(jī)返回消息不完整信息;本實(shí)施例中,驗(yàn)證通過后還包括更新最近驗(yàn)證成功時(shí)刻,如在本實(shí)施例中將最近驗(yàn)證成功時(shí)刻更新為12:00:01。實(shí)施例3本發(fā)明的實(shí)施例3提供一種驗(yàn)證信息完整性的方法,如圖3所示,包括步驟301 :消息認(rèn)證碼生成設(shè)備接收待發(fā)送消息,更新并獲取第一動態(tài)因子;在本實(shí)施例中,所述更新并獲取第一動態(tài)因子的方法具體為消息認(rèn)證碼生成設(shè)備將當(dāng)前保存的計(jì)數(shù)值自加預(yù)先設(shè)定的步長(例如自加1),并獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,按照第一預(yù)設(shè)規(guī)則對這兩個(gè)數(shù)值進(jìn)行計(jì)算,以計(jì)算結(jié)果作為第一動態(tài)因子;本實(shí)施例中,第一預(yù)設(shè)規(guī)則包括加、減、異或、同或等運(yùn)算;具體地,本實(shí)施例中將這兩個(gè)值相加得到第一動態(tài)因子;步驟302 :消息認(rèn)證碼生成設(shè)備對第一動態(tài)因子按照第二預(yù)設(shè)規(guī)則做單向變換,得到第一數(shù)值;優(yōu)選地,在本實(shí)施例中,使用SHA-I算法做單向變換;除此之外,也可使用其他算法,如 MD5、SHA-256 等;步驟303 :消息認(rèn)證碼生成設(shè)備更新第一動態(tài)因子,并獲取當(dāng)前第一動態(tài)因子;更新第一動態(tài)因子的方法與步驟301相同,在此不在贅述;步驟304 :消息認(rèn)證碼生成設(shè)備將設(shè)備標(biāo)識、內(nèi)置時(shí)鐘當(dāng)前時(shí)刻、待發(fā)送消息和當(dāng)前第一動態(tài)因子按照第三預(yù)設(shè)規(guī)則計(jì)算得到第一消息認(rèn)證碼;具體地,在本實(shí)施例中,消息認(rèn)證碼生成設(shè)備使用自身私鑰對設(shè)備標(biāo)識、內(nèi)置時(shí)鐘當(dāng)前時(shí)刻、待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行簽名生成第一消息認(rèn)證碼;本實(shí)施例中,設(shè)備標(biāo)識是消息認(rèn)證碼生成設(shè)備的標(biāo)識,認(rèn)證服務(wù)器可以通過設(shè)備標(biāo)識檢索生成消息驗(yàn)證碼的設(shè)備及 其對應(yīng)的公鑰;步驟305 :消息認(rèn)證碼生成設(shè)備向主機(jī)發(fā)送第一數(shù)值和第一消息認(rèn)證碼,主機(jī)從消息認(rèn)證碼生成設(shè)備獲取設(shè)備標(biāo)識和當(dāng)前時(shí)刻;步驟306 :主機(jī)將設(shè)備標(biāo)識、當(dāng)前時(shí)刻、待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文,將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器消息認(rèn)證碼生成設(shè)備向主機(jī)發(fā)送傳輸報(bào)文;本實(shí)施例中步驟307-步驟311為認(rèn)證服務(wù)器對接收到的傳輸報(bào)文進(jìn)行驗(yàn)證的實(shí)現(xiàn)過程;步驟307 :認(rèn)證服務(wù)器接收傳輸報(bào)文并將其拆分為設(shè)備標(biāo)識、時(shí)刻、消息、第一數(shù)值和第一消息認(rèn)證碼;如果拆分成功,繼續(xù);否則,向主機(jī)返回驗(yàn)證失敗的響應(yīng);本實(shí)施例中拆分報(bào)文的方法和與步驟305中拼接報(bào)文的方法互逆;步驟308 :認(rèn)證服務(wù)器根據(jù)設(shè)備標(biāo)識在服務(wù)器端檢索對應(yīng)的第二動態(tài)因子參數(shù)和公鑰。如果檢索到,則執(zhí)行步驟309,否則,向主機(jī)返回驗(yàn)證失敗的響應(yīng);具體地,在本實(shí)施例中,所述第二動態(tài)因子參數(shù)包括計(jì)數(shù)值和時(shí)間偏移值;步驟309 :認(rèn)證服務(wù)器更新第二動態(tài)因子并獲取當(dāng)前第二動態(tài)因子,根據(jù)當(dāng)前第二動態(tài)因子生成驗(yàn)證窗口;在本實(shí)施例中,所述更新第二動態(tài)因子具體為更新計(jì)數(shù)值,并根據(jù)當(dāng)前時(shí)刻和時(shí)間偏移值獲取計(jì)時(shí)值;本實(shí)施例中,所述生成驗(yàn)證窗口的方法具體為以計(jì)時(shí)值為中點(diǎn),根據(jù)預(yù)定的幅度和步長生成一系列時(shí)刻;以當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列計(jì)數(shù)值,將對應(yīng)的時(shí)刻與對應(yīng)的計(jì)數(shù)值按照第一預(yù)設(shè)規(guī)則進(jìn)行計(jì)算,得到一系列動態(tài)因子,生成驗(yàn)證窗口 ;也可以根據(jù)拆分得到的時(shí)刻和檢索得到的時(shí)間偏移確定時(shí)間值,根據(jù)預(yù)定的幅度和步長生成一系列時(shí)刻值,將各個(gè)時(shí)刻值與對應(yīng)的計(jì)數(shù)值按照第一預(yù)設(shè)規(guī)則進(jìn)行計(jì)算,得到一系列動態(tài)因子,生成驗(yàn)證窗口步驟310 :認(rèn)證服務(wù)器依序按照第二預(yù)設(shè)規(guī)則對驗(yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值;本步驟使用的單向變換方法與步驟302中相同;步驟311 :認(rèn)證服務(wù)器依序?qū)⒏鱾€(gè)第二數(shù)值與設(shè)備標(biāo)識、時(shí)刻、消息按預(yù)設(shè)規(guī)則組成驗(yàn)證報(bào)文,比較驗(yàn)證報(bào)文與第一消息認(rèn)證碼是否對應(yīng),如果是,給主機(jī)返回消息完整信息,將第二動態(tài)因子更新為所對應(yīng)的動態(tài)因子;否則,給主機(jī)返回完整性驗(yàn)證失敗信息;具體地,本實(shí)施例中該步驟為步驟311-1 :認(rèn)證服務(wù)器使用消息驗(yàn)證碼生成設(shè)備的公鑰對拆分得到的第一消息認(rèn)證碼進(jìn)行解密,得到第一摘要;本實(shí)施例中,該步驟也可以為認(rèn)證服務(wù)器根據(jù)設(shè)備標(biāo)識尋找對應(yīng)的生成消息驗(yàn)證碼的設(shè)備,如找到則使用該設(shè)備對應(yīng)公鑰對拆分得到的第一消息認(rèn)證碼進(jìn)行解密,得到第一摘要,如找不到則給主機(jī)返回驗(yàn)證失敗信息;步驟311-2 :認(rèn)證服務(wù)器按照摘要算法對各個(gè)第二數(shù)值、拆分得到的設(shè)備標(biāo)識、時(shí)亥IJ、消息進(jìn)行計(jì)算,得到第二摘要;步驟311-3 :認(rèn)證服務(wù)器比較第二摘要和第 一摘要是否相同,如果一致,給主機(jī)返回消息完整信息;否則,給主機(jī)返回完整性驗(yàn)證失敗信息;本實(shí)施例中,驗(yàn)證通過后還包括更新最近驗(yàn)證成功時(shí)刻。進(jìn)一步地,在步驟311判斷為是時(shí),本實(shí)施例還包括步驟312 :檢查拆分得到的時(shí)刻合法性;如果合法,則給主機(jī)返回消息完整信息,否則,給主機(jī)返回完整性驗(yàn)證失敗信息;具體地,檢查拆分得到的時(shí)刻是否在最近驗(yàn)證成功時(shí)刻之后,如果是,則不合法,否則,合法;或者,檢查拆分得到的時(shí)刻是否在服務(wù)器端有記錄,如果有,則不合法,否則,合法,并保存該時(shí)刻。實(shí)施例4本發(fā)明的實(shí)施例4根據(jù)實(shí)施例I中的方法提供一種驗(yàn)證信息完整性的系統(tǒng),如圖4所示,包括消息認(rèn)證碼生成設(shè)備41、主機(jī)42和認(rèn)證服務(wù)器43 ;消息認(rèn)證碼生成設(shè)備41包括第一存儲模塊41-1,第一接收模塊41_2、第一獲取模塊41-3、第一計(jì)算模塊41-4、第二計(jì)算模塊41-5、組合模塊41_6、第一發(fā)送模塊41_7 ;第一存儲模塊41-1,用于存儲第一動態(tài)因子;第一接收模塊41-2,用于接收主機(jī)42發(fā)送的待發(fā)送消息;第一獲取模塊41-3,用于更新第一存儲模塊41-1中的第一動態(tài)因子并從中并獲取當(dāng)前第一動態(tài)因子;第一計(jì)算模塊41-4,用于對當(dāng)前第一動態(tài)因子做單向變換,得到第一數(shù)值;第二計(jì)算模塊41-5,用于對待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼;組合模塊41-6,用于將待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文;第一發(fā)送模塊41-7,用于向主機(jī)42發(fā)送傳輸報(bào)文;主機(jī)42包括第二接收模塊42-1和第二發(fā)送模塊42_2 ;第二接收模塊42-1,用于接收傳輸報(bào)文;第二發(fā)送模塊42-2,用于將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器43,并將待發(fā)送信息發(fā)送給消息認(rèn)證碼生成設(shè)備41 ;認(rèn)證服務(wù)器43包括第三接收模塊43-1、拆分模塊43_2、第二存儲模塊43_3、第二獲取模塊43-4、窗口模塊43-5、第三計(jì)算模塊43-6、驗(yàn)證模塊43_7、第三發(fā)送模塊43_8 ;第三接收模塊43-1,用于接收傳輸報(bào)文;拆分模塊43-2,用于將第三接收模塊43-1接收到的傳輸報(bào)文拆分為消息、第一數(shù)值和第一消息認(rèn)證碼;第二存儲模塊41-3,用于存儲第二動態(tài)因子;
第二獲取模塊43-4,用于更新第二存儲模塊41-3中的第二動態(tài)因子并從中獲取當(dāng)前第二動態(tài)因子;窗口模塊43-5,用于對根據(jù)第二獲取模塊43-4獲取的當(dāng)前動第二態(tài)因子計(jì)算得到多個(gè)動態(tài)因子,并進(jìn)行存儲;第三計(jì)算模塊43-6,用于對窗口模塊43-5中的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值;驗(yàn)證模塊43-7,用于用窗口模塊53-6中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對所述拆分模塊43-2的拆分結(jié)果進(jìn)行驗(yàn)證;具體地,驗(yàn)證模塊43-7包括第一比較單元43-71,第一計(jì)算單元43-72,第二比較單元43-73 ;
第一比較單元43-71,用于比較驗(yàn)證窗口中的第二數(shù)值與第一數(shù)值是否相同;第一計(jì)算單元43-72,用于對消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼;第二比較單元43-73,用于比較第二消息認(rèn)證碼和第一消息認(rèn)證碼是否相同;第三發(fā)送模塊43-8,用于向主機(jī)發(fā)送所述消息完整的信息和所述消息不完整的信息;具體地,本實(shí)施例中,消息認(rèn)證碼生成設(shè)備的實(shí)現(xiàn)方式為以計(jì)數(shù)值為第一動態(tài)因子的A型設(shè)備;A型設(shè)備是一次性的消息認(rèn)證碼生成設(shè)備。該設(shè)備為DIE形態(tài),便于與其他模塊集成封裝;以低功耗的單片機(jī)芯片為硬件平臺,通過計(jì)數(shù)器生成有序非重復(fù)序列;固件、設(shè)備標(biāo)識以及密鑰等信息一次性寫入,寫入后熔絲以防止被攻擊者篡改;內(nèi)部信息和固件保存于易失的隨機(jī)存儲器,一旦斷電即銷毀所有數(shù)據(jù),減少捕獲風(fēng)險(xiǎn)。A型設(shè)備適用于通信數(shù)據(jù)量小、成本控制要求嚴(yán)格、使用環(huán)境風(fēng)險(xiǎn)較高的感知層節(jié)點(diǎn)。實(shí)施例5本發(fā)明的實(shí)施例5根據(jù)實(shí)施例2中的方法提供一種驗(yàn)證信息完整性的系統(tǒng),如圖5所示,包括消息認(rèn)證碼生成設(shè)備51、主機(jī)52和認(rèn)證服務(wù)器53 ;消息認(rèn)證碼生成設(shè)備51包括第一存儲模塊51-1、第一接收模塊51-2、第一獲取模塊51-3、第一計(jì)算模塊51-4、第二計(jì)算模塊51-5、第一發(fā)送模塊51_6 ;第一存儲模塊51-1,用于存儲第一動態(tài)因子;第一接收模塊51-2,用于接收主機(jī)52發(fā)送的待發(fā)送消息;第一獲取模塊51-3,用于更新第一存儲模塊51-1中的第一動態(tài)因子并從中并獲取當(dāng)前第一動態(tài)因子;第一計(jì)算模塊51-4,用于對當(dāng)前第一動態(tài)因子做單向變換,得到第一數(shù)值;第二計(jì)算模塊51-5,用于根據(jù)密鑰對設(shè)備標(biāo)識、待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼;第一發(fā)送模塊51-6,用于向主機(jī)發(fā)送第一消息認(rèn)證碼和第一數(shù)值;主機(jī)52包括第二接收模塊52-1、第二獲取模塊52_2、組合模塊52_3和第二發(fā)送模塊52-4 ;第二接收模塊52-1,用于接收第一消息認(rèn)證碼和第一數(shù)值;第二獲取模塊52-2,用于從消息認(rèn)證碼生成設(shè)備51中獲取設(shè)備標(biāo)識;
組合模塊52-3,用于將設(shè)備標(biāo)識、待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文;第二發(fā)送模塊52-4,用于將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器,并將待發(fā)送信息發(fā)送給消息認(rèn)證碼生成設(shè)備51 ;認(rèn)證服務(wù)器53包括第三接收模塊53-1、拆分模塊53_2、檢索模塊53_3、第二存儲模塊53-4、第三獲取模塊53-5、窗口模塊53-6、第三計(jì)算模塊53_7、驗(yàn)證模塊53_8、第三發(fā)送模塊53-9 ;第三接收模塊53-1,用于接收傳輸報(bào)文;拆分模塊53-2,用于將第三接收模塊53-1接收到的傳輸報(bào)文拆分為設(shè)備標(biāo)識、消
息、第一數(shù)值和第一消息認(rèn)證碼;檢索模塊53-3,用于根據(jù)設(shè)備標(biāo)識檢索對應(yīng)的密鑰;第二存儲模塊51-4,用于存儲第二動態(tài)因子;第三獲取模塊53-5,用于更新第二存儲模塊51-4中的第二動態(tài)因子并從中獲取當(dāng)前第二動態(tài)因子;窗口模塊53-6,用于對根據(jù)第三獲取模塊53-5獲取的當(dāng)前動第二態(tài)因子計(jì)算得到多個(gè)動態(tài)因子,并進(jìn)行存儲;第三計(jì)算模塊53-7,用于對窗口模塊53-6中的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值;驗(yàn)證模塊53-8,用于用窗口模塊53-6中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對所述拆分模塊的拆分結(jié)果進(jìn)行驗(yàn)證;具體地,驗(yàn)證模塊53-8包括第一比較單元53-81,第一計(jì)算單元53-82,第二比較單元53-83 ;第一比較單元53-81,用于比較第三計(jì)算模塊53_7得到的第二數(shù)值與第一數(shù)值是否相同;第一計(jì)算單元53-82,用于對設(shè)備標(biāo)識、消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼;第二比較單元53-83,用于比較第二消息認(rèn)證碼和第一消息認(rèn)證碼是否相同;第三發(fā)送模塊53-9,用于向主機(jī)發(fā)送消息完整的信息和消息不完整的信息;具體地,本實(shí)施例中,消息認(rèn)證碼生成設(shè)備的實(shí)現(xiàn)方式為以當(dāng)前時(shí)刻為第一動態(tài)因子的B型設(shè)備出型設(shè)備是具備時(shí)間戳特性的消息認(rèn)證碼生成設(shè)備。該設(shè)備為存儲卡(TF卡)規(guī)格,通過SDIO協(xié)議與上位機(jī)通信;以內(nèi)置時(shí)鐘的低功耗智能卡芯片為硬件平臺,通過時(shí)鐘脈沖生成有序非重復(fù)序列;內(nèi)置固件在生產(chǎn)階段燒寫,設(shè)備ID、密鑰等信息的寫入權(quán)限受固件控制,獲取授權(quán)后可以更新;固件及內(nèi)部信息受智能卡芯片保護(hù),具備“拆片即毀”的特性。B型設(shè)備適用于數(shù)據(jù)通信量較小、成本控制要求相對寬松、使用環(huán)境風(fēng)險(xiǎn)較低、安全要求較高的感知層節(jié)點(diǎn)。實(shí)施例6本發(fā)明的實(shí)施例6根據(jù)實(shí)施例3中的方法提供一種驗(yàn)證信息完整性的系統(tǒng),如圖6所示,包括消息認(rèn)證碼生成設(shè)備61、主機(jī)62和認(rèn)證服務(wù)器63 ;消息認(rèn)證碼生成設(shè)備61包括第一存儲模塊61-1、第一接收模塊61-2、第一獲取模塊61-3、第一計(jì)算模塊61-4、第二計(jì)算模塊61-5、第一發(fā)送模塊61_6 ;第一存儲模塊61-1,用于存儲第一動態(tài)因子;第一接收模塊61-2,用于接收主機(jī)62發(fā)送的待發(fā)送消息;第一獲取模塊61-3,用于更新第一存儲模塊61-1中的第一動態(tài)因子并從中并獲取當(dāng)前第一動態(tài)因子;具體地,第一獲取模塊61-3包括第一獲取單元61-31、第二獲取單元61-32和第一計(jì)算單元61-33 ;第一獲取單元61-31,用于獲取消息認(rèn)證碼生成設(shè)備的計(jì)數(shù)值;第二獲取單元61-32,用于獲取消息認(rèn)證碼生成設(shè)備的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻; 第一計(jì)算單元61-33,用于對計(jì)數(shù)值和內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到第一動態(tài)因子;第一計(jì)算模塊61-4,用于對當(dāng)前第一動態(tài)因子做單向變換,得到第一數(shù)值;第二計(jì)算模塊61-5,用于對設(shè)備標(biāo)識、內(nèi)置時(shí)鐘當(dāng)前時(shí)刻、待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼;第一發(fā)送模塊61-6,用于向主機(jī)62發(fā)送第一消息認(rèn)證碼和第一數(shù)值;主機(jī)62包括第二接收模塊62-1、第二獲取模塊62_2、生成模塊62_3、組合模塊
62-4和第二發(fā)送模塊62-5 ;第二接收模塊62-1,用于接收第一消息認(rèn)證碼和第一數(shù)值;第二獲取模塊62-2,用于獲取設(shè)備標(biāo)識、計(jì)數(shù)值和當(dāng)前時(shí)刻;生成模塊62-3,用于根據(jù)計(jì)數(shù)值和當(dāng)前時(shí)刻生成第一數(shù)值;組合模塊62-4,用于將設(shè)備標(biāo)識、當(dāng)前時(shí)刻、待發(fā)送消息、第一數(shù)值和第一消息認(rèn)證碼組合,得到傳輸報(bào)文;第二發(fā)送模塊62-5,用于將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器63,并將待發(fā)送信息發(fā)送給消息認(rèn)證碼生成設(shè)備61 ;認(rèn)證服務(wù)器63包括第三接收模塊63-1、拆分模塊63_2、檢索模塊63_3、第二存儲模塊63-4、第三獲取模塊63-5、窗口模塊63-6、第三計(jì)算模塊63_7、驗(yàn)證模塊63_8、檢查模塊63-9和第三發(fā)送模塊63-10 ;第三接收模塊63-1,用于接收傳輸報(bào)文;拆分模塊63-2,用于將第三接收模塊63-1接收到的傳輸報(bào)文拆分為設(shè)備標(biāo)識、時(shí)亥IJ、消息、第一數(shù)值和第一消息認(rèn)證碼;檢索模塊63-3,用于根據(jù)設(shè)備標(biāo)識檢索對應(yīng)的第二動態(tài)因子參數(shù);第二存儲模塊61-4,用于存儲第二動態(tài)因子;第三獲取模塊63-5,用于更新第二存儲模塊61-4中的第二動態(tài)因子并從中獲取當(dāng)前第二動態(tài)因子;具體地,第三獲取模塊63-5包括第三獲取單元63-51、第四獲取單元63-52和第二計(jì)算單元63-53 ;第三獲取單元63-51,用于獲取認(rèn)證服務(wù)器的計(jì)數(shù)值;第四獲取單元63-52,用于獲取認(rèn)證服務(wù)器的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻;第二計(jì)算單元63-53,用于對計(jì)數(shù)值和內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到第二動態(tài)因子;窗口模塊63-6,用于對根據(jù)第三獲取模塊63-51獲取的計(jì)數(shù)值和第四獲取單元
63-52獲取的當(dāng)前時(shí)刻生成得到多個(gè)動態(tài)因子,并進(jìn)行存儲;第三計(jì)算模塊63-7,用于對驗(yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到一系列第
二數(shù)值;驗(yàn)證模塊63-8,用于比較驗(yàn)證報(bào)文與第一消息認(rèn)證碼是否對應(yīng);具體地,比較模塊63-8包括第三計(jì)算單元63-81、第四計(jì)算單元63-82和比較單兀 63_83 ;第三計(jì)算單元63-81,用于對拆分得到的第一消息認(rèn)證碼進(jìn)行解密,得到第一摘 要;第四計(jì)算單元63-82,用于按照摘要算法對驗(yàn)證窗口中的各個(gè)動態(tài)因子、設(shè)備標(biāo)識、時(shí)刻和消息進(jìn)行計(jì)算,得到第二摘要;比較單元63-83,用于比較第二摘要和第一摘要是否相同;檢查模塊63-9,用于檢查拆分得到的時(shí)刻的合法性;第三發(fā)送模塊63-10,用于輸出所述消息完整的信息和所述消息不完整的信息;具體地,本實(shí)施例中,消息認(rèn)證碼生成設(shè)備的實(shí)現(xiàn)方式為以計(jì)數(shù)值和時(shí)刻值的計(jì)算結(jié)果為第一動態(tài)因子的C型設(shè)備;C型設(shè)備是增強(qiáng)型的信息安全設(shè)備,用數(shù)字簽名代替A/B型設(shè)備所使用的消息認(rèn)證碼。該設(shè)備以支持非對稱密鑰算法(如RSA)的智能卡芯片為硬件平臺,具有較大的存儲空間,能夠生成非對稱密鑰對及存儲數(shù)字證書。C型設(shè)備有助于實(shí)現(xiàn)物聯(lián)網(wǎng)安全傳輸機(jī)制與基于數(shù)字證書和PKI的互聯(lián)網(wǎng)安全體系的對接,適用于數(shù)據(jù)通信量較大、成本控制要求寬松、使用環(huán)境風(fēng)險(xiǎn)低的網(wǎng)絡(luò)層或應(yīng)用層節(jié)點(diǎn)。C型設(shè)備有USB Key、IC卡等多種形態(tài),以適應(yīng)不同的節(jié)點(diǎn)環(huán)境。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明公開的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種驗(yàn)證信息完整性的方法,其特征在于,所述方法包括 步驟SI :消息認(rèn)證碼生成設(shè)備接收主機(jī)發(fā)送的待發(fā)送消息,更新并獲取第一動態(tài)因子; 步驟S2 :所述消息認(rèn)證碼生成設(shè)備對所述第一動態(tài)因子做單向變換,得到第一數(shù)值; 步驟S3 :所述消息認(rèn)證碼生成設(shè)備更新所述第一動態(tài)因子,并獲取當(dāng)前第一動態(tài)因子; 步驟S4 :所述消息認(rèn)證碼生成設(shè)備對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼,根據(jù)所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼生成傳輸報(bào)文; 步驟S5 :所述消息認(rèn)證碼生成設(shè)備向所述主機(jī)發(fā)送所述傳輸報(bào)文; 步驟S6 :所述主機(jī)接收所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器; 步驟S7 :所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其拆分; 步驟S8 :所述認(rèn)證服務(wù)器更新其內(nèi)部存儲的第二動態(tài)因子并獲取當(dāng)前第二動態(tài)因子,根據(jù)當(dāng)前第二動態(tài)因子生成驗(yàn)證窗口; 步驟S9 :所述認(rèn)證服務(wù)器依序?qū)λ鲵?yàn)證窗口的各個(gè)動態(tài)因子做單向變換,得到一系列第二數(shù)值; 步驟SlO :所述認(rèn)證服務(wù)器用所述驗(yàn)證窗口中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對拆分結(jié)果進(jìn)行驗(yàn)證,如驗(yàn)證通過,則給所述主機(jī)返回消息完整的信息;如驗(yàn)證失敗,則給所述主機(jī)返回消息不完整的信息。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述第一動態(tài)因子與所述第二動態(tài)因子類型相同,具體為時(shí)間因子或事件因子或時(shí)間因子與事件因子計(jì)算得到的結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述第一動態(tài)因子與所述第二動態(tài)因子為事件因子時(shí),所述步驟S4具體包括所述消息認(rèn)證碼生成設(shè)備對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行加密計(jì)算,得到所述第一消息認(rèn)證碼,將所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟S7中所述認(rèn)證服務(wù)器對所述傳輸報(bào)文拆分得到拆分后的第一數(shù)值、拆分后的消息、拆分后的第一消息認(rèn)證碼; 所述步驟SlO具體包括 步驟S10-1 :所述認(rèn)證服務(wù)器依序?qū)⑺鲵?yàn)證窗口中的所述第二數(shù)值與所述拆分后的第一數(shù)值比對,如果存在與所述拆分后的第一數(shù)值一致的第二數(shù)值,則將當(dāng)前第二動態(tài)因子設(shè)置為與所述第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給所述主機(jī)返回完整性驗(yàn)證失敗的信息; 步驟S10-2 :所述認(rèn)證服務(wù)器更新并獲取當(dāng)前第二動態(tài)因子; 步驟S10-3 :所述認(rèn)證服務(wù)器對所述拆分后的消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼; 步驟S10-4 :所述認(rèn)證服務(wù)器比對所述第二消息認(rèn)證碼和所述拆分后的第一消息認(rèn)證碼;如果一致,則驗(yàn)證通過,給所述主機(jī)返回消息完整的信息;否則,給所述主機(jī)返回消息不完整的信息。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述第一動態(tài)因子與所述第二動態(tài)因子為時(shí)間因子時(shí),所述步驟S4-步驟S7替換為 步驟S4’ 所述消息認(rèn)證碼生成設(shè)備使用密鑰對設(shè)備標(biāo)識、所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼,并將所述第一消息認(rèn)證碼和第一數(shù)值發(fā)送給所述主機(jī); 步驟S5’ 所述主機(jī)從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識將所述設(shè)備標(biāo)識、所述待發(fā)送消息、接收到的所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器; 步驟S6’ 所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其進(jìn)行拆分,如果拆分成功,則得到所述設(shè)備標(biāo)識、所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼,執(zhí)行步驟S7’ ;否則,向所述主機(jī)返回驗(yàn)證失敗的響應(yīng); 步驟S7’ 所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的密鑰,如果檢索到,則執(zhí)行步驟S8 ;否則,向所述主機(jī)返回所述驗(yàn)證失敗的響應(yīng)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟SlO具體包括 步驟sio-r:所述認(rèn)證服務(wù)器依序?qū)⑺鲵?yàn)證窗口中的所述第二數(shù)值與所述拆分得到的第一數(shù)值比對,如果存在與所述拆分得到的第一數(shù)值一致的所述第二數(shù)值,則將當(dāng)前第二動態(tài)因子設(shè)置為與所述第一數(shù)值一致的第二數(shù)值所對應(yīng)的動態(tài)因子;否則,給所述主機(jī)返回完整性驗(yàn)證失敗的信息; 步驟S10-2’ 所述認(rèn)證服務(wù)器更新并獲取當(dāng)前第二動態(tài)因子; 步驟S10-3’ 所述認(rèn)證服務(wù)器使用所述檢索到的密鑰對所述設(shè)備標(biāo)識、所述拆分后消息和當(dāng)前第二動態(tài)因子計(jì)算得到第二消息認(rèn)證碼; 步驟S10-4’ 所述認(rèn)證服務(wù)器比對所述第二消息認(rèn)證碼和拆分得到的所述第一消息認(rèn)證碼;如果一致,則驗(yàn)證通過,給所述主機(jī)返回消息完整的信息;否則,給所述主機(jī)返回消息不完整的信息。
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)所述時(shí)間因子與所述事件因子得到所述第一動態(tài)因子,所述步驟S4-步驟S7替換為 步驟S4’ ’ 所述消息認(rèn)證碼生成設(shè)備按照摘要算法對所述設(shè)備標(biāo)識、內(nèi)置時(shí)鐘當(dāng)前時(shí)刻、待發(fā)送消息和當(dāng)前第一動態(tài)因子進(jìn)行計(jì)算,得到第一摘要,對所述第一摘要進(jìn)行加密,得到數(shù)字簽名,將所述數(shù)字簽名作為所述第一消息認(rèn)證碼,將所述第一消息認(rèn)證碼和第一數(shù)值發(fā)送給所述主機(jī); 步驟S5’ ’ 所述主機(jī)從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識和當(dāng)前時(shí)刻,將所述設(shè)備標(biāo)識、當(dāng)前時(shí)刻、所述待發(fā)送消息、接收到的所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文,將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器; 步驟S6’ ’ 所述認(rèn)證服務(wù)器接收所述傳輸報(bào)文并對其拆分,如果拆分成功,則得到所述設(shè)備標(biāo)識、時(shí)刻、消息、所述第一數(shù)值和所述第一消息認(rèn)證碼,執(zhí)行步驟S7’ ’ ;否則,向所述主機(jī)返回驗(yàn)證失敗的響應(yīng); 步驟S7’ ’ 所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的第二動態(tài)因子和公鑰,如果檢索到,則執(zhí)行步驟S8 ;否則,向所述主機(jī)返回所述驗(yàn)證失敗的響應(yīng)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟SlO具體包括 步驟S10-1’ ’ 所述認(rèn)證服務(wù)器使用所述公鑰對所述拆分后的第一消息認(rèn)證碼進(jìn)行解密,得到所述第一摘要; 步驟S10-2’ ’ 所述認(rèn)證服務(wù)器按所述照摘要算法依次對所述第二數(shù)值、所述設(shè)備標(biāo)識、所述時(shí)刻、所述消息進(jìn)行計(jì)算,得到第二摘要; 步驟S10-3’’ 所述認(rèn)證服務(wù)器比較所述第二摘要和所述第一摘要,如果一致,給所述主機(jī)返回消息完整信息;否則,給所述主機(jī)返回消息不完整信息。
9.根據(jù)權(quán)利要求2、4、6任意一項(xiàng)所述的方法,其特征在于,所述傳輸報(bào)文組合方式是預(yù)先設(shè)定的,包括依序拼接、分段拼接。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述拆分傳輸報(bào)文的方式與所述傳輸報(bào)文的組合方式互逆。
11.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備將當(dāng)前保存的計(jì)數(shù)值自加預(yù)先設(shè)定的步長,以所述計(jì)數(shù)值作為所述第一動態(tài)因子。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述步驟S4中使用對稱加密算法對所述待發(fā)送的消息和當(dāng)前第一動態(tài)因子計(jì)算得到第一消息認(rèn)證碼。
13.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述步驟S8中生成所述驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列動態(tài)因子,即生成所述驗(yàn)證窗口。
14.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,以所述時(shí)刻作為所述第一動態(tài)因子。
15.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備根據(jù)內(nèi)置時(shí)鐘當(dāng)前時(shí)刻以及預(yù)先設(shè)定的步長確定所述第一動態(tài)因子。
16.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟S4’中使用對稱加密算法對所述設(shè)備標(biāo)識、所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼。
17.根據(jù)權(quán)利要求14或15所述的方法,其特征在于,所述步驟S8中生成驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前時(shí)刻為中點(diǎn),根據(jù)所述預(yù)定的幅度值和所述預(yù)先設(shè)定的步長生成一系列動態(tài)因子,即生成所述驗(yàn)證窗口。
18.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟S8中還包括根據(jù)當(dāng)前保存的最近驗(yàn)證成功時(shí)刻,從所述驗(yàn)證窗口中去掉所述最近驗(yàn)證成功時(shí)刻之前的部分。
19.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述步驟SlO中,驗(yàn)證通過后還包括更新并保存所述最近驗(yàn)證成功時(shí)刻。
20.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述更新并獲取所述第一動態(tài)因子的方法具體為所述消息認(rèn)證碼生成設(shè)備將當(dāng)前保存的計(jì)數(shù)值自加所述預(yù)先設(shè)定的步長,并獲取內(nèi)置時(shí)鐘當(dāng)前時(shí)刻,對計(jì)數(shù)值和當(dāng)前時(shí)刻進(jìn)行計(jì)算,以計(jì)算結(jié)果作為所述第一動態(tài)因子。
21.根據(jù)權(quán)利要求20所述的方法,其特征在于,所述生成驗(yàn)證窗口具體為以所述認(rèn)證服務(wù)器當(dāng)前計(jì)時(shí)值為中點(diǎn),根據(jù)預(yù)定的幅度值和所述預(yù)先設(shè)定的步長生成一系列時(shí)刻;以所述認(rèn)證服務(wù)器當(dāng)前計(jì)數(shù)值為起點(diǎn),根據(jù)預(yù)定的幅度值生成一系列計(jì)數(shù)值,對所述對應(yīng)的時(shí)刻與所述對應(yīng)的計(jì)數(shù)值進(jìn)行計(jì)算,得到一系列動態(tài)因子,即生成所述驗(yàn)證窗口。
22.根據(jù)權(quán)利要求8所述的方法,其特征在于,步驟S10-1’’替換為 步驟S10-1’’ -I :所述認(rèn)證服務(wù)器根據(jù)所述設(shè)備標(biāo)識尋找對應(yīng)的生成消息驗(yàn)證碼的設(shè)備,如找到則使用所述設(shè)備對應(yīng)公鑰對所述拆分后的第一消息認(rèn)證碼進(jìn)行解密,得到所述第一摘要,如找不到則給所述主機(jī)返回驗(yàn)證失敗信息。
23.一種驗(yàn)證信息完整性的系統(tǒng),其特征在于,包括消息認(rèn)證碼生成設(shè)備、主機(jī)和認(rèn)證服務(wù)器; 所述消息認(rèn)證碼生成設(shè)備包括第一存儲模塊、第一接收模塊、第一獲取模塊、第一計(jì)算模塊、第二計(jì)算模塊、組合模塊、第一發(fā)送模塊; 所述第一存儲模塊,用于存儲第一動態(tài)因子; 所述第一接收模塊,用于接收所述主機(jī)發(fā)送的待發(fā)送消息; 所述第一獲取模塊,用于更新所述第一存儲模塊中的所述第一動態(tài)因子并從中獲取當(dāng)前第一動態(tài)因子; 所述第一計(jì)算模塊,用于對當(dāng)前第一動態(tài)因子做單向變換,得到第一數(shù)值; 所述第二計(jì)算模塊,用于對所述待發(fā)送消息和當(dāng)前第一動態(tài)因子計(jì)算得到所述第一消息認(rèn)證碼; 所述生成模塊,用于根據(jù)所述待發(fā)送消息、所述第一數(shù)值和所述第一消息認(rèn)證碼生成所述傳輸報(bào)文; 所述第一發(fā)送模塊,用于向所述主機(jī)發(fā)送所述傳輸報(bào)文; 所述主機(jī)包括第二接收模塊和第二發(fā)送模塊; 所述第二接收模塊,用于接收所述傳輸報(bào)文; 所述第二發(fā)送模塊,用于將所述傳輸報(bào)文發(fā)送給所述認(rèn)證服務(wù)器,并將所述待發(fā)送信息發(fā)送給所述消息認(rèn)證碼生成設(shè)備; 所述認(rèn)證服務(wù)器包括第三接收模塊、拆分模塊、第二存儲模塊、第二獲取模塊、窗口模塊、第三計(jì)算模塊、驗(yàn)證模塊、第三發(fā)送模塊; 所述第三接收模塊,用于接收所述傳輸報(bào)文; 所述拆分模塊,用于對所述傳輸報(bào)文進(jìn)行拆分; 所述第二存儲模塊,用于存儲第二動態(tài)因子; 所述第二獲取模塊,用于更新所述第二存儲模塊中的第二動態(tài)因子并從中獲取當(dāng)前第二動態(tài)因子; 所述窗口模塊,用于根據(jù)所述第二獲取模塊獲取的當(dāng)前第二動態(tài)因子計(jì)算得到多個(gè)動態(tài)因子,并進(jìn)行存儲; 所述第三計(jì)算模塊,用于對所述驗(yàn)證窗口的所述各個(gè)動態(tài)因子做單向變換,得到所述一系列第二數(shù)值; 所述驗(yàn)證模塊,用于用所述驗(yàn)證窗口中的第二動態(tài)因子和與其對應(yīng)的第二數(shù)值對所述拆分模塊的拆分結(jié)果進(jìn)行驗(yàn)證; 所述第三發(fā)送模塊,用于將所述驗(yàn)證模塊的驗(yàn)證結(jié)果返回給主機(jī)。
24.根據(jù)權(quán)利要求23所述的系統(tǒng),其特征在于,所述拆分模塊拆分得到信息、第一數(shù)值和第一消息認(rèn)證碼,所述驗(yàn)證模塊包括第一比較單元,第一計(jì)算單元,第二比較單元; 所述第一比較單元,用于比較所述第二數(shù)值與所述第一數(shù)值是否相同;所述第一計(jì)算單元,用于對所述消息和當(dāng)前第二動態(tài)因子計(jì)算得到所述第二消息認(rèn)證碼; 所述第二比較單元,用于比較所述第二消息認(rèn)證碼和所述第一消息認(rèn)證碼是否相同。
25.根據(jù)權(quán)利要求23所述的系統(tǒng),其特征在于,所述消息認(rèn)證碼生成設(shè)備中的所述組合模塊也可以放在所述主機(jī)中,所述第一發(fā)送模塊還用于將所述第一消息認(rèn)證碼和所述第一數(shù)值發(fā)送給所述主機(jī),所述第二接收模塊還用于接收所述第一發(fā)送模塊發(fā)送的所述第一消息認(rèn)證碼和所述第一數(shù)值;所述主機(jī)還包括第三獲取模塊,用于從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識; 所述組合模塊具體用于將所述待發(fā)送消息、所述第一數(shù)值、設(shè)備標(biāo)識和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文。
26.根據(jù)權(quán)利要求23所述的系統(tǒng),其特征在于,所述第二存儲模塊還用于存儲最近驗(yàn)證成功時(shí)刻。
27.根據(jù)權(quán)利要求25所述的系統(tǒng),其特征在于,所述認(rèn)證服務(wù)器還包括檢索模塊,用于根據(jù)所述設(shè)備標(biāo)識檢索對應(yīng)的密鑰。
28.根據(jù)權(quán)利要求25所述的系統(tǒng),其特征在于,所述驗(yàn)證模塊包括第一比較單元,第一計(jì)算單元,第二比較單元; 所述第一比較單元,用于比較所述第二數(shù)值與所述第一數(shù)值是否相同; 所述第一計(jì)算單元,用于對所述設(shè)備標(biāo)識、所述消息和當(dāng)前第二動態(tài)因子計(jì)算得到所述第二消息認(rèn)證碼; 所述第二比較單元,用于比較所述第二消息認(rèn)證碼和所述第一消息認(rèn)證碼是否相同。
29.根據(jù)權(quán)利要求23所述的系統(tǒng),其特征在于,所述第一獲取模塊包括第一獲取單元、第二獲取單元和第一計(jì)算單元; 所述第一獲取單元,用于獲取所述消息認(rèn)證碼生成設(shè)備的計(jì)數(shù)值; 所述第二獲取單元,用于獲取所述消息認(rèn)證碼生成設(shè)備的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻; 所述第一計(jì)算單元,用于對所述計(jì)數(shù)值和內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到所述第一動態(tài)因子。
30.根據(jù)權(quán)利要求29所述的系統(tǒng),其特征在于,所述消息認(rèn)證碼生成設(shè)備中的所述組合模塊也可以放在所述主機(jī)中,所述第一發(fā)送模塊還用于將所述第一消息認(rèn)證碼和所述第一數(shù)值發(fā)送給所述主機(jī),所述第二接收模塊還用于接收所述第一發(fā)送模塊發(fā)送的所述第一消息認(rèn)證碼和所述第一數(shù)值;所述主機(jī)還包括 第二獲取模塊,用于從所述消息認(rèn)證碼生成設(shè)備中獲取所述設(shè)備標(biāo)識、計(jì)數(shù)值和當(dāng)前時(shí)刻; 生成模塊,用于根據(jù)所述計(jì)數(shù)值和所述當(dāng)前時(shí)刻生成所述第一數(shù)值; 所述組合模塊具體用于將所述設(shè)備標(biāo)識、當(dāng)前時(shí)刻、消息、所述第一數(shù)值和所述第一消息認(rèn)證碼組合,得到所述傳輸報(bào)文。
31.根據(jù)權(quán)利要求30所述的系統(tǒng),其特征在于,所述第三獲取模塊包括第三獲取單元、第四獲取單元和第二計(jì)算單元; 所述第三獲取單元,用于獲取所述認(rèn)證服務(wù)器的計(jì)數(shù)值; 所述第四獲取單元,用于獲取所述認(rèn)證服務(wù)器的內(nèi)置時(shí)鐘當(dāng)前時(shí)刻;所述第二計(jì)算單元,用于對所述計(jì)數(shù)值和所述內(nèi)置時(shí)鐘當(dāng)前時(shí)刻進(jìn)行計(jì)算,得到第二動態(tài)因子; 所述窗口模塊,具體用于根據(jù)所述第三獲取單元獲取的計(jì)數(shù)值和第四獲取單元獲取的當(dāng)前時(shí)刻生成多個(gè)動態(tài)因子,并進(jìn)行存儲。
32.根據(jù)權(quán)利要求31所述的系統(tǒng),其特征在于,所述驗(yàn)證模塊包括第三計(jì)算單元、第四計(jì)算單元和比較單元; 所述第三計(jì)算單元,用于對所述拆分得到的第一消息認(rèn)證碼進(jìn)行解密,得到第一摘要; 所述第四計(jì)算單元,用于按照摘要算法依次對所述驗(yàn)證窗口中的動態(tài)因子、所述設(shè)備標(biāo)識、所述時(shí)刻和所述消息進(jìn)行計(jì)算,得到第二摘要; 所述比較單元,用于比較所述第二摘要和所述第一摘要是否相同。
33.根據(jù)權(quán)利要求32所述的系統(tǒng),其特征在于,所述認(rèn)證服務(wù)器還包括檢查模塊,用于檢查拆分得到的時(shí)刻的合法性。
全文摘要
本發(fā)明公開一種驗(yàn)證信息完整性的方法和系統(tǒng),所述方法包括消息認(rèn)證碼生成設(shè)備接收待發(fā)送的消息,更新第一動態(tài)因子,對第一動態(tài)因子做單向變換得到第一數(shù)值,更新當(dāng)前第一動態(tài)因子,計(jì)算得到第一消息認(rèn)證碼,生成傳輸報(bào)文;消息認(rèn)證碼生成設(shè)備通過主機(jī)將傳輸報(bào)文發(fā)送給認(rèn)證服務(wù)器;認(rèn)證服務(wù)器接收傳輸報(bào)文并拆分,更新第二動態(tài)因子,根據(jù)第二動態(tài)因子生成驗(yàn)證窗口,對驗(yàn)證窗口的各個(gè)動態(tài)因子做單向變換得到一系列第二數(shù)值,用驗(yàn)證窗口中的第二動態(tài)因子和第二數(shù)值對拆分結(jié)果進(jìn)行驗(yàn)證。本發(fā)明中計(jì)算消息認(rèn)證碼所使用的動態(tài)因子不在傳輸網(wǎng)絡(luò)中出現(xiàn),能夠有效避免被攻擊者偽造,有效地抵御重放攻擊。
文檔編號H04L9/32GK102761560SQ201210272370
公開日2012年10月31日 申請日期2012年8月1日 優(yōu)先權(quán)日2012年8月1日
發(fā)明者于華章, 陸舟 申請人:飛天誠信科技股份有限公司