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