本發(fā)明涉及電子產(chǎn)品領(lǐng)域,尤其涉及一種對智能密鑰設(shè)備進(jìn)行測試的方法及裝置。
背景技術(shù):
近10年來,隨著我國計算機技術(shù)及信息化建設(shè)的飛速發(fā)展,智能密鑰設(shè)備在各個行業(yè)的應(yīng)用范圍和數(shù)量急劇增長。在金融、交通、市政、電信及政府部門等應(yīng)用領(lǐng)域,智能密鑰設(shè)備都扮演了重要的角色,為這些行業(yè)應(yīng)用的安全發(fā)展起到了不可估量的作用。
目前,智能密鑰設(shè)備產(chǎn)品多樣,實現(xiàn)方式不同,產(chǎn)品功能等各方面考慮也不盡相同。協(xié)商會話密鑰是智能密鑰設(shè)備在應(yīng)用領(lǐng)域中所需的主要功能之一。會話密鑰協(xié)商由至少兩支智能密鑰設(shè)備完成,而且為了保證密鑰安全,會話密鑰在智能密鑰設(shè)備內(nèi)部生成、存儲和使用,不暴露在智能密鑰設(shè)備之外。這給該功能的有效性測試帶來了困難。
為了準(zhǔn)確有效地判斷智能密鑰設(shè)備產(chǎn)品是否具備應(yīng)用所需的協(xié)商會話密鑰的功能,需要進(jìn)行有針對性的測試。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種對智能密鑰設(shè)備進(jìn)行測試的方法及裝置。
本發(fā)明提供了一種對智能密鑰設(shè)備進(jìn)行測試的方法,包括:
1、一種對智能密鑰設(shè)備進(jìn)行測試的方法,其特征在于,包括:
步驟A1:根據(jù)預(yù)設(shè)參數(shù)從被測試智能密鑰設(shè)備導(dǎo)出第一公鑰,如未導(dǎo)出則測試中止,結(jié)束;
步驟A2:使用所述第一公鑰對預(yù)設(shè)的第一會話密鑰進(jìn)行加密得到第一會話密鑰密文;
步驟A3:根據(jù)所述預(yù)設(shè)參數(shù)將所述第一會話密鑰密文導(dǎo)入所述被測試智能密鑰設(shè)備中,如接收到所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則執(zhí)行步驟A4,如未接收到所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則測試中止,結(jié)束;
步驟A4:使用第二公鑰和所述第一會話密鑰ID,從所述被測試智能密鑰設(shè)備中導(dǎo)出第二會話密鑰密文,如所述被測試智能密鑰設(shè)備未導(dǎo)出數(shù)據(jù),則測試中止,結(jié)束;
步驟A5:使用第二私鑰對所述第二會話密鑰密文進(jìn)行解密,將解密結(jié)果與所述第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束。
其中,所述步驟A1包括:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一公鑰長度生成第一指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,接收所述被測試智能密鑰設(shè)備返回的所述第一公鑰。
其中,所述步驟A3包括:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第一會話密鑰密文長度、第一會話密鑰密文生成第二指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,如接收到所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則執(zhí)行步驟A4,如未接收到所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則導(dǎo)入密鑰失敗,結(jié)束。
其中,所述步驟A4包括:所述裝置根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第一會話密鑰ID、第二密鑰對的密鑰位長度、所述第二公鑰生成第三指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,接收所述被測試智能密鑰設(shè)備返回的所述第二會話密鑰密文。
其中,在所述步驟A4之前還包括:所述裝置將所述第二公鑰從已通過測試的輔助智能密鑰設(shè)備中導(dǎo)出。
其中,所述步驟A5具體為:將所述第二會話密鑰密文發(fā)給所述輔助智能密鑰設(shè)備解密,如接收到所述輔助智能密鑰設(shè)備返回的解密結(jié)果則將解密結(jié)果與所述第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束,如未接收到所述輔助智能密鑰設(shè)備返回的解密結(jié)果,則測試不通過,結(jié)束。
其中,在所述測試中止或測試不通過之后還包括:利用所述第一會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第一會話密鑰。
其中,所述利用所述第一會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第一會話密鑰,具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第一會話密鑰ID生成第四指令并將其發(fā)送給所述被測試智能密鑰設(shè)備。
本發(fā)明又提供了一種對智能密鑰設(shè)備進(jìn)行測試的方法,包括:
步驟B1:將第三公鑰發(fā)給被測試智能密鑰設(shè)備,控制所述被測試智能密鑰設(shè)備中生成并導(dǎo)出第三會話密鑰密文并獲取第三會話密鑰ID,如所述被測試智能密鑰設(shè)備未輸出第三會話密鑰密文或第三會話密鑰ID,則測試中止,結(jié)束;
步驟B2:根據(jù)所述第三會話密鑰ID,控制所述被測試智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,獲取所述被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文,如所述被測試智能密鑰設(shè)備未輸出數(shù)據(jù),則測試中止,結(jié)束;
步驟B3:使用第三私鑰對所述第三會話密鑰密文進(jìn)行解密,使用解密結(jié)果對所述預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,得到數(shù)據(jù)明文;
步驟B4:判斷所述預(yù)設(shè)數(shù)據(jù)和所述數(shù)據(jù)明文是否一致,是則測試通過,否則測試不通過,結(jié)束。
其中,所述步驟B1之前包括:將所述第三公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出。
其中,所述步驟B1具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第二算法標(biāo)識、第三密鑰對的密鑰位長度、所述第三公鑰生成第五指令并將其發(fā)送給所述被測試智能密鑰設(shè)備,獲取所述被測試智能密鑰設(shè)備輸出的第三會話密鑰密文和第三會話密鑰ID,如所述被測試智能密鑰設(shè)備未輸出第三會話密鑰密文或第三會話密鑰ID,則測試中止,結(jié)束。
其中,所述步驟B2包括:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第三會話密鑰ID、預(yù)設(shè)數(shù)據(jù)生成第六指令并將其發(fā)送給所述被測試智能密鑰設(shè)備,獲取所述被測試智能密鑰設(shè)備輸出的所述預(yù)設(shè)數(shù)據(jù)密文,如未接收到所述被測試智能密鑰設(shè)備輸出的數(shù)據(jù),則測試中止,結(jié)束。
其中,所述步驟B3中的使用第三私鑰對所述第三會話密鑰密文進(jìn)行解密包括:將所述第三會話密鑰密文發(fā)送給所述輔助智能密鑰設(shè)備進(jìn)行解密,并獲取所述輔助設(shè)備輸出的解密結(jié)果,如所述輔助智能密鑰設(shè)備未返回解密結(jié)果則測試中止,結(jié)束。
其中,在所述測試中止或測試不通過之后還包括:利用所述第三會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第三會話密鑰。
其中,所述利用所述第三會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第三會話密鑰,具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第三會話密鑰ID生成第四指令并將其發(fā)送給所述被測試智能密鑰設(shè)備。
本發(fā)明還提供了一種對智能密鑰設(shè)備進(jìn)行測試的裝置,所述裝置設(shè)置于終端上,所述被測試智能密鑰設(shè)備與所述終端連接,所述裝置包括:
第一導(dǎo)出模塊,用于根據(jù)預(yù)設(shè)參數(shù)從被測試智能密鑰設(shè)備導(dǎo)出第一公鑰;
第一加密模塊,用于使用所述第一公鑰對預(yù)設(shè)的第一會話密鑰進(jìn)行加密得到第一會話密鑰密文;
導(dǎo)入模塊,用于根據(jù)所述預(yù)設(shè)參數(shù)將所述第一會話密鑰密文導(dǎo)入所述被測試智能密鑰設(shè)備中,并接收所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID;
第二導(dǎo)出模塊,用于使用第二公鑰和所述第一會話密鑰ID,從所述被測試智能密鑰設(shè)備中導(dǎo)出第二會話密鑰密文;
解密比對模塊,用于使用第二私鑰對所述第二會話密鑰密文進(jìn)行解密,將解密結(jié)果與所述第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束。
其中,所述第一導(dǎo)出模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一公鑰長度生成第一指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,接收所述被測試智能密鑰設(shè)備返回的所述第一公鑰。
其中,所述導(dǎo)入模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第一會話密鑰密文長度、第一會話密鑰密文生成第二指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,如接收到所述被測試智能密鑰設(shè)備返回的第一會話密鑰ID則觸發(fā)所述第二導(dǎo)出模塊,否則導(dǎo)入密鑰失敗。
其中,所述第二導(dǎo)出模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第一會話密鑰ID、第二密鑰對的密鑰位長度、所述第二公鑰生成第三指令,并將其發(fā)送給所述被測試智能密鑰設(shè)備,接收所述被測試智能密鑰設(shè)備返回的所述第二會話密鑰密文。
其中,所述裝置還包括第三導(dǎo)出模塊,用于將所述第二公鑰從已通過測試的輔助智能密鑰設(shè)備中導(dǎo)出。
其中,所述解密比對模塊具體用于將所述第二會話密鑰密文發(fā)給所述輔助智能密鑰設(shè)備解密,如接收到所述輔助智能密鑰設(shè)備返回的解密結(jié)果則將解密結(jié)果與所述第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,如未接收到所述輔助智能密鑰設(shè)備返回的解密結(jié)果,則測試不通過。
其中,所述裝置還包括銷毀模塊,用于在測試中止或測試不通過之后利用所述第一會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第一會話密鑰。
其中,所述銷毀模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第一會話密鑰ID生成第四指令并將其發(fā)送給所述被測試智能密鑰設(shè)備。
本發(fā)明再一種對智能密鑰設(shè)備進(jìn)行測試的裝置,所述裝置設(shè)置于終端上,所述被測試智能密鑰設(shè)備與所述終端連接,所述裝置包括:
第一導(dǎo)出模塊,用于將第三公鑰發(fā)給被測試智能密鑰設(shè)備,控制所述被測試智能密鑰設(shè)備中生成并導(dǎo)出第三會話密鑰密文并獲取第三會話密鑰ID;
所述第一加密模塊,用于根據(jù)所述第三會話密鑰ID,控制所述被測試智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,獲取所述被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文;
第一解密模塊,用于使用第三私鑰對所述第三會話密鑰密文進(jìn)行解密;
第二解密模塊,用于使用所述第一解密模塊得到的解密結(jié)果對所述預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,得到數(shù)據(jù)明文;
所述第一判斷模塊,用于判斷所述預(yù)設(shè)數(shù)據(jù)和所述數(shù)據(jù)明文是否一致,是則測試通過,否則測試不通過,結(jié)束。
其中,所述裝置還包括第二導(dǎo)出模塊,用于將所述第三公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出。
其中,所述第一導(dǎo)出模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第二算法標(biāo)識、第三密鑰對的密鑰位長度、所述第三公鑰生成第五指令并將其發(fā)送給所述被測試智能密鑰設(shè)備,獲取所述被測試智能密鑰設(shè)備輸出的第三會話密鑰密文和第三會話密鑰ID。
其中,所述第一加密模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第三會話密鑰ID、預(yù)設(shè)數(shù)據(jù)生成第六指令并將其發(fā)送給所述被測試智能密鑰設(shè)備,獲取所述被測試智能密鑰設(shè)備輸出的所述預(yù)設(shè)數(shù)據(jù)密文。
其中,所述第一解密模塊具體用于將所述第三會話密鑰密文發(fā)送給所述輔助智能密鑰設(shè)備進(jìn)行解密,并獲取所述輔助智能密鑰設(shè)備輸出的解密結(jié)果。
其中,所述裝置還包括銷毀模塊,用于在測試中止或測試不通過之后利用所述第三會話密鑰ID銷毀所述被測試智能密鑰設(shè)備中的第三會話密鑰。
其中,所述銷毀模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、所述第三會話密鑰ID生成第四指令并將其發(fā)送給所述被測試智能密鑰設(shè)備。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點:
本發(fā)明技術(shù)方案能夠準(zhǔn)確、高效地判定智能密鑰設(shè)備是否具備會話密鑰協(xié)商功能并且可以互操作,解決了該功能測試的問題。
附圖說明
圖1為本發(fā)明實施例一提供的一種對智能密鑰設(shè)備進(jìn)行測試的方法流程圖;
圖2為本發(fā)明實施例二提供的一種對智能密鑰設(shè)備進(jìn)行測試的方法流程圖;
圖3為本發(fā)明實施例三提供的一種對智能密鑰設(shè)備進(jìn)行測試的方法流程圖;
圖4為本發(fā)明實施例四提供的一種對智能密鑰設(shè)備進(jìn)行測試的裝置方框圖;
圖5為本發(fā)明實施例五提供的一種對智能密鑰設(shè)備進(jìn)行測試的裝置方框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
實施例一
本發(fā)明實施例一提供一種對智能密鑰設(shè)備進(jìn)行測試的方法,具體以導(dǎo)入密鑰過程為例進(jìn)行說明,如圖1所示,包括:
步驟100:裝置根據(jù)預(yù)設(shè)參數(shù)從被測試智能密鑰設(shè)備導(dǎo)出第一公鑰,如未導(dǎo)出則測試中止,結(jié)束;
具體的,在本實施例中,裝置通過向被測試智能密鑰設(shè)備發(fā)送第一指令(即ExportPublicKey指令)導(dǎo)出第一公鑰,第一指令(ExportPublicKey)指令的數(shù)據(jù)域包括:應(yīng)用ID、容器ID、第一公鑰的密鑰位長度;步驟100具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一公鑰長度生成第一指令,并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第一指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定應(yīng)用中的指定容器,根據(jù)第一公鑰的密鑰位長度從該容器中獲取第一公鑰并發(fā)送給裝置,裝置接收被測試智能密鑰設(shè)備返回的第一公鑰;
步驟101:裝置使用第一公鑰對預(yù)設(shè)的第一會話密鑰進(jìn)行加密得到第一會話密鑰密文;
在本實施例中,步驟101中使用的第一公鑰與智能密鑰設(shè)備中的第一私鑰對應(yīng),優(yōu)選的,第一公鑰為RSA公鑰或者SM2公鑰;
在本實施例中,將第一公鑰和預(yù)設(shè)的第一會話密鑰作為參數(shù)值,調(diào)用第一函數(shù)(即PubKeyEncrypt函數(shù)),如加密成功則第一函數(shù)返回第一會話密鑰密文,如加密失敗則第一函數(shù)返回錯誤值;
步驟102:根據(jù)預(yù)設(shè)參數(shù)將第一會話密鑰密文導(dǎo)入被測試智能密鑰設(shè)備中,如接收到被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則執(zhí)行步驟103,如未接收到被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則測試中止,結(jié)束;
具體的,在本實施例中,裝置根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第一會話密鑰密文長度、第一會話密鑰密文生成第二指令(即ImportSessionKey指令),并將該第二指令發(fā)送給智能密鑰設(shè)備,實現(xiàn)了將第一會話密鑰密文導(dǎo)入被測試智能密鑰設(shè)備中;
被測試智能密鑰設(shè)備接收到第二指令后,根據(jù)第一會話密鑰密文長度從第二指令(ImportSessionKey指令)的數(shù)據(jù)域中解析出第一會話密鑰密文,再根據(jù)解析出的預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID打開指定應(yīng)用和容器,使用指定應(yīng)用和容器中的第一私鑰對解析得到的第一會話密鑰密文進(jìn)行解密,如解密成功則根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID將解密得到的第一會話密鑰保存到相應(yīng)位置,分配對應(yīng)的第一會話密鑰ID并將其發(fā)送給裝置,如裝置接收到被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則執(zhí)行步驟103,如未接收到被測試智能密鑰設(shè)備返回的第一會話密鑰ID,則導(dǎo)入密鑰失敗,結(jié)束;第一加密私鑰與步驟101中的第一公鑰對應(yīng);
例如,在本實施例中,ImportSessionKey指令為:80A0 00 00 00008C 0001 0001 00000401 00000080 5EC055642CDE8EE941C273E61AB81A60A71A9F884F72EEAE4B0B2C0EA526A0044F4717DD153919314A4C267CABD263897A4131597D0006BD07603CA10C03F0812AE72F497CD23F6C31C98BDFB69B9D8CB22DBDBC800452628243BEB292D148682EB32ED74ED27CFF4FC05B95CE5330A2C8689CEA857B215BB888FB9751CCEC740002;返回的第一會話密鑰ID為:0001;
步驟103:使用第二公鑰和第一會話密鑰ID,從被測試智能密鑰設(shè)備中導(dǎo)出第二會話密鑰密文,如被測試智能密鑰設(shè)備未導(dǎo)出數(shù)據(jù),則測試中止,結(jié)束;
在本實施例中,步驟103之前還包括:裝置將第二公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出。
優(yōu)選的,本實施例中步驟103使用的第二公鑰與第二私鑰對應(yīng),優(yōu)選的,第二公鑰為RSA公鑰或SM2公鑰;
在本實施例中,裝置通過向被測試智能密鑰設(shè)備發(fā)送第三指令(即ExportSessionKeyEx指令)實現(xiàn)從被測試智能密鑰設(shè)備中導(dǎo)出第二會話密鑰密文,其中該第三指令的數(shù)據(jù)域包括:預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID、加密密鑰對的密鑰位長度、第二公鑰;步驟103具體為:裝置根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID、第二密鑰對的密鑰位長度、第二公鑰生成第三指令,并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第三指令(ExportSessionKeyEx指令)后對其進(jìn)行解析,根據(jù)解析結(jié)果中的加密密鑰對的密鑰位長度獲取第三指令的數(shù)據(jù)域中的第二公鑰,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的內(nèi)部保存的第一會話密鑰,使用第二公鑰對第一會話密鑰進(jìn)行加密得到第二會話密鑰密文,并將第二會話密鑰密文返回給裝置,裝置接收被測試智能密鑰設(shè)備返回的第二會話密鑰密文;
例如,本實施例中的ExportSessionKeyEx指令為:80 5C 00 00 00008E 0001 0001 0001 00000400D59AA16C2E98094E412F56ADD17F45C5F514C51C13
1C11422B8DC9CC507AD37F25F0A4692CC0B40A7BCC77EABFC7A65E0923711DC0F2BAC384757350D5CFFFF7B74C8B6F02507A031566A6DEBB47CB04BAA2D302584EE42F5C4AA64BBD54E2AE185DEE318C20D38DCD563D0411B377CD367EC1A66C3EAFAB8D966C70E5627C01 00010001;得到的第一會話密鑰密文為:B7E22DB7B0A9BD54B2667A53B1D4D38C0F84F3CA8812F316DD4D122
99F4CCBD93F231B26A566BA5289F53BF11989660777C503B791C945701B22A6A9E72B552C254B55CBF04BB310968DB8FF51B522C112E1C0FA6D0A8679895E0A8337C7319BEA8B461C3894A8E29A7146EF42124B28B5CD91D459384B1B2507E5416FC26EA5;
步驟104:使用第二私鑰對第二會話密鑰密文進(jìn)行解密,將解密結(jié)果與第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束;
具體的,在本實施例中,步驟104具體為:將第二會話密鑰密文發(fā)給輔助智能密鑰設(shè)備解密,如接收到輔助智能密鑰設(shè)備返回的解密結(jié)果則將解密結(jié)果與第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束,如未接收到輔助智能密鑰設(shè)備返回的解密結(jié)果,則測試不通過,結(jié)束;該步驟104使用的第二私鑰與步驟103中的第二公鑰對應(yīng);
在本實施例中,測試中止或測試不通過之后還可以包括:
步驟D:裝置利用第一會話密鑰ID銷毀被測試智能密鑰設(shè)備中的第一會話密鑰;
具體的,在本實施例中,裝置通過向智能密鑰設(shè)備發(fā)送第四指令(即DestroySessionKey指令)來實現(xiàn)銷毀第一會話密鑰,第四指令(即DestroySessionKey指令)的數(shù)據(jù)域包括應(yīng)用ID、容器ID、第一會話密鑰ID,步驟D具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID生成第四指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到DestroySessionKey指令時對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的第一會話密鑰并將其銷毀;
例如,在本實施例中的DestroySessionKey指令為:80C4 00 00 000006 000100010001。
實施例二
本發(fā)明實施例二提供一種對智能密鑰設(shè)備進(jìn)行測試的方法,具體以導(dǎo)出密鑰過程為例進(jìn)行說明,如圖2所示,包括:
步驟201:將第三公鑰發(fā)給被測試智能密鑰設(shè)備,控制被測試智能密鑰設(shè)備中生成并導(dǎo)出第三會話密鑰密文并獲取第三會話密鑰ID,如被測試智能密鑰設(shè)備未輸出的第三會話密鑰密文或第三會話密鑰ID,則測試中止,結(jié)束;
在本實施例中,步驟201之前還包括:裝置將第三公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出;
優(yōu)選的,在本實施例中,步驟201中使用的第三公鑰與第三私鑰對應(yīng),優(yōu)選的,第三公鑰為RSA公鑰或者SM2公鑰;
具體的,在本實施例中,裝置通過向被測試智能密鑰設(shè)備發(fā)送第五指令(即ExportSessionKey指令)控制被測試智能密鑰設(shè)備中生成并導(dǎo)出第三會話密鑰密文并獲取第三會話密鑰ID,第五指令(ExportSessionKey指令)的數(shù)據(jù)域包括:預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第二會話密鑰算法標(biāo)識、第三密鑰對的密鑰位長度、第三公鑰;步驟201具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第二算法標(biāo)識、第三密鑰對的密鑰位長度、第三公鑰生成第五指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備對第五指令進(jìn)行解析,根據(jù)解析結(jié)果中的第三密鑰對的密鑰位長度從數(shù)據(jù)域中獲取對應(yīng)的第三公鑰,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定的應(yīng)用和容器,在指定的應(yīng)用和容器中生成16字節(jié)的第三會話密鑰,根據(jù)與第二算法標(biāo)識對應(yīng)的算法使用第三公鑰對第三會話密鑰進(jìn)行加密得到第三會話密鑰密文,并將第三會話密鑰密文和為其分配的第二會話密鑰ID輸出,裝置獲取被測試智能密鑰設(shè)備輸出的第三會話密鑰密文和第三會話密鑰ID,如被測試智能密鑰設(shè)備未輸出的第三會話密鑰密文或第三會話密鑰ID,則測試中止,結(jié)束;
例如,在本實施例中,第二會話密鑰算法標(biāo)識為SM4算法標(biāo)識,ExportSessionKey指令為:80 5A 00 00 000090 0001 0001 00000401 00000400C2ACEFAD38B5A489C3EA2B79324E31C9696EAD796451232FC6C5CA7DB8F0B5DE82818DD3C1B483D6E2D1909DB0787B4B3DAA15C0C9CEBC8D2BE4F12CA99EF5B8081F848A8DB79007CC663287A161C80E65223BE9367DD4B2524049A1334DB657A158304E04BB44DA4700F49919D939D67403A7F3FBCEB99DE535EDA21476CA01 00010001;得到第三會話密鑰密文和第三會話密鑰ID分別為:5EC055642CDE8EE941C273E61AB81A60A71A9F884F72EEAE4B0B2C0EA
526A0044F4717DD153919314A4C267CABD263897A4131597D0006BD07603CA10C03F0812AE72F497CD23F6C31C98BDFB69B9D8CB22DBDBC800452628243BEB292D148682EB32ED74ED27CFF4FC05B95CE5330A2C8689CEA857B215BB888FB9751CCEC74和0001;
步驟202:根據(jù)第三會話密鑰ID,控制被測試智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,獲取被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文,如被測試智能密鑰設(shè)備未輸出數(shù)據(jù),則測試中止,結(jié)束;
具體的,在本實施例中,裝置通過向智能密鑰設(shè)備發(fā)送第六指令(即Encrypt指令)實現(xiàn)對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,其中該第六指令的數(shù)據(jù)域包括:應(yīng)用ID、容器ID、第三會話密鑰ID、預(yù)設(shè)數(shù)據(jù);步驟202具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第三會話密鑰ID、預(yù)設(shè)數(shù)據(jù)生成第六指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第六指令(Encrypt指令)后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第三會話密鑰ID獲取對應(yīng)的第三會話密鑰和第二會話密鑰算法標(biāo)識,根據(jù)與第二會話密鑰算法標(biāo)識對應(yīng)的算法使用獲取的第三會話密鑰對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密得到預(yù)設(shè)數(shù)據(jù)密文并返回給裝置;裝置獲取被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文,如未接收到被測試智能密鑰設(shè)備輸出的數(shù)據(jù),則測試中止,結(jié)束。
例如,在本實施例中,Encrypt指令為:80A6 00 00 000016 0001 0001 0001 11223344112233441122334411223344;預(yù)設(shè)數(shù)據(jù)密文為:C4B7CFD3EB6BF8C44325F76EE2D216A7;
步驟203:使用第三私鑰對第三會話密鑰密文進(jìn)行解密,使用解密結(jié)果對預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,得到數(shù)據(jù)明文;
在本實施例中,步驟203包括:將第三會話密鑰密文發(fā)送給輔助智能密鑰設(shè)備進(jìn)行解密,并獲取輔助設(shè)備輸出的解密結(jié)果,如輔助智能密鑰設(shè)備未返回解密結(jié)果則測試中止,結(jié)束;裝置將解密結(jié)果和預(yù)設(shè)數(shù)據(jù)密文作為參數(shù)調(diào)用第四函數(shù)(即Decrypt函數(shù)),如解密成功則第四函數(shù)返回數(shù)據(jù)明文,如解密失敗則第四函數(shù)返回錯誤值;該步驟使用的第三私鑰與步驟201中的第三公鑰對應(yīng);
步驟204:判斷預(yù)設(shè)數(shù)據(jù)和數(shù)據(jù)明文是否一致,是則測試通過,否則測試不通過,結(jié)束;
在本實施例中,測試中止或測試不通過之后還包括:
步驟C:利用第三會話密鑰ID銷毀被測試智能密鑰設(shè)備中的第三會話密鑰。
具體的,在本實施例中,裝置通過向智能密鑰設(shè)備發(fā)送第四指令(即DestroySessionKey指令)來實現(xiàn)銷毀被測試智能密鑰設(shè)備中的第三會話密鑰,第四指令(DestroySessionKey)指令的數(shù)據(jù)域包括應(yīng)用ID、容器ID、會話密鑰ID,步驟C具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第三會話密鑰ID生成第四指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第四指令時對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、會話密鑰ID獲取對應(yīng)的第三會話密鑰并將其銷毀;
例如,本實施例中的DestroySessionKey指令為80C4 00 00 000006 000100010001。
實施例三
本發(fā)明實施例三提供一種對智能密鑰設(shè)備進(jìn)行測試的方法,其中第一智能密鑰設(shè)備和第二智能密鑰設(shè)備進(jìn)相互測試,具體過程如圖3所示,包括:
步驟300:裝置根據(jù)第二預(yù)設(shè)參數(shù)從第二智能密鑰設(shè)備導(dǎo)出第二公鑰,如未導(dǎo)出則測試中止,結(jié)束;
具體的,在本實施例中,裝置通過向第二智能密鑰設(shè)備發(fā)送第一指令(即ExportPublicKey指令)導(dǎo)出第二公鑰,第一指令(ExportPublicKey)指令的數(shù)據(jù)域包括:應(yīng)用ID、容器ID、第二公鑰的密鑰位長度;步驟300具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第二公鑰長度生成第一指令,并將其發(fā)送給第二智能密鑰設(shè)備,第二智能密鑰設(shè)備接收到第一指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定應(yīng)用中的指定容器,根據(jù)第二公鑰的密鑰位長度從該容器中獲取第二公鑰并發(fā)送給裝置,裝置接收第二智能密鑰設(shè)備返回的第二公鑰;
步驟301:裝置將第二公鑰發(fā)送給第一智能密鑰設(shè)備,控制第一智能密鑰設(shè)備生成并導(dǎo)出第一會話密鑰密文并獲取第一會話密鑰ID,如第一智能密鑰設(shè)備未輸出第一會話密鑰密文或第一會話密鑰ID,則測試中止,執(zhí)行步驟306;
優(yōu)選的,在本實施例中,步驟301中使用的第二公鑰為RSA公鑰或者SM2公鑰;與第二智能密鑰設(shè)備中的第二私鑰對應(yīng);
具體的,在本實施例中,裝置通過向第一智能密鑰設(shè)備發(fā)送第五指令(即ExportSessionKey指令),第五指令(ExportSessionKey)指令的數(shù)據(jù)域包括:預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第二公鑰的密鑰位長度、第二公鑰;步驟301具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第二密鑰對的密鑰位長度、第二公鑰生成第五指令并將其發(fā)送給第一智能密鑰設(shè)備,第一智能密鑰設(shè)備對第五指令進(jìn)行解析,根據(jù)解析結(jié)果中的第二密鑰對的密鑰位長度從數(shù)據(jù)域中獲取對應(yīng)的第二公鑰,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定的應(yīng)用和容器,在指定的應(yīng)用和容器中生成16字節(jié)的第一會話密鑰,根據(jù)與第一算法標(biāo)識對應(yīng)的算法使用第二公鑰對第一會話密鑰進(jìn)行加密得到第一會話密鑰密文,并將第一會話密鑰密文和為其分配的第一會話密鑰ID輸出,裝置獲取第一智能密鑰設(shè)備輸出的第一會話密鑰密文和第一會話密鑰ID,如第一智能密鑰設(shè)備未輸出的第一會話密鑰密文或第一會話密鑰ID,則測試中止,結(jié)束;
例如,在本實施例中,第一算法標(biāo)識為SM4算法標(biāo)識,ExportSessionKey指令為:80 5A00 00 000090 0001 0001 00000401 00000400C2ACEFAD38B5A489C3EA2B79324E31C9696EAD796451232FC6C5CA7DB8F0B5DE82818DD3C1B483D6E2D1909DB0787B4B3DAA15C0C9CEBC8D2BE4F12CA99EF5B8081F848A8DB79007CC663287A161C80E65223BE9367DD4B2524049A1334DB657A158304E04BB44DA4700F49919D939D67403A7F3FBCEB99DE535EDA21476CA01 00010001;得到第一會話密鑰密文和第一會話密鑰ID分別為:5EC055642CDE8EE941C273E61AB81A60A71A9F884F72EEAE4B0B2C0EA
526A0044F4717DD153919314A4C267CABD263897A4131597D0006BD07603CA10C03F0812AE72F497CD23F6C31C98BDFB69B9D8CB22DBDBC800452628243BEB292D148682EB32ED74ED27CFF4FC05B95CE5330A2C8689CEA857B215BB888FB9751CCEC74和0001;
步驟302:裝置根據(jù)第二預(yù)設(shè)參數(shù)將第一會話密鑰密文導(dǎo)入第二智能密鑰設(shè)備中,如接收第二智能密鑰設(shè)備返回的第二會話密鑰ID,則執(zhí)行步驟303,如未接收到第二智能密鑰設(shè)備返回的第二會話密鑰ID,則測試中止,執(zhí)行步驟306;
具體的,在本實施例中,裝置根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第一會話密鑰密文長度、第一會話密鑰密文生成第二指令(即ImportSessionKey指令),并將該第二指令(ImportSessionKey指令)發(fā)送給第二智能密鑰設(shè)備,實現(xiàn)了將第一會話密鑰密文導(dǎo)入第二智能密鑰設(shè)備中;
第二智能密鑰設(shè)備接收到第二指令后對其進(jìn)行解析,根據(jù)解析得到的第一會話密鑰密文長度從第二指令(ImportSessionKey指令)的數(shù)據(jù)域中獲取第一會話密鑰密文,再根據(jù)解析得到的應(yīng)用ID、容器ID打開指定應(yīng)用和容器,使用指定應(yīng)用和容器中的第二私鑰對獲取到的第一會話密鑰密文進(jìn)行解密,如解密成功則根據(jù)應(yīng)用ID、容器ID將解密得到的第一會話密鑰保存到相應(yīng)位置,分配對應(yīng)的第二會話密鑰ID并將其返回給裝置;本實施例中的第二私鑰與步驟301中的第二公鑰對應(yīng);
例如,在本實施例中,ImportSessionKey指令為:80A0 00 00 00008C 0001 0001 00000401 00000080 5EC055642CDE8EE941C273E61AB81A60A71A9F884
F72EEAE4B0B2C0EA526A0044F4717DD153919314A4C267CABD263897A4131597D0006BD07603CA10C03F0812AE72F497CD23F6C31C98BDFB69B9D8CB22DBDBC800452628243BEB292D148682EB32ED74ED27CFF4FC05B95CE5330A2C8689CEA857B215BB888FB9751CCEC740002;返回的第二會話密鑰ID為:0001;
步驟303:裝置根據(jù)第一會話密鑰ID,控制第一智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,獲取第一智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文,如第一智能密鑰設(shè)備未輸出數(shù)據(jù),則測試中止,執(zhí)行步驟306;
具體的,在本實施例中,裝置通過向第一智能密鑰設(shè)備發(fā)送第六指令(即Encrypt指令),其中該第六指令的數(shù)據(jù)域包括:應(yīng)用ID、容器ID、第一會話密鑰ID、預(yù)設(shè)數(shù)據(jù);步驟303具體為:根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID、預(yù)設(shè)數(shù)據(jù)生成第六指令并將其發(fā)送給第一智能密鑰設(shè)備,第一智能密鑰設(shè)備接收到第六指令(Encrypt指令)后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的第一會話密鑰和第一算法標(biāo)識,根據(jù)與第一算法標(biāo)識對應(yīng)的算法使用獲取的第一會話密鑰對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密得到預(yù)設(shè)數(shù)據(jù)密文并返回給裝置;裝置獲取第一智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文,如第一智能密鑰設(shè)備未輸出數(shù)據(jù),則測試中止,執(zhí)行步驟306;
例如,在本實施例中,Encrypt指令為:80A6 00 00 000016 0001 0001 0001 11223344112233441122334411223344;預(yù)設(shè)數(shù)據(jù)密文為:C4B7CFD3EB6BF8C44325F76EE2D216A7;
在本實施例中,步驟303可以在步驟302之前進(jìn)行,然后裝置將第一會話密鑰密文和預(yù)設(shè)數(shù)據(jù)密文一起導(dǎo)入第二智能密鑰設(shè)備中;
步驟304:裝置使用第二智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,如解密成功則得到數(shù)據(jù)明文,執(zhí)行步驟305,如解密失敗則測試中止,執(zhí)行步驟306;
具體的,在本實施例中,裝置通過向第二智能密鑰設(shè)備發(fā)送第七指令(Decrypt指令),其中該第七指令的數(shù)據(jù)域包括:應(yīng)用ID、容器ID、第二會話密鑰ID、預(yù)設(shè)數(shù)據(jù)密文;第二智能密鑰設(shè)備接收到第七指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第二會話密鑰ID獲取對應(yīng)的第一會話密鑰,使用獲取的第一會話密鑰對解析結(jié)果中的額預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,如解密成功則得到數(shù)據(jù)明文并返回給裝置,如解密失敗則測試中止,執(zhí)行步驟306;
例如,在本實施例中,Decrypt指令為:80AE 00 00 000016 0001 0001 0001C4B7CFD3EB6BF8C44325F76EE2D216A7;預(yù)設(shè)數(shù)據(jù)明文為:11223344112233441122334411223344;
步驟305:裝置判斷預(yù)設(shè)數(shù)據(jù)和數(shù)據(jù)明文是否一致,是則測試通過,否則測試未通過,執(zhí)行步驟306;
步驟306:裝置銷毀第一智能密鑰設(shè)備和第二智能密鑰設(shè)備中的第一會話密鑰,結(jié)束。
具體的,在本實施例中,裝置通過分別向第一智能密鑰設(shè)備和第二智能密鑰設(shè)備發(fā)送第四指令(即DestroySessionKey指令),第四指令(即DestroySessionKey指令)的數(shù)據(jù)域包括應(yīng)用ID、容器ID、第一會話密鑰ID(或第二會話密鑰標(biāo)識),第一智能密鑰設(shè)備接收到第四指令對其進(jìn)行解析,根據(jù)解析得到的應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的第一會話密鑰并將其銷毀;第二智能密鑰設(shè)備接收到第四指令(即DestroySessionKey指令)對其進(jìn)行解析,根據(jù)解析得到的應(yīng)用ID、容器ID、第二會話密鑰ID獲取對應(yīng)的第一會話密鑰并將其銷毀。
實施例四
本發(fā)明實施例四提供一種對智能密鑰設(shè)備進(jìn)行測試的裝置,本實施例的裝置設(shè)置于終端上,被測試智能密鑰設(shè)備與終端連接,連接方式包括但不限于USB、藍(lán)牙等。如圖4所示,該裝置包括:
第一導(dǎo)出模塊400,用于根據(jù)預(yù)設(shè)參數(shù)從被測試智能密鑰設(shè)備導(dǎo)出第一公鑰;
具體的,在本實施例中,第一導(dǎo)出模塊400具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一公鑰長度生成第一指令,并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第一指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定應(yīng)用中的指定容器,根據(jù)第一公鑰的密鑰位長度從該容器中獲取第一公鑰并發(fā)送第一導(dǎo)出模塊400,第一導(dǎo)出模塊400接收被測試智能密鑰設(shè)備返回的第一公鑰。
第一加密模塊401,用于使用第一導(dǎo)出模塊400得到的第一公鑰對預(yù)設(shè)的第一會話密鑰進(jìn)行加密得到第一會話密鑰密文;
具體的,在本實施例中,第一加密模塊401具體用于將第一公鑰和預(yù)設(shè)的第一會話密鑰作為參數(shù)值調(diào)用第一函數(shù),如加密成功則第一函數(shù)返回第一會話密鑰密文,如加密失敗則第一函數(shù)返回錯誤值。
導(dǎo)入模塊402,用于根據(jù)預(yù)設(shè)參數(shù)將第一加密模塊401得到的第一會話密鑰密文導(dǎo)入被測試智能密鑰設(shè)備中,并接收被測試智能密鑰設(shè)備返回的第一會話密鑰ID;
在本實施例中,導(dǎo)入模塊402具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第一算法標(biāo)識、第一會話密鑰密文長度、第一會話密鑰密文生成第二指令,并將其發(fā)送給被測試智能密鑰設(shè)備;被測試智能密鑰設(shè)備在接收到第二指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的第一會話密鑰密文長度從第二指令的數(shù)據(jù)域中解析出第一會話密鑰密文,再根據(jù)應(yīng)用ID、容器ID打開對應(yīng)的應(yīng)用和容器,使用對應(yīng)的應(yīng)用和容器中的第一私鑰對解析得到的第一會話密鑰密文進(jìn)行解密,如解密成功則根據(jù)應(yīng)用ID、容器ID將解密得到的第一會話密鑰保存到相應(yīng)位置并為其分配對應(yīng)的第一會話密鑰ID,被測試智能密鑰設(shè)備給導(dǎo)入模塊402返回對應(yīng)的第一會話密鑰ID,如導(dǎo)入模塊402接收到被測試智能密鑰設(shè)備返回的第一會話密鑰ID則觸發(fā)第二導(dǎo)出模塊403,否則導(dǎo)入密鑰失敗。
第二導(dǎo)出模塊403,用于使用第二公鑰和導(dǎo)入模塊402接收到的第一會話密鑰ID,從被測試智能密鑰設(shè)備中導(dǎo)出第二會話密鑰密文;
具體的,本實施例中的第二導(dǎo)出模塊403具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID、第二密鑰對的密鑰位長度、第二公鑰生成第三指令,并將其發(fā)送給被測試智能密鑰設(shè)備;被測試智能密鑰設(shè)備在接收到第三指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的第二密鑰對的密鑰位長度從解析結(jié)果中獲取第二公鑰,根據(jù)應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的內(nèi)部保存的第一會話密鑰,使用第二公鑰對第一會話密鑰進(jìn)行加密得到第二會話密鑰密文,并將第二會話密鑰密文返回給第二導(dǎo)出模塊403,第二導(dǎo)出模塊403接收被測試智能密鑰設(shè)備返回的第二會話密鑰密文。
解密比對模塊404,用于使用第二私鑰對第二導(dǎo)出模塊403導(dǎo)出的第二會話密鑰密文進(jìn)行解密,將解密結(jié)果與第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,結(jié)束。
具體的,在本實施例中,解密比對模塊404具體用于將第二會話密鑰密文發(fā)給輔助智能密鑰設(shè)備解密,如接收到輔助智能密鑰設(shè)備返回的解密結(jié)果則將解密結(jié)果與第一會話密鑰進(jìn)行比對,如二者一致則測試通過,否則測試不通過,如未接收到輔助智能密鑰設(shè)備返回的解密結(jié)果,則測試不通過。
本實施例的裝置還包括導(dǎo)出模塊,用于將第二公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出。
在本實施例中,該裝置還包括銷毀模塊,用于在測試中止或測試不通過之后利用第一會話密鑰ID銷毀被測試智能密鑰設(shè)備中的第一會話密鑰。銷毀模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第一會話密鑰ID生成第四指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第四指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第一會話密鑰ID獲取對應(yīng)的第一會話密鑰并將其銷毀。
實施例五
本發(fā)明實施例五提供一種對智能密鑰設(shè)備進(jìn)行測試的裝置,本實施例的裝置設(shè)置于終端上,被測試智能密鑰設(shè)備與終端連接,連接方式包括但不限于USB、藍(lán)牙等。如圖5所示,該裝置包括:
第一導(dǎo)出模塊501,用于將第三公鑰發(fā)給被測試智能密鑰設(shè)備,控制被測試智能密鑰設(shè)備中生成并導(dǎo)出第三會話密鑰密文并獲取第三會話密鑰ID;
具體的,在本實施例中,第一導(dǎo)出模塊501具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、預(yù)設(shè)的第二算法標(biāo)識、第三密鑰對的密鑰位長度、第三公鑰生成第五指令并將其發(fā)送給被測試智能密鑰設(shè)備;被測試智能密鑰設(shè)備對第五指令進(jìn)行解析,根據(jù)解析結(jié)果中的第三密鑰對的密鑰位長度從數(shù)據(jù)域中獲取對應(yīng)的第三公鑰,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID打開指定的應(yīng)用和容器,在指定的應(yīng)用和容器中生成16字節(jié)的第三會話密鑰,使用第三公鑰對第三會話密鑰進(jìn)行加密得到第三會話密鑰密文,并將第三會話密鑰密文和為其分配的第二會話密鑰ID輸出,第一導(dǎo)出模塊501獲取被測試智能密鑰設(shè)備輸出的第三會話密鑰密文和第三會話密鑰ID。
第一加密模塊502,用于根據(jù)第三會話密鑰ID,控制被測試智能密鑰設(shè)備對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密,獲取被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文;
具體的,在本實施例中,第一加密模塊502具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第三會話密鑰ID、預(yù)設(shè)數(shù)據(jù)生成第六指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第六指令(Encrypt指令)后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第三會話密鑰ID獲取對應(yīng)的第三會話密鑰和第二會話密鑰算法標(biāo)識,根據(jù)與第二會話密鑰算法標(biāo)識對應(yīng)的算法使用獲取的第三會話密鑰對預(yù)設(shè)數(shù)據(jù)進(jìn)行加密得到預(yù)設(shè)數(shù)據(jù)密文并返回;第一加密模塊502獲取被測試智能密鑰設(shè)備輸出的預(yù)設(shè)數(shù)據(jù)密文。
第一解密模塊503,用于使用第三私鑰對第一導(dǎo)出模塊501得到的第三會話密鑰密文進(jìn)行解密;
在本實施例中,第一解密模塊503具體用于將第三會話密鑰密文發(fā)送給輔助智能密鑰設(shè)備進(jìn)行解密,并獲取輔助智能密鑰設(shè)備輸出的解密結(jié)果。
第二解密模塊504,用于使用第一解密模塊503得到的解密結(jié)果對第一加密模塊502獲取的預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,得到數(shù)據(jù)明文;
在本實施例中,第二解密模塊504具體通過將解密結(jié)果和預(yù)設(shè)數(shù)據(jù)密文作為參數(shù)調(diào)用第四函數(shù)(即Decrypt函數(shù))實現(xiàn)對預(yù)設(shè)數(shù)據(jù)密文進(jìn)行解密,如解密成功則第四函數(shù)返回數(shù)據(jù)明文,如解密失敗則第四函數(shù)返回錯誤值;使用的第三私鑰與第三公鑰對應(yīng)。
第一判斷模塊505,用于判斷預(yù)設(shè)數(shù)據(jù)和數(shù)據(jù)明文是否一致,是則測試通過,否則測試不通過。
本實施例的裝置還包括第二導(dǎo)出模塊,用于將第三公鑰從已測試通過的輔助智能密鑰設(shè)備中導(dǎo)出。
在本實施例中,該裝置還包括銷毀模塊,用于在測試中止或測試不通過之后利用第三會話密鑰ID銷毀被測試智能密鑰設(shè)備中的第三會話密鑰。銷毀模塊具體用于根據(jù)預(yù)設(shè)的應(yīng)用ID、預(yù)設(shè)的容器ID、第三會話密鑰ID生成第四指令并將其發(fā)送給被測試智能密鑰設(shè)備,被測試智能密鑰設(shè)備接收到第三指令后對其進(jìn)行解析,根據(jù)解析結(jié)果中的應(yīng)用ID、容器ID、第二會話密鑰ID獲取對應(yīng)的第二會話密鑰并將其銷毀。
本發(fā)明技術(shù)方案能夠準(zhǔn)確、高效地判定智能密鑰設(shè)備是否具備會話密鑰協(xié)商功能并且可以互操作,解決了該功能測試的問題。
以上所述,僅為本發(fā)明較佳的具體實施方式,但本發(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)。