CN116527282A - 用于算法过渡的多公钥数字证书的密钥使用方法 - Google Patents

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

Info

Publication number
CN116527282A
CN116527282A CN202310622266.9A CN202310622266A CN116527282A CN 116527282 A CN116527282 A CN 116527282A CN 202310622266 A CN202310622266 A CN 202310622266A CN 116527282 A CN116527282 A CN 116527282A
Authority
CN
China
Prior art keywords
key
public
digital certificate
cryptographic
public key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310622266.9A
Other languages
English (en)
Inventor
龙毅宏
许明
陈韶光
王利国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Itruschina Co ltd
Original Assignee
Itruschina Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Itruschina Co ltd filed Critical Itruschina Co ltd
Priority to CN202310622266.9A priority Critical patent/CN116527282A/zh
Publication of CN116527282A publication Critical patent/CN116527282A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

用于算法过渡的多公钥数字证书的密钥使用方法
技术领域
本发明属于密码技术领域,特别是涉及用于算法过渡的多公钥数字证书的密钥使用方法。
背景技术
X509数字证书是一种基于公钥密码技术的电子身份凭证,利用它可以实现各类应用中的身份鉴别、数字签名、数据加密、保密通信等安全功能。每个数字证书对应一对用户密钥,公钥和私钥,其中用户公钥包含在数字证书中、通过数字证书安全发布,因此,数字证书也称为公钥数字证书,用户私钥由用户(密码模块或密码装置或系统)安全保存。数字证书的拥有者用户在数字证书中称为主体(Subject),因此,数字证书中的用户公钥称为主体公钥,对应一个私钥称为主体私钥。数字证书会限定用户(主体)密钥的密钥用途,数字证书给出的密钥用途(包括证书中密钥用途字段和扩展密钥用途字段中给出的密钥用途)是应用层面的用途(比如抗抵赖),不是密码运算层面的用途(比如签名、签名验证运算),而且密钥用途针对的是密钥对的用途,不仅仅是公钥或私钥的用途,比如,抗抵赖涉及使用私钥对数据进行签名运算生成签名值(数字签名),以及使用公钥对数据的签名值(数字签名)进行签名验证运算,因此,密钥用途与使用公钥、私钥的密码运算相关,但不是一回事。关于数字签名需说明一下,它有多种含义,它可以是指一个防伪防篡改的技术概念,可以是指使用私钥对数据进行的签名运算处理过程,可以是指使用私钥对数据进行签名运算后得到的结果即签名值。
在实际应用中由于某些原因,比如因为运算/计算效率的问题、政策法规的要求,可能需要用一种公钥密码算法去替代另一种公钥密码算法,比如,由于运算/计算效率的问题,需要用椭圆曲线公钥密码算法去替代RSA算法,由于政策法规要求需要用SM2公钥密码算法去替代RSA算法、ECDSA算法,因此,这就存在采用原有(旧)公钥密码算法(比如RSA算法)的数字证书向采用新公钥密码算法(比如SM2算法)的数字证书过渡的问题。
还有,目前广泛使用的各种公钥密码算法,比如RSA密码算法、椭圆曲线密码算法如SM2、ECDSA,都不能抗量子计算攻击,而目前的数字证书的用户密钥对应的公钥密码算法是这类非抗量子攻击的公钥密码算法,因此,这存在一个从非抗量子攻击的公钥密码算法向抗量子攻击的公钥密码算法的过渡问题,存在一个从采用非抗量子攻击的公钥密码算法的数字证书向采用抗量子攻击的公钥密码算法的数字证书的过渡问题。
但是,目前存在的大量应用程序/应用系统都是基于原有(旧)公钥密码算法(比如低效、不符合政策的算法,不能抗量子攻击的算法)以及基于采用原有公钥密码算法的数字证书而开发、部署的,这些应用程序/应用系统不可能一夜之间完成改造、替换,众多的数字证书用户也不可能在一夜之间更换他们的采用原有(旧)公钥密码算法的数字证书,换成采用新公钥密码算法(高效、符合政策规定的算法,抗量子攻击公钥密码算法)的数字证书,这同样不但涉及时间问题,还涉及改造、更换成本的问题,因此,这就存在一个采用原有(旧)公钥密码算法的数字证书向采用新公钥密码算法的数字证书的过渡问题,包括应用程序/应用系统使用的数字证书、用户持有的数字证书的过渡问题。
针对以上问题的一种解决方案是采用多公钥数字证书。多公钥数字证书是一种数字证书为X509数字证书,它在一个单公钥数字证书基础上通过扩展包含了多个对应不同公钥密码算法的用户公钥,相应地对应多个用户私钥,在进行密码运算时程序/系统根据需要选择现在合适的公钥或私钥,比如选择更优的、选择符合政策法规的公钥密码算法的公钥或私钥、选择抗量子攻击的公钥密码算法的公钥或私钥进行密码运算,但是,利用多公钥数字证书实现原有公钥密码算法(被替换的公钥密码算法)向新(目标)公钥密码算法过渡,在过渡期存在或面临如下问题:
(1)支持和不支持多公钥数字证书的应用程序/应用系统同时存在;
(2)多公钥数字证书的信赖方可能不支持多公钥数字证书,不支持新公钥密码算法(新公钥密码算法即密码算法过渡过程中用于替代原有公钥密码算法的目标公钥密码算法);
(3)除了多公钥数字证书存在之外,采用原有旧公钥密码算法的单公钥数字证书、采用新公钥密码算法的单公钥数字证书同时存在(多公钥数字证书是用于过渡的,过渡期早期采用原有旧公钥密码算法的单公钥数字证书会存在,过渡后期采用新公钥密码算法的单公钥数字证书会存在,最终过渡到全部采用了新公钥密码算法的单公钥数字证书);
(4)支持和不支持新公钥密码算法、支持和不支持采用新公钥密码算法的单公钥数字证书的应用程序/应用系统同时存在;
(5)应用程序/应用系统使用的密码组件(如密码模块或密码装置或密码系统)提供的密码接口(密码应用编程接口)提供的密码算法通常是预先规定的、固定的(比如,PKCS#11提供哪些密码算法支持是由接口规范规定的,Windows提供哪些类型的CSP及相应的密码算法也是规定好的,不能任意添加的),这就存在接口定义、规定或规范不提供对新的公钥密码算法的支持,而已有程序是通过已有的接口定义、规定或规范来使用密码算法的问题;
(6)由于某些原因,比如时间原因、成本原因、技术原因、市场原因,应用程序/应用系统可能来不及或不能修改。
发明内容
本发明的目的是针对用于算法过渡的多公钥数字证书在应用、使用过程中存在的问题提出一种解决方案。本发明提出的技术方案为用于算法过渡的多公钥数字证书的密钥使用方法,具体如下。
用于算法过渡的多公钥数字证书是一种X509格式的数字证书,其在单公钥数字证书基础上经扩展包含了多个用户公钥,其中一个公钥为公钥密码算法A的公钥PKA,公钥PKA对应单公钥数字证书中的(用户)主体公钥,存放在数字证书的主体公钥信息(subjectPublicKeyInfo)字段中(这与单公钥数字证书一样),其他公钥分别为公钥密码算法B1的公钥PKB1、…、公钥密码算法Bm的公钥PKBm,m≥1;公钥PKA为多公钥数字证书的主体公钥也称为(用户)主公钥,公钥PKB1、…、公钥PKBm为多公钥数字证书的(用户)从公钥;公钥密码算法B1、…、公钥密码算法Bm为密码算法过渡的目标公钥密码算法(即过渡后要使用的算法,而公钥密码算法A是过渡后要替换掉的密码算法);若m>1,则公钥密码算法B1、…、公钥密码算法Bm对应的密钥(包括公钥、私钥)的密钥用途不同(但公钥密码算法B1、…、公钥密码算法Bm可有相同,且公钥密码算法B1、…、公钥密码算法Bm中允许包括公钥密码算法A,参见具体实施方式),公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途的合集包含多公钥数字证书的公钥密码算法A的主体密钥(包括主体公钥、主体私钥)的密钥用途(比如,数字签名、密钥协商、抗抵赖、数据加密、密钥封装等);公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途在多公钥数字证书中给出或者缺省给出(比如,某个算法只能用于数字签名,则可以事先约定其密钥的密钥用途缺省的是与数字签名有关的密钥用途,比如,数字签名、抗抵赖);针对公钥PKA及整个数字证书(其中当然包括公钥PKA、从公钥PKB1、…、从公钥PKBm)的数字签名数据即签名值为数字证书中的签名值(signatureValue)字段中存放的(签发者的)数字签名数据即签名值;针对每个从公钥有单独的数字签名或没有单独的数字签名;针对从公钥的数字签名是对包含从公钥的数据进行签名(不是仅仅限于针对从公钥本身的数字签名);针对不同公钥(包括主公钥、从公钥)的数字签名的签发者及所采用的数字签名算法不必相同;多公钥数字证书中的从公钥以及针对从公钥的数字签名数据即签名值为在单公钥数字证书基础上扩展的证书信息;
用于算法过渡的多公钥数字证书对应有一组私钥,其中包括公钥密码算法A的私钥SKA,公钥密码算法B1的私钥SKB1、…、公钥密码算法Bm的私钥SKBm,各私钥分别与多公钥数字证书上的公钥对应,其中SKA为主体公钥即主公钥PKA对应的私钥,即主体私钥也称为主私钥,私钥SKB1、…、SKBm分别为从公钥PKB1、…、公钥PKBm对应的私钥,称为多公钥数字证书的(用户)从私钥;多公钥数字证书对应的一组私钥保存在用户或用户授权的密码组件中(通常私钥是保存在密钥对象中,如Windows CSP中的密钥容器、PKCS#11中的密钥对象);主私钥与从私钥相关联(利用主私钥能获得所有从私钥,或者它们保存在一个密钥数据对象中,称为集成密钥对象;通常私钥与对应的公钥也是关联的或一起保存在密钥对象中,如Windows CSP中的密钥容器);所述密码组件为提供密码功能的软件或硬件或软硬件结合的组件,包括密码模块或密码装置或密码系统;
多公钥数字证书的主体公钥/主公钥和主体私钥/主私钥统称为主体密钥/主密钥;多公钥数字证书的从公钥和从私钥统称为从密钥;
能识别用于算法过渡的多公钥数字证书、使用其从密钥进行密码运算的密码组件为支持多公钥数字证书的密码组件,否则为不支持多公钥数字证书的密码组件;
当不支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥包括公钥和私钥进行密码运算的(密码调用)请求后,使用请求中指定的公钥密码算法A的密钥进行密码运算;
当支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥包括公钥和私钥进行密码运算的请求后,按如下方式进行处理:
若公钥密码算法A的密钥为多公钥数字证书的主体密钥即主密钥,则密码组件根据密码运算的类型、密码运算所针对的数据的类型(比如原生数据,或使用主密钥、从密钥进行密码运算后得到的非原生数据)以及密钥用途,选择多公钥数字证书的主密钥或从密钥进行密码运算;
若公钥密码算法A的密钥不是多公钥数字证书的主体密钥(比如,是单公钥数证书的密钥,或单独存在的不与数字证书关联的密钥),则密码组件按通常的使用非多公钥数字证书的密钥进行密码运算的方式进行密码运算处理,其中通常的使用非多公钥数字证书的密钥进行密码运算的方式包括使用单公钥数字证书的密钥进行密码运算、以及使用单独存在的公钥密码算法的密钥(非数字证书的密钥)进行密码运算的方式;
支持多公钥数证书的密码组件接收到密码调用请求、使用密钥进行密码运算的过程中,若使用或包括使用从公钥进行涉及数据保密的密码运算,并将使用或包括使用从公钥进行密码运算后的结果作为公钥密码算法A的密码数据返回,则返回的是公钥密码算法A的伪密码数据;所述使用或包括使用从公钥进行涉及数据保密的密码运算是指在密码运算过程中使用从公钥进行密码运算且使用从公钥进行密码运算的目的是使得密码运算得到的数据在传输或存储或使用过程中防止敏感数据被泄露(比如,数据加密中使用公钥进行加密运算,密钥协商中使用公钥与私钥一起进行隐藏密钥协商数据的密码运算,签加密中使用公钥对数据进行加密运算属于防止敏感数据被泄露的情形,而使用公钥从密钥协商数据导出密钥协商数据,使用公钥对签加密的数据进行签名验证,使用公钥进行签名验证或从签名值解密恢复出签名值对应的散列值则不属于);
支持多公钥数证书的密码组件接收到密码调用请求、使用密钥所进行密码运算的过程中,若使用或包括使用从私钥进行涉及数据防篡改、防伪造的密码运算(如签名运算、签加密运算),并将使用或包括使用从私钥进行密码运算后的结果作为公钥密码算法A的密码数据返回,则返回的是公钥密码算法A的伪密码数据(比如,伪签名值、伪签加密数据);所述使用或包括使用从私钥进行涉及数据防篡改、防伪造的密码运算是指在密码运算过程中使用从私钥进行密码运算且使用从私钥进行密码运算的目的是使得密码运算得到的数据在传输或存储或使用过程中防止数据被篡改、被伪造(比如,针对数据进行签名运算、签加密运算);
若密码组件(支持和不支持多公钥数字证书的密码组件)将使用公钥密码算法A的密钥进行密码运算后的结果返回,则返回的是公钥密码算法A的真实的密码数据;
所述密码数据为使用密钥进行密码运算后得到的数据;所述伪密码数据是被标记为或当作为使用一种公钥密码算法的密钥进行密码运算后得到并按此(被标记或当作使用的公钥密码)算法的规定编码后的数据,但实际上不是使用此被标记或当作使用的公钥密码算法的密钥进行密码运算后得到并按此(被标记或当作使用的公钥密码)算法的规定编码后的数据(两个条件中至少一个没有得到满足);所述真实的密码数据是使用实际采用的公钥密码算法及密钥进行密码运算得到并按此实际采用的公钥密码算法的规定编码后的数据;伪密码数据对应有(使用实际采用的公钥密码算法的密钥进行密码运算得到的)真实的密码数据;伪密码数据中包含或不包含有对应的真实的密码数据;所述伪密码数据具有或不具有被标记或当作使用的公钥密码算法的密码数据结构(取决于具体情况、实施要求,比如,若程序、系统对此有要求);所述伪密码数据中有标志或者伪密码数据具有不同的数据长度用于与被标记或当作使用的公钥密码算法的真实的密码数据相区分、相区别(注意、这里伪密码数据、真实的密码数据的定义不限于公钥密码算法A);伪密码数据对应的真实的密码数据的存放位置预先约定,或者伪密码数据中有对应的真实的密码数据的获取位置信息(比如URL或URI)(伪密码数据是使用多公钥数字证书的从密钥进行密码运算后得到的密码数据,因此,针对伪密码数据进行后续密码运算处理也必须使用从密钥);
当支持多公钥数字证书的密码组件针对之前使用密钥进行密码运算得到的密码数据(比如加密数据、签加密的数据等)进行处理时,若待处理的密码数据是公钥密码算法A的伪密码数据(比如伪加密数据、伪密钥协商数据、伪签加密数据等密码数据类型),则待处理的密码数据是之前使用或包括使用从密钥进行密码运算得到的数据,否则不是;
若伪密码数据中不包含真实的密码数据,则密码组件从(本地或网络)约定的位置获得伪密码数据对应的真实的密码数据,或者密码组件依据伪密码数据中给出的真实的密码数据的获取位置(如URL或URI),获得伪密码数据对应的真实的密码数据;
若伪密码数据中不包含真实的密码数据,则真实的密码数据临时和/或永久地保存在约定的位置,以及/或者临时和/或永久地保存在伪密码数据中给出的密码数据的获取位置;若真实的密码密码数据同时保存在临时存放位置和永久存放位置,则当需要获得伪密码数据对应的真实的密码数据时,密码组件先从临时存放位置获取真实的密码数据,若从临时存放位置无法获得真实的密码数据,则从永久存放位置获取真实的密码数据。
从所属关系来说,主公钥、从公钥都属于数字证书主体即用户的公钥(密钥),主私钥、从私钥都属于数字证书主体即用户的私钥(密钥),这里仅将主公钥、主私钥(主密钥)称为主体公钥、主体私钥(主体密钥)是为了将它们与单公钥数字证书中的主体公钥、主体私钥(主体密钥)相对应,不意味着从公钥、从私钥(从密钥)不是属于数字证书主体即用户的密钥。
对于以上所述用于算法过渡的多公钥数字证书的密钥使用方法,支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求后:
若调用请求为使用一个公钥密码算法A的公钥进行加密运算,而调用请求中指定的公钥密码算法A的公钥为一个多公钥数字证书的主体公钥即主公钥,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥的多公钥数字证书中的相应从公钥进行密码运算;
若调用请求为使用一个公钥密码算法A的公钥进行加密运算,而调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体公钥(包括指定的公钥是一个单数字证书的主体公钥,以及指定的公钥不是数字证书的公钥即是单独使用的公钥的情形),则密码组件使用调用请求中指定的公钥密码算法A的公钥进行密码运算;
若调用请求为使用一个公钥密码算法A的私钥进行解密运算,而调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,且待解密的数据是伪密码数据,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书(的与数据加密时使用的从公钥相对应)的相应从私钥进行密码运算;
若调用请求为使用一个公钥密码算法A的私钥进行解密运算,而调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体主私钥(包括指定的私钥是一个单数字证书的主体私钥,以及私钥不是数字证书的私钥即是单独使用的私钥的情形),或者待解密的数据不是伪密码数据,则密码组件使用调用请求中指定的公钥密码算法A的私钥进行密码运算。
对于以上所述用于算法过渡的多公钥数字证书的密钥使用方法,若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求,而调用请求为使用一个公钥密码算法A的公钥和一个公钥密码算法A的私钥进行密码运算,其中包括密钥协商、签加密密码运算,且调用请求中指定的公钥密码算法A的公钥为一个多公钥数字证书的主体公钥即主公钥,调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,或者密码运算所针对的数据是之前使用一个从公钥和一个从私钥进行密码运算得到的伪密码数据,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥的多公钥数字证书中的相应从公钥以及以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书的相应从私钥进行密码运算;
若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的密钥进行密码运算的请求,而调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体私钥即主公钥,或调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体私钥,且密码运算所针对的数据不是之前使用一个从公钥和一个从私钥进行密码运算得到的伪密码数据,则密码组件使用调用请求中指定的公钥密码算法A的公钥和公钥密码算法A的私钥进行密码运算。
对于以上所述用于算法过渡的多公钥数字证书的密钥使用方法,若(具体实施应用中)验证数字签名的密码组件一定支持多公钥数字证书,则:
当支持多公钥数字证书的密码组件接收到使用多公钥数字证书的公钥密码算法A的主体私钥即主私钥进行签名运算的请求后,根据密码运算的类型和密钥用途选择、使用多公钥数字证书的相应从私钥进行签名运算(返回的是公钥密码算法A的伪密码数据即伪签名值);
当接收到使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值,而调用请求中指定的公钥密码算法A的公钥为多公钥数字证书的主体公钥即主公钥,待处理的签名值为伪密码数据即伪签名值,则密码组件利用伪签名值获得(实际采用的数字签名算法的)真实的签名值,然后根据密码运算的类型和密钥用途选择、使用多公钥数字证书的相应从公钥进行密码运算。
若(具体实施应用中)验证数字签名的密码组件一定支持多公钥数字证书,且针对(用户或实体的)多公钥数字证书进行数字签名的签发者的数字证书即CA数字证书也是多公钥数字证书,则多公钥数字证书的签名值字段中的签名值为CA数字证书的从私钥进行签名运算所生成的伪签名值,若伪签名值不包含真实的签名值,则真实的签名值存放在(用户或实体的)多公钥数字证书中,以及/或者存放在约定的位置;若伪签名值不包含真实的签名值,而真实的签名值存放在(用户或实体的)多公钥数字证书中(比如自定义或扩展定义的扩展字段中),则要使用公钥针对(用户或实体的)多公钥数字证书的签名值即伪签名值进行密码运算处理(签名验证或从签名值解密恢复出签名值对应的散列值)的密码组件从多公钥数字证书中获取对应的真实的签名值;密码组件通过检查确定密码运算处理要使用的公钥为多公钥CA数字证书的主体公钥从而确定待密码运算处理的伪签名值为(用户或实体的)多公钥数字证书的伪签名值,或者/以及多公钥数字证书中的伪签名值有与其他伪签名值有不一样的标志信息,密码组件通过标志信息确定待密码运算处理的伪签名值为(用户或实体的)多公钥数字证书中的伪签名值。
对于以上所述用于算法过渡的多公钥数字证书的密钥使用方法,若(具体实施应用中)验证数字签名的密码组件不一定支持多公钥数字证书,则:
若支持多公钥数字证书的密码组件接收到密码运算请求为使用公钥密码算法A的私钥进行数字签名,而调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书的相应从密私钥进行签名运算,生成签名值SB,同时使用此多公钥数字证书的主体私钥即调用请求中指定的公钥密码算法A的私钥进行签名运算,生成签名值SA,然后将签名值SA返回,将签名值SB存放在约定的位置,而利用签名值SA能从约定的位置查找获得签名值SB
若支持多公钥数字证书的密码组件接收到密码运算请求为使用公钥密码算法A的私钥进行数字签名,而调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体私钥即主私钥,则密码组件使用调用请求中指定公钥密码算法A的私钥进行签名运算,返回签名值;
若支持多公钥数字证书的密码组件接收到的密码运算请求为使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值(比如RSA签名算法或类似算法使用公钥从签名值解密恢复出散列值),而调用请求中给出的公钥为一个多公钥数字证书的主体公钥即主公钥,且以请求中给出的签名值作为签名值SA能从约定的位置获得签名值SB,则密码组件使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥的多公钥数字证书中的相应从公钥,针对获得的签名值SB进行签名验证或从签名值解密恢复出签名值对应的散列值;
若支持多公钥数字证书的密码组件接收到的密码运算请求为使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值,而请求中给出的公钥不是一个多公钥数字证书的主体公钥即主公钥,或以请求中给出的签名值作为签名值SA不能从约定的位置获得SB,则密码组件使用调用请求中指定的公钥密码算法A的公钥进行签名验证或从签名值解密恢复出签名值对应的散列值。
对于以上所述多公钥数字证书的密钥用于数字签名时同时生成签名值SA、SB的方法,若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的公钥对签名值进行签名验证运算或从签名值解密返回签名值对应的散列值的调用请求,而调用请求中指定(给出)的公钥为一个多公钥数字证书的主体公钥即主公钥PKA,且以请求中给出的签名值作为签名值SA能从约定的位置获得SB,则密码组件利用签名值SA获得签名值SB后,按如下方式针对SB进行请求处理:
若接收到的请求是进行签名验证,则密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取(与签名从私钥对应的)相应从公钥,然后使用选取的从公钥针对签名值SB进行签名验证,然后返回验证结果(成功或失败);
若接收到的请求是从签名值解密返回签名值对应的散列值,而使用根据密码运算类型和密钥用途从多公钥数字证书中获取的从公钥能从签名值SB解密恢复出签名值所对应的散列值(即生成签名值SB所采用的数字签名算法支持这点,如RSA算法),则密码组件使用从多公钥数字证书中获取的(与签名从私钥对应的)相应从公钥解密签名值SB恢复出签名值所对应的散列值;
若接收到的请求是从签名值解密返回签名值对应的散列值,而使用从多公钥数字证书中选取的从公钥不能从签名值SB解密恢复出签名值所对应的散列值(即生成签名值SB所采用的数字签名算法不支持这点),则:
在生成签名值SB时,密码组件以待签名消息的散列值H作为待签名消息进行签名运算(签名计算过程中还会针对散列值H计算散列值),待签名消息的散列值H与签名值SB一起保存在约定的位置;
当需要从签名值SB解密恢复出签名值对应的散列值时,密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取(与签名从私钥对应的)相应从公钥,在获取签名值SB的同时获取散列值H,使用选取的从公钥和获取的散列值H(作为待验证的消息),对签名值SB的有效性进行验证,若验证通过,则返回散列值H,否则返回出错信息;
当需要针对签名值SB进行签名验证时,密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取(与签名从私钥对应的)相应从公钥,计算待验证消息的散列值H1,以散列值H1作为待验证消息对签名值SB的有效性进行验证,并返回验证结果;
在约定的位置对签名值SB、待签名消息的散列值H的保存是临时的或者永久的,或者同时有临时和永久的保存位置,支持多公钥数字证书的密码组件需要获取签名值SB、待签名消息的散列值H时,先从临时位置获取,若从临时位置无法获得数据,则再从永久位置获取。
若(具体实施应用中)验证数字签名的密码组件不一定支持多公钥数字证书,且针对(用户或实体的)多公钥数字证书进行数字签名的签发者的数字证书即CA数字证书也是多公钥数字证书,则多公钥数字证书的签名值字段中的签名值为CA数字证书的主私钥进行签名运算所生成的签名值(对应前述签名值SA),CA数字证书的从私钥进行签名运算所生成的签名值(对应前述签名值SB)存放在(用户或实体的)多公钥数字证书中,以及/或者存放在约定的位置;若CA数字证书的从私钥进行签名运算所生成签名值(对应前述签名值SB)存放在(用户或实体的)多公钥数字证书中(比如自定义或扩展定义的扩展字段中),则要使用公钥针对(用户或实体的)多公钥数字证书的签名值进行密码运算处理(签名验证或从签名值解密恢复出签名值对应的散列值)的密码组件从多公钥数字证书中获取使用CA数字证书的从私钥进行签名运算所生成的签名值(对应前述签名值SB);密码组件通过检查确定密码运算处理要使用的公钥为多公钥CA数字证书的主体公钥从而确定待密码运算处理的签名值为(用户或实体的)多公钥数字证书中的签名值。
在以上所述使用多公钥数字证书的私钥进行签名运算时,密码组件同时使用主私钥和相应公钥密码算法的从私钥进行数字签名,这样做确保了不支持多公钥数字证书的密码组件(信赖方)能完成签名验证以及从签名值解密恢复出签名值对应的散列值。通常情况下不同消息使用不同或同一个签名私钥进行签名运算生成同样的签名值的概率极小,小到可以忽略不计,因此,利用签名值SA可以获得唯一对应的签名值SB,若要考虑这种小到可以忽略不计的概率,可以用将被签名消息的散列值与SA一起作为获取SB的键值(索引)。
对于以上所述用于算法过渡的多公钥数字证书的密钥的使用方法,支持多公钥数字证书的密码组件使用多公钥数字证书的从公钥进行加密运算或使用多公钥数字证书的从私钥进行签名运算所返回的密码运算结果是伪密码数据;使用多公钥数字证书的从私钥进行解密运算或使用多公钥数字证书的从公钥进行签名验证运算所返回的密码运算结果是真实的数据或结果。密钥协商(Key Agreement)和签加密(SignEncrypt)密码运算情况如下。
若支持多公钥数字证书的密码组件接收使用一个公钥算法A的公钥和一个公钥算法A的私钥进行密钥协商密码运算的调用请求,而公钥和私钥分别为一个多公钥数字证书的主体公钥即主公钥和一个多公钥数字证书的主体私钥即主私钥,密码组件根据密码运算的类型和密钥用途,分别使用主体公钥对应的多公钥数字证书中的相应从公钥和主体私钥对应的多公钥数字证书中的相应从私钥进行密码运算,则有:
若使用公钥和私钥进行密码运算所针对的数据是原生数据(Raw Data),其中原生数据为接收到调用请求前尚未使用公钥和私钥中的任一个密钥进行密码运算的数据(既不是整个密钥协商过程的中间运算结果,也不是最终的运算结果),则密码运算后返回的是伪密码数据;
若使用公钥和私钥进行密码运算所针对的数据是非原生数据(Raw Data),其中非原生数据为接收到调用请求前已使用公钥和/或私钥进行了密码运算的数据(是整个密钥协商过程中的中间密码运算结果),则:若密码运算后返回的数据是协商生成的密钥(当然可以不返回,而是返回其他数据,比如,密钥句柄),则密码运算后返回的是真实的密码数据即协商生成的密钥,若密码运算后返回的数据是后续用于密钥协商密码运算、生成密钥的数据,即密钥协商过程中的中间密码运算结果,则密码运算后返回的伪密码数据。
若支持多公钥数字证书的密码组件接收使用公钥算法A的密钥包括公钥和私钥进行签加密密码运算的请求,而公钥和私钥分别为一个多公钥数字证书的主体公钥即主公钥和一个多公钥数字证书的主体私钥即主私钥,密码组件根据密码运算的类型和密钥用途,分别使用主体公钥对应的多公钥数字证书中的相应从公钥和主体私钥对应的多公钥数字证书中的相应从私钥进行密码运算,则有:
若调用请求是使用公钥和私钥针对数据进行签名和加密运算,则密码运算后返回的是伪密码数据;若调用请求是使用公钥和私钥针对之前生成的签加密的数据(伪密码数据)进行解密和签名验证运算,则密码运算后返回的密码数据和结果为真实的数据和结果。
对于以上所述用于算法过渡的多公钥数字证书的密钥使用方法,公钥密码算法B1、…、公钥密码算法Bm中允许包括公钥密码算法A,即从公钥允许是公钥密码算法A的从公钥,从私钥允许是公钥密码算法A的从私钥,密码组件使用公钥密码算法A的从公钥进行涉及数据保密的密码运算后,返回的是伪密码数据,使用公钥密码算法A的从私钥进行涉及数据防伪造、防篡改的密码运算后,返回的是伪密码数据(编码格式或数据结构与真正的公钥密码算法A的密码数据不同)。
对于以上所述用于算法过渡的多公钥数字证书的密钥的使用方法,若支持多公钥数字证书的密码组件在接收到使用公钥密码算法A的公钥进行密码运算的密码调用请求,而调用请求中没有公钥所对应的数字证书,则密码组件按如下方式检查确定调用请求中指定的公钥密码算法A的公钥是否为一个多公钥数字证书的主体公钥即主公钥,若是,则一并获得相应的多公钥数字证书:
密码组件在(本地和/或网络)约定位置或证书存储库搜索、查找以调用请求中指定的公钥密码算法A的公钥作为主体公钥的公钥数字证书,若查找不到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥(公钥与数字证书无关、单独使用的情形也属于这种情况),或者查找到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥但查找到的数字证书不是一个多公钥数字证书,则调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体公钥即主公钥,若查找到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥且查找到的数字证书是一个多公钥数字证书,则调用请求中指定的公钥密码算法A的公钥一个多公钥数字证书的主体公钥即主公钥,并获得相应的多公钥数字证书。
通常情况下,私钥包括数字证书的私钥和单独存在的私钥是保存在密码组件的(永久)密钥对象中或加载到内存中的密钥对象中使用,密钥对象会有各种描述私钥的信息(属性),利用密钥对象中的描述私钥的信息(属性)可以知道私钥对应的密码算法、用途等等。对于以上所述用于算法过渡的多公钥数字证书,维护有多公钥数字证书的私钥对象的密码组件一定支持多公钥数字证书,密码组件根据密钥对象的类型和/或其中存放的信息可以知道要使用的私钥是否是一个公钥数字证书的主体私钥,是否为一个多公钥数字证书的主体私钥即主私钥,且若是多公钥数字证书的主体私钥即主私钥,则可以得到多公钥数字证书的从私钥。
对于以上所述用于算法过渡的多公钥数字证书的密钥的使用方法,若支持多公钥数字证书的密码组件在接收到使用一个多公钥数字证书的主体私钥即主私钥进行密码运算的调用请求,而调用请求中没有主体私钥即主私钥所对应的数字证书,则密码组件确定调用请求中指定的主体私钥对应的多公钥数字证书的各私钥的密钥用途的方式包括:
数字证书的主体私钥与对应的数字证书关联,密码组件利用主体私钥与对应的数字证书的关联关系或主体私钥的密钥对象中的关联信息,获取主体私钥对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放数字证书的主体私钥的密钥对象中同时保存有主体公钥,密码组件利用主体公钥从约定位置或证书存储库获取对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放数字证书的主体私钥的密钥对象中同时保存有证书标识信息(如签发者名+序列号),密码组件利用证书标识信息从约定位置或证书存储库获取对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放私钥的密码对象中有与密钥使用有关的信息(比如算法标识,支持的密码运算类型,密钥用途等),其中包括密钥用途,密码组件利用主私钥与从私钥的关联(私钥对象关联、或者是同一个集成密钥对象),从存放从私钥的密钥对象中获得各私钥的密钥用途信息。
对于以上所述用于算法过渡的多公钥数字证书的公钥使用方法,若提交给支持密码组件的密码运算请求中给出的数据为伪密码数据,则密码组件选择使用多公钥数字证书的相应从密钥的另一种方式如下:
密码组件在生成伪密码数据时将进行密码运算时所使用的公钥密码算法的标识信息存放到伪密码数据中;后续针对伪密码数据进行密码运算处理的密码组件根据伪密码数据中的公钥密码算法的标识信息,以及密码运算的类型,选择使用多公钥数字证书的相应从密钥进行密码运算。
数字证书中给出的密钥用途(密钥用途字段或扩展密钥用途字段中给出的密钥用途字段)规定了数字证书的用户密钥的用途,即在哪些方面使用,比如,数字签名、数据加密、抗抵赖、CRL签发,这属于应用层面的应用、使用,不属于密码运算层面的使用,在通常情况下密码组件甚至数字证书应用编程接口都不知道数字证书及密钥在应用层面的具体应用、使用是什么(比如数字签名是用于身份鉴别,还是用于合同签订的抗抵赖?),密码组件只知道密码运算层面的密码运算类型是什么,而一个密码运算类型可能对应多个密钥用途,比如签名运算对应数字签名、抗抵赖、证书签发、CRL签发等多个用途,这样当主密钥、从密钥存在用于同一种密码运算类型(比如签名运算)的多个密钥用途时,密码组件很难知道当前应用层面使用密钥的用途是什么,对此,可采用如下方式解决。
密码运算依据其密码层面的类别分类,如签名类别,包括签名运算及签名验证运算,加密类别,包括加密运算及解密运算,密钥协商类别,包括各方的密钥协商密码运算,签加密类别,包括加密和签名以及解密和签名验证等;相应地,数字证书中的密钥用途依据其对应的密钥运算的类别分类,比如使用签名运算及签名验证运算(即签名类别的密码运算)的密钥用途,归为签名类型,比如,密钥用途中的数字签名、抗抵赖、证书签发、CRL签发等由于属于使用签名运算及签名验证运算(即签名类别的密码运算)的密钥用途,因此,归为签名类别的密钥用途,数据加密、密钥加密(dataEncipherment、keyEncipherment)等归为加密类别的密钥用途,根据密码运算的类别,相应地还有密钥协商类别的密钥用途、签加密类别的密钥用途等。
在密钥用途按其采用的密码运算的类别分类的情况下,若密码组件无法确定使用从密钥进行密码运算的密钥用途(应用层的用途),则多公钥数字证书中的数字证书公钥密码算法B1、…、公钥密码算法Bm的从密钥的密钥用途的类别不同;当需要选择多公钥数字证书的一个从密钥进行密码运算时,密码组件在从密钥中选择一个密钥用途的类别与密码运算的类别相符合的从密钥进行密码运算,或者依据公钥密码算法支持的密码运算类型(比如,有的算法只支持签名密码运算,有的只支持加密密码运算)选择相应公钥密码算法的从密钥进行密码运算,或者依据预定的设置或策略选择相应公钥密码算法的从密钥进行密码运算(比如,固定选择某个公钥密码算法的密钥进行签名密码运算)。
对于以上所述用于算法过渡的多公钥数字证书的公钥使用方法,若密码使用程序使用的数字证书应用编程接口可替换为支持多公钥数证书的数字证书应用编程接口,则由支持多公钥数证书的数字证书应用编程接口和支持多公钥数字证书的密码组件共同完成前述支持多公钥数字证书的密码组件所进行的操作处理,其中,数字证书应用编程接口接收到使用数字证书的密钥(包括公钥和私钥)进行密码运算的请求中的数字证书的公钥密码算法A的主体密钥,对应前述支持多公钥数字证书的密码组件接收到的密码运算请求中指定的用于密码运算的公钥密码算法A的密钥(调用数字证书应用编程接口的应用程序/应用系统是或者以为是使用数字证书的公钥密码算法A的主体密钥进行密码运算);若接收到的数字证书为多公钥数字证书,则选择多公钥数字证书的相应从密钥进行密码运算的操作处理由数字证书应用编程接口完成,或者由密码组件完成(提交给数字证书应用编程接口的数字证书和要使用的密钥可能是一个数字证书及密钥,也可能是两个数字证书及密钥),而密码运算处理由密码组件完成。
对于以上所述用于算法过渡的多公钥数字证书的公钥使用方法,若针对多公钥数字证书中的从公钥有单独的数字签名即签名值,且在使用一个从公钥进行密码运算时需要验证针对此从公钥的数字签名的有效性,则密码组件进行密码运算前,根据多公钥数字证书中的针对从公钥数字签名的签发者信息,在(本地或网络)约定的位置或证书存储库/系统查找、获取针对从公钥的数字签名的签发者的数字证书(即CA数字证书),然后利用签发者的数字证书中的签发者的公钥对多公钥数字证书中的针对将要使用的从公钥的数字签名即签名值的有效性进行验证。
在以上所述多公钥数字证书中所涉及公钥密码算法A、公钥密码算法B1、…、公钥密码算法Bm只是密码算法的代名称,不是真实的算法名称,在具体实施时,用真实的公钥密码算法替代相应的密码算法;公钥密码算法B1、…、公钥密码算法Bm为不同的算法,或其中可以存在相同的算法,但它们对应的密钥的密钥用途不同;特别情况下公钥密码算法B1、…、公钥密码算法Bm中允许包括公钥密码算法A(参见具体实施方式);公钥密码算法A是需要被替代的新的公钥密码算法,比如,RSA、SM2、ECDSA等,而公钥密码算法公钥密码算法B1、…、公钥密码算法Bm通常是过渡后要使用的新公钥密码算法(目标公钥密码算法),比如,抗量子攻击的公钥密码算法(当然,特别情况下还可以包括在过渡期要同时使用的原有的“旧”公钥密码算法)。
本发明的多公钥数字证书是用于公钥密码算法过渡的,多公钥数字证书的主体公钥对应的公钥密码算法A为过渡期仍然使用、过渡期后弃用的公钥密码算法,多公钥数字证书的从公钥对应的公钥密码算法为过渡后要使用的公钥密码算法。本发明针对的是在过渡期,仅支持单公钥数字证书、不支持(用于算法过渡的)多公钥数字证书的应用程序/应用系统以及数字证书应用编程接口如何在不作修改的情况下使用(用于算法过渡的)多公钥数字证书及密钥的问题,针对的是在过渡期(用于算法过渡的)多公钥数字证书、采用旧公钥密码算法的单公钥数字证书同时存在的情形下它们如何能同时使用的问题,因此,本发明仅涉及用于密钥过渡的多公钥数字证书、采用旧公钥密码算法的单公钥数字证书的主体公钥、主体私钥被请求用于密码运算时如何处理,但是,在过渡期,这些原本不支持的应用程序/应用系统、数字证书应用编程接口可能更新、升级会变成支持用于算法过渡的多公钥数字证书、支持采用过渡后的目标公钥密码算法的单公钥数字证书及支持目标公钥密码算法,即应用程序/应用系统或证书应用编程接口变为支持多公钥数字证书及多公钥数字证书中的公钥密码算法B1、…、公钥密码算法Bm,同时支持主体公钥就是公钥密码算法B1、…、公钥密码算法Bm中的一种的公钥的单公钥数字证书,相应地单公钥数字证书的私钥就是公钥密码算法B1、…、公钥密码算法Bm中一种的私钥。
考虑到以上所述变化,支持多公钥数字证书的密码组件接收到请求使用公钥密码算法B1、...、公钥密码算法Bm的公钥、私钥进行密码运算时,可按如下方式处理:
当支持公钥密码算法B1、…、公钥密码算法Bm的密码组件接收到使用公钥密码算法B1或…或公钥密码算法Bm的密钥包括公钥、私钥进行密码运算的请求时,密码组件直接使用请求中指定的密钥进行密码运算,密码运算后返回的密码数据为密码运算对应的公钥密码算法的真实的密码数据。
基于本发明的技术方案,支持用于算法过渡的多公钥数字证书的密码组件根据密码运算的类型、密码运算针对的数据类型、以及密钥用途自动选择、使用多公钥数字证书中的相应公钥密码算法的从密钥(包括从公钥、从私钥)进行密码运算,而不支持用于算法过渡的多公钥数字证书的密码组件只使用公钥密码算法A的主体密钥(包括主体公钥、主体私钥)进行密码运算;基于本发明的技术方案,采用原有公钥密码算法的单公钥数字证书及密钥能按通常的方式继续使用。
本发明能够做到以上所述这些,这是因为在保持密码接口或密码应用编程接口不变的情况下(包括标准接口,比如Windows CryptoSPI、PKCS#11等,以及自定义的接口),目前大多数应用程序/应用系统的密码组件(密码模块或密码装置或密码系统)是可替换的,因此在保持密码接口不变、已有程序调用密码(应用编程)接口不变的情况下,通过替换不支持多公钥数字证书的应用程序/应用系统及用户的密码组件为本发明的支持多公钥数字证书的密码组件,就可以在不修改应用程序/应用系统及数字证书应用编程接口的情况下,使得原本不支持新(目标)公钥密码算法、原本不支持用于算法过渡的多公钥数字证书的应用程序/应用系统、数字证书应用编程接口以及证书用户能够使用目标公钥密码算法、能够使用用于算法过渡的多公钥数字证书。
当然不可能一下子将所有的不支持用于算法过渡的多公钥数字证书的应用程序/应用系统以及用户的密码组件完成替换,不可能一下子完成所有用户的数字证书的替换,本发明的技术方案可以确保在过渡期,对于不支持目标公钥密码算法的应用程序/应用系统及数字证书应用编程接口,只要完成密码组件替换,就能够使用(己方或其他方的)用于算法过渡的多公钥数字证书、能够使用多公钥数字证书的新(目标)公钥密码算法的密钥进行密码,就能与使用原有公钥密码算法的单公钥数字证书的其他方继续进行交互;而对于没有完成密码组件以及数字证书替换的应用程序/应用系统以及用户而言,能够继续使用己方的采用原有公钥密码算法的单公钥数字证书及密钥,能够继续像使用其他方的采用原有公钥密码算法的单公钥数字证书及密钥一样的方式,同采用多公钥数字证书的其他方的应用程序/应用系统及用户进行正常交互;在过渡后期和过渡期完成后,绝大部分应用程序/应用系统及数字证书应用编程接口完成了公钥密码算法的过渡,支持新的公钥密码算法、支持多公钥数字证书,这些支持新的公钥密码算法、支持多公钥数字证书的应用程序/应用系统及数字证书应用编程接口,能够直接使用多公钥数字证书以及采用新(目标)公钥密码算法的单公钥数字证书,使用新(目标)公钥密码算法的密钥进行密码运算;总之,本发明很好地解决了用于算法过渡的多公钥数字证书在实际应用中存在的问题。
具体实施方式
下面对本发明的具体实施方式进行说明。以下内容仅是对本发明可能实施方式的说明,不代表全部可能的实施方式,不作为对本发明保护范围的限制。
首先要指出的是本发明的应用程序/应用系统是广义上的,是指使用数字证书及密钥的程序/系统,既包括提供具体应用功能的程序/系统,也包括使用数字证书的安全协议(如SSL)。
本发明的用于算法过渡的多公钥数字证书所涉及的公钥密码算法A、公钥密码算法B1、…、公钥密码算法Bm只是公钥密码算法的代名称,不是真实的算法名称,在具体实施时,要选择、使用真实的密码算法替代,其中公钥密码算法A为要被替代、被过渡掉的公钥密码算法,公钥密码算法B1、…、公钥密码算法Bm为过渡后的要使用的目标公钥密码算法。
本发明的用于算法过渡的多公钥数字证书是有多个公钥的符合X509格式的数字证书。本发明的用于算法过渡的多公钥数字证书,可以通过对单公钥X509数字证书进行扩展实施。多公钥数字证书的主体公钥即主公钥、密钥用途及数据存放字段对应的就是单公钥X509数字证书的主体公钥、密钥用途及数据存放字段;密钥用途包括基本的密钥用途和扩展的密钥用途;多公钥数字证书的公钥密码算法B1的公钥、…、公钥密码算法Bm的公钥、密钥用途等信息,可以存放在自定义或扩展定义的扩展字段(extension field)中,或者经编码后作为符合相应格式要求的伪数据(比如伪DNS域名、URI、邮箱地址,“伪”即“假”)存放在相应格式的主体别名的字段中(subjectAltName),比如DNS域名、URI、邮箱地址字段中;多公钥数字证书中针对公钥密码算法B1、…、公钥密码算法Bm的从公钥包含哪些信息,可以由实施者根据需要定,只要符合本发明的对用于算法过渡的多公钥数字证书的特征要求和限定,比如针对对公钥密码算法B1、…、公钥密码算法Bm的从公钥(从密钥)的密钥用途的限定;针对公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途可以在多公钥数字证书中直接给出或者也可以以缺省方式给出(即从密钥可以不包含密钥用途信息);如果针对从公钥有单独的签名值、签名算法、签发者,则针对从公钥的签名值、签发者名同样可以存放在自定义或扩展定义的扩展字段中或经编码后作为符合相应格式要求的伪数据存放在相应主体别名的字段中;针对从公钥的数字签名不限于仅仅针对从公钥进行数字签名,而是对包含从公钥的数据进行签名,包含从公钥的数据由哪些数据组成由实施者决定,符合密钥使用安全要求就行。
多公钥数字证书的一种特殊实施方式是,先分别针对公钥密码算法B1的公钥PKB1、…、公钥密码算法Bm的公钥PKBm签发生成X509数字证书,然后再签发生成一个针对公钥密码算法A的公钥PKA的X509数字证书,并将针对公钥密码算法B1的公钥PKB1、…、公钥密码算法Bm的公钥PKBm分别签发生成的X509数字证书作为扩展信息添加到针对公钥PKA的数字证书的自定或扩展定义的扩展字段中。这种母子证书的方式对于本发明的实施而言不是必须的,也未必是最优的(仅是一种可能方式)。在应用过程中从母数字证书中分离出子数字证书不是必须的。
公钥密码算法B1、…、公钥密码算法Bm为不同的公钥密码算法不是必须的,其中可以存在相同算法相同、但对应的密钥用途型不同的密码算法;公钥密码算法A与公钥密码算法B1、…、公钥密码算法Bm不同不是必须的,而且基于某些特别的安排公钥密码算法B1、…、公钥密码算法Bm中包括公钥密码算法A是允许的,比如,公钥密码算法A的密钥可以同时用于数据加密、密钥协商、数字签名、抗抵赖,我们只在数字签名、抗抵赖中使用新算法,而数据加密、密钥协商仍然使用原有公钥密码算法A,这样公钥密码算法B1、…、公钥密码算法Bm中包括两个算法,一个是密钥用于数字签名、抗抵赖的新算法,另一个是密钥用于数据加密、密钥协商的原有公钥密码算法,即公钥密码算法A。由于支持用于算法过渡的多公钥数字证书的密码组件根据密码运算的类型和密钥用途在公钥密码算法B1、…、公钥密码算法Bm的密钥中自动选择相应的、合适的密钥(公钥或私钥)进行密码运算,因此,针对多公钥数字证书的公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途的设置,应使得密码组件能够根据密码运算的类型和设置的密钥用途自动、唯一地选择公钥密码算法B1、…、公钥密码算法Bm的密钥中的相应密钥进行密码运算,因此,公钥密码算法B1、…、公钥密码算法Bm对应的密钥(公钥、私钥)的密钥用途不同,或者若存在相同,则有预设的算法选择优先级;公钥密码算法B1、…、公钥密码算法Bm的公钥的密钥用途的合集包含多公钥数字证书中针对公钥密码算法A的主体密钥设置的密钥用途,因为从应用程序/应用系统的角度主体密钥的密钥用途限定、决定了数字证书的用途。在具体应用实施中,若密码组件无法确定使用从密钥进行密码运算的用途(应用目的),则多公钥数字证书中的数字证书公钥密码算法B1、…、公钥密码算法Bm的从密钥的密钥用途的类别不同。
对于多公钥数字证书的主私钥、从私钥存储的实施,在具体实施中,可以将不同私钥存储在不同密钥对象中(密钥对象,如Windows CSP中的密钥容器、PKCS#11中的密钥对象),然后将这些私钥的密钥对象相互关联,或者将多公钥数字证书主私钥、从私钥都保存在一个密钥对象中(称为集成密钥对象中),同时密钥对象中还存储有相应的各种信息,用于标记、区分、区别不同的私钥,标记、区分、区别私钥对应的公钥密码算法,以及提供与私钥使用有关的其他信息。
对于(用于算法过渡的多公钥)数字证书的存储位置,可以是密码组件(密码模块或密码装置或密码系统)本地(本机)的证书存储库、特定/约定的证书存储目录下的证书文件,可以是网络数字证书存储系统,比如,CA系统的证书存储、查询系统等。
在具体实施中,伪密码数据是否具有公钥密码算法A的密码数据的结构(被标记或当作的公钥密码算法A的密码运算的结果),与具体应用有关,若应用程序/应用系统、数字证书应用编程接口/密码应用编程接口/密码接口识别、区分公钥密码算法A的密码数据的结构,这时实施的伪密码数据需要有公钥密码算法A的密码数据的结构,否则不必;伪密码数据中用于与真实的密码数据相区分、相区别的的标志,可以是数据中约定位置上的特别的二进制数序列,比如,连续多个01或其他约定模式二进制数序列,真实的密码数据中出现这个特别的二进制数序列的概率极小极小(小到可接受的范围,比如,这个二进制数序列的位数为64位、128位,这样密码数据碰巧出现这个二进制序列的概率极小);或者,伪密码数据有与真实密码数据不同的数据长度,从而与真实的密码数据相区分,比如,假如RSA的密钥长度为2048位,则真实的签名值长度为2048位,而SM2的签名值长度为512位,因此,若被认为或被当作使用RSA算法得到的签名值的长度为512位,则签名值是RSA算法的伪签名值(伪密码数据),对应的真实的签名值是SM2算法的签名值。基于长度区分伪密码数据、真实的密码数据仅在应用程序/应用系统、数字证书应用编程接口对密码数据长度不敏感(不关心、不检查)时可用。
伪密码数据中可以包含或不包含真实的密码数据,若包含真实的密码数据,则伪密码数据编码方式和/或数据结构与真实的密码数据存在不同(否则就成了真实的密码数据);伪密码数据能否包含真实的密码数据、能否包含真实的密码数据的获取位置(比如URL、URI),与具体的应用有关、具体算法有关。若应用程序/应用系统、数字证书应用编程接口/密码应用编程接口/密码接口识别、区分公钥密码算法A的密码数据的长度,则伪密码数据未必能包含真实的密码数据、未必能包含真实的密码数据的获取位置,取决于公钥密码算法A的(原定)密码数据的长度,以及公钥密码算法Bi(i=1,…,m)的密码数据的长度,即决于公钥密码算法A的(原定)密码数据的数据存储空间能否存放下这些数据,比如,SM2的密码数据是比较短的,长度不变的话,很难存放其他密码算法的真实的密码数据、真实的密码数据的获取位置,而RSA公钥密码算法的密码数据较长,可以存放ECDSA、SM2算法的密码数据、真实的密码数据的获取位置信息,但不能存放抗量子密码攻击的公钥密码算法的密码数据,因为这类算法的密码数据通常非常多、非常长。若应用程序/应用系统、数字证书应用编程接口/密码应用编程接口/密码接口不识别区分公钥密码算法A的密码数据的长度,则伪密码数据能包含实施者期望包含的数据、信息。若伪密码数据不包含真实的密码数据的获取位置,则真实的密码数据存放在约定的临时或永久存放位置(不是指位置是临时、永久的,而是指数据存储时间是临时、永久的)。
伪密码数据对应的真实的密码数据、使用从私钥生成的签名值SB的存储位置,可以是密码组件本地(本机)约定的位置,比如,某个特定的目录中,可以是一个专门的网络数据存储/服务系统,比如,一个区块链系统(区块链系统能防止对存储的数据修改、删除);这些数据存放的时效,可以是临时的,也可以是永久的,或者临时的、永久的存储位置同时存在,根据实际应用场景、要求而定,比如,对于使用数字证书的在线实时应用,比如身份鉴别、数据加密传输(比如SSL),伪密码数据对应的真实的密码数据、签名值SB通常只需临时保存在网上的临时数据存储系统中;对于电子文档签名、安全电子邮件,伪密码数据对应的真实的密码数据、签名值SB通常是永久保存在网络数据存储系统;对于电子合同、电子订单签名,伪密码数据对应的真实的密码数据、签名值SB可以同时临时和永久保存在(网络)数据存储系统。
若伪密码数据中不包含真实的密码数据但包含真实的密码数据的获取信息(即获取位置),则真实的密码数据的获取信息(即获取位置)可以实施为URL或URI。
本发明的密码组件(如密码模块或密码装置或密码系统)是用于替代不支持多公钥数字证书、不支持过渡后的目标公钥密码算法的原有的密码组件,因此,在密码应用编程接口或密码接口方面,本发明实施的密码组件提供有要被替换的密码组件的同样调用接口(比如Windows CSP的CryptoSPI、PKCS#11密码模块/组件的密码接口,PKCS#11的密码接口也称为CryptoKi,它既是密码接口也是密码应用编程接口),或提供有同样的在线调用交互协议、交互方式(对于网络调用),包括调用过程中有同样的输入参数、输出参数,当然,新提供的密码组件的密码应用编程接口或密码接口、在线调用交互协议,可以扩展更多的调用接口、更多的调用功能,扩展接口、协议提供更多的输入、输出参数,只要保持密码调用接口、协议的一致或兼容即可;在保持密码调用接口、协议一致或兼容的基础上,在具体的实施形态上,新提供的密码组件的实施形态与原有的被替换的密码组件的实施形态可以保持一致,也可以不一致,比如,假如原有的密码组件是纯软件的(比如,纯软件的Windows CSP、存软件的PKCS#11密码组件,Java的Cryptograpchic Services Provider等),而新提供的密码组件可以是纯软件的,也可以是纯硬件的(如基于Windows CSP、PKCS#11技术并提供相应密码接口或密码应用编程界接口的USB Key、密码卡、密码机),或者采用软硬件相结合的方式,再比如,假如原有的密码组件是纯硬件的,或者软硬件相结合,而新提供的密码组件可以是纯软件的也可以是纯硬件的,或者采用软硬件相结合的方式,关键是保持密码调用接口、调用协议一致或兼容。
对于密码组件针对应用程序/应用系统或证书应用编程接口直接使用多公钥数字证书的公钥密码算法B1、…、公钥密码算法Bm的密钥进行密码运算,直接使用公钥密码算法B1或…或公钥密码算法Bm的单公钥数字证书的密钥进行密码运算的实施非必需,若实施说明如下。
直接使用公钥密码算法B1、…、公钥密码算法Bm的密钥进行密码运算的实施,关键是如何选取或获取要使用的密钥。在通常的密码技术应用中,密码运算所涉及的公钥通常在应用程序/应用系统或数字证书应用编程接口提交的密码调用请求中会给出(它们从公钥数字证书中获取),包括直接给出或通过数字证书间接给出,即便对于通过数字证书间接给出公钥的情形,密码组件根据密码运算的类型、密码算法类型(调用接口通常会指示密码算法类型)可以容易地从多或单公钥数字证书中获取相应的公钥包括主体公钥、从公钥进行密码运算。密码运算所涉及的私钥的选择或获取,则要复杂一点,与是单公钥数字证书还是多公钥数字证书,以及多公钥数字证书的私钥存储方式有关,具体说明如下。
数字证书的私钥通常是存放在密钥对象中(密钥对象,一种专门存放密钥的数据结构),调用密码组件的程序通常是通过提供要使用的私钥密钥对象的引用,比如密钥对象名称、标识、句柄handle或指针pointer,指示要使用(密钥对象中的)私钥;若密码调用请求中指定使用的公钥密码算法B1或…或公钥密码算法Bm的私钥是存放在单独的私钥密钥对象中,则密码组件使用单独存放在私钥密钥对象中的指定私钥进行密码运算(此时,指定使用的私钥是一个多公钥数证书的从私钥,或者一个单公钥数字证书的主体私钥,或者单独存在的、不对应数字证书的私钥);
若密码调用请求中指定使用的公钥密码算法B1或…或公钥密码算法Bm的私钥是一个多公钥数证书的从私钥,而多公钥数字证书的公钥密码算法B1的私钥SKB1,…,公钥密码算法Bm的私钥SKBm,与公钥密码算法A的私钥SKA存放在一个密钥对象(即集成密钥对象)中,则密码组件根据密码运算的类型、密码算法类型(调用接口通常会指示密码算法类型)从集成密钥对象中选取相应的私钥进行密码运算;
若密码调用请求中指定使用的公钥密码算法B1或…或公钥密码算法Bm的私钥是一个多公钥数证书的从私钥,而多公钥数字证书的公钥密码算法B1的私钥SKB1,…,公钥密码算法Bm的私钥SKBm,与公钥密码算法A的私钥SKA分别存放在不同的密钥对象中,同一个多公钥数字证书的不同私钥的密钥对象相互关联,且通过同一个密钥对象引用被引用,则密码组件根据密码运算的类型、密码算法类型在相互关联的私钥密钥对象中选取相应的私钥进行密码运算。
在应用程序/应用系统中实施、部署直接使用公钥密码算法B1、...、公钥密码算法Bm的密钥进行密码运算的密码组件有个前提:针对数字证书持有方和信赖方的应用程序/应用系统、数字证书应用编程接口所实施、部署的密码组件都支持采用了公钥密码算法B1、...、公钥密码算法Bm的多公钥数字证书、单公钥数字证书(非直接使用公钥密码算法B1、...、公钥密码算法Bm的密钥进行密码运算则没有这个要求)。
其他未说明的具体技术实施,对于相关领域的技术人员而言属于现有技术、公知知识。

Claims (15)

1.一种用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
用于算法过渡的多公钥数字证书是一种X509格式的数字证书,其在单公钥数字证书基础上经扩展包含了多个用户公钥,其中一个公钥为公钥密码算法A的公钥PKA,公钥PKA对应单公钥数字证书中的主体公钥,存放在数字证书的主体公钥信息字段中,其他公钥分别为公钥密码算法B1的公钥PKB1、…、公钥密码算法Bm的公钥PKBm,m≥1;公钥PKA为多公钥数字证书的主体公钥也称为主公钥,公钥PKB1、…、公钥PKBm为多公钥数字证书的从公钥;公钥密码算法B1、…、公钥密码算法Bm为密码算法过渡的目标公钥密码算法;若m>1,则公钥密码算法B1、…、公钥密码算法Bm对应的密钥的密钥用途不同,公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途的合集包含多公钥数字证书的公钥密码算法A的主体密钥的密钥用途;公钥密码算法B1、…、公钥密码算法Bm的密钥的密钥用途在多公钥数字证书中给出或者缺省给出;针对公钥PKA及整个数字证书的数字签名数据即签名值为数字证书中的签名值字段中存放的数字签名数据即签名值;针对每个从公钥有单独的数字签名或没有单独的数字签名;针对从公钥的数字签名是对包含从公钥的数据进行签名;针对不同公钥的数字签名的签发者及所采用的数字签名算法不必相同;多公钥数字证书中的从公钥以及针对从公钥的数字签名数据即签名值为在单公钥数字证书基础上扩展的证书信息;
用于算法过渡的多公钥数字证书对应有一组私钥,其中包括公钥密码算法A的私钥SKA,公钥密码算法B1的私钥SKB1、…、公钥密码算法Bm的私钥SKBm,各私钥分别与多公钥数字证书上的公钥对应,其中SKA为主体公钥即主公钥PKA对应的私钥,即主体私钥也称为主私钥,私钥SKB1、…、SKBm分别为从公钥PKB1、…、公钥PKBm对应的私钥,称为多公钥数字证书的从私钥;多公钥数字证书对应的一组私钥保存在用户或用户授权的密码组件中;主私钥与从私钥相关联;所述密码组件为提供密码功能的软件或硬件或软硬件结合的组件,包括密码模块或密码装置或密码系统;
多公钥数字证书的主体公钥/主公钥和主体私钥/主私钥统称为主体密钥/主密钥;多公钥数字证书的从公钥和从私钥统称为从密钥;
能识别用于算法过渡的多公钥数字证书、使用其从密钥进行密码运算的密码组件为支持多公钥数字证书的密码组件,否则为不支持多公钥数字证书的密码组件;
当不支持多公钥数字证书的密码组件接收到使用公钥密码算法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所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若验证数字签名的密码组件存在不支持多公钥数字证书的情形,则:
若支持多公钥数字证书的密码组件接收到密码运算请求为使用公钥密码算法A的私钥进行数字签名,而调用请求中指定的公钥密码算法A的私钥为一个多公钥数字证书的主体私钥即主私钥,则密码组件根据密码运算的类型和密钥用途,选择使用以调用请求中指定的公钥密码算法A的私钥作为主体私钥的多公钥数字证书的相应从密私钥进行签名运算,生成签名值SB,同时使用此多公钥数字证书的主体私钥即调用请求中指定的公钥密码算法A的私钥进行签名运算,生成签名值SA,然后将签名值SA返回,将签名值SB存放在约定的位置,而利用签名值SA能从约定的位置查找获得签名值SB
若支持多公钥数字证书的密码组件接收到密码运算请求为使用公钥密码算法A的私钥进行数字签名,而调用请求中指定的公钥密码算法A的私钥不是一个多公钥数字证书的主体私钥即主私钥,则密码组件使用调用请求中指定公钥密码算法A的私钥进行签名运算,返回签名值;
若支持多公钥数字证书的密码组件接收到的密码运算请求为使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值,而调用请求中给出的公钥为一个多公钥数字证书的主体公钥即主公钥,且以请求中给出的签名值作为签名值SA能从约定的位置获得签名值SB,则密码组件使用以调用请求中指定的公钥密码算法A的公钥作为主体公钥的多公钥数字证书中的相应从公钥,针对获得的签名值SB进行签名验证或从签名值解密恢复出签名值对应的散列值;
若支持多公钥数字证书的密码组件接收到的密码运算请求为使用公钥密码算法A的公钥对签名值进行签名验证或从签名值解密恢复出签名值对应的散列值,而请求中给出的公钥不是一个多公钥数字证书的主体公钥即主公钥,或以请求中给出的签名值作为签名值SA不能从约定的位置获得SB,则密码组件使用调用请求中指定的公钥密码算法A的公钥进行签名验证或从签名值解密恢复出签名值对应的散列值。
7.根据权利要求6所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若支持多公钥数字证书的密码组件接收到使用公钥密码算法A的公钥对签名值进行签名验证运算或从签名值解密返回签名值对应的散列值的调用请求,而调用请求中指定的公钥为一个多公钥数字证书的主体公钥即主公钥PKA,且以请求中给出的签名值作为签名值SA能从约定的位置获得SB,则密码组件利用签名值SA获得签名值SB后,按如下方式针对SB进行请求处理:
若接收到的请求是进行签名验证,则密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取相应从公钥,然后使用选取的从公钥针对签名值SB进行签名验证,然后返回验证结果;
若接收到的请求是从签名值解密返回签名值对应的散列值,而使用根据密码运算类型和密钥用途从多公钥数字证书中获取的从公钥能从签名值SB解密恢复出签名值所对应的散列值,则密码组件使用从多公钥数字证书中获取的相应从公钥解密签名值SB恢复出签名值所对应的散列值;
若接收到的请求是从签名值解密返回签名值对应的散列值,而使用从多公钥数字证书中选取的从公钥不能从签名值SB解密恢复出签名值所对应的散列值,则:
在生成签名值SB时,密码组件以待签名消息的散列值H作为待签名消息进行签名运算,待签名消息的散列值H与签名值SB一起保存在约定的位置;
当需要从签名值SB解密恢复出签名值对应的散列值时,密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取相应从公钥,在获取签名值SB的同时获取散列值H,使用选取的从公钥和获取的散列值H,对签名值SB的有效性进行验证,若验证通过,则返回散列值H,否则返回出错信息;
当需要针对签名值SB进行签名验证时,密码组件根据密码运算的类型和密钥用途从多公钥数字证书中选取相应从公钥,计算待验证消息的散列值H1,以散列值H1作为待验证消息对签名值SB的有效性进行验证,并返回验证结果;
在约定的位置对签名值SB、待签名消息的散列值H的保存是临时的或者永久的,或者同时有临时和永久的保存位置,支持多公钥数字证书的密码组件需要获取签名值SB、待签名消息的散列值H时,先从临时位置获取,若从临时位置无法获得数据,则再从永久位置获取。
8.根据权利要求7中所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若针对多公钥数字证书进行数字签名的签发者的数字证书即CA数字证书也是多公钥数字证书,则多公钥数字证书的签名值字段中的签名值为CA数字证书的主私钥进行签名运算所生成的签名值,CA数字证书的从私钥进行签名运算所生成的签名值存放在多公钥数字证书中,以及/或者存放在约定的位置;若CA数字证书的从私钥进行签名运算所生成签名值存放在多公钥数字证书中,则要使用公钥针对多公钥数字证书的签名值进行密码运算处理的密码组件从多公钥数字证书中获取使用CA数字证书的从私钥进行签名运算所生成的签名值;密码组件通过检查确定密码运算处理要使用的公钥为多公钥CA数字证书的主体公钥从而确定待密码运算处理的签名值为多公钥数字证书中的签名值。
9.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若支持多公钥数字证书的密码组件在接收到使用公钥密码算法A的公钥进行密码运算的密码调用请求,而调用请求中没有公钥所对应的数字证书,则密码组件按如下方式检查确定调用请求中指定的公钥密码算法A的公钥是否为一个多公钥数字证书的主体公钥即主公钥,若是,则一并获得相应的多公钥数字证书:
密码组件在约定位置或证书存储库搜索、查找以调用请求中指定的公钥密码算法A的公钥作为主体公钥的公钥数字证书,若查找不到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥,或者查找到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥但查找到的数字证书不是一个多公钥数字证书,则调用请求中指定的公钥密码算法A的公钥不是一个多公钥数字证书的主体公钥即主公钥,若查找到一个数字证书的主体公钥为调用请求中指定的公钥密码算法A的公钥且查找到的数字证书是一个多公钥数字证书,则调用请求中指定的公钥密码算法A的公钥一个多公钥数字证书的主体公钥即主公钥,并获得相应的多公钥数字证书。
10.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若支持多公钥数字证书的密码组件在接收到使用一个多公钥数字证书的主体私钥即主私钥进行密码运算的调用请求,而调用请求中没有主体私钥即主私钥所对应的数字证书,则密码组件确定调用请求中指定的主体私钥对应的多公钥数字证书的各私钥的密钥用途的方式包括:
数字证书的主体私钥与对应的数字证书关联,密码组件利用主体私钥与对应的数字证书的关联关系或主体私钥的密钥对象中的关联信息,获取主体私钥对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放数字证书的主体私钥的密钥对象中同时保存有主体公钥,密码组件利用主体公钥从约定位置或证书存储库获取对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放数字证书的主体私钥的密钥对象中同时保存有证书标识信息,密码组件利用证书标识信息从约定位置或证书存储库获取对应的多公钥数字证书,通过获得的多公钥数字证书确定各私钥的密钥用途;
或者,存放私钥的密码对象中有与密钥使用有关的信息,其中包括密钥用途,密码组件利用主私钥与从私钥的关联,从存放从私钥的密钥对象中获得各私钥的密钥用途信息。
11.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若提交给支持密码组件的密码运算请求中给出的数据为伪密码数据,则密码组件选择使用多公钥数字证书的相应从密钥的一种方式如下:
密码组件在生成伪密码数据时将进行密码运算时所使用的公钥密码算法的标识信息存放到伪密码数据中;后续针对伪密码数据进行密码运算处理的密码组件根据伪密码数据中的公钥密码算法的标识信息,以及密码运算的类型,选择使用多公钥数字证书的相应从密钥进行密码运算。
12.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
密钥用途按其采用的密码运算的类别分类;若密码组件无法确定使用从密钥进行密码运算的密钥用途,则多公钥数字证书中的数字证书公钥密码算法B1、…、公钥密码算法Bm的从密钥的密钥用途的类别不同;当需要选择多公钥数字证书的一个从密钥进行密码运算时,密码组件在从密钥中选择一个密钥用途的类别与密码运算的类别相符合的从密钥进行密码运算,或者依据公钥密码算法支持的密码运算类型选择相应公钥密码算法的从密钥进行密码运算,或者依据预定的设置或策略选择相应公钥密码算法的从密钥进行密码运算。
13.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若密码使用程序使用的数字证书应用编程接口可替换为支持多公钥数证书的数字证书应用编程接口,则由支持多公钥数证书的数字证书应用编程接口和支持多公钥数字证书的密码组件共同完成前述支持多公钥数字证书的密码组件所进行的操作处理,其中,数字证书应用编程接口接收到使用数字证书的密钥进行密码运算的请求中的数字证书的公钥密码算法A的主体密钥,对应前述支持多公钥数字证书的密码组件接收到的密码运算请求中指定的用于密码运算的公钥密码算法A的密钥;若接收到的数字证书为多公钥数字证书,则选择多公钥数字证书的相应从密钥进行密码运算的操作处理由数字证书应用编程接口完成,或者由密码组件完成,而密码运算处理由密码组件完成。
14.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
若针对多公钥数字证书中的从公钥有单独的数字签名即签名值,且在使用一个从公钥进行密码运算时需要验证针对此从公钥的数字签名的有效性,则密码组件进行密码运算前,根据多公钥数字证书中的针对从公钥数字签名的签发者信息,在约定的位置或证书存储库/系统查找、获取针对从公钥的数字签名的签发者的数字证书,然后利用签发者的数字证书中的签发者的公钥对多公钥数字证书中的针对将要使用的从公钥的数字签名即签名值的有效性进行验证。
15.根据权利要求1-8中任一项所述的用于算法过渡的多公钥数字证书的密钥使用方法,其特征是:
当支持公钥密码算法B1、…、公钥密码算法Bm的密码组件接收到使用公钥密码算法B1或…或公钥密码算法Bm的密钥包括公钥、私钥进行密码运算的请求时,密码组件直接使用请求中指定的密钥进行密码运算,密码运算后返回的密码数据为密码运算对应的公钥密码算法的真实的密码数据。
CN202310622266.9A 2023-05-30 2023-05-30 用于算法过渡的多公钥数字证书的密钥使用方法 Pending CN116527282A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310622266.9A CN116527282A (zh) 2023-05-30 2023-05-30 用于算法过渡的多公钥数字证书的密钥使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310622266.9A CN116527282A (zh) 2023-05-30 2023-05-30 用于算法过渡的多公钥数字证书的密钥使用方法

Publications (1)

Publication Number Publication Date
CN116527282A true CN116527282A (zh) 2023-08-01

Family

ID=87390349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310622266.9A Pending CN116527282A (zh) 2023-05-30 2023-05-30 用于算法过渡的多公钥数字证书的密钥使用方法

Country Status (1)

Country Link
CN (1) CN116527282A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116506188A (zh) * 2023-05-04 2023-07-28 北京众谊越泰科技有限公司 一种基于b/s架构的非对称加密算法的操作方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116506188A (zh) * 2023-05-04 2023-07-28 北京众谊越泰科技有限公司 一种基于b/s架构的非对称加密算法的操作方法和系统
CN116506188B (zh) * 2023-05-04 2024-03-29 北京众谊越泰科技有限公司 一种基于b/s架构的非对称加密算法的操作方法和系统

Similar Documents

Publication Publication Date Title
US7499551B1 (en) Public key infrastructure utilizing master key encryption
US6058188A (en) Method and apparatus for interoperable validation of key recovery information in a cryptographic system
US9847880B2 (en) Techniques for ensuring authentication and integrity of communications
US6915434B1 (en) Electronic data storage apparatus with key management function and electronic data storage method
EP1374473B1 (en) Method and apparatus for secure cryptographic key generation, certification and use
US7421079B2 (en) Method and apparatus for secure key replacement
US6976162B1 (en) Platform and method for establishing provable identities while maintaining privacy
US7574596B2 (en) Cryptographic method and apparatus
US20100005318A1 (en) Process for securing data in a storage unit
US20070189517A1 (en) Pseudo public key encryption
US20050058294A1 (en) Method, system and device for enabling delegation of authority and access control methods based on delegated authority
US20040165728A1 (en) Limiting service provision to group members
US7986778B2 (en) Cryptographic method and apparatus
US20040236953A1 (en) Method and device for transmitting an electronic message
EP3387576B1 (en) Apparatus and method for certificate enrollment
EP1992101A2 (en) Secure data transmission using undiscoverable or black data
JPH09219701A (ja) 身元確認身分証明書を検索する方法および装置
US20050005100A1 (en) Cryptographic method and system
US9165148B2 (en) Generating secure device secret key
CN116527282A (zh) 用于算法过渡的多公钥数字证书的密钥使用方法
US20050021973A1 (en) Cryptographic method and apparatus
CN110798321B (zh) 一种基于区块链的物品信息服务方法
KR100654933B1 (ko) 사용자의 패스워드 입력에 따라서 동적 생성되는 인증서를인증하는 인증시스템 및 인증방법
CN116865967A (zh) 基于伪公钥数字证书的新公钥密码算法的密钥使用方法
US20040153659A1 (en) Identification module provided with a secure authentication code

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination