基于csp的sm2证书申请及应用方法

文档序号:7553926阅读:1801来源:国知局
专利名称:基于csp的sm2证书申请及应用方法
技术领域
本发明涉及网络安全技术领域,特别涉及一种基于CSP的SM2证书申请及应用方法。
背景技术
数字签名又称电子签章,是一种依靠附加信息或密码处理对数字信息或其发送方进行证明的技术,目前主要使用密钥加密方式实现。一套数字签名通常定义两种互补的运算并使用一对密钥,发送方利用本方的私钥对数据进行签名,接收方则利用对应的公钥对数字签名进行验证。数字签名的安全性和可靠性主要依赖于密钥算法,目前最有影响力的公钥加密算法是RSA算法,其已被ISO推荐为公钥数据加密标准。但是,RSA算法的安全性依赖于大数运算,其密钥的产生很复杂,且由于分组大、密钥长度长,算法运算代价很高,速度较慢。此夕卜,由于大数的因数分解有规律可循,RSA算法也存在一定的安全隐患,为提高安全性只能不断增加密钥长度,导致算法的执行效率不断降低。在此情况下,亟需一种安全高效的算法来替代RSA,为此国家密码管理局编制并公开了一系列商用密码算法(以下称为“国密算法”),其包括标准对称算法SM1、基于椭圆曲线ECC的非对称加密算法SM2、数据摘要算法SM3和分组对称块加密算法SM4等。国密算法提供了替代RSA算法的理论性指导,但是要想成为统一的、世界公认的安全标准,仍需要大量切实可用的安全应用来支持国密算法,并对其安全性做进一步的检验。如何将国密算法应用到信息安全的各个领域中成为国密算法的推广所必须解决的问题。

发明内容
有鉴于此,本发明提供了一种基于CSP的SM2证书申请及应用方法,以解决现有技术中无法将国密算法理论转化为实际的安全应用的问题。为解决上述技术问题,本发明的基于CSP的SM2证书申请及应用方法包括步骤:SM2数字证书申请:利用客户端本地的安全控件调用CSP接口,生成用于制作SM2证书的密钥对,生成用于申请SM2数字证书的PKCS#10请求发送给CA中心;SM2数字证书导入:调用CSP接口解析CA中心返回的数据,将其中的SM2数字证书数据导入到本地安全设备中保存;使用SM2证书进行数字签名:在本地安全设备中,使用签名用SM2私钥对待签名数据的SM3哈希值进行签名。优选地,所述SM2数字证书申请步骤具体过程为:利用客户端本地的安全控件提出SM2数字证书申请的PKCS#10请求;调用CSP接口创建密钥容器;生成用于制作SM2证书的密钥对;导出所述密钥对中的SM2公钥集成至所述PKCS#10请求中;
组织证书信息集成至所述PKCS#10请求中;创建SM3哈希句柄,计算所述SM2公钥和证书信息的SM3哈希值;对所述SM3哈希值进行SM2签名并集成至所述PKCS#10请求中;生成完整的PKCS#10请求发送给CA中心。优选地,其特征在于,导入的所述SM2数字证书数据包括SM2签名证书数据。优选地,若同时进行数字签名和数字加密则使用双证书,导入的所述SM2数字证书数据还包括SM2加密证书数据。优选地,所述签名证书数据的导入过程具体为:获取CSP上下文;获取CSP保存的签名用SM2私钥句柄;从所述CA中心返回的数据中解析出SM2签名证书,并导入到本地安全设备中。优选地,所述加密证书数据的导入过程为:获取CSP上下文;从所述CA中心返回的数据中解析出SM2加密证书和加密的与所述SM2加密证书对应的加密私钥,并导入到本地安全设备中。优选地,所述使用SM2证书进行数字签名步骤具体过程为:调用CSP接口获取签名用SM2私钥句柄;创建SM3哈希句柄;计算待签名数据的SM3哈希值;获得所述SM3哈希值并对其进行SM2签名。优选地,若同时进行数字签名和数字加密,则进行双证书申请,在生成所述密钥对时,同时生成签名密钥对和临时加密密钥对这二对SM2密钥对。优选地,所述加密的与所述SM2加密证书对应的加密私钥由曲线点分量、加密的私钥和所述私钥的SM3哈希值构成。通过上述方案,本发明提供了一种基于CSP的SM2证书申请及应用方法,解决了现有技术中无法将国密算法理论转化为实际的安全应用的问题,实现了基于SM2数字证书的国密算法的安全应用。


