首页 / 专利库 / 人工智能 / 量子计算机 / 基于联盟链的抗量子计算公钥池更新方法和系统

基于联盟链的抗量子计算公钥池更新方法和系统

阅读:433发布:2020-05-14

专利汇可以提供基于联盟链的抗量子计算公钥池更新方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于联盟链的抗 量子计算 公钥池更新方法和系统,联盟链的 节点 中包括用户客户端和联盟链服务端,用户客户端和联盟链服务端均配置有密钥卡,密钥卡内存储有私钥和公钥池,公钥池包含数量与联盟链的节点数量相同的公钥池单元,各公钥池单元内存储有与节点对应的一个公钥。本发明在用户将公钥及签名信息传递给其他成员的过程中,使用公钥池中的公钥作为偏移量对公钥及签名信息进行加密,则 量子计算机 无法通过公钥及签名信息破解出私钥。,下面是基于联盟链的抗量子计算公钥池更新方法和系统专利的具体信息内容。

1.基于联盟链的抗量子计算公钥池更新方法,其特征在于,实施在用户客户端,所述抗量子计算公钥池更新方法,包括:
生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
向联盟链服务端发送所述偏移交易;所述时间戳用于供联盟链服务端进行哈希运算得到第一中间参数和第二中间参数,所述第一中间参数和第二中间参数用于供联盟链服务端分别从密钥卡中取出第一公钥和第二公钥,所述第一公钥用于供联盟链服务端结合第一偏移参数得到新公钥,所述第二公钥用于供联盟链服务端结合第二偏移参数得到第一签名参数,所述第一签名参数和第二签名参数用于供联盟链服务端得到第一签名,所述新公钥、第一签名参数和第二签名参数用于供联盟链服务端得到对所述偏移交易复原后的所述交易,所述交易用于供联盟链服务端对所述第一签名验证后生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥;
接收来自联盟链服务端的多个偏移交易应答;所述偏移交易应答由联盟链服务端对所述交易应答执行偏移加密操作后得到;
选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书;
向联盟链服务端发送所述背书;所述背书用于供联盟链服务端得到多个交易应答,所述交易应答用于供联盟链服务端验证达到背书策略要求后解析得到新公钥,所述新公钥用于供联盟链服务端更新对应公钥;
接收来自联盟链服务端的偏移交易通知,根据所述偏移交易通知得到交易通知,所述交易通知包含第三签名和交易结果,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥;所述交易通知由联盟链服务端根据交易应答是否达到背书策略要求生成,所述偏移交易通知由联盟链服务端对所述交易通知执行偏移加密操作后得到。
2.基于联盟链的抗量子计算公钥池更新方法,其特征在于,实施在联盟链服务端,所述抗量子计算公钥池更新方法,包括:
接收来自用户客户端的偏移交易;所述偏移交易由用户客户端对所述交易进行偏移加密操作得到,所述交易由用户客户端根据第一签名和第一交易参数生成,所述第一交易参数包含时间戳和新公钥,所述新公钥和第一交易参数由用户客户端生成,所述第一签名由用户客户端对所述第一交易参数进行ECDSA签名得到,所述第一签名包括第一签名参数和第二签名参数,所述用户客户端对所述交易进行偏移加密操作包括:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答;
向用户客户端发送多个所述偏移交易应答;多个所述偏移交易应答用于供用户客户端选择受联盟链服务端认可的组成背书;
接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知;
向用户客户端发送所述偏移交易通知;所述偏移交易通知用于供用户客户端得到交易通知,所述交易通知用于供用户客户端解析得到第三签名和交易结果,所述交易结果用于供用户客户端对第三签名验证成功后接收并信任。
3.基于联盟链的抗量子计算公钥池更新方法,其特征在于,所述抗量子计算公钥池更新方法,包括:
用户客户端生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
所述用户客户端对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向联盟链服务端发送所述偏移交易;
所述联盟链服务端接收来自用户客户端的偏移交易,对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送多个所述偏移交易应答;
所述用户客户端接收来自联盟链服务端的多个偏移交易应答,选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书,向联盟链服务端发送所述背书;
所述联盟链服务端接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送所述偏移交易通知;
所述用户客户端接收来自联盟链服务端的偏移交易通知,根据所述偏移交易通知得到交易通知,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥。
4.如权利要求1至3中任一项所述的基于联盟链的抗量子计算公钥池更新方法,其特征在于,联盟链的节点中包括用户客户端和联盟链服务端,所述用户客户端和联盟链服务端均配置有密钥卡,所述密钥卡内存储有私钥和公钥池,所述公钥池包含数量与联盟链的节点数量相同的公钥池单元,各所述公钥池单元内存储有与节点对应的一个公钥。
5.如权利要求1至3中任一项所述的基于联盟链的抗量子计算公钥池更新方法,其特征在于,所述联盟链服务端配置有Endorser、Orderer和Committer,所述抗量子计算公钥池更新方法,包括:
用户客户端生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
所述用户客户端对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向若干个所述Endorser发送所述偏移交易;
所述Endorser接收来自用户客户端的偏移交易,对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受Endorser认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送所述偏移交易应答;
所述用户客户端接收来自若干个所述Endorser的偏移交易应答,选择多个偏移交易应答中受Endorser认可的交易对应的偏移交易应答组成背书,向所述Orderer发送所述背书;
所述Orderer接收来自用户客户端的背书,积累预设数量的背书后,对多个背书进行排序后生成背书集合,并且所述Orderer向若干个所述Committer发送背书集合;
所述Committer逐一从所述背书集合中取出背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送所述偏移交易通知;
所述用户客户端接收来自所述Committer的偏移交易通知,根据所述偏移交易通知得到交易通知,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥。
6.如权利要求5所述的基于联盟链的抗量子计算公钥池更新方法,其特征在于,对所述第一交易参数进行ECDSA签名得到第一签名,包括:
取随机数rU,计算第一签名参数RU=rU*G=(xU,yU),其中,rU为随机数rU,G为基点;
对第一交易参数进行哈希运算得到参数hU;
计算第二签名参数sU=(hU+SKU*xU)/rU,其中,hU为参数hU,SKU为用户客户端的私钥,rU为随机数rU;
组合RU和sU得到所述第一签名。
7.如权利要求6所述的基于联盟链的抗量子计算公钥池更新方法,其特征在于,对所述第一签名进行验证,包括:
对第一交易参数进行哈希运算得到参数hU;
计算(hU*G/sU)+(xU*PKU/sU)的值,其中,PKU为用户客户端的公钥,将计算结果与第一签名参数RU相比,若两者的值相等,则对第一签名验证成功;反之则对第一签名验证失败。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至2中任一项所述的基于联盟链的抗量子计算公钥池更新方法的步骤。
9.基于联盟链的抗量子计算公钥池更新系统,其特征在于,联盟链的节点中包括用户客户端和联盟链服务端,所述用户客户端和联盟链服务端均配置有密钥卡,所述密钥卡内存储有私钥和公钥池,所述公钥池包含数量与联盟链的节点数量相同的公钥池单元,各所述公钥池单元内存储有与节点对应的一个公钥;
所述用户客户端和联盟链服务端通过通信网络实现权利要求3中所述的基于联盟链的抗量子计算公钥池更新方法的步骤。

