首页 / 专利库 / 电脑安全 / 密码学 / 基于联盟链且抗量子计算的公私钥颁发方法及系统

基于联盟链且抗量子计算的公私钥颁发方法及系统

阅读:1063发布:2020-05-15

专利汇可以提供基于联盟链且抗量子计算的公私钥颁发方法及系统专利检索,专利查询,专利分析的服务。并且本 申请 涉及一种基于联盟链且抗 量子计算 的公私钥颁发方法及系统,实施在相互通信的联盟链成员和User之间,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述联盟链成员包括多个提供相应服务的Endorser,Orderer和Committer,其中各所述Endorser的密钥卡中还存储了管理私钥以及管理公钥;所述管理私钥为:私钥生成 服务器 的私钥基于ID 密码学 得到多个与所述私钥相关的分量;所述User的密钥卡中还存储有管理公钥池;各方通信时利用密钥卡基于ID密码学进行加密通信,进一步提高了安全性。,下面是基于联盟链且抗量子计算的公私钥颁发方法及系统专利的具体信息内容。

1.基于联盟链且抗量子计算的公私钥颁发方法,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;
各所述Endorser的密钥卡中还存储了管理私钥以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;
所述User的密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数;
所述公私钥颁发方法具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含有由User的密钥卡生成的公钥生成数;
多个所述Endorser接收到交易后,根据所述公钥生成数以及所述管理私钥计算得到私钥分量,并将所述私钥分量写入交易应答发送至User;
User从交易应答中获取私钥分量,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User,还根据从背书中获取的公钥生成数对世界状态进行更新,完成公钥颁发;
User接收交易通知后根据所述公钥生成数、多个所述私钥分量以及与各私钥分量相关的私钥参数,采用相关公式计算得到私钥,完成私钥颁发。
2.根据权利要求1所述抗量子公私钥颁发方法,其特征在于,所述公钥生成数为公钥随机数,或为基于无证密码学生成的部分公钥。
3.根据权利要求2所述抗量子公私钥颁发方法,其特征在于,
User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,交互的消息中携带有供验证时使用的签名;
所述签名的生成方式为:
方式A:所述公钥生成数为公钥随机数,所述签名基于ID密码学的方式生成;或方式B:所述公钥生成数为基于无证密码学生成的部分公钥,所述签名基于无证密码学的方式生成。
4.根据权利要求3所述抗量子公私钥颁发方法,其特征在于,所述方式A具体包括:
根据交易内容以及哈希函数计算得到的值作为密钥指针随机数;
根据所述密钥指针随机数在公钥池中获取相应的公钥单元,并从所述公钥单元中获取签名公钥随机数;
根据密钥卡中生成的随机数参数、所述签名公钥随机数计算得到签名参数,再根据所述随机参数以及己方私钥生成签名。
5.根据权利要求1所述抗量子公私钥颁发方法,其特征在于,所述Endorser接收到交易,根据所述公钥生成数以及所述系统私钥计算得到私钥分量后还包括:
依据所述User身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及User身份识,计算得到User公钥;
根据所述User公钥和系统管理公钥对私钥分量进行加密,得到私钥分量加密密文;
并将所述私钥分量加密密文写入交易应答的内容。
6.根据权利要求5所述抗量子公私钥颁发方法,其特征在于,所述User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取私钥分量还包括:
对所述交易应答中的私钥分量加密密文进行相应解密,得到所述私钥分量;
对所述私钥分量进行验证,并保留验证正确的私钥分量。
7.根据权利要求6所述抗量子公私钥颁发方法,其特征在于,所述User利用有效的交易应答制作背书发送给Orderer还包括:
依据所述Orderer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Orderer身份识别,计算得到Orderer公钥;
根据所述Orderer公钥以及系统管理公钥对背书进行加密,得到经加密后的背书。
8.根据权利要求7所述抗量子公私钥颁发方法,其特征在于,所述Orderer收到背书后,经排序再发送给Committer包括:
根据己方私钥对所述加密后的背书进行相应解密,得到解密后的背书;
对所述背书进行排序,得到背书集合;
依据所述Committer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Committer身份识,计算得到Committer公钥;
根据所述Committer公钥以及系统管理公钥对背书集合进行加密,得到经加密后的背书集合。
9.根据权利要求8所述抗量子公私钥颁发方法,其特征在于,Committer收到背书后还包括:
根据己方私钥对所述加密后的背书集合进行相应解密,得到解密后的背书集合。
10.基于联盟链且抗量子计算的公私钥颁发系统,包括相互通信的联盟链成员,所述所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;各所述Endorser的密钥卡中存储了管理私钥、私钥参数以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;在管理私钥的生成过程中,还相应生成生了所述私钥参数以及所述管理公钥;所述User密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数;
所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现权利要求1~9任一项所述的基于联盟链且抗量子计算的公私钥颁发方法。

说明书全文

基于联盟链且抗量子计算的公私钥颁发方法及系统

技术领域

[0001] 本申请涉及联盟链领域,特别是涉及一种基于联盟链且抗量子计算的公私钥颁发方法及系统。

背景技术

