一种集成数字证书生成及证书和密钥使用方法及系统与流程

文档序号:34229025发布日期:2023-05-24 11:35阅读:71来源:国知局
本发明属于密码,特别是一种集成数字证书生成及证书和密钥使用方法及系统。
背景技术
::1、x509数字证书是目前广泛应用的一种电子身份凭证,利用它可以实现各类应用中的身份鉴别、数字签名以及数据加密等安全功能。每个数字证书对应且只对应一对用户密钥,公钥和私钥;数字证书中包含有用户公钥,因此也称为公钥数字证书;数字证书(中用户公钥)对应的用户私钥通常以密钥对密钥对象(如windows csp的密钥容器)或私钥密钥对象(如pkcs#11的私钥对象)的形式存在于用户密码装置或密码组件中,并受到安全保护(密钥对象为存储密钥的数据结构);数字证书经签发者issuer)的私钥签名,并能通过签发者的公钥验证(签发者的公钥通过签发者的数字证书即签发者ca证书发布)。这里存放有数字证书的密钥对的密钥对象(简称密钥对对象)或私钥的密钥对象(简称私钥对象)的密码装置或密码组件可以是软硬件结合的密码组件或模块,也可以是软件密码组件或模块。2、目前,数字证书在实际应用中可能存在这样的问题,由于各种原因,不同的应用(程序、系统)支持的密码算法不同,比如,有些应用仅支持rsa算法,不支持sm2椭圆曲线密码算法,而sm2算法是目前国内主要的公开密钥算法。对于这样的情况,目前通常的做法是针对采用不同密码算法的应用,为用户签发不同的数字证书,用户在不同应用中使用不同的数字证书及证书密钥(公钥、私钥)。但是,在实际应用中rsa算法这类算法不是主流的算法,rsa算法的数字证书及用户密钥(公钥、私钥)并非经常使用,因此,这种方式不但给用户带来不便且造成浪费(每个数字证书都有其维护成本)。3、还有,数字证书的持有者(持有用户)或数字证书应用可能有这种需求、要求:在某些场合的应用中用户使用实名数字证书,在某些场合的应用中用户使用匿名(假名)数字证书,那么,要满足这种需求、要求,目前的做法只能是给用户签发两个数字证书,其中一个数字证书上的用户名(主体名中的通用名)是实名(真名),另一个数字证书上的用户名是假名。同样地,这种方式不但给用户带来不便且造成浪费。4、还有,目前广泛使用的各种公钥密码算法(简称公钥算法,public keyalgorithm;公钥算法不是仅仅指公钥本身的算法,而是指公开密钥对及其密码运算所对应的密码算法,称为公钥密码算法,简称公钥算法),比如rsa密码算法、椭圆曲线密码算法如sm2、ecdsa,都不能抗量子计算攻击,而目前的数字证书的用户密钥采用的密码算法即公钥算法都是这类非抗量子攻击的算法,目前大量的数字证书应用系统、应用程序都是基于这些不能抗量子攻击的密码算法开发、部署的,它们不可能一夜之间完成更换、替换,众多的数字证书用户也不可能在一夜之间更换他们的数字证书,这不但有时间问题,还有更换成本的问题,因此,这就有一个数字证书的密钥的密码算法(公钥算法),包括数字证书的用户密钥和数字证书签发者的密钥的密码算法(公钥算法)的过渡问题,而目前对此没有很好的办法,目前人们提出的过渡方案是同时给用户签发采用现有公钥算法的数字证书,以及采用未来能抗量子攻击的公钥算法的数字证书,在目前阶段使用现有公钥算法的数字证书,然后在未来某个时间点切换到采用了抗量子攻击的公钥算法的数字证书。同样地,这种方式不但给用户带来不便且造成浪费。5、总之,针对以上情形的现有方案,需要用户持有、维护多个不同的数字证书,这给用户带来很大不便,也增加了各方的维护成本,从用户的角度,当然最好只需申请、维护一个x509数字证书,使用一个x509数字证书就能在各种应用、各种应用场景使用,而且期望能在用户不知晓、不手工参与的情况下自动完成从采用现有公钥算法的数字证书到采用抗量子攻击的新公钥算法的数字证书的过渡,而这似乎与目前通常的常识、做法相违背,目前尚没有技术能做到这点。技术实现思路1、本发明的目的是针对目前用户持有多个数字证书存在的问题,提出一种用户只需持有、维护一个数字证书的解决方案,且该数字证书仍然为x509数字证书。2、针对本发明的目的,本发明提出的技术方案包括一种集成数字证书生成方法,针对此方法生成的数字证书及证书密钥的使用方法,以及相应的数字证书生成和使用系统。3、本发明的集成数字证书生成方法具体如下。4、当数字证书签发系统(ca系统)针对一个用户(或实体)签发数字证书时,先生成一个签发者未签名、其它信息已填充的数字证书a(它可以是未编码的证书模板,也可以是编码后的待签名的准数字证书,编码即asn.1ber、cer、der编码以及符合证书格式要求的编码,目前v3数字证书采用的是der编码),生成签发者已签名的数字证书b1,…,数字证书bm,m≥1;未签名的数字证书a及已签名的数字证书b1,…,数字证书bm的用户公钥(或对应的密钥对)不必不同(未签名、已签名的不同数字证书的签发者名、主体名及序列号等信息也不必不同,不必不同即可以相同,也可以不同);5、数字证书b1,…,数字证书bm相对于未签名的数字证书a的不同信息(即差别信息)分别构成了差别信息集dsetb1,…,dsetbm;未签名的数字证书a有,数字证书b1,…,数字证书bm也有但信息内容不同的信息,未签名的数字证书a有而数字证书b1,…,数字证书bm没有的信息,以及未签名的数字证书a没有而数字证书b1,…,数字证书bm有的信息,在dsetb1,…,dsetbm中被分别标记为差别信息(标记差别信息是哪项,差别情形类型是哪个,若必要,数字证书bi的差别信息内容是啥);每个已签名的数字证书b1,…,数字证书bm的证书签名(即采用签发者的签名私钥运算得到的签名数据,即签名值)属于与未签名的数字证书a的差别信息;6、数字证书签发系统将dsetb1,…,dsetbm添加到未签名的数字证书a中,然后生成经编码后的待签名的集成数字证书a,然后采用未签名的数字证书a中的签发者的签名私钥对待签名的集成数字证书a进行数字签名,得到用户的集成数字证书a(即集成数字证书a除了dsetb1,…,dsetbm以及集成数字证书a的证书签名外,其它证书信息与未签名的数字证书a相同,集成数字证书a中的用户公钥就是未签名的数字证书a中的用户公钥,集成数字证书a对应的用户密私钥就是未签名的数字证书a对应的用户私钥,即集成数字证书a除了dsetb1,…,dsetbm外的信息与数字证书b1,…,数字证书bm的差别信息就是dsetb1,…,dsetbm);7、在用户端,集成数字证书a的密钥对和数字证书b1,…,数字证书bm的密钥对作为一个集成密钥对象(如一个windows csp密钥容器)保存在用户密码装置或密码组件中,或者集成数字证书a的私钥和数字证书b1,…,数字证书bm的私钥作为了一个集成密钥对象(如pkcs#11的私钥对象)保存在用户密码装置或密码组件中;8、所述集成密钥对象是一个从密钥使用程序的角度,与存放单个密钥对或私钥的密钥对象没有差别的密钥对象,但密钥对象中实际存放了集成数字证书a的密钥对或私钥,以及数字证书b1,…,数字证书bm的密钥对或私钥;除了密钥管理接口,其它程序对集成密钥对象中的密钥包括公钥和/或私钥的使用,使用的是集成数字证书a所对应的用户密钥;9、以上数字证书包括针对个人用户、组织机构(用户)的数字证书(如用于组织机构的电子印章、电子签章的数字证书、数字证书签发者的ca数字证书)以及针对设备的数字证书(如ssl数字证书、vpn数字证书);10、以上经签发者私钥签名后生成的数字证书皆为x509数字证书。11、dsetbi给出的未签名的数字证书a与数字证书bi的差别信息的标记,可以是直接给出的,比如,给出差别信息项,比如信息项的名称、标识符或标号,相应的差别情形类型指示,必要时,给出数字证书bi相应的差别信息内容即数据,或者以隐含、默认的方式给出,比如,在差别信息是预知的、固定的,这时差别信息的部分或全部不必出现在dsetbi中,比如,若签发者名、签名算法不同,则这些差别信息内容是预先可知的且是固定的,可以不出现在dsetbi中。12、集成数字证书a是在最初申请的数字证书a的基础上添加了差别信息集dsetb1,…,dsetbm后的数字证书,从用户和应用程序的角度,它与通常的x509数字证书没有差别。13、有些技术概念说明一下,关于数字签名,它可能有多种含义,比如,它可以是一个防伪防篡改的技术概念,可以是一个使用私钥对数据进行签名的运算、计算处理过程,可以是一个使用私钥对数据进行签名运算后得到的结果(即签名值),数字签名的具体含义是什么,要依据上下文理解。还有,数字证书中的签发者(issuer)字段存放的是签发者的名字(name),因此,签发者名即指签发者(issuer)字段中的签发者名字(name),数字证书中的主体(subject)字段存放的证书持有者的名字(name),因此,主体名即主体(subject)字段中的主体名字(name)。14、将dsetb1,…,dsetbm添加到未签名的数字证书a中的方式,即将dsetb1,…,dsetbm包含在集成数字证书a中的方式,包括:15、将dsetb1,…,dsetbm放置到数字证书中的自定义的扩展字段(extensionfields),或者将dsetb1,…,dsetbm经编码后放置到数字证书的主体别名中(主体别名,subject alternative name,subjectaltname,主体别名为一个预定义的扩展字段,其字段内容的类型可以进一步扩展定义);16、对dsetb1,…,dsetbm的编码包括将dsetb1,…,dsetbm中的数据编码(比如经base64编码)为符合主体别名要求的数据类型(如ia5string、printablestring字符类型),以及编码为符合主体别名要求的数据格式(比如,符合邮箱地址、uri格式要求的数据);17、若将dsetb1,…,dsetbm经编码后放置到数字证书的主体别名中,则dsetb1,…,dsetbm的数据被编码为(一个或多个)主体别名中的伪数据,所述伪数据指具有规定的数据格式(比如邮箱地址、uri格式),但不具有对应的真实含义的数据(比如假邮箱地址、假uri)。18、添加到未签名的数字证书a中的dsetb1,…,dsetbm数据是未压缩的数据或压缩了的数据,若是压缩的数据,则添加前先对数据进行压缩。19、若签发的集成数字证书a和数字证书b1,…,数字证书bm的用户密钥对由用户端产生,则在用户申请数字证书时,用户端的数字证书申请客户端程序(此客户端程序通常由ca系统厂家提供)调用密码装置或密码组件,生成请求签发的数字证书a、数字证书b1,…,数字证书bm的密钥对,生成证书签发请求(certificate signing request,csr),证书签发请求由请求签发的数字证书a中的用户公钥(也即集成数字证书a中的用户公钥)所对应的用户私钥签名,证书签发请求中被签名的数据包括未签名的数字证书a的用户公钥、数字证书bi的用户公钥,以及数字证书bi的用户公钥所对应的用户私钥对数字证书bi的用户公钥的数字签名,i=1,…,m。20、针对以上所述各种数字证书及证书密钥的使用方式包括:21、应用程序或数字证书应用编程接口直接使用集成数字证书a及对应的密钥,或者应用程序或数字证书应用编程接口在需要时从集成数字证书a中重构、恢复出需要使用的(某个特定的)数字证书bi及对应的密钥,1≤i≤m,然后使用数字证书bi及对应的密钥,或者应用程序或数字证书应用编程接口仅仅使用从集成数字证书a中重构、恢复出的需要使用的(某个特定的)数字证书bi及对应的密钥,i=1,…,或m,不使用集成数字证书a,或者应用程序或数字证书应用编程接口在需要时使用从集成数字证书a中重构、恢复出的(某个特定的)数字证书bi及对应的密钥,i=1,…,或m,替代集成数字证书a,然后使用数字证书bi,之后不再使用集成数字证书a;22、集成数字证书a、数字证书bi对应的密钥包括数字证书上的用户公钥及用户公钥所对应的用户私钥;23、应用程序或数字证书应用编程接口从集成数字证书a中选择、选定一个(特定的)数字证书bi,1≤i≤m,的方式包括:根据应用类型或应用需要或程序代码编码或程序设置/配置,在数字证书b1,…,数字证书bm中选择或选定一个要使用的(特定的)数字证书。24、当应用程序或数字证书应用编程接口需要使用数字证书bi、数字证书bi上的公钥进行密码运算,其中1≤i≤m,而没有单独存在的数字证书bi可使用时,应用程序或数字证书应用编程接口或它们所调用的程序或系统,利用集成数字证书a上除dsetb1,…,dsetbm之外的信息(即集成数字证书a上对应于未签名数字证书a的信息加上集成数字证书a上的证书签名)以及差别信息集dsetbi,重构、恢复出(已签发者签名的)数字证书bi,之后,应用程序或数字证书应用编程接口使用数字证书bi、数字证书bi上的公钥进行密码运算;25、应用程序或数字证书应用编程接口所调用的程序或系统包括数字证书管理接口或数字证书重构系统;所述数字证书重构系统为提供从集成数字证书a中重构、恢复出数字证书bi服务的系统,1≤i≤m。26、应用程序可以自己完成从集成数证书a重构、恢复数字证书bi的操作处理,但通常应用程序是通过数字证书应用编程接口或数字证书管理接口或通过数字证书重构系统完成此操作处理;数字证书应用编程接口可以自己完成从集成数证书a重构、恢复数字证书bi的操作处理,也可通过数字证书管理接口或通过数字证书重构系统完成此操作处理;通常,应用程序或数字证书应用编程接口通过密码接口调用密码装置或密码组件使用公钥进行密码运算(这里的密码接口可以是密码装置或密码组件提供的密码接口,如pkcs#11、windows csp的cryptospi,也可以是在密码装置或密码组件提供的密码接口之上的密码应用编程接口,如通过windows cryptoapi调用csp的cryptospi)。27、这里的应用程序包括用户端的应用程序和服务端的应用程序(系统);用户端的应用程序包括用户端独立运行的应用程序(没有服务端的程序,比如,桌面程序、独立app)或者应用服务系统的客户端程序。28、若集成数字证书a中的差别信息集dsetbi数据是压缩了的数据,则在使用dsetbi重构、恢复数字证书bi前,先解压缩从集成数字证书a中获得的压缩了的dsetbi数据,恢复出dsetbi,i=1,…m。29、当应用程序或数字证书应用编程接口需要使用数字证书bi对应的用户私钥进行密码运算,其中1≤i≤m,而没有单独存在的数字证书bi对应的用户私钥(即单独的密钥对或私钥的密钥对象)可使用时,应用程序或数字证书应用编程接口利用密码装置或密码组件中的集成数字证书a所对应的用于存放密钥对或私钥的集成密钥对象中的数字证书bi所对应的密钥对或私钥(集成密钥对象包含有集成数字证书a及数字证书bi的密钥对或私钥,1≤i≤m),在密码装置或密码组件中构造针对数字证书bi的密钥对的密钥对象(如csp中的密钥容器)或针对数字证书bi的私钥的密钥对象(如pkcs#11中的私钥对象),之后,应用程序或数字证书应用编程接口调用密码装置或密码组件,使用数字证书bi对应的密钥对的密钥对象中或对应的私钥的密钥对象中的用户私钥进行密码运算。30、应用程序或数字证书应用编程接口通过调用密码装置或密码组件的密钥管理接口完成(以上各种)数字证书的密钥对的生成、(各种)密钥对或私钥的密钥对象的构造;应用程序或数字证书应用编程接口通过调用密码接口(比如,密码装置或密钥组件的密码接口,或者在密码装置或密钥组件的密码接口之上的密码应用编程接口)使用密码装置或密码组件中的存储有(以上各种)数字证书的密钥对或私钥的(集成或普通)密钥对象中的私钥进行密码运算。31、应用程序可以自己调用密钥管理接口完成(以上各种)数字证书的密钥对的生成、密钥对或私钥的密钥对象的构造,自己调用密码接口使用密码装置或密码组件中的存储有(以上各种)数字证书的密钥对或私钥的(集成或普通)密钥对象中的私钥进行密码运算,也可以调用数字证书应用编程接口,由数字证书应用编程接口调用密钥管理接口、密码接口完成相应的操作处理。32、数字证书bi重构的同时,进行数字证书bi的密钥对或私钥的密钥对象的构造不是必须的,比如,对于非数字证书持有者的应用程序或数字证书应用编程接口,只需也只能进行数字证书bi重构,不能进行数字证书bi的密钥对或私钥的密钥对象(即密钥对对象或私钥对象)的构造(因为非数字证书持有者没有数字证书对应的私钥),而对于数字证书持有者的应用程序或数字证书应用编程接口,通常要同时进行数字证书bi的重构以及密钥对或私钥的密钥对象(即密钥对对象或私钥对象)的构造。33、数字证书bi、数字证书bi上的用户公钥及对应的用户私钥(即密钥对或私钥的密钥对象)在使用完后,可以继续存在、保存,用于后续使用(即永久性的),或者被丢弃(即临时性的)。数字证书bi的永久性和临时性与数字证书bi对应的用户私钥(即密钥对或私钥的密钥对象)永久性和临时性是的独立的。34、若用户数字证书(包括集成数字证书a和数字证书b1,…,数字证书bm)的私钥或私钥秘密通过秘密共享方式分割保存在用户密码装置或密码组件的(集成数字证书a以及数字证书b1,…,数字证书bm的密钥对或私钥的)密钥对象中和服务端的密码装置的(集成数字证书a以及数字证书b1,…,数字证书bm的密钥对或私钥的)密钥对象中(若通过秘密共享方式进行私钥或私钥秘密的分割,则用户端、服务端的密钥对象中分别存储的是对应的私钥份额或秘密份额),则在生成证书签发请求时,用户密码装置或密码组件、服务端的密码装置(设备)参与数字证书密钥对以及证书签发请求的生成,在构造数字证书bi的密钥对或私钥的密钥对象时,1≤i≤m,用户端和服务端分别针对用户密码装置或密码组件中的(集成数字证书a以及数字证书bi的的密钥对或私钥的)密钥对象中和服务端的密码装置的(集成数字证书a以及数字证书bi的密钥对或私钥的)密钥对象中的私钥份额或秘密份额进行(同样的或类似的)密钥对象构造操作处理,其中用户端的操作处理由应用程序或数字证书应用编程接口(通过调用密码装置或密码组件的密钥管理接口)完成,服务端的操作处理由服务端的密钥管理程序(通常通过调用密码装置的密钥管理接口)完成;所述私钥秘密指本身不是私钥但得到了它就能恢复出或破解出私钥的保密数据。35、若用户数字证书(包括集成数字证书a和数字证书b1,…,数字证书bm)的私钥或私钥秘密以密钥托管方式保存在服务端的密码装置(设备)的(集成数字证书a以及数字证书b1,…,数字证书bm的密钥对或私钥的)密钥对象中,则在生成证书签发请求时,服务端的密码装置参与数字证书密钥对和证书签发请求的生成,在构造数字证书bi的密钥对或私钥的密钥对象时,1≤i≤m,应用程序或数字证书应用编程接口通过调用服务端的密钥管理程序,针对服务端的密码装置中的(集成数字证书a以及数字证书bi的密钥对或私钥的)密钥对象中的密钥对或私钥进行密钥对象构造的操作处理(服务端的密钥管理程序通常通过调用密码装置的密钥管理接口完成相应的操作处理)。36、基于以上方法可构建如下集成数字证书生成及使用系统:37、所述系统包括数字证书签发系统(ca系统),密码装置或密码组件,以及数字证书应用编程接口,其中,数字证书签发系统按上述集成数字证书a生成方法为用户生成上述集成数字证书a,密码装置或密码组件按上述方式存储集成数字证书a及数字证书b1,…,数字证书bm对应的用户密钥对或用户私钥,以及实施使用公钥和/或用户私钥进行密码运算的功能,数字证书应用编程接口按上述方式从用户集成数字证书a中重构、恢复出数字证书bi,以及(通过调用密钥管理接口)在用户密码装置或密码组件内构造数字证书bi对应的用户密钥对或私钥的密钥对象,1≤i≤m,(通过调用密码接口)使用密钥对象中的数字证书的私钥;密码装置或密码组件有密钥管理接口用于密码装置或密码组件内的密钥的管理,有密码接口用于使用密码装置或密码组件进行密码运算。38、从以上技术实现要素:并结合具体实施方式可以看到,基于本发明的技术方案,用户只需申请、维护一个数字证书即集成数字证书a,集成数字证书a本身可以作为一个普通的x509数字证书使用,而在需要的时候,应用程序或数字证书应用编程接口可以自动从集成数字证书a中重构、恢复出某个特定的数字证书bi,自动在密码装置或组件中构造数字证书bi对应的用户密钥对或用户私钥的密钥对象,使用数字证书bi及密钥(公钥、私钥),1≤i≤m,无需用户手工干预;数字证书bi,1≤i≤m,可以是采用不同公钥算法的数字证书,或者是匿名(假名)数字证书,或者是用于过渡的抗量子攻击的新公钥算法的数字证书,因此,本发明利用一个集成数字证书a很好地解决了
背景技术
:中所说的各种问题。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1