说明书全文

基于联盟链的抗量子计算公钥池更新方法和系统

技术领域

[0001] 本申请涉及联盟链领域,尤其是一种基于联盟链的抗量子计算公钥池更新方法和系统。

背景技术

[0002] 国际互联网的广泛应用使得远在世界各个落的互不相识的人们可以快速交换信息,共享信息资源。在交换的过程中,人们并不总是希望自己发出的信息被所有人获悉,处于种种考虑,发出信息的人只希望所发出的信息被与此有关的人获悉。为此人们使用密码对自己所发出的信息进行加密,只有配有相同密码的人才能解密信息。另外,在通过互联网把全球连接在一个如此广泛的网络世界的时代,出于全球电子商务和电子贸易的目的,人们需要使用统一的密码进行信息加密。因此在1975年公布的美国数据加密标准DES。作为传统密码体制的DES算法,使用时通信双方必须预先分配相同的密钥并妥善保管,在没有专的密钥管理机构时,互不认识的通信双方如何预先得到所需的密钥,如何识别对方的身份,是一个非常重要的问题。这个问题可以归结到如何授权对方成为自己本次通信的唯一合法的通信伙伴,使其具有合法的权利和能解密自己所发出去的密文。、[0003] 链是一种全新的分布式基础架构与计算范式,利用有序的链式数据结构存储数据,利用共识算法更新数据,利用密码学技术保障数据安全。在基于区块链的交易中,确保交易的数据安全和客户的隐私是区块链能够进一步发展的必要条件。为此,密码学技术尤其是公钥密钥学在区块链中得到了广泛的应用。
[0004] 密钥卡是结合了密码学技术、硬件安全隔离技术、量子物理学技术(搭载量子随机数发生器的情况下)的身份认证和加解密产品。密钥卡的内嵌芯片和操作系统可以提供密钥的安全存储和密码算法等功能。由于其具有独立的数据处理能力和良好的安全性,密钥卡成为私钥和密钥池的安全载体。每一个密钥卡可以有硬件PIN码保护,PIN码和硬件构成了用户使用密钥卡的两个必要因素,即所谓“双因子认证”,用户只有同时取得保存了相关认证信息的密钥卡和用户PIN码,才可以登录系统。即使用户的PIN码被泄露,只要用户持有的密钥卡不被盗取,合法用户的身份就不会被仿冒;如果用户的密钥卡遗失,拾到者由于不知道用户PIN码,也无法仿冒合法用户的身份。总之,密钥卡使得密钥等绝密信息不以明文形式出现在主机的磁盘及内存中,从而能有效保证绝密信息的安全。
[0005] 现有技术存在的问题:
[0006] 1、当前公钥池技术,有公钥更新的需求。此时,用户必须以一种安全的方式将他的公钥信息传递给可信第三方机构。但是,因为没有安全的通信信道,用户将公钥信息传递给可信机构的过程中极易被攻击者拦截,则用户发出的公钥极有可能被量子计算机攻击者破解出私钥。怎样保证用户公钥信息传递过程的安全是当前亟待解决的一个问题。
[0007] 2、公钥更新后,一般通知公钥池颁发机构,其余通信方为了解公钥更新的信息,必须向公钥池颁发机构进行查询并下载公钥更新。而公钥池颁发机构的数据处理量又是有限的,极端情况可能发生网络问题而导致公钥池颁发机构通信功能丧失;另外,攻击者在获取公钥池颁发机构真实网络位置的情况下,可以发动拒绝服务式攻击。因此,公钥池颁发机构的中心化设计是导致整个系统出现系统性险的软肋。发明内容
[0008] 基于此,有必要针对上述技术问题,提供一种基于联盟链的抗量子计算公钥池更新方法和系统。
[0009] 本申请提供一种基于联盟链的抗量子计算公钥池更新方法,实施在用户客户端,所述抗量子计算公钥池更新方法,包括:
[0010] 生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0011] 对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
[0012] 向联盟链服务端发送所述偏移交易;所述时间戳用于供联盟链服务端进行哈希运算得到第一中间参数和第二中间参数,所述第一中间参数和第二中间参数用于供联盟链服务端分别从密钥卡中取出第一公钥和第二公钥,所述第一公钥用于供联盟链服务端结合第一偏移参数得到新公钥,所述第二公钥用于供联盟链服务端结合第二偏移参数得到第一签名参数,所述第一签名参数和第二签名参数用于供联盟链服务端得到第一签名,所述新公钥、第一签名参数和第二签名参数用于供联盟链服务端得到对所述偏移交易复原后的所述交易,所述交易用于供联盟链服务端对所述第一签名验证后生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥;
[0013] 接收来自联盟链服务端的多个偏移交易应答;所述偏移交易应答由联盟链服务端对所述交易应答执行偏移加密操作后得到;
[0014] 选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书;
[0015] 向联盟链服务端发送所述背书;所述背书用于供联盟链服务端得到多个交易应答,所述交易应答用于供联盟链服务端验证达到背书策略要求后解析得到新公钥,所述新公钥用于供联盟链服务端更新对应公钥;
[0016] 接收来自联盟链服务端的偏移交易通知,根据所述偏移交易通知得到交易通知,所述交易通知包含第三签名和交易结果,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥;所述交易通知由联盟链服务端根据交易应答是否达到背书策略要求生成,所述偏移交易通知由联盟链服务端对所述交易通知执行偏移加密操作后得到。
[0017] 本申请提供一种基于联盟链的抗量子计算公钥池更新方法,实施在联盟链服务端,所述抗量子计算公钥池更新方法,包括:
[0018] 接收来自用户客户端的偏移交易;所述偏移交易由用户客户端对所述交易进行偏移加密操作得到,所述交易由用户客户端根据第一签名和第一交易参数生成,所述第一交易参数包含时间戳和新公钥,所述新公钥和第一交易参数由用户客户端生成,所述第一签名由用户客户端对所述第一交易参数进行ECDSA签名得到,所述第一签名包括第一签名参数和第二签名参数,所述用户客户端对所述交易进行偏移加密操作包括:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
[0019] 对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答;
[0020] 向用户客户端发送多个所述偏移交易应答;多个所述偏移交易应答用于供用户客户端选择受联盟链服务端认可的组成背书;
[0021] 接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知;
[0022] 向用户客户端发送所述偏移交易通知;所述偏移交易通知用于供用户客户端得到交易通知,所述交易通知用于供用户客户端解析得到第三签名和交易结果,所述交易结果用于供用户客户端对第三签名验证成功后接收并信任。
[0023] 本申请提供一种基于联盟链的抗量子计算公钥池更新方法,所述抗量子计算公钥池更新方法,包括:
[0024] 用户客户端生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0025] 所述用户客户端对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向联盟链服务端发送所述偏移交易;
[0026] 所述联盟链服务端接收来自用户客户端的偏移交易,对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受联盟链服务端认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送多个所述偏移交易应答;
[0027] 所述用户客户端接收来自联盟链服务端的多个偏移交易应答,选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书,向联盟链服务端发送所述背书;
[0028] 所述联盟链服务端接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送所述偏移交易通知;
[0029] 所述用户客户端接收来自联盟链服务端的偏移交易通知,根据所述偏移交易通知得到交易通知,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥。
[0030] 进一步的,联盟链的节点中包括用户客户端和联盟链服务端,所述用户客户端和联盟链服务端均配置有密钥卡,所述密钥卡内存储有私钥和公钥池,所述公钥池包含数量与联盟链的节点数量相同的公钥池单元,各所述公钥池单元内存储有与节点对应的一个公钥。
[0031] 进一步的,所述联盟链服务端配置有Endorser、Orderer和Committer,所述抗量子计算公钥池更新方法,包括:
[0032] 用户客户端生成新公钥和新私钥,得到第一交易参数,所述第一交易参数包含时间戳和新公钥,对所述第一交易参数进行ECDSA签名得到第一签名,所述第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0033] 所述用户客户端对所述交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述新公钥与第一公钥相减得到第一偏移参数,将所述第一签名参数与第二公钥相减得到第二偏移参数,根据所述第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向若干个所述Endorser发送所述偏移交易;
[0034] 所述Endorser接收来自用户客户端的偏移交易,对所述时间戳进行哈希运算得到第一中间参数和第二中间参数,根据所述第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将所述第一公钥和第一偏移参数相加得到新公钥,将所述第二公钥和第二偏移参数相加得到第一签名参数,组合所述第一签名参数和第二签名参数得到第一签名,根据所述新公钥、第一签名参数和第二签名参数得到对所述偏移交易复原后的所述交易,对所述第一签名进行验证,并在验证成功后根据所述交易生成交易应答,受Endorser认可的交易对应的所述交易应答中包括新公钥,对所述交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送所述偏移交易应答;
[0035] 所述用户客户端接收来自若干个所述Endorser的偏移交易应答,选择多个偏移交易应答中受Endorser认可的交易对应的偏移交易应答组成背书,向所述Orderer发送所述背书;
[0036] 所述Orderer接收来自用户客户端的背书,积累预设数量的背书后,对多个背书进行排序后生成背书集合,并且所述Orderer向若干个所述Committer发送背书集合;
[0037] 所述Committer逐一从所述背书集合中取出背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,所述交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送所述偏移交易通知;
[0038] 所述用户客户端接收来自所述Committer的偏移交易通知,根据所述偏移交易通知得到交易通知,对所述第三签名进行验证,并在验证成功且所述交易结果为有效值时更新私钥为新私钥。
[0039] 进一步的,对所述第一交易参数进行ECDSA签名得到第一签名,包括:
[0040] 取随机数rU,计算第一签名参数RU=rU*G=(xU,yU),其中,rU为随机数rU,G为基点;
[0041] 对第一交易参数进行哈希运算得到参数hU;
[0042] 计算第二签名参数sU=(hU+SKU*xU)/rU,其中,hU为参数hU,SKU为用户客户端的私钥,rU为随机数rU;
[0043] 组合RU和sU得到所述第一签名。
[0044] 进一步的,对所述第一签名进行验证,包括:
[0045] 对第一交易参数进行哈希运算得到参数hU;
[0046] 计算(hU*G/sU)+(xU*PKU/sU)的值,其中,PKU为用户客户端的公钥,将计算结果与第一签名参数RU相比,若两者的值相等,则对第一签名验证成功;反之则对第一签名验证失败。
[0047] 本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时所述的基于联盟链的抗量子计算公钥池更新方法的步骤。
[0048] 本申请还提供一种基于联盟链的抗量子计算公钥池更新系统,联盟链的节点中包括用户客户端和联盟链服务端,所述用户客户端和联盟链服务端均配置有密钥卡,所述密钥卡内存储有私钥和公钥池,所述公钥池包含数量与联盟链的节点数量相同的公钥池单元,各所述公钥池单元内存储有与节点对应的一个公钥;
[0049] 所述用户客户端和联盟链服务端通过通信网络所述的基于联盟链的抗量子计算公钥池更新方法的步骤。
[0050] 本申请中,用户将公钥及签名信息传递给其他成员的过程中,使用公钥池中的公钥作为偏移量对公钥及签名信息进行加密,则量子计算机无法通过公钥及签名信息破解出私钥。并且在公钥更新后,通过区块链区块通知其余通信方公钥更新的信息,不存在中心服务器,且无需向中心服务器进行查询并下载公钥更新。避免了中心服务器在极端情况可能发生网络问题而导致中心服务器通信功能丧失,从而无法进行公钥更新查询;另外,由于不存在中心服务器,攻击者无法发动拒绝服务式攻击,保证了公钥更新系统的正常运行。附图说明
[0051] 图1为本申请实施例提供的系统结构图。