图1为本发明的一个实施例中基于CSP的SM2证书申请及应用方法的基本流程示意图;图2为本发明的一个实施例中数字证书申请流程示意图;图3为本发明的一个实施例中签名证书导入流程示意图;图4为本发明的一个实施例中加密证书导入流程示意图;图5为本发明的一个实施例中使用证书进行签名流程示意图。
具体实施例方式下面将结合各附图对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。网络安全从本质上说就是网络上的信息安全,即使网络中数据受到保护,不受偶然的或者恶意的破坏、更改、泄露,保证系统连续可靠地运行,确保网络服务不中断。影响网络安全的因素很多,但绝大多数情况下,由于网络客户端软硬件能力不足、应用环境复杂及防范措施有限,其更容易成为整个系统中的安全漏洞。在本发明中,为了保证客户端的安全通信,利用CSP (Cryptographic Service Provider,加密服务提供者)提供了基于国密算法的安全应用,通过使用SM2证书等进行数字签名,实现了安全高效的客户端身份验证。CSP是微软公司用来在Windows平台上提供第三方加密模块的标准接口,其利用CryptoAPI (加密应用程序编程接口)可实现一些标准的加密算法,如非对称加密的基本RSA算法、对称加密的DES算法以及MD5或SHAl摘要算法等。但是当前并没有任何一个CSP模块提供了基于国密算法的安全软/硬件设备。在本发明的一个实施例中,为了实现CSP中的一个国密算法的安全应用,主要使用SM2证书进行客户端的数字签名,具体地如图1所示,本发明的方法包括步骤:SM2数字证书申请:利用客户端本地的安全控件调用CSP接口,生成用于制作SM2证书的密钥对,生成用于申请SM2数字证书的PKCS#10请求发送给CA (CertificateAuthority,认证授权机构)中心;SM2数字证书导入:调用CSP接口解析CA中心返回的数据,将其中的SM2数字证书数据导入到本地安全设备中保存;使用SM2证书进行数字签名:在本地安全设备中,使用签名用SM2私钥对待签名数据的SM3哈希值进行签名。下面对上述各步骤的具体操作过程做进一步的说明。如图2所示,所述SM2数字证书申请步骤具体包括:利用客户端本地的安全控件提出用于申请SM2数字证书的PKCS#10请求(PKCS为美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,The Public-Key Cryptography Standards,其第10号标准描述了证书请求语法);调用CSP接口创建密钥容器(调用CryptAcquireContext接口);生成用于制作SM2证书的密钥对(调用CryptGenKey接口);导出所述密钥对中的SM2公钥集成至所述PKCS#10请求中(调用CryptExportKey接口);组织证书信息集成至所述PKCS#10请求中(证书信息中包括版本号、认证主题、公钥信息和其他信息属性等);创建SM3哈希句柄(调用CryptCreateHash接口),计算所述SM2公钥和证书信息的SM3哈希值(调用CryptHashData接口);对所述SM3哈希值进行SM2签名(调用CryptSignHash接口)并集成至所述PKCS#10请求中;生成完整的PKCS#10请求发送给CA中心。默认情况下,仅通过一对密钥对申请一个签名证书用于数字签名;更进一步地,如果进行数字签名的同时需要进行数字加密,则在申请阶段需要申请双证书,这要求创建的密钥容器可同时存储二对密钥,并在生成密钥对时同时生成二对SM2密钥对——一对为签名密钥,一对为临时加密密钥,签名密钥对用于签名(私钥用于对数据签名,公钥随PKCS#10请求发给CA中心用于验证PKCS#10的有效性及产生签名证书),临时加密密钥对则在CA颁发加密证书时为相关数据进行加解密而使用一次(公钥随PKCS#10请求发给CA中心,用于在CA颁发加密证书时对与加密证书对应的私钥数据进行加密;私钥则用于从CA返回的数据中解密出加密证书对应的私钥数据,在解密出上述数据后该临时加密密钥对就不再使用)。通常情况下,CA中心收到证书申请的PKCS#10请求后,根据该请求颁发相应的证书并返回给客户端本地的安全控件,其中,颁发的证书为标准X509格式证书,该证书中包括版本号、序列号、签名值、颁发者、公钥信息、扩展信息等内容。随后,证书导入步骤中导入的SM2数字证书数据包括SM2签名证书数据和SM2加密证书数据(若不要求数字加密则无需加密证书),这使得该步骤进一步分为两个过程:签
名证书导入(如图3所示)-调用CSP接口获取CSP上下文(调用CryptAcquireContext
接口);获取CSP保存的SM2私钥句柄(调用CryptGetUserKey接口);解析CA中心返回的数据并从中导入SM2公钥签名证书到本地安全设备中(调用CryptSetKeyParam接口);以及加密证书导入(如图4所示)——调用CSP接口获取CSP上下文(调用CryptAcquireContext接口);从CA中心返回的数据中解析出加密的与SM2加密证书对应的加密私钥(调用CryptImportKey接口)和SM2加密证书(调用CryptSetKeyParam接口)导入到本地安全设备中。需要说明的是,该加密私钥是CA中心产生的,即CA中心在收到申请加密证书请求后,生成加密密钥对,其中的公钥用于生成SM2加密证书,而私钥则经加密后与该SM2加密证书一起颁发给客户端(私钥数据返回时还会由前述的临时加密密钥对进行加解密,具体过程上文已有描述,在此不再赘述)。最后,如图5所示,使用SM2证书进行数字签名:调用CSP接口获取用于签名的SM2私钥句柄(调用CryptAcquireCertificatePrivateKey接口);创建SM3哈希句柄(调用CryptCreateHash接口);计算待签名数据的SM3哈希值(调用CryptHashData接口);获得所述SM3哈希值(调用CryptGetHashParam接口)并对其进行SM2签名(调用CryptSignData接口 )。在随后的正式通信过程中,对于需要保证完整性或不可抵赖性的数据,签名证书持有端使用签名证书对应的私钥对上述数据进行签名,对端使用SM2签名证书进行验证;对需要保证安全性的数据,使用SM2加密证书对数据进行加密,加密证书持有端使用加密证书对应的私钥对上述加密数据进行解密。以上调用的CSP接口均为标准接口,其具体使用方式不再赘述,下面对本发明中SM2密钥对中的公钥和私钥的数据结构做进一步的说明。其中,SM2公钥的数据结构包含以下2部分:BL0BHEADER;SM2PUBLICKEYBL0B其中BL0BHEADER为微软标准;SM2PUBLICKEYBL0B为自定义数据结构:typedef struct Struct_SM2PUBLICKEYBL0B{ULONG BitLen;//模数的实际位长度,取值为:256BYTE XCoordinate[SM2_MAX_XC00RDINATE_BITS_LEN/8];BYTE YCoordinate[SM2_MAX_YC00RDINATE_BITS_LEN/8];}SM2PUBLICKEYBL0B, *PSM2PUBLICKEYBL0B;注:1、BLOBHEADER取值目前可忽略;2、SM2公钥的X、Y值为小字节序(LITTLE-ENDIAN),且均为32个byte,因此XCoordinate、YCoordinate 的后 32byte 均补 O。SM2私钥的数据结构包含以下2部分:BLOBHEADER;SM2PRIVATEKEYBL0B其中BLOBHEADER为微软标准定义;SM2PRIVATEKEYBL0B为自定义数据结构。 ①BLOBHEADER结构取值如下:
typedef struct_PUBLICKEYSTRUC {BYTE bType; // 取值为:PRIVATEKEYBLOB (0x7)BYTE bVersion;//取值为:CUR_BL0B_VERS10N(0x2)WORD reserved;//取值为:0xl—代表SM2私钥是加密的格式ALG_ID aiKeyAlg;//取值为:CALG_SM2_KEYX}BLOBHEADER, PUBLICKEYSTRUC;②SM2PRIVATEKEYBL0B 数据结构定义:typedef struct_SM2PRIVATEKEYBL0B{ULONG AlgID; // 取值为:CALG_SM2_SIGN 或 KEYXULONG EncryptedPrivateKeyBitLen; // 加密 SM2 私钥 EncryptedPrivateKey 的实际位(bit)长度BYTE^EncryptedPrivateKey; // 加密的 SM2 密钥对(公私钥)数据:} SM2PRIVATEKEYBL0B , *PSM2PRIVATEKEYBL0B;注:1、参数BitLen的值代表加密私钥的实际位长度。2、加密私钥 EncryptedPrivateKey 格式为 Cl I I C2 I I C3。Cl (x, y),其中 x, y 分别为32字节曲线点分量,C2为加密的数据,C3为32字节SM3哈希值(使用SM3哈希算法对私钥进行哈希运算后的值)。3、对上述加密私钥解密后的格式为X I |y| d (解密在导入加密证书私钥的时候进行),其中X,y是32字节的公钥坐标点(即前述曲线点分量),d是32字节的私钥(通过对上述C2解密后获得)。综上所述,本发明对微软提供的标准CSP接口进行了扩展,提供了一种基于CSP的SM2证书申请及应用方法,该方法实现了基于SM2数字证书的国密算法的安全应用,解决了现有技术中无法将国密算法理论转化为实际的安全应用的问题。SM2和SM3算法是国家密码局认定的国产密码算法,SM2算法256位私钥的安全级别优于RSA算法2048位的安全级另O,在签名速度上明显的优于2048位的RSA算法。该方法的实现对不断提高我国国家消息安全水平、保证国家利益以及我国自主密码算法的推广应用,具有重大而广泛的现实意义。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种基于CSP的SM2证书申请及应用方法,其特征在于,所述方法包括步骤: SM2数字证书申请:利用客户端本地的安全控件调用CSP接口,生成用于制作SM2证书的密钥对,生成用于申请SM2数字证书的PKCS#10请求发送给CA中心; SM2数字证书导入:调用CSP接口解析CA中心返回的数据,将其中的SM2数字证书数据导入到本地安全设备中保存; 使用SM2证书进行数字签名:在本地安全设备中,使用签名用SM2私钥对待签名数据的SM3哈希值进行签名。
2.根据权利要求1所述的方法,其特征在于,所述SM2数字证书申请步骤具体过程为: 利用客户端本地的安全控件提出SM2数字证书申请的PKCS#10请求; 调用CSP接口创建密钥容器; 生成用于制作SM2证书的密钥对; 导出所述密钥对中的SM2公钥集成至所述PKCS#10请求中; 组织证书信息集成至所述PKCS#10请求中; 创建SM3哈希句柄,计算所述SM2公钥和证书信息的SM3哈希值; 对所述SM3哈希值进行SM2签名并集成至所述PKCS#10请求中; 生成完整的PKCS#10请求发送给CA中心。
3.根据权利要求1所述的方法,其特征在于,导入的所述SM2数字证书数据包括SM2签名证书数据。
4.根据权利要求3所述的方法,其特征在于,若同时进行数字签名和数字加密则使用双证书,导入的所述SM2数字证书数据还包括SM2加密证书数据。
5.根据权利要求3所述的方法,其特征在于,所述签名证书数据的导入过程具体为: 获取CSP上下文;获取CSP保存的签名用SM2私钥句柄;从所述CA中心返回的数据中解析出SM2签名证书,并导入到本地安全设备中。
6.根据权利要求4所述的方法,其特征在于,所述加密证书数据的导入过程为: 获取CSP上下文;从所述CA中心返回的数据中解析出SM2加密证书和加密的与所述SM2加密证书对应的加密私钥,并导入到本地安全设备中。
7.根据权利要求1所述的方法,其特征在于,所述使用SM2证书进行数字签名步骤具体过程为: 调用CSP接口获取签名用SM2私钥句柄;创建SM3哈希句柄;计算待签名数据的SM3哈希值;获得所述SM3哈希值并对其进行SM2签名。
8.根据权利要求2所述的方法,其特征在于,若同时进行数字签名和数字加密,则进行双证书申请,在生成所述密钥对时,同时生成签名密钥对和临时加密密钥对这二对SM2密钥对。
9.根据权利要求6所述的方法,其特征在于,所述加密的与所述SM2加密证书对应的加密私钥由曲线点分量、加密的私钥和所述私钥的SM3哈希值构成。
全文摘要
本发明涉及网络安全技术领域,提供了一种基于CSP的SM2证书申请及应用方法。该方法包括步骤SM2数字证书申请利用客户端本地的安全控件调用CSP接口,生成用于制作SM2证书的密钥对,生成用于申请SM2数字证书的PKCS#10请求发送给CA中心;SM2数字证书导入调用CSP接口解析CA中心返回的数据,将其中的SM2数字证书数据导入到本地安全设备中保存;使用SM2证书进行数字签名在本地安全设备中,使用私钥对待签名数据的SM3哈希值进行签名。本发明解决了现有技术中无法将国密算法理论转化为实际的安全应用的问题,实现了基于SM2数字证书的国密算法的安全应用。
文档编号H04L9/30GK103138938SQ20131009503
公开日2013年6月5日 申请日期2013年3月22日 优先权日2013年3月22日
发明者林峰, 张行, 李哲, 任新海, 杨晓宇 申请人:中金金融认证中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1