用于算法过渡的多公钥数字证书的密钥使用方法技术

技术编号:38357269 阅读:8 留言:0更新日期:2023-08-05 17:28
用于算法过渡的多公钥数字证书的密钥使用方法:用于算法过渡的多公钥数字证书除了主体公钥即主公钥外还包含一个或多个用户从公钥,从公钥的密码算法是算法过渡后期望使用的目标公钥密码算法;不同从公钥的密钥用途不同;对于使用多公钥数字证书的密钥进行密码运算的请求,支持多公钥数字证书的密码组件根据密码运算的类型、密码运算针对的数据类型以及密钥用途,自动选择多公钥数字证书的主密钥或从密钥进行密码运算,其中密码运算针对的数据类型包括:原生数据,使用密钥进行密码运算后得到的非原生数据;密码组件按通常方式使用单公钥数字证书的密钥进行密码运算;不支持多公钥数字证书的密码组件使用多公钥数字证书的主体密钥进行密码运算。主体密钥进行密码运算。

【技术实现步骤摘要】
用于算法过渡的多公钥数字证书的密钥使用方法


[0001]本专利技术属于密码
,特别是涉及用于算法过渡的多公钥数字证书的密钥使用方法。

技术介绍

[0002]X509数字证书是一种基于公钥密码技术的电子身份凭证,利用它可以实现各类应用中的身份鉴别、数字签名、数据加密、保密通信等安全功能。每个数字证书对应一对用户密钥,公钥和私钥,其中用户公钥包含在数字证书中、通过数字证书安全发布,因此,数字证书也称为公钥数字证书,用户私钥由用户(密码模块或密码装置或系统)安全保存。数字证书的拥有者用户在数字证书中称为主体(Subject),因此,数字证书中的用户公钥称为主体公钥,对应一个私钥称为主体私钥。数字证书会限定用户(主体)密钥的密钥用途,数字证书给出的密钥用途(包括证书中密钥用途字段和扩展密钥用途字段中给出的密钥用途)是应用层面的用途(比如抗抵赖),不是密码运算层面的用途(比如签名、签名验证运算),而且密钥用途针对的是密钥对的用途,不仅仅是公钥或私钥的用途,比如,抗抵赖涉及使用私钥对数据进行签名运算生成签名值(数字签名),以及使用公钥对数据的签名值(数字签名)进行签名验证运算,因此,密钥用途与使用公钥、私钥的密码运算相关,但不是一回事。关于数字签名需说明一下,它有多种含义,它可以是指一个防伪防篡改的技术概念,可以是指使用私钥对数据进行的签名运算处理过程,可以是指使用私钥对数据进行签名运算后得到的结果即签名值。
[0003]在实际应用中由于某些原因,比如因为运算/计算效率的问题、政策法规的要求,可能需要用一种公钥密码算法去替代另一种公钥密码算法,比如,由于运算/计算效率的问题,需要用椭圆曲线公钥密码算法去替代RSA算法,由于政策法规要求需要用SM2公钥密码算法去替代RSA算法、ECDSA算法,因此,这就存在采用原有(旧)公钥密码算法(比如RSA算法)的数字证书向采用新公钥密码算法(比如SM2算法)的数字证书过渡的问题。
[0004]还有,目前广泛使用的各种公钥密码算法,比如RSA密码算法、椭圆曲线密码算法如SM2、ECDSA,都不能抗量子计算攻击,而目前的数字证书的用户密钥对应的公钥密码算法是这类非抗量子攻击的公钥密码算法,因此,这存在一个从非抗量子攻击的公钥密码算法向抗量子攻击的公钥密码算法的过渡问题,存在一个从采用非抗量子攻击的公钥密码算法的数字证书向采用抗量子攻击的公钥密码算法的数字证书的过渡问题。
[0005]但是,目前存在的大量应用程序/应用系统都是基于原有(旧)公钥密码算法(比如低效、不符合政策的算法,不能抗量子攻击的算法)以及基于采用原有公钥密码算法的数字证书而开发、部署的,这些应用程序/应用系统不可能一夜之间完成改造、替换,众多的数字证书用户也不可能在一夜之间更换他们的采用原有(旧)公钥密码算法的数字证书,换成采用新公钥密码算法(高效、符合政策规定的算法,抗量子攻击公钥密码算法)的数字证书,这同样不但涉及时间问题,还涉及改造、更换成本的问题,因此,这就存在一个采用原有(旧)公钥密码算法的数字证书向采用新公钥密码算法的数字证书的过渡问题,包括应用程序/
应用系统使用的数字证书、用户持有的数字证书的过渡问题。
[0006]针对以上问题的一种解决方案是采用多公钥数字证书。多公钥数字证书是一种数字证书为X509数字证书,它在一个单公钥数字证书基础上通过扩展包含了多个对应不同公钥密码算法的用户公钥,相应地对应多个用户私钥,在进行密码运算时程序/系统根据需要选择现在合适的公钥或私钥,比如选择更优的、选择符合政策法规的公钥密码算法的公钥或私钥、选择抗量子攻击的公钥密码算法的公钥或私钥进行密码运算,但是,利用多公钥数字证书实现原有公钥密码算法(被替换的公钥密码算法)向新(目标)公钥密码算法过渡,在过渡期存在或面临如下问题:
[0007](1)支持和不支持多公钥数字证书的应用程序/应用系统同时存在;
[0008](2)多公钥数字证书的信赖方可能不支持多公钥数字证书,不支持新公钥密码算法(新公钥密码算法即密码算法过渡过程中用于替代原有公钥密码算法的目标公钥密码算法);
[0009](3)除了多公钥数字证书存在之外,采用原有旧公钥密码算法的单公钥数字证书、采用新公钥密码算法的单公钥数字证书同时存在(多公钥数字证书是用于过渡的,过渡期早期采用原有旧公钥密码算法的单公钥数字证书会存在,过渡后期采用新公钥密码算法的单公钥数字证书会存在,最终过渡到全部采用了新公钥密码算法的单公钥数字证书);
[0010](4)支持和不支持新公钥密码算法、支持和不支持采用新公钥密码算法的单公钥数字证书的应用程序/应用系统同时存在;
[0011](5)应用程序/应用系统使用的密码组件(如密码模块或密码装置或密码系统)提供的密码接口(密码应用编程接口)提供的密码算法通常是预先规定的、固定的(比如,PKCS#11提供哪些密码算法支持是由接口规范规定的,Windows提供哪些类型的CSP及相应的密码算法也是规定好的,不能任意添加的),这就存在接口定义、规定或规范不提供对新的公钥密码算法的支持,而已有程序是通过已有的接口定义、规定或规范来使用密码算法的问题;
[0012](6)由于某些原因,比如时间原因、成本原因、技术原因、市场原因,应用程序/应用系统可能来不及或不能修改。

技术实现思路

[0013]本专利技术的目的是针对用于算法过渡的多公钥数字证书在应用、使用过程中存在的问题提出一种解决方案。本专利技术提出的技术方案为用于算法过渡的多公钥数字证书的密钥使用方法,具体如下。
[0014]用于算法过渡的多公钥数字证书是一种X509格式的数字证书,其在单公钥数字证书基础上经扩展包含了多个用户公钥,其中一个公钥为公钥密码算法A的公钥PK
A
,公钥PK
A
对应单公钥数字证书中的(用户)主体公钥,存放在数字证书的主体公钥信息(subjectPublicKeyInfo)字段中(这与单公钥数字证书一样),其他公钥分别为公钥密码算法B1的公钥PK
B1


、公钥密码算法B
m
的公钥PK
Bm
,m≥1;公钥PK
A
为多公钥数字证书的主体公钥也称为(用户)主公钥,公钥PK
B1


、公钥PK
Bm
为多公钥数字证书的(用户)从公钥;公钥密码算法B1、

、公钥密码算法B
m
为密码算法过渡的目标公钥密码算法(即过渡后要使用的算法,而公钥密码算法A是过渡后要替换掉的密码算法);若m>1,则公钥密码算法B1、

、公钥
密码算法B
m
对应的密钥(包括公钥、私钥)的密钥用途不同(但公钥密码算法B1、

、公钥密码算法B
m
可有相同,且公钥密码算法B1、

、公钥密码算法B
m
中允许包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:用于算法过渡的多公钥数字证书是一种X509格式的数字证书,其在单公钥数字证书基础上经扩展包含了多个用户公钥,其中一个公钥为公钥密码算法A的公钥PK
A
,公钥PK
A
对应单公钥数字证书中的主体公钥,存放在数字证书的主体公钥信息字段中,其他公钥分别为公钥密码算法B1的公钥PK
B1


、公钥密码算法B
m
的公钥PK
Bm
,m≥1;公钥PK
A
为多公钥数字证书的主体公钥也称为主公钥,公钥PK
B1


、公钥PK
Bm
为多公钥数字证书的从公钥;公钥密码算法B1、

、公钥密码算法B
m
为密码算法过渡的目标公钥密码算法;若m>1,则公钥密码算法B1、

、公钥密码算法B
m
对应的密钥的密钥用途不同,公钥密码算法B1、

、公钥密码算法B
m
的密钥的密钥用途的合集包含多公钥数字证书的公钥密码算法A的主体密钥的密钥用途;公钥密码算法B1、

、公钥密码算法B
m
的密钥的密钥用途在多公钥数字证书中给出或者缺省给出;针对公钥PK
A
及整个数字证书的数字签名数据即签名值为数字证书中的签名值字段中存放的数字签名数据即签名值;针对每个从公钥有单独的数字签名或没有单独的数字签名;针对从公钥的数字签名是对包含从公钥的数据进行签名;针对不同公钥的数字签名的签发者及所采用的数字签名算法不必相同;多公钥数字证书中的从公钥以及针对从公钥的数字签名数据即签名值为在单公钥数字证书基础上扩展的证书信息;用于算法过渡的多公钥数字证书对应有一组私钥,其中包括公钥密码算法A的私钥SK
A
,公钥密码算法B1的私钥SK
B1


、公钥密码算法B
m
的私钥SK
Bm
,各私钥分别与多公钥数字证书上的公钥对应,其中SK
A
为主体公钥即主公钥PK
A
对应的私钥,即主体私钥也称为主私钥,私钥SK
B1


、SK
Bm
分别为从公钥PK
B1


、公钥PK
Bm
对应的私钥,称为多公钥数字证书的从私钥;多公钥数字证书对应的一组私钥保存在用户或用户授权的密码组件中;主私钥与从私钥相关联;所述密码组件为提供密码功能的软件或硬件或软硬件结合的组件,包括密码模块或密码装置或密码系统;多公钥数字证书的主体公钥/主公钥和主体私钥/主私钥统称为主体密钥/主密钥;多公钥数字证书的从公钥和从私钥统称为从密钥;能识别用于算法过渡的多公钥数字证书、使用其从密钥进行密码运算的密码组件为支持多公钥数字证书的密码组件,否则为不支持多公钥数字证书的密码组件;当不支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥包括公钥和私钥进行密码运算的请求后,使用请求中指定的公钥密码算法A的密钥进行密码运算;当支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥包括公钥和私钥进行密码运算的请求后,按如下方式进行处理:若公钥密码算法A的密钥为多公钥数字证书的主体密钥即主密钥,则密码组件根据密码运算的类型、密码运算所针对的数据的类型以及密钥用途,选择多公钥数字证书的主密钥或从密钥进行密码运算;若公钥密码算法A的密钥不是多公钥数字证书的主体密钥,则密码组件按通常的使用非多公钥数字证书的密钥进行密码运算的方式进行密码运算处理,其中通常的使用非多公钥数字证书的密钥进行密码运算的方式包括使用单公钥数字证书的密钥进行密码运算、以及使用单独存在的公钥密码算法的密钥进行密码运算的方式;支持多公钥数证书的密码组件接收到密码调用请求、使用密钥进行密码运算的过程中,若使用或包括使用从公钥进行涉及数据保密的密码运算,并将使用或包括使用从公钥
进行密码运算后的结果作为公钥密码算法A的密码数据返回,则返回的是公钥密码算法A的伪密码数据;所述使用或包括使用从公钥进行涉及数据保密的密码运算是指在密码运算过程中使用从公钥进行密码运算且使用从公钥进行密码运算的目的是使得密码运算得到的数据在传输或存储或使用过程中防止敏感数据被泄露;支持多公钥数证书的密码组件接收到密码调用请求、使用密钥所进行密码运算的过程中,若使用或包括使用从私钥进行涉及数据防篡改、防伪造的密码运算,并将使用或包括使用从私钥进行密码运算后的结果作为公钥密码算法A的密码数据返回,则返回的是公钥密码算法A的伪密码数据;所述使用或包括使用从私钥进行涉及数据防篡改、防伪造的密码运算是指在密码运算过程中使用从私钥进行密码运算且使用从私钥进行密码运算的目的是使得密码运算得到的数据在传输或存储或使用过程中防止数据被篡改、被伪造;若密码组件将使用公钥密码算法A的密钥进行密码运算后的结果返回,则返回的是公钥密码算法A的真实的密码数据;所述密码数据为使用密钥进行密码运算后得到的数据;所述伪密码数据是被标记为或当作为使用一种公钥密码算法的密钥进行密码运算后得到并按此算法的规定编码后的数据,但实际上不是使用此被标记或当作使用的公钥密码算法的密钥进行密码运算后得到并按此算法的规定编码后的数据;所述真实的密码数据是使用实际采用的公钥密码算法及密钥进行密码运算得到并按此实际采用的公钥密码算法的规定编码后的数据;伪密码数据对应有真实的密码数据;伪密码数据中包含或不包含有对应的真实的密码数据;所述伪密码数据具有或不具有被标记或当作使用的公钥密码算法的密码数据结构;所述伪密码数据中有标志或者伪密码数据具有不同的数据长度用于与被标记或当作使用的公钥密码算法的真实的密码数据相区分、相区别;伪密码数据对应的真实的密码数据的存放位置预先约定,或者伪密码数据中有对应的真实的密码数据的获取位置信息;当支持多公钥数字证书的密码组件针对之前使用密钥进行密码运算得到的密码数据进行处理时,若待处理的密码数据是公钥密码算法A的伪密码数据,则待处理的密码数据是之前使用或包括使用从密钥进行密码运算得到的数据,否则不是;若伪密码数据中不包含真实的密码数据,则密码组件从约定的位置获得伪密码数据对应的真实的密码数据,或者密码组件依据伪密码数据中给出的真实的密码数据的获取位置,获得伪密码数据对应的真实的密码数据;若伪密码数据中不包含真实的密码数据,则真实的密码数据临时和/或永久地保存在约定的位置,以及/或者临时和/或永久地保存在伪密码数据中给出的密码数据的获取位置;若真实的密码密码数据同时保存在临时存放位置和永久存放位置,则当需要获得伪密码数据对应的真实的密码数据时,密码组件先从临时存放位置获取真实的密码数据,若从临时存放位置无法获得真实的密码数据,则从永久存放位置获取真实的密码数据。2.根据权利要求1所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求后:若调用请求为使用一个公钥密码算法A的公钥进行加密运算,而调用请求中指定的公钥密码算法A的公钥为一个多公钥数字证书的主体公钥即主公钥,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥
的多公钥数字证书中的相应从公钥进行密码运算;若调用请求为使用一个公钥密码算法A的公钥进行加密运算,而调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体公钥,则密码组件使用调用请求中指定的公钥密码算法A的公钥进行密码运算;若调用请求为使用一个公钥密码算法A的私钥进行解密运算,而调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,且待解密的数据是伪密码数据,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书的相应从私钥进行密码运算;若调用请求为使用一个公钥密码算法A的私钥进行解密运算,而调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体主私钥,或者待解密的数据不是伪密码数据,则密码组件使用调用请求中指定的公钥密码算法A的私钥进行密码运算。3.根据权利要求1所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求,而调用请求为使用一个公钥密码算法A的公钥和一个公钥密码算法A的私钥进行密码运算,其中包括密钥协商、签加密密码运算,且调用请求中指定的公钥密码算法A的公钥为一个多公钥数字证书的主体公钥即主公钥,调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,或者密码运算所针对的数据是之前使用一个从公钥和一个从私钥进行密码运算得到的伪密码数据,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥的多公钥数字证书中的相应从公钥以及以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书的相应从私钥进行密码运算;若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求,而调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体私钥即主公钥,或调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体私钥,且密码运算所针对的数据不是之前使用一个从公钥和一个从私钥进行密码运算得到的伪密码数据,则密码组件使用调用请求中指定的公钥密码算法A的公钥和公钥密码算法A的私钥进行密码运算。4.根据权利要求1所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:若验证数字签名的密码组件一定支持多公钥数字证书,则:当支持多公钥数字证书的密码组件接收到使用多公钥数字证书的公钥密码算法A的主体私钥即主私钥进行签名运算的请求后,根据密码运算的类型和密钥用途选择、使用多公钥数字证书的相应从私钥进行签名运算;当接收到使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值,而调用请求中指定的公钥密码算法A的公钥为多公钥数字证书的主体公钥即主公钥,待处理的签名值为伪密码数据即伪签名值,则密码组件利用伪签名值获得真实的签名值,然后根据密码运算的类型和密钥用途选择、使用多公钥数字证书的相应从公钥进行密码运算。5.根据权利要求4所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:若针对多公钥数字证书进行数字签名的签发者的数字证书即CA数字证书也是多公钥
数字证书,则多公钥数字证书的签名值字段中的签名值为CA数字证书的从私钥进行签名运算所生成的伪签名值,若伪签名值不包含真实的签名值,则真实的签名值存放在多公钥数字证书中,以及/或者存放在约定的位置;若伪签名值不包含真实的签名值,而真实的签名值存放在多公钥数字证书中,则要使用公钥针对多公钥数字证书的签名值即伪签名值进行密码运算处理的密码组件从多公钥数字证书中获取对应的真实的签名值;密码组件通过检查确定密码运算处理要使用的公钥为多公钥CA数字证书的主体公钥从而确定待密码运算处理的伪签名值为多公钥数字证书的伪签名值,或者/以及多公钥数字证书中的伪签名值有与其他伪签名值有不一样的标志信息,密码组件通过标志信息确定待密码运算处理的伪签名值为多公钥数字证书中的伪签名值。6.根据权利要求1所述的用...

【专利技术属性】
技术研发人员:龙毅宏许明陈韶光王利国
申请(专利权)人:北京天威诚信电子商务服务有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1