具体实施方式

[0052] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0053] 为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。
[0054] 应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0055] 其中一实施例中,提供基于联盟链的抗量子计算公钥池更新方法,抗量子计算公钥池更新方法,包括:
[0056] 用户客户端生成新公钥和新私钥,得到第一交易参数,第一交易参数包含时间戳和新公钥,对第一交易参数进行ECDSA签名得到第一签名,第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0057] 用户客户端对交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将新公钥与第一公钥相减得到第一偏移参数,将第一签名参数与第二公钥相减得到第二偏移参数,根据第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向联盟链服务端发送偏移交易;
[0058] 联盟链服务端接收来自用户客户端的偏移交易,对时间戳进行哈希运算得到第一中间参数和第二中间参数,根据第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将第一公钥和第一偏移参数相加得到新公钥,将第二公钥和第二偏移参数相加得到第一签名参数,组合第一签名参数和第二签名参数得到第一签名,根据新公钥、第一签名参数和第二签名参数得到对偏移交易复原后的交易,对第一签名进行验证,并在验证成功后根据交易生成交易应答,受联盟链服务端认可的交易对应的交易应答中包括新公钥,对交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送多个偏移交易应答;
[0059] 用户客户端接收来自联盟链服务端的多个偏移交易应答,选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书,向联盟链服务端发送背书;
[0060] 联盟链服务端接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送偏移交易通知;
[0061] 用户客户端接收来自联盟链服务端的偏移交易通知,根据偏移交易通知得到交易通知,对第三签名进行验证,并在验证成功且交易结果为有效值时更新私钥为新私钥。
[0062] 本实施例中,用户将公钥及签名信息传递给其他成员的过程中,使用公钥池中的公钥作为偏移量对公钥及签名信息进行加密,则量子计算机无法通过公钥及签名信息破解出私钥。
[0063] 需要说明的是,当称参数A,参数B得到参数C时,可以仅由参数A和参数B得到参数C,也可以存在其他参数,例如由参数A、参数B和参数D得到参数C。
[0064] 为了便于直观了解在抗量子计算公钥池更新过程中,区块链中各节点产生的相应动作,以下通过实施在单侧的形式进一步说明抗量子计算公钥池更新方法。
[0065] 在另一实施例中,提供一种基于联盟链的抗量子计算公钥池更新方法,实施在用户客户端,抗量子计算公钥池更新方法,包括:
[0066] 生成新公钥和新私钥,得到第一交易参数,第一交易参数包含时间戳和新公钥,对第一交易参数进行ECDSA签名得到第一签名,第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0067] 对交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将新公钥与第一公钥相减得到第一偏移参数,将第一签名参数与第二公钥相减得到第二偏移参数,根据第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
[0068] 向联盟链服务端发送偏移交易;时间戳用于供联盟链服务端进行哈希运算得到第一中间参数和第二中间参数,第一中间参数和第二中间参数用于供联盟链服务端分别从密钥卡中取出第一公钥和第二公钥,第一公钥用于供联盟链服务端结合第一偏移参数得到新公钥,第二公钥用于供联盟链服务端结合第二偏移参数得到第一签名参数,第一签名参数和第二签名参数用于供联盟链服务端得到第一签名,新公钥、第一签名参数和第二签名参数用于供联盟链服务端得到对偏移交易复原后的交易,交易用于供联盟链服务端对第一签名验证后生成交易应答,受联盟链服务端认可的交易对应的交易应答中包括新公钥;
[0069] 接收来自联盟链服务端的多个偏移交易应答;偏移交易应答由联盟链服务端对交易应答执行偏移加密操作后得到;
[0070] 选择多个偏移交易应答中受联盟链服务端认可的交易对应的偏移交易应答组成背书;
[0071] 向联盟链服务端发送背书;背书用于供联盟链服务端得到多个交易应答,交易应答用于供联盟链服务端验证达到背书策略要求后解析得到新公钥,新公钥用于供联盟链服务端更新对应公钥;
[0072] 接收来自联盟链服务端的偏移交易通知,根据偏移交易通知得到交易通知,交易通知包含第三签名和交易结果,对第三签名进行验证,并在验证成功且交易结果为有效值时更新私钥为新私钥;交易通知由联盟链服务端根据交易应答是否达到背书策略要求生成,偏移交易通知由联盟链服务端对交易通知执行偏移加密操作后得到。
[0073] 在另一实施例中,提供一种基于联盟链的抗量子计算公钥池更新方法,实施在联盟链服务端,抗量子计算公钥池更新方法,包括:
[0074] 接收来自用户客户端的偏移交易;偏移交易由用户客户端对交易进行偏移加密操作得到,交易由用户客户端根据第一签名和第一交易参数生成,第一交易参数包含时间戳和新公钥,新公钥和第一交易参数由用户客户端生成,第一签名由用户客户端对第一交易参数进行ECDSA签名得到,第一签名包括第一签名参数和第二签名参数,用户客户端对交易进行偏移加密操作包括:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将新公钥与第一公钥相减得到第一偏移参数,将第一签名参数与第二公钥相减得到第二偏移参数,根据第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易;
[0075] 对时间戳进行哈希运算得到第一中间参数和第二中间参数,根据第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将第一公钥和第一偏移参数相加得到新公钥,将第二公钥和第二偏移参数相加得到第一签名参数,组合第一签名参数和第二签名参数得到第一签名,根据新公钥、第一签名参数和第二签名参数得到对偏移交易复原后的交易,对第一签名进行验证,并在验证成功后根据交易生成交易应答,受联盟链服务端认可的交易对应的交易应答中包括新公钥,对交易应答执行偏移加密操作后得到偏移交易应答;
[0076] 向用户客户端发送多个偏移交易应答;多个偏移交易应答用于供用户客户端选择受联盟链服务端认可的组成背书;
[0077] 接收来自用户客户端的背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知;
[0078] 向用户客户端发送偏移交易通知;偏移交易通知用于供用户客户端得到交易通知,交易通知用于供用户客户端解析得到第三签名和交易结果,交易结果用于供用户客户端对第三签名验证成功后接收并信任。
[0079] 为了便于公钥取用,在另一实施例中,联盟链的节点中包括用户客户端和联盟链服务端,用户客户端和联盟链服务端均配置有密钥卡,密钥卡内存储有私钥和公钥池,公钥池包含数量与联盟链的节点数量相同的公钥池单元,各公钥池单元内存储有与节点对应的一个公钥。
[0080] 本申请的抗量子计算公钥池更新方法基于联盟链实现,通常联盟链服务端配置有Endorser、Orderer和Committer,故在一实施例中,抗量子计算公钥池更新方法,包括:
[0081] 用户客户端生成新公钥和新私钥,得到第一交易参数,第一交易参数包含时间戳和新公钥,对第一交易参数进行ECDSA签名得到第一签名,第一签名包括第一签名参数和第二签名参数,根据第一签名和第一交易参数生成交易;
[0082] 用户客户端对交易进行偏移加密操作:对时间戳进行哈希运算得到第一中间参数和第二中间参数,利用第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将新公钥与第一公钥相减得到第一偏移参数,将第一签名参数与第二公钥相减得到第二偏移参数,根据第一偏移参数、时间戳、第二偏移参数和第二签名参数得到偏移加密操作后的偏移交易,向若干个Endorser发送偏移交易;
[0083] Endorser接收来自用户客户端的偏移交易,对时间戳进行哈希运算得到第一中间参数和第二中间参数,根据第一中间参数和第二中间参数分别从密钥卡中取出第一公钥和第二公钥,将第一公钥和第一偏移参数相加得到新公钥,将第二公钥和第二偏移参数相加得到第一签名参数,组合第一签名参数和第二签名参数得到第一签名,根据新公钥、第一签名参数和第二签名参数得到对偏移交易复原后的交易,对第一签名进行验证,并在验证成功后根据交易生成交易应答,受Endorser认可的交易对应的交易应答中包括新公钥,对交易应答执行偏移加密操作后得到偏移交易应答,向用户客户端发送偏移交易应答;
[0084] 用户客户端接收来自若干个Endorser的偏移交易应答,选择多个偏移交易应答中受Endorser认可的交易对应的偏移交易应答组成背书,向Orderer发送背书;
[0085] Orderer接收来自用户客户端的背书,积累预设数量的背书后,对多个背书进行排序后生成背书集合,并且Orderer向若干个Committer发送背书集合;
[0086] Committer逐一从背书集合中取出背书,根据背书中的多个偏移交易应答得到多个交易应答,解析达到背书策略要求的交易应答得到新公钥,并根据新公钥更新对应公钥,根据各交易应答是否达到背书策略要求生成交易通知,交易通知包含第三签名和交易结果,对交易通知执行偏移加密操作后得到偏移交易通知,向用户客户端发送偏移交易通知;
[0087] 用户客户端接收来自Committer的偏移交易通知,根据偏移交易通知得到交易通知,对第三签名进行验证,并在验证成功且交易结果为有效值时更新私钥为新私钥。
[0088] 本实施例中,用户将公钥及签名信息传递给其他成员的过程中,使用公钥池中的公钥作为偏移量对公钥及签名信息进行加密,则量子计算机无法通过公钥及签名信息破解出私钥。并且在公钥更新后,通过区块链区块通知其余通信方公钥更新的信息,不存在中心服务器,且无需向中心服务器进行查询并下载公钥更新。避免了中心服务器在极端情况可能发生网络问题而导致中心服务器通信功能丧失,从而无法进行公钥更新查询;另外,由于不存在中心服务器,攻击者无法发动拒绝服务式攻击,保证了公钥更新系统的正常运行。
[0089] 其中,对第一交易参数进行ECDSA签名得到第一签名,包括:
[0090] 取随机数rU,计算第一签名参数RU=rU*G=(xU,yU),其中,rU为随机数rU,G为基点;
[0091] 对第一交易参数进行哈希运算得到参数hU;
[0092] 计算第二签名参数sU=(hU+SKU*xU)/rU,其中,hU为参数hU,SKU为用户客户端的私钥,rU为随机数rU;
[0093] 组合RU和sU得到第一签名。
[0094] 且对第一签名进行验证,包括:
[0095] 对第一交易参数进行哈希运算得到参数hU;
[0096] 计算(hU*G/sU)+(xU*PKU/sU)的值,其中,PKU为用户客户端的公钥,将计算结果与第一签名参数RU相比,若两者的值相等,则对第一签名验证成功;反之则对第一签名验证失败。
[0097] 在一实施例中,处理联盟链中的交易过程,总体思路是在区块链交易中完成公钥池的更新。
[0098] 本实施例系统结构如图1所示,联盟链中的每一个节点都配备有密钥卡。联盟链成员的密钥卡中包含各成员自己的私钥SK和公钥池,公钥池中有一个个的公钥池单元,每个公钥池单元存储有某个节点的一个公钥PK。所有密钥卡均为某组织颁发,初始状态公钥池中的公钥完全一致,且由所有节点的公钥组成。各个节点的密钥卡保留各自的私钥并且永不公开,密钥系统采用椭圆曲线。
[0099] 联盟链成员还搭载有相应的区块链服务,每个服务有1个或多个公钥指针随机数。区块链服务即联盟链服务端包括Peer服务,Order服务等。其中Peer服务分为Committer和Endorser;Order服务由多个Orderer组成。每个成员的公钥指针随机数可以作为ID使用。联盟链所有成员及区块链客户端均带有Committer功能,保存有区块链以及智能合约,智能合约运行于密钥卡内,并且密钥卡内的密钥池即世界状态WorldState。
[0100] 下文设User Client,Endorser,Orderer,Committer的标记如下:
[0101] 1)公钥指针随机数即ID分别为各自公钥的HASH值,例如IDU=HASH(PKU),IDE,IDO,IDC。可以根据ID找到对应的公钥池单元;
[0102] 2)公钥分别为PKU,PKE,PKO,PKC;
[0103] 3)私钥分别为SKU,SKE,SKO,SKC。
[0104] 在未做特殊说明的情况下,本申请中的随机数rU、第一签名参数RU等表述中的rU、RU仅仅是为了便于区分和叙述,并不对参数本身有额外限定,例如公钥PKU、交易应答rtx中的PKU、rtx;又如非对称公钥PKUnew、私钥SKU中的PKUnew、SKU;其他同理。
[0105] 联盟链交易的具体流程即公钥池的更新流程如下所示:
[0106] 步骤1:Client即用户客户端提出交易。
[0107] Client在密钥卡中生成非对称公钥PKUnew和非对称私钥SKUnew,作为将要更新的新公私钥对。交易tx由IDU、IDE、proposal和clientSig组成,即tx={IDU,IDE,proposal,clientSig},其中包含IDU和IDE表示该消息是由Client发给Endorser。proposal即第一交易参数包括IDU和链码chaincodeID,即使用智能合约函数的编号,还包括txPayload即函数的参数以及一个时间戳timestamp,而此处txPayload的值为PKUnew。
[0108] 计算proposal的ECDSA签名。取随机数rU,计算第一签名参数RU=rU*G=(xU,yU)。对proposal做哈希运算得到参数hU,取出U即用户客户端的私钥SKU,根据公式sU=(hU+SKU*xU)/rU计算得到第二签名参数sU,从而得到第一签名(RU,sU),即clientSig。
[0109] 对交易进行偏移加密操作:根据公式
[0110] (HU1,HU2)=HASH(IDU||IDE||timestamp),对IDU||IDE||timestamp进行哈希运算得到HASH值并分为二段即(HU1,HU2),其中HU1为第一中间参数,HU2为第二中间参数,再根据HU1从密钥卡的公钥池中找到对应的公钥池单元并从中取出第一公钥PKU1,根据HU2从密钥卡的公钥池中找到对应的公钥池单元并从中取出第二公钥PKU2。对txPayload和RU做偏移,得到第一偏移参数txPayload’=PKUnew-PKU1和clientSig’=(RU-PKU2,sU)。其中,PKU1和PKU2被称为偏移量,RU-PKU2为第二偏移参数。所以,最终得到的偏移交易为tx’={IDU,IDE,{IDU,chaincodeID,txPayload’,timestamp},clientSig’},Client将该tx’发送给Endorser。
[0111] 步骤2:Endorser执行交易。
[0112] Endorser收到交易后,取出
[0113] {IDU,IDE,{IDU,chaincodeID,txPayload’,timestamp},clientSig’}中各个部分。根据公式(HU1,HU2)=HASH(IDU||IDE||timestamp),对IDU||IDE||timestamp进行哈希运算得到HASH值并分为二段即(HU1,HU2),再根据HU1从密钥卡的公钥池中找到对应的公钥池单元并从中取出第一公钥PKU1,根据HU2从密钥卡的公钥池中找到对应的公钥池单元并从中取出第二公钥PKU2。对txPayload’和RU’做偏移量恢复,得到txPayload=txPayload’+PKU1=PKUnew和clientSig=(RU-PKU2+PKU2,sU)=(RU,sU)。于是Endorser得到交易tx={IDU,IDE,proposal,clientSig}。
[0114] 根据IDU从密钥卡公钥池中取出公钥PKU,用PKU来验证签名clientSig。对恢复偏移量以后的{IDU,chaincodeID,txPayload,timestamp}即proposal进行哈希运算得到hU,再计算hU*G/sU的值,计算xU*PKU/sU的值,再将得到的两个值相加,将得到的结果和rU*G进行对比,如果相等则说明验证签名成功。验证签名成功之后,Endorser判断User是否具有更新公钥的权限,判断PKUnew是否是椭圆曲线的一个点,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易tx,否则Endorser不认可该交易tx。
[0115] 步骤3:Endorser发送交易应答。
[0116] Endorser组成包含读写操作集的交易应答rtx,具体包括IDE、IDU、tran-proposal和epSig。其中tran-proposal包括IDE、交易的序号tid(一般为交易tx的哈希值,可表示为tid=HASH(proposal)),从User处收到的chaincodeID、以及读写操作集readset和writeset。其中如果Endorser认可交易,则将tid||PKU进行哈希运算得到的值作为readset的值,将PKUnew作为writeset的值;如果Endorser不认可交易,则readset和writeset的值都设置为无效值。其中epSig是Endorser对tran-proposal进行ECDSA签名得到的,过程如下。取随机数rE,计算RE=rE*G=(xE,yE)。对tran-proposal做哈希运算得到hE,取出E的私钥SKE,根据公式sE=(hE+SKE*xE)/rE计算得到sE,从而得到第二签名(RE,sE),即epSig。
[0117] 对交易应答rtx执行偏移加密操作:根据公式(HE1,HE2)=HASH(IDE||IDU||timestamp),对IDE||IDU||timestamp进行哈希运算得到HASH值并分为二段即(HE1,HE2),再根据HE1从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE1,根据HE2从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE2。对writeset和epSig做偏移,得到writeset’=PKUnew-PKE1和epSig’=(RE-PKE2,sE)。
[0118] 接着Endorser将得到的偏移交易应答rtx’即{IDE,IDU,{IDE,tid,chaincodeID,readset,writeset’},epSig’}}发送给Client。
[0119] 步骤4:Client发送背书(Endorsement)etx到Orderer。
[0120] User收到偏移交易应答后,取出{IDE,IDU,{IDE,tid,chaincodeID,readset,writeset’},epSig’}}中各个部分。
[0121] User根据公式(HE1,HE2)=HASH(IDE||IDU||timestamp),对IDE||IDU||timestamp进行哈希运算得到HASH值并分为二段即(HE1,HE2),再根据HE1从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE1,根据HE2从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE2。对writeset’做偏移恢复,得到writeset=PKUnew-PKE1+PKE1=PKUnew。如果恢复偏移后的writeset的值是PKUnew而不是无效值的话,则说明该交易是被Endorser认可的交易。
[0122] User收到多个偏移交易应答并分别对其中的writeset恢复偏移后,选择其中writeset是有效值的rtx’并组成背书,即背书etx=(IDU,IDO,∑rtx’)。
[0123] 接着User将背书发送给Orderer。
[0124] 步骤5:Orderer发送排序后的etx集合到Committer。
[0125] Orderer收到各个Client发送的背书后,得到etx。在积累到一定数量的etx后,Orderer对etx进行排序。在达到block的最大大小或者达到超时时间后,Orderer将序列号seqno、上个联盟链区块的哈希值prevhash、∑etx、IDO和IDC组合起来,可以得到etx集合={IDO,IDC,{seqno,prevhash,∑etx},接着Orderer将etx集合发送给所有的Committer。
[0126] 步骤6:每个Committer验证交易,并更新世界状态。
[0127] 每个Committer收到消息后,取出{IDO,IDC,{seqno,prevhash,∑etx}中各个部分。
[0128] 分别取出每个etx,查看其中的rtx’,即{IDE,IDU,{IDE,tid,chaincodeID,readset,writeset’},epSig’}}。根据公式(HE1,HE2)=HASH(IDE||IDU||timestamp),对IDE||IDU||timestamp进行哈希运算得到HASH值并分为二段即(HE1,HE2),再根据HE1从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE1,根据HE2从密钥卡的公钥池中找到对应的公钥池单元并从中取出公钥PKE2。对writeset’和epSig’做偏移量恢复,得到writeset=writeset’+PKE1=PKUnew和epSig=(RE-PKE2+PKE2,sE)=(RE,sE)。
[0129] 根据IDE从密钥卡公钥池中取出公钥PKE,用PKE来验证签名epSig。对恢复偏移量以后的{IDE,tid,chaincodeID,readset,writeset}即tran-proposal进行哈希运算得到hE,再计算hE*G/sE的值,计算xE*PKE/sE的值,再将得到的两个值相加,将得到的结果和rE*G进行对比,如果相等则说明验证签名成功。
[0130] 根据IDU从密钥卡公钥池中取出公钥PKU,计算tid||PKU的哈希值,并将其和readset进行比较,相等的话说明readset验证成功。
[0131] Committer查看通过验证的rtx是否达到背书策略的要求,例如是否达到了所有Endorser中60%以上Endorser的背书。如果达到背书策略的要求,则认可对应rtx为有效交易并做出标记以示有效;否则Committer将不认可rtx为有效交易,并做出标记以示无效。接下来,Committer将区块写入区块链,并且根据区块链中的有效交易,更新本地的事件状态,即本地密钥池。
[0132] 取出writeset,其值为PKUnew,根据IDU从密钥卡公钥池中取出公钥PKU,再将PKUnew存入密钥卡公钥池中PKU所在的存储位置,替代原来的PKU,并且将HASH(PKUnew)作为IDUnew替换IDU。
[0133] 按照上面的步骤,更换所有需要更新的公钥和用户ID。
[0134] 步骤7:Committer发送交易通知。
[0135] 由于每个客户端同时也是Committer,其本地Committer在下一个block到来时,监控是否存在ID为tid的tx,并查看该tx是否有效。如果tx有效,将IDUnew作为交易结果result的值;如果tx无效则将一个无效值作为交易结果result的值。将result、tid、committerSig、IDC和IDU组合来起到得到交易通知ntx={IDC,IDU,{tid,result,committerSig}}。其中committerSig是组合tid||result的ECDSA签名,签名过程和步骤1中对proposal的签名相同,即可以得到第三签名committerSig={RC,sC}。再根据tid在公钥池中找到公钥PKCtid,对committerSig做偏移得到committerSig’={RC-PKCtid,sC},所以可以得到偏移交易通知ntx’={IDC,IDU,{tid,result,committerSig’}}。
[0136] Committer将组合ntx’发送给Client。
[0137] Client收到ntx’后,得到{IDC,IDU,{tid,result,committerSig’}}中的各个部分。先根据tid在公钥池中找到公钥PKCtid,对committerSig’做偏移恢复得到committerSig={RC-PKCtid+PKCtid,sC}={RC,sC}。然后按照步骤2中验证签名clientSig的方式一样,验证第三签名committerSig。验证签名成功之后,取出result查看其值,如果result即交易结果的值是有效值,则说明公钥更新成功,Client将接受IDUnew为新的ID,并且将SKUnew存入密钥卡替代原来的用户私钥SKU;如果result的值无效,则说明公钥更新失败。
[0138] 本实施例就每个步骤而言可视为针对前述相应的实施例,就所有步骤而言也可视为前述相应实施例的结合。
[0139] 本实施例使用密钥卡存储公钥和私钥,其中公钥存储在公钥池中。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低。由于量子计算机无法得到用户公钥,于是也无法得到对应的私钥。另外,本实施例中,基于公私钥的抗量子计算签名也保证了所传输消息的安全性,即使在量子计算机存在的情况下,也难以被推导出私钥。因此该方案不容易被量子计算机破解。
[0140] 本实施例中,用户将公钥及签名信息传递给其他成员的过程中,使用公钥池中的公钥作为偏移量对公钥及签名信息进行加密,则量子计算机无法通过公钥及签名信息破解出私钥。而现有技术的常规做法是,对公钥及签名进行对称加密计算,其计算量大大高于本实施例的偏移量计算。因此本实施例的偏移量计算是一种更优的抗量子计算方式。
[0141] 本实施例中,公钥更新后,通过区块链区块通知其余通信方公钥更新的信息,不存在中心服务器,且无需向中心服务器进行查询并下载公钥更新。区块链是一种无中心网络通信系统,避免了中心服务器在极端情况可能发生网络问题而导致中心服务器通信功能丧失,从而无法进行公钥更新查询;另外,由于不存在中心服务器,攻击者无法发动拒绝服务式攻击,保证了公钥更新系统的正常运行
[0142] 在一实施例中,提供了一种计算机设备,即一种基于联盟链的抗量子计算公钥池更新系统,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现基于联盟链的抗量子计算公钥池更新方法的步骤。
[0143] 计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,计算机设备的处理器用于提供计算和控制能力。计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述基于联盟链的抗量子计算公钥池更新方法。计算机设备的显示屏可以是液晶显示屏或者电子墨显示屏,各设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0144] 在另一实施例中,提供了一种基于联盟链的抗量子计算公钥池更新系统,联盟链的节点中包括用户客户端和联盟链服务端,用户客户端和联盟链服务端均配置有密钥卡,密钥卡内存储有私钥和公钥池,公钥池包含数量与联盟链的节点数量相同的公钥池单元,各公钥池单元内存储有与节点对应的一个公钥;
[0145] 用户客户端和联盟链服务端通过通信网络的基于联盟链的抗量子计算公钥池更新方法的步骤。
[0146] 关于基于联盟链的抗量子计算公钥池更新系统的具体限定可以参见上文中对于基于联盟链的抗量子计算公钥池更新方法的限定,在此不再赘述。
[0147] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0148] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