[0002] 链是一种全新的分布式基础架构与计算范式,利用有序的链式数据结构存储数据,利用共识算法更新数据,利用密码学技术保障数据安全。在基于区块链的交易中,确保交易的数据安全和客户的隐私是区块链能够进一步发展的必要条件。为此,密码学技术尤其是公钥密钥学在区块链中得到了广泛的应用。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,其共识过程受到预选节点控制的区块链。
[0003] 正如大多数人所了解的,量子计算机在密码破解上有着巨大潜。当今主流的非对称(公钥)加密算法,如RSA加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为RSA、离散对数加密算法的破解提供可能。
[0004] 现有技术存在的问题:
[0005] 1.基于ID密码学及其数字签名容易被量子计算机破解。
[0006] 2.基于ID密码学的私钥生成服务器的私钥被窃取的险很高,而且由于私钥生成服务器掌握整个私钥,可以对其他用户的数字签名进行伪造。
[0007] 3.用户更新公钥后,其他用户需要从CA等中心服务器查询并获取新的公钥,流程麻烦。
[0008] 4.所有用户的公钥需要类似CA的中心服务器来维护,受DOS攻击风险较高发明内容
[0009] 基于此,有必要针对上述技术问题,提供一种基于联盟链且抗量子计算的公私钥颁发方法及系统。
[0010] 一种基于联盟链且抗量子计算的公私钥颁发方法,实施在相互通信的联盟链成员之间,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;
[0011] 各所述Endorser的密钥卡中还存储了管理私钥以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;
[0012] 所述User的密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数;
[0013] 所述公私钥颁发方法具体包括:
[0014] 所述User向多个Endorser提出交易,所述交易信息中包含有由User的密钥卡生成的公钥生成数;
[0015] 多个所述Endorser接收到交易后,根据所述公钥生成数以及所述管理私钥计算得到私钥分量,并将所述私钥分量写入交易应答发送至User;
[0016] User从交易应答中获取私钥分量,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
[0017] Committer收到背书后,相应生成交易通知发送给User,还根据从背书中获取的公钥生成数对世界状态进行更新,完成公钥颁发;
[0018] User接收交易通知后根据所述公钥生成数、多个所述私钥分量以及与各私钥分量相关的私钥参数,采用相关公式计算得到私钥,完成私钥颁发。
[0019] 优选的,所述公钥生成数为公钥随机数,或为基于无证密码学生成的部分公钥。
[0020] 优选的,User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,交互的消息中携带有供验证时使用的签名;
[0021] 所述签名的生成方式为:
[0022] 方式A:所述公钥生成数为公钥随机数,所述签名基于ID密码学的方式生成;或[0023] 方式B:所述公钥生成数为基于无证密码学生成的部分公钥,所述签名基于无证密码学的方式生成。
[0024] 优选的,所述方式A具体包括:
[0025] 根据交易内容以及哈希函数计算得到的值作为密钥指针随机数;
[0026] 根据所述密钥指针随机数在公钥池中获取相应的公钥单元,并从所述公钥单元中获取签名公钥随机数;
[0027] 根据密钥卡中生成的随机数参数、所述签名公钥随机数计算得到签名参数,再根据所述随机参数以及己方私钥生成签名。
[0028] 优选的,所述Endorser接收到交易,根据所述公钥生成数以及所述系统私钥计算得到私钥分量后还包括:
[0029] 依据所述User身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及User身份识,计算得到User公钥;
[0030] 根据所述User公钥和系统管理公钥对私钥分量进行加密,得到私钥分量加密密文;
[0031] 并将所述私钥分量加密密文写入交易应答的内容。
[0032] 优选的,所述User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取私钥分量还包括:
[0033] 对所述交易应答中的私钥分量加密密文进行相应解密,得到所述私钥分量;
[0034] 对所述私钥分量进行验证,并保留验证正确的私钥分量。
[0035] 优选的,所述User利用有效的交易应答制作背书发送给Orderer还包括:
[0036] 依据所述Orderer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Orderer身份识,计算得到Orderer公钥;
[0037] 根据所述Orderer公钥以及系统管理公钥对背书进行加密,得到经加密后的背书。
[0038] 优选的,所述Orderer收到背书后,经排序再发送给Committer包括:
[0039] 根据己方私钥对所述加密后的背书进行相应解密,得到解密后的背书;
[0040] 对所述背书进行排序,得到背书集合;
[0041] 依据所述Committer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Committer身份识,计算得到Committer公钥;
[0042] 根据所述Committer公钥以及系统管理公钥对背书集合进行加密,得到经加密后的背书集合。
[0043] 优选的,Committer收到背书后还包括:
[0044] 根据己方私钥对所述加密后的背书集合进行相应解密,得到解密后的背书集合。
[0045] 本发明还提供了一种基于联盟链且抗量子计算的公私钥颁发系统,包括相互通信的联盟链成员,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;各所述Endorser的密钥卡中存储了管理私钥、私钥参数以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;在管理私钥的生成过程中,还相应生成生了所述私钥参数以及所述管理公钥;所述User密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数;
[0046] 所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于联盟链且抗量子计算的公私钥颁发方法。
[0047] 上述基于联盟链且抗量子计算的公私钥颁发方法及系统,通过利用ID密码学中的ID改为了ID加上公钥随机数或者部分公钥的形式,并对签名参数也做了相应的改进使得签名参数无法被敌方计算得到,使得数字签名具有很高的抗量子安全性。并且私钥服务器的私钥通过秘密共享的方式进行分布式存储,而相关的公私钥又分别存储在密钥卡中,使得私钥被窃取的风险很大程度的降低。没有一个私钥服务器掌握整个私钥也使得整体的安全得到了提高。附图说明
[0048] 图1为一个实施例中公私钥颁发方法的系统结构图;
[0049] 图2为一个实施例中Endorser密钥卡的内部结构图;
[0050] 图3为一个实施例中Client密钥卡的内部结构图;
[0051] 图4为一个实施例中其他区块链服务密钥卡的内部结构图。

具体实施方式

