專利名稱:將硬件密碼設(shè)備的算法用于pkcs#7數(shù)據(jù)封裝的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)封裝技術(shù)領(lǐng)域,尤其涉及一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法及系統(tǒng)。
背景技術(shù):
PKCS, The Public-Key Cryptography Standards (簡稱PKCS)是由美國 RSA數(shù)據(jù)安全公司及其合作伙伴制定的一組公鑰密碼學(xué)標(biāo)準(zhǔn),其中包括證書 申請、證書更新、證書作廢表發(fā)布、擴(kuò)展證書內(nèi)容以及數(shù)字簽名、數(shù)字信封的格式等方面的一系列相關(guān)協(xié)議。其中,PKCS#7定義一種通用的消息語法,包括數(shù)字簽名和加密等用于增強(qiáng)的加密機(jī)制,PKCS#7與PEM兼容,所以不需其他密碼操作,就可以將加密的消息轉(zhuǎn)換成PEM消息,因此PKCS#7在安全信息交換應(yīng)用中廣泛使用,例如安全電子郵件應(yīng)用就是基于該標(biāo)準(zhǔn)的。PKCS#7 基于 OpenSSL,SSL 是 Secure Socket Layer (安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。SSL采用公開密鑰技術(shù)。其目標(biāo)是保證兩個(gè)應(yīng)用間通信的保密性和可靠性,可在服務(wù)器端和用戶端同時(shí)實(shí)現(xiàn)支持。目前,利用公開密鑰技術(shù)的SSL協(xié)議,已成為Internet上保密通訊的工業(yè)標(biāo)準(zhǔn)。OpenSSL整個(gè)軟件包包括密碼算法庫、SSL協(xié)議庫以及應(yīng)用程序。OpenSSL的目錄結(jié)構(gòu)也是圍繞這三個(gè)功能部分進(jìn)行規(guī)劃的。作為一個(gè)基于密碼學(xué)的安全開發(fā)包,OpenSSL提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測試或其它目的使用。SMl、SM2、SM3算法是中國國家密碼管理局頒布的算法標(biāo)準(zhǔn),并在商用密碼領(lǐng)域推廣。其中SMl是對稱算法,SM2是基于256bit橢圓曲線的非對稱算法,SM3是散列算法。SMU SM2、SM3算法由通過中國國家密碼管理局鑒定的商用密碼設(shè)備提供,有較好的保密功倉泛。然而現(xiàn)有OpenSSL的密碼算法庫中并沒有上述中國國家密碼管理局頒布的密碼算法,使得無法將這三種算用于PKCS#7數(shù)據(jù)封裝。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的無法采用非OpenSSL協(xié)議中的其他算法用于PKCS#7數(shù)據(jù)封裝的技術(shù)問題,提供一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法。本發(fā)明的目的通過下述技術(shù)方案來實(shí)現(xiàn)
一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法,其具體包含以下步驟1.在硬件密碼設(shè)備中注入密碼算法,硬件密碼設(shè)備接入OpenSSL,配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備;2.基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中;3.應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。本發(fā)明還公開了一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng),其包括硬件密碼設(shè)備、OpenSSL,所述硬件密碼設(shè)備接入OpenSSL ;所述硬件密碼設(shè)備中注入密碼算法;所述OpenSSL中包括接口庫路徑配置模塊、OpenSSL引擎模塊、應(yīng)用程序模塊,所述接口庫路徑配置模塊配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備,所述OpenSSL引擎模塊基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中,所述應(yīng)用程序模塊調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。更進(jìn)一步地,上述硬件密碼設(shè)備提供SMl、SM2或SM3算法。更進(jìn)一步地,上述SM2算法封裝PKCS#7數(shù)據(jù)的過程具體為當(dāng)生成PKCS#7數(shù)字信 封時(shí),如果OpenSSL向橢圓曲線算法模塊獲取算法對象,就把SM2算法對象交給OpenSSL,OpenSSL得到算法對象后進(jìn)行運(yùn)算,最后調(diào)用硬件密碼設(shè)備實(shí)現(xiàn)SM2算法,完成數(shù)字信封的封裝。通過采用以上技術(shù)方案,本發(fā)明的有益效果在封裝PKCS#7數(shù)據(jù)時(shí),可以調(diào)用硬件密碼設(shè)備中的密碼算法實(shí)現(xiàn)PKCS#7數(shù)據(jù)封裝,極大地方便了用戶的使用,用戶可以在硬件密碼設(shè)備中設(shè)定任意的密碼算法。硬件密碼設(shè)備中的密碼算法可以任意設(shè)定,尤其是OpenSSL中沒有采用橢圓曲線算法來進(jìn)行數(shù)字信封的封裝,而正好利用SM2算法的算法對象進(jìn)行數(shù)字信封的封裝,極大地方便了用戶的使用。
圖I為將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。圖I是本發(fā)明的將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法流程圖,其具體包含以下步驟1.在硬件密碼設(shè)備中注入密碼算法,硬件密碼設(shè)備接入OpenSSL,配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備;2.基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中;3.應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。通過上述將硬件密碼算法接入OpenSSL中,在封裝PKCS#7數(shù)據(jù)時(shí),可以調(diào)用硬件密碼設(shè)備中的密碼算法實(shí)現(xiàn)PKCS#7數(shù)據(jù)封裝,極大地方便了用戶的使用,用戶可以在硬件密碼設(shè)備中設(shè)定任意的密碼算法。更進(jìn)一步地,上述硬件密碼設(shè)備提供SM1、SM2或SM3算法,應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)注冊的算法名稱,調(diào)用對應(yīng)硬件密碼設(shè)備中的算法。采用上述方法實(shí)現(xiàn)用SM1、SM2或SM3算法封裝PKCS#7數(shù)據(jù)的功能,本發(fā)明中的硬件密碼設(shè)備不受具體形態(tài)的限制,符合《公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系密碼設(shè)備應(yīng)用接口規(guī)范》的所有硬件密碼設(shè)備均可使用。SMl、SM2及SM3算法都是由國家密碼管理局編制的商用算法。SMl是分組標(biāo)準(zhǔn)對稱算法。該算法是國家密碼管理部門審批的SMl分組密碼算法,分組長度和密鑰長度都為128比特,算法安全保密強(qiáng)度及相關(guān)軟硬件實(shí)現(xiàn)性能與AES相當(dāng),該算法已經(jīng)公開,僅以IP核的形式存在于芯片中。采用該算法已經(jīng)研制了系列芯片、智能IC卡、智能密碼鑰匙、加密卡、加密機(jī)等安全產(chǎn)品,廣泛應(yīng)用于電子政務(wù)、電子商務(wù)及國民經(jīng)濟(jì)的各個(gè)應(yīng)用領(lǐng)域(包括國家政務(wù)通、警務(wù)通等重要領(lǐng)域)。這三種算法的保密強(qiáng)度及相關(guān)硬件實(shí)現(xiàn)很高,但卻無法用于PKCS#7數(shù)字信封的封裝,因此急需上述方法來進(jìn)行實(shí)現(xiàn)采用上述三種算法來實(shí)現(xiàn)PKCS#7數(shù)字信封的封裝。更進(jìn)一步地,上述采用SM2算法封裝PKCS#7數(shù)據(jù)的過程具體為當(dāng)生成PKCS#7數(shù)字信封時(shí),如果OpenSSL向橢圓曲線算法模塊獲取算法對象,就把SM2算法對象交給OpenSSL, OpenSSL得到算法對象后進(jìn)行運(yùn)算,最后調(diào)用硬件密碼設(shè)備實(shí)現(xiàn)SM2算 法,完成數(shù)字信封的封裝?,F(xiàn)有的OpenSSL不支持使用橢圓曲線算法封裝數(shù)字信封,本發(fā)明通過修改OpenSSL中橢圓曲線算法模塊,實(shí)現(xiàn)了用SM2算法來封裝數(shù)字信封。本發(fā)明還提供了一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng),其包括硬件密碼設(shè)備、OpenSSL,所述硬件密碼設(shè)備接入OpenSSL ;所述硬件密碼設(shè)備中注入密碼算法;所述OpenSSL中包括接口庫路徑配置模塊、OpenSSL引擎模塊、應(yīng)用程序模塊,所述接口庫路徑配置模塊配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備,所述OpenSSL引擎模塊基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中,所述應(yīng)用程序模塊調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。通過采用上述系統(tǒng)將硬件密碼算法接入OpenSSL中,在封裝PKCS#7數(shù)據(jù)時(shí),可以調(diào)用硬件密碼設(shè)備中的密碼算法實(shí)現(xiàn)PKCS#7數(shù)據(jù)封裝,極大地方便了用戶的使用,用戶可以在硬件密碼設(shè)備中設(shè)定任意的密碼算法。更進(jìn)一步地,上述硬件密碼設(shè)備提供SM1、SM2或SM3算法,應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)注冊的算法名稱,調(diào)用對應(yīng)硬件密碼設(shè)備中的算法。采用上述方法實(shí)現(xiàn)用SM1、SM2或SM3算法封裝PKCS#7數(shù)據(jù)的功能,本發(fā)明中的硬件密碼設(shè)備不受具體形態(tài)的限制,符合《公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系密碼設(shè)備應(yīng)用接口規(guī)范》的所有硬件密碼設(shè)備均可使用。更進(jìn)一步地,上述采用SM2算法封裝PKCS#7數(shù)據(jù)的過程具體為當(dāng)生成PKCS#7數(shù)字信封時(shí),如果OpenSSL向橢圓曲線算法模塊獲取算法對象,就把SM2算法對象交給OpenSSL, OpenSSL得到算法對象后進(jìn)行運(yùn)算,最后調(diào)用硬件密碼設(shè)備實(shí)現(xiàn)SM2算法,完成數(shù)字信封的封裝?,F(xiàn)有的OpenSSL不支持使用橢圓曲線算法封裝數(shù)字信封,本發(fā)明通過修改OpenSSL中橢圓曲線算法模塊,實(shí)現(xiàn)了用SM2算法來封裝數(shù)字信封。上述說明示出并描述了本發(fā)明的一個(gè)優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進(jìn)行改動。而本領(lǐng)域人員所進(jìn)行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法,其具體包含以下步驟1.在硬件密碼設(shè)備中注入密碼算法,硬件密碼設(shè)備接入OpenSSL,配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備;2.基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中;3.應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。
2.如權(quán)利要求I所述的將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法,其特征在于所述硬件密碼設(shè)備提供SMI、SM2或SM3算法。
3.如權(quán)利要求2所述的將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法,其特征在于所述SM2算法封裝PKCS#7數(shù)據(jù)的過程具體為當(dāng)生成PKCS#7數(shù)字信封時(shí),如果OpenSSL向橢圓曲線算法模塊獲取算法對象,就把SM2算法對象交給OpenSSL,OpenSSL得到算法對 后進(jìn)行運(yùn)算,最后調(diào)用硬件密碼設(shè)備實(shí)現(xiàn)SM2算法,完成數(shù)字信封的封裝。
4.一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng),其特征在于包括硬件密碼設(shè)備、OpenSSL,所述硬件密碼設(shè)備接入OpenSSL ;所述硬件密碼設(shè)備中注入密碼算法;所述OpenSSL中包括接口庫路徑配置模塊、OpenSSL引擎模塊、應(yīng)用程序模塊,所述接口庫路徑配置模塊配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備,所述OpenSSL引擎模塊基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中;所述應(yīng)用程序模塊調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。
5.如權(quán)利要求4所述的將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng),其特征在于所述硬件密碼設(shè)備提供SMl、SM2或SM3算法。
6.如權(quán)利要求5所述的將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng),其特征在于所述SM2算法封裝PKCS#7數(shù)據(jù)的過程具體為當(dāng)生成PKCS#7數(shù)字信封時(shí),如果OpenSSL向橢圓曲線算法模塊獲取算法對象,就把SM2算法對象交給OpenSSL,OpenSSL得到算法對象后進(jìn)行運(yùn)算,最后調(diào)用硬件密碼設(shè)備實(shí)現(xiàn)SM2算法,完成數(shù)字信封的封裝。
全文摘要
本發(fā)明涉及數(shù)據(jù)封裝技術(shù)領(lǐng)域,本發(fā)明公開了一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的方法,其具體包含以下步驟1.在硬件密碼設(shè)備中注入密碼算法,硬件密碼設(shè)備接入OpenSSL,配置硬件密碼設(shè)備接口庫的路徑,并根據(jù)接口庫的路徑調(diào)用硬件密碼設(shè)備;2.基于OpenSSL提供的引擎機(jī)制,封裝硬件密碼設(shè)備引擎,將硬件密碼設(shè)備中的密碼算法名稱注冊到OpenSSL中;3.應(yīng)用程序調(diào)用OpenSSL封裝PKCS#7數(shù)據(jù)時(shí),根據(jù)密碼算法名稱調(diào)用相應(yīng)硬件密碼設(shè)備中的密碼算法,完成PKCS#7數(shù)據(jù)的封裝。本發(fā)明還公開了一種將硬件密碼設(shè)備的算法用于PKCS#7數(shù)據(jù)封裝的系統(tǒng)。極大地方便了用戶的使用。
文檔編號H04L9/08GK102970134SQ20121053064
公開日2013年3月13日 申請日期2012年12月11日 優(yōu)先權(quán)日2012年12月11日
發(fā)明者吳慶國 申請人:成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司