基于公钥池的抗量子证书获取系统及获取方法与流程

文档序号:17488447发布日期:2019-04-23 20:11阅读:226来源:国知局
基于公钥池的抗量子证书获取系统及获取方法与流程
本发明涉及安全通信领域,尤其是一种基于公钥池的抗量子证书获取系统及获取方法。
背景技术
:数字签名(又称公钥数字签名、电子签名等)在理念上是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名的文件完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名,包括普通数字签名和特殊数字签名。普通数字签名算法有rsa、elgamal、fiat-shamir、guillou-quisquarter、schnorr、ong-schnorr-shamir数字签名算法、dsa,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(dss)。在如今的密码学领域中,主要有两种密码系统,一是对称密钥密码系统,即加密密钥和解密密钥使用同一个;另一个是非对称密钥密码系统,即公开密钥密码系统,也即加密密钥和解密密钥不同,其中一个可以公开,而数字证书正好是基于非对称密码体系实现的。但是随着量子计算机的发展,经典非对称密钥加密算法将不再安全,无论加解密、数字签名还是密钥交换方法,量子计算机都可以通过公钥计算得到私钥,因此目前经典的数字证书将在量子时代变得不堪一击。技术实现要素:本发明提供一种安全性能更高的基于公钥池的抗量子证书获取方法和系统,能够避免被量子计算机破解。基于公钥池的抗量子证书获取方法,参与方包括证书授权中心和用户,各参与方均配置有密钥卡,各密钥卡内均存储有公钥池、私钥单元、以及证书授权中心的公钥指针随机数,用户的密钥卡内还存储有用户公钥指针随机数,所述公钥池包括1~n号公钥单元,每个公钥单元内对应存储一个用户的加密公钥和签名公钥;私钥单元中存储有对应的加密私钥和签名私钥;所述抗量子证书获取方法包括在用户端进行的:生成包含证书请求、用户公钥指针随机数、以及用户身份标识的请求信息;利用签名私钥对请求信息进行签名;生成一个真随机数,利用真随机数对请求信息和签名进行加密,得到第一密文;利用证书授权中心的加密公钥对真随机数进行加密,得到第二密文;将第一密文和第二密文发送至证书授权中心;接收并验证证书授权中心的授权证书。以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。可选地,所述抗量子证书获取方法还包括在证书授权中心进行的:接收所述第一密文和第二密文;利用证书授权中心的加密私钥解密第二密文,得到真随机数;利用真随机数解密第一密文,得到请求信息和签名;依据请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过生成授权证书;生成包含证书请求和授权证书的回复消息;利用证书授权中心的签名私钥对回复消息进行签名;生成一个真随机数,利用真随机数对回复消息和签名进行加密,得到第三密文;利用用户的加密公钥对真随机数进行加密,得到第四密文;将第三密文和第四密文回复给用户。可选地,所述抗量子证书获取方法还包括在用户端进行的:利用加密私钥对第四密文进行解密,得到真随机数;利用真随机数对第三密文解密,得到回复消息和签名;利用证书授权中心的签名公钥解密签名,得到回复消息;验证回复消息中的证书请求是否与发送的证书请求一致;保存验证通过的授权证书。可选地,所述抗量子证书获取方法还包括公私钥更新过程,公私钥更新过程包括在用户端进行的:生成包含用户身份标识、公私钥更新请求、用户公钥指针随机数、和更新后公钥的更新请求信息;利用用户签名私钥对更新请求信息进行签名;生成一个真随机数,利用真随机数对更新请求信息和签名进行加密,得到第五密文;利用证书授权中心的签名公钥对真随机数进行加密,得到第六密文;将第五密文和第六密文发送证书授权中心;接收并验证证书授权中心的反馈结果,以更新公私钥。可选地,所述公私钥更新过程还包括在证书授权中心进行的:接收所述第五密文和第六密文;利用证书授权中心的加密私钥解密第六密文,得到真随机数;利用真随机数解密第五密文,得到更新请求信息和签名;依据更新请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过后更新对应公钥单元和公钥池的时间戳;生成包含公私钥更新请求、更新后的时间戳以及更新结果的更新回复消息;利用证书授权中心的签名私钥对更新回复消息进行签名;生成一个真随机数,利用真随机数对更新回复消息和签名进行加密,得到第七密文;利用用户的加密公钥对真随机数进行加密,得到第八密文;将第七密文和第八密文回复给用户。可选地,所述公私钥更新过程还包括在用户端进行的:利用加密私钥对第八密文进行解密,得到真随机数;利用真随机数对第七密文解密,得到更新回复消息和签名;利用证书授权中心的签名公钥解密签名,得到更新回复消息;验证更新回复消息中的公私钥请求是否与发送的公私钥请求一致;利用验证通过后的公私钥替换原始公私钥,并更新时间戳。可选地,所述抗量子证书获取方法还包括用户的公钥池更新过程,用户的公钥池更新过程包括在用户端进行的:生成包含用户身份标识、公钥池更新请求、用户公钥指针随机数、和用户公钥池时间戳的更新请求信息;利用用户签名私钥对更新请求信息进行签名;生成一个真随机数,利用真随机数对更新请求信息和签名进行加密,得到第九密文;利用证书授权中心的签名公钥对真随机数进行加密,得到第十密文;将第九密文和第十密文发送证书授权中心;接收并验证证书授权中心的反馈结果,以更新用户的公钥池。可选地,所述用户的公钥池更新过程还包括在证书授权中心进行的:接收所述第九密文和第十密文;利用证书授权中心的加密私钥解密第九密文,得到真随机数;利用真随机数解密第十密文,得到更新请求信息和签名;依据更新请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过后生成更新回复消息,该更新回复消息包含公钥池更新请求、证书授权中心的公钥池时间戳以及公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合;利用证书授权中心的签名私钥对更新回复消息进行签名;生成一个真随机数,利用真随机数对更新回复消息、签名和公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合进行加密,得到第十一密文;利用用户的加密公钥对真随机数进行加密,得到第十二密文;将第十一密文和第十二密文回复给用户。可选地,所述用户的公钥池更新过程还包括在用户端进行的:利用加密私钥对第十二密文进行解密,得到真随机数;利用真随机数对第十一密文解密,得到更新回复消息、签名和公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合;利用证书授权中心的签名公钥解密签名,得到更新回复消息;验证更新回复消息中的公钥池请求是否与发送的公钥池请求一致;验证通过后,更新用户的公钥池和用户的公钥池时间戳。本发明还提供了一种基于公钥池的抗量子证书获取系统,参与方包括证书授权中心和用户,各参与方均配置有密钥卡,各密钥卡内均存储有公钥池、私钥单元、以及证书授权中心的公钥指针随机数,用户的密钥卡内还存储有用户公钥指针随机数,所述公钥池包括1~n号公钥单元,每个公钥单元内对应存储一个用户的加密公钥和签名公钥;私钥单元中存储有对应的加密私钥和签名私钥;各参与方包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于公钥池的抗量子证书获取方法。本发明中,使用的密钥卡是独立的硬件隔离设备。公钥、私钥和真随机数等其他相关参数均在ca内生成,密钥分发后在密钥卡中存储,用户可以在密钥卡颁发后生成该密钥卡特有的私钥,连ca也不拥有该特有的私钥,因此用户使用时被恶意软件或恶意操作窃取密钥的可能性大大降低,也不会被量子计算机获取并破解。本发明的数字证书请求中更新的公钥以及相关算法参数均通过加密参与网络传输,而加密使用的公私钥均存储于密钥卡内,不涉及网络传输,所以通信双方的公私钥被窃取破解的可能性较低。本发明中使用公钥指针随机数进行公私钥的协商,增加了证书验证的准确度,也保证了公钥的安全。公钥池的更新所涉及的加密手段也通过密钥卡实现,加密所用的公钥不涉及对外公开,即使在量子计算机存在的情况下,也难以被推导出私钥。综上所述,本发明保障了数字证书系统的公私钥及证书的安全。附图说明图1为本发明的ca(即证书授权中心)密钥卡密钥区的分布图;图2为本发明的用户密钥卡密钥区的分布图;图3为本发明的数字证书的结构图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。基于公钥池的抗量子证书获取方法,参与方包括证书授权中心和用户,各参与方均配置有密钥卡,各密钥卡内均存储有公钥池、私钥单元、以及证书授权中心的公钥指针随机数,用户的密钥卡内还存储有用户公钥指针随机数,所述公钥池包括1~n号公钥单元,每个公钥单元内对应存储一个用户的加密公钥和签名公钥;私钥单元中存储有对应的加密私钥和签名私钥;所述抗量子证书获取方法包括在用户端进行的:生成包含证书请求、用户公钥指针随机数、以及用户身份标识的请求信息;利用签名私钥对请求信息进行签名;生成一个真随机数,利用真随机数对请求信息和签名进行加密,得到第一密文;利用证书授权中心的加密公钥对真随机数进行加密,得到第二密文;将第一密文和第二密文发送至证书授权中心;接收并验证证书授权中心的授权证书。在其中一个实施例中,所述抗量子证书获取方法还包括在证书授权中心进行的:接收所述第一密文和第二密文;利用证书授权中心的加密私钥解密第二密文,得到真随机数;利用真随机数解密第一密文,得到请求信息和签名;依据请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过生成授权证书;生成包含证书请求和授权证书的回复消息;利用证书授权中心的签名私钥对回复消息进行签名;生成一个真随机数,利用真随机数对回复消息和签名进行加密,得到第三密文;利用用户的加密公钥对真随机数进行加密,得到第四密文;将第三密文和第四密文回复给用户。在其中一个实施例中,所述抗量子证书获取方法还包括在用户端进行的:利用加密私钥对第四密文进行解密,得到真随机数;利用真随机数对第三密文解密,得到回复消息和签名;利用证书授权中心的签名公钥解密签名,得到回复消息;验证回复消息中的证书请求是否与发送的证书请求一致;保存验证通过的授权证书。在其中一个实施例中,所述抗量子证书获取方法还包括公私钥更新过程,公私钥更新过程包括在用户端进行的:生成包含用户身份标识、公私钥更新请求、用户公钥指针随机数、和更新后公钥的更新请求信息;利用用户签名私钥对更新请求信息进行签名;生成一个真随机数,利用真随机数对更新请求信息和签名进行加密,得到第五密文;利用证书授权中心的签名公钥对真随机数进行加密,得到第六密文;将第五密文和第六密文发送证书授权中心;接收并验证证书授权中心的反馈结果,以更新公私钥。在其中一个实施例中,所述公私钥更新过程还包括在证书授权中心进行的:接收所述第五密文和第六密文;利用证书授权中心的加密私钥解密第六密文,得到真随机数;利用真随机数解密第五密文,得到更新请求信息和签名;依据更新请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过后更新对应公钥单元和公钥池的时间戳;生成包含公私钥更新请求、更新后的时间戳以及更新结果的更新回复消息;利用证书授权中心的签名私钥对更新回复消息进行签名;生成一个真随机数,利用真随机数对更新回复消息和签名进行加密,得到第七密文;利用用户的加密公钥对真随机数进行加密,得到第八密文;将第七密文和第八密文回复给用户。在其中一个实施例中,所述公私钥更新过程还包括在用户端进行的:利用加密私钥对第八密文进行解密,得到真随机数;利用真随机数对第七密文解密,得到更新回复消息和签名;利用证书授权中心的签名公钥解密签名,得到更新回复消息;验证更新回复消息中的公私钥请求是否与发送的公私钥请求一致;利用验证通过后的公私钥替换原始公私钥,并更新时间戳。在其中一个实施例中,所述抗量子证书获取方法还包括用户的公钥池更新过程,用户的公钥池更新过程包括在用户端进行的:生成包含用户身份标识、公钥池更新请求、用户公钥指针随机数、和用户公钥池时间戳的更新请求信息;利用用户签名私钥对更新请求信息进行签名;生成一个真随机数,利用真随机数对更新请求信息和签名进行加密,得到第九密文;利用证书授权中心的签名公钥对真随机数进行加密,得到第十密文;将第九密文和第十密文发送证书授权中心;接收并验证证书授权中心的反馈结果,以更新用户的公钥池。在其中一个实施例中,所述用户的公钥池更新过程还包括在证书授权中心进行的:接收所述第九密文和第十密文;利用证书授权中心的加密私钥解密第九密文,得到真随机数;利用真随机数解密第十密文,得到更新请求信息和签名;依据更新请求信息中的用户公钥指针随机数在公钥池中取出用户的签名公钥;依据用户的签名公钥对签名进行验证,验证通过后生成更新回复消息,该更新回复消息包含公钥池更新请求、证书授权中心的公钥池时间戳以及公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合;利用证书授权中心的签名私钥对更新回复消息进行签名;生成一个真随机数,利用真随机数对更新回复消息、签名和公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合进行加密,得到第十一密文;利用用户的加密公钥对真随机数进行加密,得到第十二密文;将第十一密文和第十二密文回复给用户。在其中一个实施例中,所述用户的公钥池更新过程还包括在用户端进行的:利用加密私钥对第十二密文进行解密,得到真随机数;利用真随机数对第十一密文解密,得到更新回复消息、签名和公钥池内所有时间戳大于用户公钥池时间戳的公钥单元集合;利用证书授权中心的签名公钥解密签名,得到更新回复消息;验证更新回复消息中的公钥池请求是否与发送的公钥池请求一致;验证通过后,更新用户的公钥池和用户的公钥池时间戳。本发明实现一种基于公钥池的抗量子计算的数字证书体系。本发明所实现的场景为一个拥有同一公钥池成员组成的群组。群组中的ca(即证书授权中心)拥有ca密钥卡,而其他成员均拥有用户密钥卡。本发明中的密钥卡不仅可以存储大量的数据,还具有处理信息的能力。本发明中,所有密钥卡都存在相应需求的算法。密钥卡的描述可见申请号为“201610843210.6”的专利。当为移动终端时,密钥卡优选为密钥sd卡;当为固定终端时,密钥卡优选为密钥usbkey或主机密钥板卡。与申请号为“201610843210.6”的专利相比,密钥卡的颁发机制有所不同。本专利的密钥卡颁发方为密钥卡的主管方,一般为群组的管理部门,例如某企业或事业单位的管理部门;密钥卡被颁发方为密钥卡的主管方所管理的成员,一般为某企业或事业单位的各级员工。用户端首先到密钥卡的主管方申请开户。当用户端进行注册登记获批后,将得到密钥卡(具有唯一的密钥卡id)。密钥卡存储了客户注册登记信息。密钥卡中的用户侧密钥都下载自ca服务站,且对同一个密钥卡的主管方来说,其颁发的每个密钥卡中存储的密钥池是完全一致的。优选为,密钥卡中存储的密钥池大小可以是1g、2g、4g、8g、16g、32g、64g、128g、256g、512g、1024g、2048g、4096g等等。密钥卡从智能卡技术上发展而来,是结合了真随机数发生器(优选为量子随机数发生器)、密码学技术、硬件安全隔离技术的身份认证和加解密产品。密钥卡的内嵌芯片和操作系统可以提供密钥的安全存储和密码算法等功能。由于其具有独立的数据处理能力和良好的安全性,密钥卡成为私钥和密钥池的安全载体。每一个密钥卡都有硬件pin码保护,pin码和硬件构成了用户使用密钥卡的两个必要因素,即所谓“双因子认证”,用户只有同时取得保存了相关认证信息的密钥卡和用户pin码,才可以登录系统。即使用户的pin码被泄露,只要用户持有的密钥卡不被盗取,合法用户的身份就不会被仿冒;如果用户的密钥卡遗失,拾到者由于不知道用户pin码,也无法仿冒合法用户的身份。下面结合附图对本发明进行详细描述。1.pk单元公钥池是由n个pk单元组成,pk单元即公钥单元,n表示群组内所有成员的个数,包括ca和其他用户。pk单元包括pkr、fpos信息、pke、pke算法、pks、pks算法和时间戳七个部分,如表1所示。其中pkr为公钥指针随机数(公钥的存储位置参数),fpos为公钥指针函数,pke为加密公钥,pks为签名公钥,时间戳t为现有pk单元录入时间。表1pkrfpos信息pkepke算法pkspks算法时间戳其中fpos信息包括fpos算法id和内部参数,如表2所示。表2fpos算法id内部参数fpos的算法可以有多种计算方式,例如,fpos(pkr)=(a*pkr+b)%n。其中%为取模运算;pkr为输入变量;n(pk单元的个数)为外部参数;a、b为内部参数。或fpos(pkr)=(pkr^c)*d%n;其中^为乘方运算,%为取模运算;pkr为输入变量;n(pk单元的个数)为外部参数;c、d为内部参数。上述两种算法仅作为参考,对本发明并不受限于该两种计算方式。pke算法和pks算法都指具体的公钥算法(非对称密码算法)。可以有多种公钥算法,例如rsa/dsa/ecc等。各种公钥算法还有各自的算法参数,也存储于公钥算法的存储区域中。2.密钥卡本发明中密钥卡分为两种密钥卡,一种是用于ca系统的ca密钥卡,还有一种是用户密钥卡。ca密钥卡包括公钥池、ca私钥单元和ca公钥指针随机数;用户密钥卡包括公钥池、用户私钥单元、用户公钥指针随机数和ca公钥指针随机数。在密钥卡初始化时,ca密钥卡的公钥池和用户密钥卡中的公钥池相同。密钥池的分布如图1和图2。ca服务器(即证书授权中心)在颁发密钥卡之前会创建一个至少有n*sp大小的公钥池文件和一个至少有n*ss大小的私钥池文件。sp为1个pk单元的大小,ss为1个私钥单元的大小。私钥单元由ske和sks组成,因此私钥单元的大小即ske和sks的大小之和,其中ske为加密私钥,sks为签名私钥。ca服务器将生成n个pke/ske对和n个pks/sks对。ca服务器可以提供多种非对称算法,生成每个公私钥对时,ca服务器会选择一种非对称算法。ca服务器对每个公钥单元、私钥单元进行赋值。首先,ca服务器生成pkr,pkr为真随机数,优选为量子随机数。ca服务器随机生成fpos算法id和fpos内部参数,计算得到pkpos,pkpos为公钥位置指针。ca服务器对公钥位置指针pkpos所在位置进行赋值,即写入pkr、fpos信息、pke、pke算法、pks、pks算法以及对应的时间戳t。ca服务器对私钥池文件pkpos所在位置进行赋值,即写入ske和sks。假如pkpos所在位置已经被赋值,则更换pkr、fpos算法id、fpos内部参数中的1个或多个,重新执行本流程,直到找到未被赋值的位置。ca服务器从公钥池文件随机选取一个pk单元,将该pk单元的公钥作为ca公钥,即pkeca(ca的加密公钥)和pksca(ca的签名公钥),并将该pk单元的pkr作为ca公钥指针随机数,即pkrca。同时取出在私钥池文件同位置的私钥作为ca私钥单元,即skeca和sksca。ca的公私钥单元可以是1个或多个,如为多个,则多次执行前述流程。ca服务器通过安全发送方式把公钥池文件、私钥和ca公钥指针随机数发送给ca密钥卡,ca密钥卡将相关密钥存储到ca密钥卡内部。设ca对应的pk单元时间戳为tca,记录时间tca为公钥池初始的时间戳tp=tca。ca通过安全发送方式把pkr、pkrca、pkr对应的私钥单元、公钥池文件发送给用户密钥卡,用户密钥卡将相关密钥存储到用户密钥卡内部。安全发送的方法可能是:(1)用户密钥卡通过usb或网络接口等,直接连接至ca密钥卡,并由ca密钥卡传输信息;(2)用户密钥卡和ca密钥卡均通过usb或网络接口等,连接到ca认可的某台安全主机,由主机中转信息;(3)ca密钥卡与用户密钥卡分配有预共享密钥,ca密钥卡用预共享密钥对信息进行加密,网络传输至用户密钥卡后被用户密钥卡解密;(4)ca密钥卡与用户密钥卡之间有量子密钥分发网络,ca密钥卡用量子密钥分发的密钥对信息进行加密,传输至用户密钥卡后被用户密钥卡解密;(5)通过安全存储介质,将信息直接拷贝到用户密钥卡内;(6)其他未提及的安全发送手段。用户陆续领用用户密钥卡。ca根据用户需求陆续颁发用户密钥卡,每颁发一个用户密钥卡,且用户对用户密钥卡中的密钥区进行更新以后,ca中的公钥池也会进行更新,即对该用户对应的公钥单元的内容、公钥池时间戳进行更新。随着ca中的公钥池的变化,后续不同时刻用户领用到的用户密钥卡将拥有不同的公钥池及不同的公钥池时间戳。用户获取用户密钥卡后,由于用户的公钥/私钥对均由ca产生,用户出于提高安全性的原因,对用户密钥卡中的密钥区进行更新。该更新即用户产生自己的公钥/私钥对,并将自己的公钥和私钥分别替换入用户所对应的密钥卡中的公钥单元和私钥单元中。3.数字证书数字证书的结构如图3所示。数字证书包括证书信息、颁发者信息、持有者信息和颁发者数字签名四个部分。其中证书信息包括版本号、序列号和有效期;颁发者信息为颁发者名称,即ca名称;持有者信息包括持有者名称、公钥算法和持有者的公钥指针随机数pkr以及用户的公钥时间戳,其中公钥算法包括持有者的加密公钥算法和签名公钥算法;颁发者数字签名包括pkrca、签名算法和加密的ca数字签名。其中ca数字签名的加密如下所述:设数字证书的证书信息、颁发者信息和持有者信息为m,m的摘要为md,ca服务器利用私钥sksca签名md得到签名ms=signca{md}。其中signca表示ca对应的签名算法。ca服务器产生一个真随机数r,利用r对签名ms加密得到{ms}r。ca服务器再利用私钥skeca加密r得到{r}skeca。最终加密签名为pkrca||{ms}r||{r}skeca。数字证书验证流程如下:首先用户根据持有者信息中的公钥指针随机数pkr去密钥卡公钥池中进行匹配,是否能找到具有相同pkr的pk单元,如果没有找到,则验证失败,流程结束。如果找到,再根据匹配的pk单元中的fpos信息对该pkr进行计算,得到的值与该pk单元的pkpos进行比较。如果相同,则pkr验证通过。然后将pk单元中的时间戳与证书的公钥时间戳进行对比,如果pk单元的时间戳要小于该时间戳,则先进行公钥池更新。公钥池更新见下文第6部分。反之则进行下一步验证。然后将证书中的公钥算法与该pk单元的公钥算法进行比较。如果相同,则公钥算法验证通过。然后用户根据加密的ca数字签名中的ca公钥指针随机数pkrca,验证其是否位于密钥卡中的ca公钥指针随机数区域;如果不是,则验证失败,流程结束。如找到pkrca,则从密钥卡公钥池中取出ca公钥pkeca。用户利用pkeca将数字证书的颁发者数字签名中的{r}skeca解密得到r。用户利用r解密{ms}r得到ms,用pksca对ms进行签名验证。如果证书的数字签名验证通过,则说明证书合法,即该证书确实来自ca。最后验证证书是否位于有效期内。4.用户更新公私钥步骤1:密钥卡提供多种非对称算法,用户方选择其中一个算法,具体可以是一种加密公钥算法或签名公钥算法,由密钥卡生成该算法的公私钥对,即pki/ski对。用户密钥卡把私钥ski写入到用户密钥卡中,但不覆盖ske和sks。由于ski并未出密钥卡(即ski始终仅存在于用户的密钥卡内),安全性得到保证。步骤2:设reqk为公私钥更新请求;设mc=id||pkr||reqk||pkd,其中id为ca服务器颁发密钥卡时分配给密钥卡的id,pkd包含了公钥pki以及相应的算法的信息和算法id。对mc进行摘要算法计算得到mcd=hash(mc)。利用sks对mcd进行签名得到签名mcs=sign{mcd}。其中sign表示用户对应的签名算法。sks为用户密钥内的签名私钥。用户密钥卡产生一个真随机数kmc,利用kmc对mc和mcs进行对称加密得到{mc||mcs}kmc。然后,用户密钥卡利用ca公钥pkeca对kmc进行非对称加密得到{kmc}pkeca。用户向ca服务器发送公私钥更新请求:{mc||mcs}kmc||{kmc}pkeca。步骤3:ca服务器接收到用户的公私钥更新请求。ca密钥卡利用ca私钥skeca对{kmc}pkeca解密得到真随机数kmc。ca密钥卡利用kmc对{mc||mcs}kmc进行对称算法解密得到mc||mcs。ca密钥卡根据mc中的pkr找到对应的pk单元,再根据匹配的pk单元中的fpos信息对该pkr进行计算,得到的值与该pk单元的pkpos进行比较。如果相同,则pkr验证通过。ca密钥卡利用pks对mcs进行验签。ca服务器从mc解析出id||pkr||reqk||pkd。ca密钥卡根据reqk和pkd中的算法id来确定替换对应pk单元内的加密公钥部分或者签名公钥部分,并更新该pk单元的时间戳,同时更新公钥池的时间戳。步骤4:设ktc为对称加密密钥,为真随机数;设tu为更新后的pk单元时间戳;设respk为公私钥更新回复,可以包括reqk和公私钥更新结果信息,如成功/失败/失败原因等;设mca=mc||tu||respk。ca密钥卡对mca进行摘要算法计算得到mcad=hash(mca),并利用ca私钥sksca签名mcad得到签名mcas=signca{mcad}。ca密钥卡利用ktc对mca||mcas进行对称加密得到{mca||mcas}ktc。如果pki为加密公钥,则ca密钥卡利用pki对ktc进行非对称加密得到{ktc}pki。否则,ca密钥卡利用pke对ktc进行非对称加密得到{ktc}pke。也即如果具有更新的加密公钥pki则利用加密公钥进行加密,如果不存在,则利用pke进行加密。ca服务器发出用户公私钥更新请求的回复:{mca||mcas}ktc||{ktc}pki或{mca||mcas}ktc||{ktc}pke。步骤5:用户密钥卡利用对应的加密私钥ski或ske对{ktc}pki或{ktc}pke进行非对称算法解密得到ktc,并利用ktc对{mca||mcas}ktc解密得到mca||mcas。用户密钥卡利用ca公钥指针随机数从公钥池取出ca公钥pksca。用户密钥卡利用pksca对签名mcas进行验证。用户密钥卡解密mca得到mc||tu||respk。用户密钥卡先验证mc是否与本地发出的mc一致。然后查看respk中的公私钥更新结果。如果结果为成功,用户密钥卡利用pki/ski将密钥卡内对应的公私钥对进行替换,包括相应pk单元中的公钥算法信息;同时将对应的pk单元中的时间戳更新为tu。根据需要,加密公私钥对和签名公私钥对的替换可以同时在一个数字证书请求中完成,具体仅需要增加pkd的内容即可。5.用户申请数字证书步骤1:设reqc为证书请求,可以包含一些需要写入证书的信息;设mq=id||pkr||reqc,其中id为ca服务器颁发密钥卡时分配给密钥卡的id(即用户身份标识)。对mq进行摘要算法计算得到mqd=hash(mq)。利用sks对mqd进行签名得到签名mqs=sign{mqd}。其中sign表示用户对应的签名算法。sks为用户密钥卡内的签名私钥。用户密钥卡产生一个真随机数kmq,利用kmq对mq和mqs进行对称加密得到{mq||mqs}kmq。然后,用户密钥卡利用ca公钥pkeca对kmq进行非对称加密得到{kmq}pkeca。用户向ca服务器发送证书请求:{mq||mqs}kmq||{kmq}pkeca。步骤2:ca服务器接收到用户的数字证书请求。ca密钥卡利用ca私钥skeca对{kmq}pkeca解密得到真随机数kmq。ca密钥卡利用kmq对{mq||mqs}kmq进行对称算法解密得到mq||mqs。ca服务器从mq解析出id||pkr||reqc。ca密钥卡根据mq中的pkr找到对应的pk单元,再根据匹配的pk单元中的fpos信息对该pkr进行计算,得到的值与该pk单元的pkpos进行比较。如果相同,则pkr验证通过。ca密钥卡利用pkr找到对应的pk单元,从中取出pks对mqs进行验签。ca服务器生成该用户的数字证书cert。数字证书所包含的内容见上文第3部分。步骤3:设ktq为对称加密密钥,为真随机数;设mqa=mq||cert。ca密钥卡对mqa进行摘要算法计算得到mqad=hash(mqa),并利用ca私钥sksca签名mqad得到签名mqas=signca{mqad}。ca密钥卡利用ktq对mqa||mqas进行对称加密得到{mqa||mqas}ktq。ca密钥卡利用该用户的公钥pke对ktq进行非对称加密得到{ktq}pke。ca服务器发出用户数字证书请求的回复:{mqa||mqas}ktq||{ktq}pke。步骤4:用户密钥卡利用ske对{ktq}pke进行非对称算法解密得到ktq,并利用ktq对{mqa||mqas}ktq解密得mqa||mqas。用户密钥卡利用ca公钥指针随机数从公钥池取出ca公钥pksca。用户密钥卡利用pksca对签名mqas进行验证。用户密钥卡解密mqa得到mq||cert。用户密钥卡验证mq是否与本地发出的的mq一致。如果一致,则用户方对数字证书cert进行验证,验证过程见前文第3部分。cert验证成功后,保存数字证书cert。6.用户更新公钥池步骤1:设reqp为公钥池更新请求;设tpu为用户密钥卡的公钥池时间戳;设pkr为用户公钥指针随机数;设mp=id||pkr||tpu||reqp,其中id为ca服务器颁发密钥卡时分配给密钥卡的id。对mp进行摘要算法计算得到mpd=hash(mp)。利用用户密钥卡的用户sks对mpd进行签名得到签名mps=sign{mpd}。用户密钥卡产生一个真随机数kmp,利用kmp对mp和mps进行对称加密得到{mp||mps}kmp。然后,用户密钥卡利用ca公钥pkeca对kmp进行非对称加密得到{kmp}pkeca。用户向ca服务器发送更新公钥池请求:{mp||mps}kmp||{kmp}pkeca。步骤2:ca服务器接收到用户的更新公钥池请求。ca密钥卡利用ca私钥skeca对{kmp}pkeca解密得到真随机数kmp。ca密钥卡利用kmp对{mp||mps}kmp进行对称算法解密得到mp||mps。ca服务器从mp解析出id||pkr||tpu||reqp。ca密钥卡根据pkr找到对应的pk单元,再根据匹配的pk单元中的fpos信息对该pkr进行计算,得到的值与该pk单元的pkpos进行比较。如果相同,则pkr验证通过。ca密钥卡利用pkr找到对应的pk单元,从中取出pks对mps进行验签。步骤3:设ktp为对称加密密钥,为真随机数;设pkv为当前公钥池内所有时间戳大于tpu的pk单元的集合。设pkvd为pkv的摘要。tpca为ca中公钥池的时间戳。设mpa=mp||tpca||pkvd。ca密钥卡对mpa进行摘要算法计算得到mpad=hash(mpa),并利用ca私钥sksca签名mpad得到签名mpas=signca{mpad}。ca密钥卡利用ktp对pkv||mpa||mpas进行对称加密得到{pkv||mpa||mpas}ktp。ca密钥卡利用该用户的公钥pke对ktp进行非对称加密得到{ktp}pke。ca服务器发出用户更新公钥池请求的回复:{pkv||mpa||mpas}ktp||{ktp}pke。步骤4:用户密钥卡利用ske对{ktp}pke进行非对称算法解密得到ktp,并利用ktp对{pkv||mpa||mpas}ktp解密得到pkv||mpa||mpas。用户密钥卡利用ca公钥指针随机数从公钥池取出ca公钥pksca。用户密钥卡利用pksca对签名mpas进行验证。用户密钥卡解析mpa得到mp||tpca||pkvd。用户密钥卡先验证mp是否与本地发出的mp一致。然后用摘要pkvd与pkv的摘要进行对比,从而验证pkv的正确性。如果pkv验证通过,则将pkv替换到公钥池内相应的pk单元。同时利用tpca更新本地公钥池时间戳。其中一实施例中,提供一种基于公钥池的抗量子证书获取系统,参与方包括证书授权中心和用户,各参与方均配置有密钥卡,各密钥卡内均存储有公钥池、私钥单元、以及证书授权中心的公钥指针随机数,用户的密钥卡内还存储有用户公钥指针随机数,所述公钥池包括1~n号公钥单元,每个公钥单元内对应存储一个用户的加密公钥和签名公钥;私钥单元中存储有对应的加密私钥和签名私钥;所述抗量子证书获取系统包括设置在用户端的:第一模块,用于生成包含证书请求、用户公钥指针随机数、以及用户身份标识的请求信息;第二模块,用于利用签名私钥对请求信息进行签名;第三模块,用于生成一个真随机数,利用真随机数对请求信息和签名进行加密,得到第一密文;第四模块,用于利用证书授权中心的加密公钥对真随机数进行加密,得到第二密文;第五模块,用于将第一密文和第二密文发送至证书授权中心;第六模块,用于接收并验证证书授权中心的授权证书。关于抗量子证书获取系统的具体限定可以参见上文中对于抗量子证书获取方法的限定,在此不再赘述。上述各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,提供了一种计算机设备,即一种抗量子证书获取系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现抗量子证书获取方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。其中一实施例中,提供一种基于公钥池的抗量子证书获取系统,参与方包括证书授权中心和用户,各参与方均配置有密钥卡,各密钥卡内均存储有公钥池、私钥单元、以及证书授权中心的公钥指针随机数,用户的密钥卡内还存储有用户公钥指针随机数,所述公钥池包括1~n号公钥单元,每个公钥单元内对应存储一个用户的加密公钥和签名公钥;私钥单元中存储有对应的加密私钥和签名私钥;各参与方包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于公钥池的抗量子证书获取方法。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1