[0052] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0053] 为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。
[0054] 应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0055] 如图1所示,提供了一种基于联盟链且抗量子计算的公私钥颁发方法,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥。
[0056] 在本实施例中,所述联盟链成员包括多个提供相应服务的Endorser,Orderer和Committer,其中各所述Endorser的密钥卡中还存储了管理私钥以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;
[0057] 在本实施例中,所述User的密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数。
[0058] 在本实施例中,将私钥生成服务器的私钥基于ID密码学计算得到的多个与私钥相关的分量分别放置在不同的Endorser的密钥卡中。用户在需要更新公私钥时,由用户的密钥卡生成新的公钥生成数,并将公钥生成数放入交易中,将交易发送给多个Endorser。在Endorser中,将利用公钥生成数以及管理私钥生成私钥分量。User收到多个Endorser发送的交易应答,并从交易应答中获取多个私钥分量,再根据多个私钥分量计算得到私钥。
[0059] 在本实施例中,利用到的ID密码学的相关内容包括:假设G是一个群,从G中取生成元P,再选一个随机数作为私钥生成服务器的私钥s,有私钥生成服务器的系统管理公钥Ppub=sP。
[0060] 在本实施例中,私钥生成服务器的私钥是通过秘密共享进行分布式存储的,由其中的n个Endorser组成基于ID密码学的分布式私钥生成服务。下面简单介绍秘密共享的原理和流程。
[0061] 从素数阶q的有限域GF(q)中随机选取n个不同的非零元素x1,x2,…,xn,分配给参与者Pi(i=1,2,…,n)。把服务器的私钥s作为共享的秘密信息,从GF(q)中选取t-1个元素a1,a2,…,a(t-1),构造多项式 则有si=f(xi)(1≤i≤n)。(xi,si)作为参与者Pi的影子秘密。
[0062] 用n个Endorser中的任意t个可以恢复服务器的s,具体步骤如下。根据公式可以求得t个拉格朗日参数λi,因而可以根据公式s=f(0)=∑λi*si求得s。
[0063] 联盟链成员还包括相应的区块链服务,每个服务有1个或多个ID。区块链服务包括Peer服务,Order服务等。其中Peer服务分为Committer和Endorser;Order服务由多个Orderer组成。联盟链所有成员均带有Committer功能,保存有区块链数据,Endorser还存有智能合约,智能合约运行于密钥卡内,并且密钥卡内的密钥池即世界状态WorldState。
[0064] 下文设User Client,Endorser,Orderer,Committer的标记如下:
[0065] 1)ID分别为IDU,IDE,IDO,IDC。可以根据ID找到对应的公钥池单元
[0066] 2)公钥分别为PKU,PKE,PKO,PKC
[0067] 3)私钥分别为SKU,SKE,SKO,SKC
[0068] 具体的,如图2-4所示,联盟链成员的密钥卡中都包含各自的私钥和公钥随机数池(也称为公钥池),公钥池中有一个个的公钥单元,每个公钥单元存有ID和一个公钥随机数R,用户可以根据ID在公钥池中找到对应的公钥单元从而得到R。公钥随机数R与该用户公钥PK的对应关系如下:PK=H(ID||R)。所有密钥卡均为某组织颁发,初始状态公钥池中的公钥单元完全一致,且由所有用户对应的公钥单元组成。各个用户的密钥卡保留各自的私钥并且永不公开,密钥系统采用基于ID密码学的理论。本实施例中,Endorser拥有图2所示的Endorser密钥卡,Client拥有图3所示的Client密钥卡,Orderer和Committer拥有图4所示的其他区块链服务密钥卡。区块链客户端同时存在Client和Committer,两者的密钥卡可以合并为同一个密钥卡,也可以分开。区块链服务端可能同时存在Endorser和Committer,两者的密钥卡可以合并为同一个密钥卡,也可以分开。
[0069] 对于每个Endorser来说,公钥PKE=H(IDE||RE),私钥SKE=s*PKE。Endorser密钥卡中还存储有系统管理公钥Ppub、管理公钥Ppubi=si*P和管理私钥si,如图2所示。Ppub还被安全发送给其他服务端的成员,那些成员将得到的Ppub存储在己端的其他区块链服务密钥卡内,如图4所示。
[0070] 区块链客户端密钥卡私钥由t个Endorser颁发,每个Endorser密钥卡计算有:PKU=H(IDU||RU),SKUi=si*PKU,Endorser密钥卡将SKUi安全发送给客户端密钥卡。安全发送的方式可以是直接拷贝或者通过QKD等安全通信方式颁发的密钥加密发送。客户端密钥卡内初始化后还拥有管理公钥池,其内存储有n个Endorser的xi及颁发的管理公钥,每个实际存储为(IDEi,Ppubi,xi),如图3所示。客户端收到t个SKUi后,可以计算拉格朗日参数然后由SKU=s*PKU=(∑λi*si)*PKU=∑λi*(si*PKU)=∑λi*SKUi可以得到私钥SKU=∑λi*SKUi。同理,客户端可以根据公式Ppub=sP=(∑λi*si)*P=∑λi*(si*P)=∑λi*Ppubi可以得到Ppub=∑λi*Ppubi从而求出Ppub,并将Ppub存在己端的Client密钥卡中,如图3所示。
[0071] 在本实施例中,所示公私钥颁发方法具体包括:
[0072] 所述User向多个Endorser提出交易,所述交易信息中包含有由User的密钥卡生成的公钥生成数;
[0073] 多个所述Endorser接收到交易后,根据所述公钥生成数以及所述管理私钥计算得到私钥分量,并将所述私钥分量写入交易应答发送至User;
[0074] User从交易应答中获取私钥分量,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
[0075] Committer收到背书后,相应生成交易通知发送给User,还根据从背书中获取的公钥生成数对世界状态进行更新,完成公钥颁发;
[0076] User接收交易通知后根据所述公钥生成数、多个所述私钥分量以及与各私钥分量相关的私钥参数,采用相关公式计算得到私钥,完成私钥颁发。
[0077] 在本实施例中,所述公钥生成数为公钥随机数,或为基于无证密码学生成的部分公钥。
[0078] 在本实施例中,User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,交互的消息中携带有供验证时使用的签名。所述签名的生成方式为:
[0079] 方式A:所述公钥生成数为公钥随机数,所述签名基于ID密码学的方式生成;或[0080] 方式B:所述公钥生成数为基于无证密码学生成的部分公钥,所述签名基于无证密码学的方式生成。
[0081] 在本实施例中,所述方式A具体包括:
[0082] 根据交易内容以及哈希函数计算得到的值作为密钥指针随机数;
[0083] 根据所述密钥指针随机数在公钥池中获取相应的公钥单元,并从所述公钥单元中获取签名公钥随机数;
[0084] 根据密钥卡中生成的随机数参数、所述签名公钥随机数计算得到签名参数,再根据所述随机参数以及己方私钥生成签名。
[0085] 在本实施例中,所述Endorser接收到交易,根据所述公钥生成数以及所述系统私钥计算得到私钥分量后还包括:
[0086] 依据所述User身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及User身份识,计算得到User公钥;
[0087] 根据所述User公钥和系统管理公钥对私钥分量进行加密,得到私钥分量加密密文;
[0088] 并将所述私钥分量加密密文写入交易应答的内容。
[0089] 在本实施例中,所述User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取私钥分量还包括:
[0090] 对所述交易应答中的私钥分量加密密文进行相应解密,得到所述私钥分量;
[0091] 对所述私钥分量进行验证,并保留验证正确的私钥分量。
[0092] 在本实施例中,所述User利用有效的交易应答制作背书发送给Orderer还包括:依据所述Orderer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Orderer身份识,计算得到Orderer公钥;根据所述Orderer公钥以及系统管理公钥对背书进行加密,得到经加密后的背书。
[0093] 在本实施例中,所述Orderer收到背书后,经排序再发送给Committer包括:根据己方私钥对所述加密后的背书进行相应解密,得到解密后的背书;对所述背书进行排序,得到背书集合;依据所述Committer身份识别在所述公钥池中获取相应的密钥生成数,并利用所述密钥生成数以及Committer身份识,计算得到Committer公钥;根据所述Committer公钥以及系统管理公钥对背书集合进行加密,得到经加密后的背书集合。
[0094] 在本实施例中,Committer收到背书后还包括:根据己方私钥对所述加密后的背书集合进行相应解密,得到解密后的背书集合。
[0095] 当所述公钥生成数为公钥随机数时,就各步骤细节进一步描述联盟链交易的具体流程如下所示:
[0096] 步骤1:Client提出交易。
[0097] Client在密钥卡中生成公钥随机数RUnew,根据公式PKUnew=H(IDU||RUnew)生成非对称公钥PKUnew。交易tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,此处txPayload的值为RUnew⊕RU,即proposal={IDU,chaincodeID,txPayload=RUnew⊕RU,timestamp}。
[0098] 计算proposal的基于ID密码学的签名,得到签名SIGN(proposal,SKU),即clientSig,过程如下。Client用哈希函数作用于proposal得到Hm,用Hm作为密钥指针随机数,在密钥卡中找到一个公钥单元并从该单元取出公钥随机数Rm。求得Rm和proposal的MAC值MAC(proposal,Rm),又取随机数参数r,求得r和Client公钥PKU的乘积r*PKU,再用函数H1作用于MAC(proposal,Rm)和r*PKU,可得到签名参数h=H1(MAC(proposal,Rm),r*PKU)。则可以得到proposal的签名clientSig=SIGN(proposal,SKU)=(r*PKU,(r+h)*SKU),其中SKU为Client的私钥。
[0099] 由于本专利的公钥随机数R不公开,敌方无法得到PKU;因此敌方无法通过r*PKU和PKU得到随机数r。由于签名的对象为消息认证码,因此无法被敌方所知,因此敌方无法通过签名的对象得到h。由于敌方无法得到r和h,因此敌方无法通过(r+h)*SKU得到SKU。综上所述,公开的数字签名能抵抗敌方量子计算机对基于身份的公钥密码学的攻击。
[0100] Client将tx即{{IDU,chaincodeID,txPayload=RUnew⊕RU,timestamp},(r*PKU,(r+h)*SKU)}发送给Endorser。
[0101] 步骤2:Endorser执行交易。
[0102] Endorser收到交易后,取出{{IDU,chaincodeID,txPayload=RUnew⊕RU,timestamp},(r*PKU,(r+h)*SKU)}中各个部分。Endorser根据IDU在密钥卡中找到公钥单元并从中取出公钥随机数RU,根据公式PKU=H(IDU||RU)可以计算得到公钥PKU,然后用PKU来验证得到的签名。
[0103] 要验证该签名,只需要验证(P,Ppub,r*PKU+h*PKU,(r+h)*SKU))是一个有效的Diffie-Hellman元组。又有(P,Ppub,r*PKU+h*PKU,(r+h)*SKU))=(P,Ppub,(r+h)*PKU,(r+h)*SKU))=(P,sP,(r+h)*PKU,s(r+h)*PKU)),即只需要证明(P,sP,(r+h)*PKU,s(r+h)*PKU))是一个有效的Diffie-Hellman元组。
[0104] 验证签名成功之后,Endorser判断User是否具有更新公私钥的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易tx,否则Endorser不认可该交易。
[0105] 步骤3:Endorser发送交易应答。
[0106] Endorser根据收到的RUnew⊕RU和密钥卡中取得的RU计算得到RUnew,根据PKUnew=H(IDU||RUnew)计算得到PKUnew,从密钥卡中取出管理私钥si,根据SKUi=si*PKU得到SKUi,根据SKUnewi=si*PKUnew得到SKUnewi。对proposal作哈希运算得到tid,又有tran-proposal包含{IDEi,tid,chaincodeID,txPayload,readset,writeset}。如果Endorser认可该交易tx的话,对tid||RU作哈希运算的结果赋值给readset,writeset的值为RUnew⊕RU;如果Endorser不认可该交易tx的话,则readset和writeset的值为无效值。
[0107] Endorser对SKUnewi进行加密。根据公式gU=e(PKU,Ppub)可以计算得到gU。取随机数r,计算EU=rP,EV=SKUnewi⊕H2((gU)r),进而可以得到加密密文EC=。从密钥卡中取出IDEi,将组合{EU-H(tid||RU||IDEi)}||EV又称作为rtxdata。将tran-proposal||rtxdata作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,Endorser得到交易应答rtx={tran-propasal,rtxdata,epSig},并将rtx发送给Client。
[0108] 步骤4:Client发送加密后的背书到Orderer。
[0109] User收到交易应答后,取出rtx即{tran-propasal,rtxdata,epSig}中各个部分。
[0110] 首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值。Client根据IDU在本地密钥卡内读取RU,如果readset与在本地密钥卡内计算所得的HASH(tid||RU)相等,且writeset不是无效值的话,则说明该交易是被Endorser认可的交易。
[0111] User判断收到的被认可的交易不少于t个,则达到了秘密共享的要求。然后对验证签名后的rtxdata即{EU-H(tid||RU||IDEi)}||EV进行解析,得到{EU-H(tid||RU||IDEi)}和EV两部分。取出密钥卡中的IDEi,从得到的tran-proposal中取出tid,在本地密钥卡内读取RU,从而得到tid||RU||IDEi,用哈希函数作用于tid||RU||IDEi得到H(tid||RU||IDEi),对{EU-H(tid||RU||IDEi)}加上H(tid||RU||IDEi),从而可以求出EU,得到恢复后的密文。接下来对密文进行解密。根据公式SKUnewi=EV⊕H2(e(SKU,EU))计算得到解密后的原文SKUnewi。
[0112] User对解密后的SKUnewi进行检验:根据公式e(SKUnewi,P)=e(si*PKUnew,P)=e(PKUnew,si*P)=e(PKUnew,Ppubi)可以推出e(SKUnewi,P)=e(PKUnew,Ppubi),从密钥卡中取出Ppubi,再取出己方已有的PKUnew和参数P,计算,如果等式确实成立,则SKUnewi是正确的,否则则说明SKUnewi是错误的。
[0113] User将认可的交易的rtx组成背书,即背书etx=∑rtx。用Orderer的ID值IDO在密钥卡中读取公钥随机数RO,再根据公式PKO=H(IDO||RO)计算得到公钥PKO。按照步骤3中的方法使用PKO对背书etx进行加密得到密文UC=,并将密文UC发送给Orderer。如etx长度太大,则使用一个随机数密钥对称加密etx,并对该随机数密钥非对称加密得到UC;后续解密时,可先非对称解密UC得到随机数密钥,然后使用随机数密钥对称解密etx。本文其他涉及长消息的加密均可按照此方法。
[0114] 步骤5:Orderer加密并发送排序后的etx集合到Committer。
[0115] Orderer收到各个Client发送的UC后,得到UC中的各个部分,并用前文所述恢复偏移量的方法得到。取出自己的私钥SKO,根据公式etx=UV⊕H2(e(SKO,UU))计算得到解密后的背书etx。在积累到一定数量的etx后,Orderer对etx进行排序。在达到block的最大大小或者达到超时时间后,Orderer将序列号seqno、上个联盟链区块的哈希值prevhash、∑etx组合起来,可以得到etx集合={seqno,prevhash,∑etx}。
[0116] 接着Orderer用Committer的ID值IDC在密钥卡中读取公钥随机数RC,再根据公式PKC=H(IDC||RC)计算得到公钥PKC。按照步骤3中的方法使用PKC对etx集合进行加密得到密文OC=,并将密文OC发送给该Committer。按照这种方法将etx集合用所有Committer的公钥分别加密并分别发送给所有的Committer。
[0117] 步骤6:每个Committer验证交易,并更新世界状态。
[0118] 每个Committer收到OC后,取出OC中的各个部分,并用前文所述恢复偏移量的方法得到。取出自己的私钥SKC,根据公式etx集合=OV⊕H2(e(SKC,OU))计算得到解密后的etx集合。再取出{seqno,prevhash,∑etx}中的各个部分。分别取出每个etx,查看其中的rtx,即{tran-propasal,rtxdata,epSig}。首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。根据IDU从密钥卡中取得RU,再从tran-proposal中取出tid,计算HASH(tid||RU)的值并和readset进行比较,如果相等则说明rtx是被认可的。
[0119] Committer查看通过验证的rtx是否达到秘密共享的要求,例如是否达到了t个有效的背书。如果认可该etx为有效交易就做出标记以示有效;否则Committer将不认可etx为有效交易,并做出标记以示无效。接下来,Committer将区块写入区块链,并且根据区块链中的有效交易,更新本地的世界状态,即本地密钥池。
[0120] 取出writeset,根据writeset=RUnew⊕RU并且RU已知,可以得到RUnew,将密钥卡中的RU替换为RUnew。按照此步骤,更换所有需要更新的RU。
[0121] 步骤7:Committer发送交易通知。
[0122] Committer发送交易通知给Client。如果tx有效,将success作为result的值;如果tx无效则将failure作为result的值。将result、tid、committerSig组合来起到得到ntx={tid,result,committerSig}。其中committerSig是Committer按照步骤1中的方法对result的签名,即可以得到committerSig=SIGN(result,SKC)。
[0123] Committer将组合ntx发送给Client。
[0124] Client收到ntx后,得到{tid,result,committerSig}中的各个部分。按照步骤2中的方法来验证签名committerSig。验证签名成功之后,取出result查看其值,如果result的值是success,则说明公钥更新成功,则取出步骤4中检验成功的所有SKUnewi,根据公式SKUnew=s*PKUnew=(∑λi*si)*PKUnew=∑λi*(si*PKUnew)=∑λi*SKUnewi和可以计算得到SKUnew,将SKUnew存入密钥卡替代原来的用户私钥SKU,公钥更新成功;如果result的值是failure,则公私钥更新失败。
[0125] 当所述公钥生成数为基于无证密码学生成的部分的部分公钥时,如图2-4所示,本实施例中联盟链成员的密钥卡中包含各自的私钥和公钥池,公钥池中有一个个的公钥单元,每个公钥单元存有ID和一个部分公钥X、一个部分公钥Y,用户可以根据ID在公钥池中找到对应的公钥单元。部分公钥X与该用户公钥PK的对应关系如下:PK=H(ID||X)。所有密钥卡均为某组织颁发,初始状态公钥池中的公钥单元完全一致,且由所有用户对应的公钥单元组成。各个用户的密钥卡保留各自的私钥并且永不公开,密钥系统采用基于无证书密码学的理论。本实施例中,Endorser拥有图2所示的Endorser密钥卡,Client拥有图3所示的Client密钥卡,Orderer和Committer拥有图4所示的其他区块链服务密钥卡。区块链客户端同时存在Client和Committer,两者的密钥卡可以合并为同一个密钥卡,也可以分开。区块链服务端可能同时存在Endorser和Committer,两者的密钥卡可以合并为同一个密钥卡,也可以分开。
[0126] 对于每个Endorser来说,公钥PKE=H(IDE||XE)、XE=xE*P、YE=xE*Ppub,私钥SKE=s*PKE、xE,其中私钥xE为真随机数。Endorser密钥卡中还存储有系统管理公钥Ppub、管理公钥Ppubi=si*P和管理私钥si,如图2所示。Ppub还被安全发送给其他服务端的成员,那些成员将得到的Ppub存储在己端的其他区块链服务密钥卡内,如图4所示。
[0127] 区块链客户端密钥卡私钥由t个Endorser颁发,每个Endorser密钥卡计算有:PKU=H(IDU||XU),SKUi=si*PKU,Endorser密钥卡将SKUi安全发送给客户端密钥卡。安全发送的方式可以是直接拷贝或者通过QKD等安全通信方式颁发的密钥加密发送。在无证书密码学理论中,区块链客户端还有部分私钥xU、部分公钥XU和部分公钥YU,其中有关系XU=xU*P、YU=xU*Ppub、PKU=H(IDU||XU)、SKU=s*PKU存在,所以用户IDU实际使用的私钥为(xU,SKU),实际使用的公钥为(XU,YU,PKU)。
[0128] 客户端密钥卡内初始化后拥有管理公钥池,其内存储有n个Endorser的xi及颁发的管理公钥,每个实际存储为(IDEi,Ppubi,xi),如图3所示。客户端收到t个SKUi后,可以计算拉格朗日参数 然后由SKU=s*PKU=(∑λi*si)*PKU=∑λi*(si*PKU)=∑λi*SKUi可以得到SKU=∑λi*SKUi。同理,客户端可以根据公式Ppub=sP=(∑λi*si)*P=∑λi*(si*P)=∑λi*Ppubi可以得到Ppub=∑λi*Ppubi从而求出Ppub,并将Ppub存在己端的Client密钥卡中,如图3所示。
[0129] 就各步骤细节进一步描述联盟链交易的具体流程如下所示:
[0130] 步骤1:Client提出交易。
[0131] Client在密钥卡中生成新的部分私钥xUnew、新的部分公钥XUnew=xUnew*P和新的部分公钥YUnew=xUnew*Ppub,再根据PKUnew=H(IDU||XUnew)计算得到公钥PKUnew,其中H为哈希函数。对部分公钥XU做哈希运算得到HXU,将HXU作为密钥指针随机数并在密钥卡中得到密钥位置PXU,在该位置找到部分公钥XU’,对XUnew做偏移得到XUnew-XU’;对部分公钥YU做哈希运算得到HYU,将HYU作为密钥指针随机数并在密钥卡中得到密钥位置PYU,在该位置找到部分公钥YU’,对YUnew做偏移得到YUnew-YU’。并且将XUnew-XU’||YUnew-YU’赋值给txPayload。交易tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,即proposal={IDU,chaincodeID,txPayload=XUnew-XU’||YUnew-YU’,timestamp}。
[0132] 计算proposal的基于无证书密码学的签名,得到签名SIGN(proposal,SKU),即clientSig,过程如下。Client用哈希函数作用于proposal得到Hm,用Hm作为密钥指针随机数,在密钥卡中找到一个公钥单元并从该单元取出公钥PKm。取随机数r∈Z*q,计算U=rP,根据公式V=SKU+rH2(proposal,IDU,XU,U)+xU*H3(proposal,IDU,XU)计算得到V,其中H2和H3为哈希函数。从而可以得到proposal的签名clientSig=SIGN(proposal,SKU)=(U-PKm,V)。
[0133] Client将tx即{{IDU,chaincodeID,txPayload=XUnew-XU’||YUnew-YU’,timestamp},(U-PKm,V)}发送给Endorser。
[0134] 步骤2:Endorser执行交易。
[0135] Endorser收到交易后,取出{{IDU,chaincodeID,txPayload=XUnew-XU’||YUnew-YU’,timestamp},(U-PKm,V)}中各个部分。Endorser用哈希函数作用于proposal得到Hm,用Hm作为密钥指针随机数,在密钥卡中找到一个公钥单元并从该单元取出公钥PKm。对U-PKm加上PKm得到U。根据IDU在密钥卡中找到公钥单元并从中取出部分公钥XU,根据公式PKU=H(IDU||XU)计算得到部分公钥PKU,用XU和PKU来验证得到的签名。
[0136] Endorser从tx中取出proposal,然后验证等式e(V,P)=e(PKU,Ppub)e(H2(proposal,IDU,XU,U),U)e(H3(proposal,IDU,XU),XU)是否成立。如果等式不成立则验证失败;如果等式成立,则验证成功,并进行接下来的步骤。
[0137] 验证签名成功之后,Endorser判断User是否具有更新公私钥的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易tx,否则Endorser不认可该交易。
[0138] 步骤3:Endorser发送交易应答。
[0139] Endorser对XU做哈希运算得到HXU,将HXU作为密钥指针随机数并在密钥卡中得到密钥位置PXU,在该位置找到部分公钥XU’,对收到的XUnew-XU’做偏移恢复得到XUnew;根据IDU在密钥卡中找到公钥单元并从中取出部分公钥YU,对YU做哈希运算得到HYU,将HYU作为密钥指针随机数并在密钥卡中得到密钥位置PYU,在该位置找到部分公钥YU’,对收到的YUnew-YU’做偏移恢复得到YUnew。根据PKUnew=H(IDU||XUnew)计算得到PKUnew,从密钥卡中取出管理私钥si,根据SKUi=si*PKU得到SKUi,根据SKUnewi=si*PKUnew得到SKUnewi。对tx作哈希运算得到tid,又有tran-proposal包含{IDEi,tid,chaincodeID,txPayload,readset,writeset}。如果Endorser认可该交易tx的话,对tid||XU||YU作哈希运算的结果赋值给readset,writeset的值为(XUnew-XU’)||(YUnew-YU’);如果Endorser不认可该交易tx的话,则readset和writeset的值为无效值。
[0140] Endorser对SKUnewi进行加密。计算公式e(XU,Ppub)=e(YU,P)是否成立,成立的话继续下面的步骤,否则放弃加密。选择一个随机数σ∈(0,1)n,根据公式i=H5(σ,SKUnewi)计算出i的值。然后计算EU=iP,EV=σ⊕H4(e(PKU,YU)i),EW=SKUnewi⊕H6(σ)。其中H4、H5和H6为哈希函数,从而可以得到SKUnewi加密后的密文EC=
[0141] 从密钥卡中取出IDEi,将组合{EU-H(tid||XU||YU||IDEi)}||EV||EW又称作为rtxdata。将tran-proposal||rtxdata作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,即得到epSig=SIGN(tran-proposal||rtxdata,SKE)。
[0142] Endorser得到交易应答rtx={tran-propasal,rtxdata,epSig},并将rtx发送给Client。
[0143] 步骤4:Client发送背书(Endorsement)etx到Orderer。
[0144] User收到交易应答后,取出rtx即{tran-propasal,rtxdata,epSig}中各个部分。
[0145] 首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值。Client根据IDU在本地密钥卡内取出XU||YU,如果readset与在本地密钥卡内计算所得的HASH(tid||XU||YU)相等,且writeset不是无效值的话,则说明该交易是被Endorser认可的交易。
[0146] User判断收到的被认可的交易不少于t个,则达到了秘密共享的要求。然后对验证签名后的rtxdata即{EU-H(tid||XU||YU||IDEi)}||EV||EW进行解析,得到{EU-H(tid||XU||YU||IDEi)}、EV和EW三部分。取出密钥卡中的IDEi,从得到的tran-proposal中取出tid,在本地密钥卡内读取XU||YU,从而得到tid||XU||YU||IDEi,用哈希函数作用于tid||XU||YU||IDEi得到H(tid||XU||YU||IDEi),从而可以求出EU,得到恢复后的密文。接下来对密文进行解密。根据公式σ’=EV⊕H4(e(xU*SKU,EU))计算出σ’,再根据公式SKUnewi’=EW⊕H6(σ’)。令i’=H5(σ’,SKUnewi’),验证等式EU=i’P是否成立。如果等式不成立,则验证失败;如果等式成立,则SKUnewi’就是解密得到的原文,即SKUnewi’=SKUnewi,然后进行下面的步骤。
[0147] User对解密后的SKUnewi进行检验:根据公式e(SKUnewi,P)=e(si*PKUnew,P)=e(PKUnew,si*P)=e(PKUnew,Ppubi)可以推出e(SKUnewi,P)=e(PKUnew,Ppubi),从密钥卡中取出Ppubi,再取出己方已有的PKUnew和参数P,计算,如果等式确实成立,则SKUnewi是正确的,否则则说明SKUnewi是错误的。
[0148] User将认可的交易的rtx组成背书,即背书etx=∑rtx。用Orderer的ID值IDO在密钥卡中读取公钥随机数RO,再根据公式PKO=H(IDO||RO)计算得到公钥PKO。按照步骤3中的方法使用PKO对背书etx进行加密得到密文UC=,并将密文UC发送给Orderer。如etx长度太大,则使用一个随机数密钥对称加密etx,并对该随机数密钥非对称加密得到UC;后续解密时,可先非对称解密UC得到随机数密钥,然后使用随机数密钥对称解密etx。本文其他涉及长消息的加密均可按照此方法。
[0149] 步骤5:Orderer发送排序后的etx集合到Committer。
[0150] Orderer收到各个Client发送的UC后,得到UC中的各个部分,并用前文所述恢复偏移量的方法得到。取出自己的私钥SKO,根据公式etx=UV⊕H2(e(SKO,UU))计算得到解密后的背书etx。在积累到一定数量的etx后,Orderer对etx进行排序。在达到block的最大大小或者达到超时时间后,Orderer将序列号seqno、上个联盟链区块的哈希值prevhash、∑etx组合起来,可以得到etx集合={seqno,prevhash,∑etx}。
[0151] 接着Orderer用Committer的ID值IDC在密钥卡中读取公钥随机数RC,再根据公式PKC=H(IDC||RC)计算得到公钥PKC。按照步骤3中的方法使用PKC对etx集合进行加密得到密文OC=,并将密文OC发送给该Committer。按照这种方法将etx集合用所有Committer的公钥分别加密并分别发送给所有的Committer。
[0152] 步骤6:每个Committer验证交易,并更新世界状态。
[0153] 每个Committer收到OC后,取出OC中的各个部分,并用前文所述恢复偏移量的方法得到。取出自己的私钥SKC,根据公式etx集合=OV⊕H2(e(SKC,OU))计算得到解密后的etx集合。再取出{seqno,prevhash,∑etx}中的各个部分。分别取出每个etx,查看其中的rtx,即{tran-propasal,rtxdata,epSig}。首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。根据IDU从密钥卡中取得XU和YU,再从tran-proposal中取出tid,计算HASH(tid||XU||YU)的值并和readset进行比较,如果相等则说明rtx是被认可的。
[0154] Committer查看通过验证的rtx是否达到秘密共享的要求,例如是否达到了t个有效的背书。如果认可该etx为有效交易就做出标记以示有效;否则Committer将不认可etx为有效交易,并做出标记以示无效。接下来,Committer将区块写入区块链,并且根据区块链中的有效交易,更新本地的世界状态,即本地密钥池。
[0155] 对XU做哈希运算得到HXU,将HXU作为密钥指针随机数并在密钥卡中得到密钥位置PXU,在该位置找到部分公钥XU’;对YU做哈希运算得到HYU,将HYU作为密钥指针随机数并在密钥卡中得到密钥位置PYU,在该位置找到部分公钥YU’。取出writeset,根据writeset=(XUnew-XU’)||(YUnew-YU’)并且XU’和YU’已求得,可以得到XUnew和YUnew,将密钥卡中的XU替换为XUnew,将密钥卡中的YU替换为YUnew。按照此步骤,更换所有需要更新的XU和YU。
[0156] 步骤7:Committer发送交易通知。
[0157] Committer发送交易通知给Client。如果tx有效,将success作为result的值;如果tx无效则将failure作为result的值。将result、tid、committerSig组合来起到得到ntx={tid,result,committerSig}。其中committerSig是Committer按照步骤1中的方法对result的签名,即可以得到committerSig=SIGN(result,SKC)。
[0158] Committer将组合ntx发送给Client。
[0159] Client收到ntx后,得到{tid,result,committerSig}中的各个部分。按照步骤2中的方法来验证签名committerSig。验证签名成功之后,取出result查看其值,如果result的值是success,则说明公私钥更新成功,则取出步骤4中检验成功的所有SKUnewi,根据公式SKUnew=s*PKUnew=(∑λi*si)*PKUnew=∑λi*(si*PKUnew)=∑λi*SKUnewi和可以计算得到SKUnew,将(xU,SKUnew)存入密钥卡替代原来的用户私钥(xU,SKU),公私钥更新成功;如果result的值是failure,则公私钥更新失败。
[0160] 上述基于联盟链且抗量子计算的公私钥颁发方法,通过使用密钥卡存储公钥和私钥,包括部分公钥和部分私钥,其中公钥存储在密钥卡的公钥池中。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低。由于量子计算机无法得到用户公钥,于是也无法得到对应的私钥。另外,本发明中,基于公私钥的抗量子计算签名和加密也保证了所传输消息的安全性,即使在量子计算机存在的情况下,也难以被推导出私钥。因此该方案不容易被量子计算机破解。
[0161] 本发明中将基于ID密码学中的ID改为了ID加上公钥随机数或者部分公钥的形式,并对签名参数h也做了相应的改进使得签名参数h无法被敌方计算得到,使得数字签名具有很高的抗量子安全性。并且私钥服务器的私钥通过秘密共享的方式进行分布式存储,而相关的公私钥又分别存储在密钥卡中,使得私钥被窃取的风险很大程度的降低。没有一个私钥服务器掌握整个私钥也使得整体的安全得到了提高。
[0162] 同时,本发明在流程中的不同场合用到了偏移量,这些偏移量都需要密钥卡中的公钥池的参与才能计算得到,没有密钥卡的其他方将无法破解这些被偏移量保护的数据。偏移量的使用对数据进行了加密,使得传输过程更加安全,具有抗量子的特性;并且该加密方式比普通加密方式的计算量更小,因此避免了使用普通加密方式来抵抗量子计算机的攻击,降低了各方的设备负担。
[0163] 本发明中公钥更新后,可通过区块链查询其余通信方公钥更新的信息,不存在中心服务器,即无需向中心服务器进行查询并下载公钥更新。区块链是一种无中心网络通信系统,避免了中心服务器在极端情况可能发生网络问题而导致中心服务器通信功能丧失,从而无法进行公钥更新查询;另外,由于不存在中心服务器,攻击者无法发动拒绝服务式攻击,保证了公钥更新系统的正常运行。
[0164] 在一个实施例中,提供了一种计算机设备,即基于联盟链且抗量子计算的公私钥颁发系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述公私钥颁发方法。该计算机设备的显示屏可以是液晶显示屏或者电子显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0165] 其中一实施例中,提供基于联盟链且抗量子计算的公私钥颁发系统,包括相互通信的联盟链成员,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述联盟链成员包括多个提供相应服务的Endorser,Orderer和Committer,其中各所述Endorser的密钥卡中还存储了管理私钥以及管理公钥;所述管理私钥为:私钥生成服务器的私钥基于ID密码学得到多个与所述私钥相关的分量;所述User的密钥卡中还存储有管理公钥池,所述管理公钥池中包括各个管理公钥单元,各所述管理公钥单元中存储有各Endorser身份标识,以及与Endorser身份标识相对应的管理公钥以及私钥参数;
[0166] 所述User和联盟链成员均包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现所述的基于联盟链且抗量子计算的公私钥颁发方法。
[0167] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0168] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