首页 / 专利库 / 电脑编程 / 量子计算 / 基于联盟链和隐式证书的抗量子计算云存储方法及系统

基于联盟链和隐式证书的抗量子计算存储方法及系统

阅读:189发布:2020-05-13

专利汇可以提供基于联盟链和隐式证书的抗量子计算存储方法及系统专利检索,专利查询,专利分析的服务。并且本 申请 涉及一种基于联盟链和隐式证书的抗 量子计算 云 存储方法及系统,实施在相互通信的联盟链成员之间,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥 指针 随机数,所述客户端密钥卡中存储有身份标识以及隐式证书,本方法基于联盟链和隐式证书对云存储 服务器 实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载,进一步提高了文件存储的安全性。,下面是基于联盟链和隐式证书的抗量子计算存储方法及系统专利的具体信息内容。

1.基于联盟链和隐式证书的抗量子计算存储方法,实施在相互通信的联盟链成员之间,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,其特征在于,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;
所述抗量子计算云存储方法包括基于联盟链和隐式证书对云存储服务器实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
2.根据权利要求1所述的抗量子计算云存储方法,其特征在于,所述客户端成员的密钥卡均由服务端成员生成及颁发。
3.根据权利要求1所述的抗量子计算云存储方法,其特征在于,所述Endorser以及Committer同时作为客户端成员以及服务端成员,并同时配置有服务端密钥卡以及客户端密钥卡。
4.根据权利要求3所述的抗量子计算云存储方法,其特征在于,所述客户端成员与服务端成员之间进行交互时,其间传送的交互信息均携带有供验证时使用的签名,所述签名利用信息接收方的服务端公钥对所述签名进行偏移加密,所述信息接收方利用信息发送方的隐式证书对加密后的签名进行相应解密。
5.根据权利要求1所述的抗量子计算云存储方法,其特征在于,在对云存储设备实施查询文件时,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含有需要查询文件的哈希值;
多个所述Endorser接收到交易后,经验证后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则将读写操作集设置为空;
User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;
若从验证为有效的交易应答中的读写操作集为空则查询结果为文件不存在于云存储服务器。
6.根据权利要求5所述的抗量子计算云存储方法,其特征在于,若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:
上传文件的User为User1;
所述User1向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;
多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User1;
User1接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User1,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;
User1接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件。
7.根据权利要求6所述的抗量子计算云存储方法,其特征在于,所述数据密钥以及个人密钥生成方式包括:
生成随机数作为文件密钥;
对所述上传文件进行计算得到文件的特征值;
根据所述文件的特征值对所述文件密钥加密,生成数据密钥;
根据所述User的公钥基于ECIES算法对文件密钥进行加密,得到第一密文;
根据所述User的服务端公钥以及文件哈希值进行哈希计算,得到偏移量;
根据所述偏移量对所述第一密文进行偏移加密,得到个人密钥。
8.根据权利要求5所述的抗量子计算云存储方法,其特征在于,若查询结果为文件存在于云存储服务器时,且进行查询的User不为文件的第一上传者,则User为User2,Use2还将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:
所述User2向多个Endorser提出交易,所述交易信息中包含有根据获取的数据密钥计算得到所述User2的个人密钥以及文件哈希值;
多个所述Endorser接收到交易后,根据交易进行相应验证后,将User2的个人密钥以及文件哈希值写入交易应答发送至User2;
User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User2,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;
User2接收交易通知后,以完成上传个人密钥。
9.根据权利要求8所述的抗量子计算云存储方法,其特征在于,若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:
所述User向多个Endorser提出交易,根据获取的所述交易信息中包含有文件哈希值;
多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值去云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
10.基于联盟链和隐式证书的抗量子计算云存储系统,包括相互通信的联盟链成员,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,其特征在于,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;
所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现权利要求1~9任一项所述的基于联盟链和隐式证书的抗量子计算云存储方法。

说明书全文

基于联盟链和隐式证书的抗量子计算存储方法及系统

技术领域

[0001] 本申请涉及联盟链领域,特别是涉及一种基于联盟链和隐式证书的抗量子计算云存储方法及系统。

背景技术

[0002] 链是一种全新的分布式基础架构与计算范式,利用有序的链式数据结构存储数据,利用共识算法更新数据,利用密码学技术保障数据安全。在基于区块链的交易中,确保交易的数据安全和客户的隐私是区块链能够进一步发展的必要条件。为此,密码学技术尤其是公钥密钥学在区块链中得到了广泛的应用。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,其共识过程受到预选节点控制的区块链。
[0003] 随着科技的发展,云存储已经越来越成为一种趋势,各种云存储技术层出不穷,为了保证云存储数据的安全,通常会利用各种加密方法来保证数据的安全性,例如,可以通过非对称密钥加密来保证数据的安全性,非对称密钥加密需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公钥,另一个由用户自己秘密保存,即私钥。信息发送者用公钥去加密,而信息接收者用私钥去解密。
[0004] 当前企业或事业单位有时有数据上云的需求,而公有云一般不容易受这些单位信任,被认为信息安全可能有问题,或者密钥容易被黑客所获得并破解,因此造成了公有云客户对数据上云有后顾之忧。
[0005] 正如大多数人所了解的,量子计算机在密码破解上有着巨大潜。当今主流的非对称(公钥)加密算法,如RSA加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为RSA、离散对数加密算法的破解提供可能。
[0006] 现有技术存在的问题:
[0007] 1.在云服务上进行密钥存储有一定的危险性。公有云客户对数据上云有后顾之忧。
[0008] 2.当前云存储直接简单使用公钥密码体制,不能抵抗量子计算的攻击。
[0009] 3.当前已有的专利《CN201811101370-基于公共密钥池的抗量子计算云存储安全控制方法和系统》使用公共密钥池服务器对密钥进行统一的存储管理。(1)该密钥管理中心容易遭受攻击导致整个云存储网络瘫痪。(2)由于该密钥管理中心掌控所有密钥,因此万一该密钥管理中心失去控制,非法对用户数据进行解密,后果将比较严重。(3)该密钥管理中心记录云存储网络的密钥使用情况以用于计费等业务活动,但记录的防篡改、防抵赖能力不高。发明内容
[0010] 基于此,有必要针对上述技术问题,提供一种基于联盟链和隐式证书的抗量子计算云存储方法及系统。
[0011] 一种基于联盟链和隐式证书的抗量子计算云存储方法,实施在相互通信的联盟链成员之间,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;
[0012] 所述抗量子计算云存储方法包括基于联盟链和隐式证书对云存储服务器实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
[0013] 可选的,所述客户端成员的密钥卡均由服务端成员生成及颁发。
[0014] 可选的,所述Endorser以及Committer同时作为客户端成员以及服务端成员,并同时配置有服务端密钥卡以及客户端密钥卡。
[0015] 可选的,所述客户端成员与服务端成员之间进行交互时,其间传送的交互信息均携带有供验证时使用的签名,所述签名利用信息接收方的服务端公钥对所述签名进行偏移加密,所述信息接收方利用信息发送方的隐式证书对加密后的签名进行相应解密。
[0016] 可选的,在对云存储设备实施查询文件时,具体包括:
[0017] 所述User向多个Endorser提出交易,所述交易信息中包含有需要查询文件的哈希值;
[0018] 多个所述Endorser接收到交易后,经验证后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则将读写操作集设置为空;
[0019] User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;
[0020] 若从验证为有效的交易应答中的读写操作集为空则查询结果为文件不存在于云存储服务器。
[0021] 可选的,若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:
[0022] 上传文件的User为User1;
[0023] 所述User1向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;
[0024] 多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User1;
[0025] User1接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
[0026] Committer收到背书后,相应生成交易通知发送给User1,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;
[0027] User1接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件。
[0028] 可选的,所述数据密钥以及个人密钥生成方式包括:
[0029] 生成随机数作为文件密钥;
[0030] 对所述上传文件进行计算得到文件的特征值;
[0031] 根据所述文件的特征值对所述文件密钥加密,生成数据密钥;
[0032] 根据所述User的公钥基于ECIES算法对文件密钥进行加密,得到第一密文;
[0033] 根据所述User的服务端公钥以及文件哈希值进行哈希计算,得到偏移量;
[0034] 根据所述偏移量对所述第一密文进行偏移加密,得到个人密钥。
[0035] 可选的,若查询结果为文件存在于云存储服务器时,且进行查询的User不为文件的第一上传者,则User为User2,Use2还将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:
[0036] 所述User2向多个Endorser提出交易,所述交易信息中包含有根据获取的数据密钥计算得到所述User2的个人密钥以及文件哈希值;
[0037] 多个所述Endorser接收到交易后,根据交易进行相应验证后,将User2的个人密钥以及文件哈希值写入交易应答发送至User2;
[0038] User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
[0039] Committer收到背书后,相应生成交易通知发送给User2,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;
[0040] User2接收交易通知后,以完成上传个人密钥。
[0041] 可选的,若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:
[0042] 所述User向多个Endorser提出交易,根据获取的所述交易信息中包含有文件哈希值;
[0043] 多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;
[0044] User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值去云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
[0045] 本发明还提供了一种基于联盟链和隐式证书的抗量子计算云存储系统,包括相互通信的联盟链成员,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;
[0046] 所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于联盟链和隐式证书的抗量子计算云存储方法。
[0047] 上述基于联盟链和隐式证书的抗量子计算云存储方法及系统,通过使用通过联盟链来进行分布式的生成和存储密钥,并且用户对应的个人密钥也是上传到联盟链或者从联盟链下载,与云存储服务器分开来,即密钥和密文的分离。并且在交互过程中对交互信息中利用隐式证书进行偏移加密从而极大提升了云存储的安全性,并减轻了云存储服务器的压力,同时也避免了服务器遭受攻击时所有密钥被泄露的可能性,因而提高了文件存储的安全性。附图说明
[0048] 图1为一个实施例中基于联盟链和隐式证书的抗量子计算云存储系统的结构示意图;
[0049] 图2为一个实施例中服务端密钥卡的内部结构图;
[0050] 图3为一个实施例中客户密钥卡的内部结构图。

具体实施方式

[0051] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052] 为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。
[0053] 应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0054] 如图1所示,提供了一种基于联盟链和隐式证书的抗量子计算云存储方法,实施在相互通信的联盟链成员之间,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;所述抗量子计算云存储方法包括基于联盟链和隐式证书对云存储服务器实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
[0055] 在本实施例中,在一个基于非对称密钥池体系中,对任意1个用户端与联盟链服务之间进行通信。下文中联盟链服务简称为服务端。本发明的密钥池体系中每个对象都具有密钥卡,可存储大数据量的密钥,也具备处理信息的能力。本发明中,用户端和服务端的本地系统中都存在相应需求的算法。
[0056] 在本实施例中,联盟链由区块链服务和区块链客户端组成,其中的每一个成员都配备有密钥卡。密钥卡分为服务端密钥卡和客户端密钥卡。服务端密钥卡密钥区结构如图2所示,主要存储有服务端公钥池、服务端秘密共享私钥池和客户端公钥池。秘密共享私钥池中存储的内容为对私钥s进行(t,n)秘密共享,n为私钥拆分共享秘密的碎片数,t为恢复私钥的最小碎片数,每个为si。
[0057] 在本实施例中,客户端成员的密钥卡均由服务端成员生成及颁发。客户端密钥卡密钥区结构如图3所示,主要存储有服务端公钥、客户端公钥指针随机数、客户端私钥以及私钥参数。其中服务端公钥包括两个公钥,pkU和pkSU。所述密钥卡均由服务端颁发。
[0058] 在本实施例中,云存储可以为公有云、私有云、混合云、P2P存储网络、其他存储服务器等。
[0059] 服务端在密钥卡注册时,先由服务端选择椭圆曲线的域参数包含q,a,b,G和n。q代表有限域Fq的大小;变量a和b是椭圆曲线y2=x3+ax+b的系数,这里4a3+27b2≠0;G是基点生成元。服务端生成椭圆曲线后,选择基点生成元G,满足它的阶是整数n。服务端生成的私钥sk和公钥pk满足pk=sk*G。
[0060] 算法的相关参数{q,a,b,G,n}写入到密钥卡指定区域。
[0061] 联盟链成员搭载有相应的区块链服务,每个服务有1个ID。其中,由n个Endorser组成分布式私钥生成服务。
[0062] 对s进行(t,n)的秘密共享,n为私钥拆分共享秘密的碎片数,t为恢复私钥的最小碎片数,2≤t≤n。n个Endorser秘密共享了服务器的s,每个Ei得到的秘密为(xi,si),其中的任意t个Endorser可以恢复服务器的s。恢复具体步骤如下:
[0063] t组(xi,si)求得拉格朗日参数 求得s=∑λi*si。
[0064] 对每个私钥,f(x)均不同,但xi相同,且存储于每个密钥卡中。
[0065] 在本实施例中,所述Endorser以及Committer同时作为客户端成员以及服务端成员,并同时配置有服务端密钥卡以及客户端密钥卡。
[0066] 其中每个Endorser同时拥有客户端密钥卡和服务端密钥卡:
[0067] 作为客户端:公钥PKE;私钥SKE;获取方式同PKU/SKU。Endorser的ID即IDE=HASH(PKE)。
[0068] 作为服务端:服务端公钥S=s*P,组成服务端公钥池;服务端秘密共享私钥si,组成服务端秘密共享私钥池;客户端公钥池,每个单元组成如图:
[0069]IDU CertU
[0070] 单元内包括用户ID和用户证书CertU。
[0071] 每个Committer同时拥有客户端密钥卡和服务端密钥卡(但此服务端密钥卡没有秘密共享私钥池):
[0072] 作为客户端:公钥PKC;私钥SKC;获取方式同PKU/SKU。Committer的ID即IDC=HASH(PKC)。
[0073] 作为服务端:服务端公钥池;客户端公钥池。
[0074] 用户搭载有相应的区块链客户端,有1个ID。客户端分为两种:
[0075] (1)n个联盟链成员中,均有区块链客户端,或称为区块链服务客户端;
[0076] (2)所有云存储客户端中,均有区块链客户端,或称为区块链客户客户端。
[0077] 密钥卡私钥由t个Endorser颁发。见下文“非对称密钥颁发”部分。
[0078] 区块链服务包括Peer服务,Order服务等。其中Peer服务分为Committer和Endorser;Order服务由多个Orderer组成。区块链服务均带有Committer功能;保存有区块链以及智能合约,智能合约运行于密钥卡内;密钥卡中的世界状态WorldState包含客户端上传的文件哈希以及相关密钥。
[0079] 下文设User,Endorser,Orderer,Committer的标记如下:
[0080] (0)各自的简称分别为U,E,O,C;
[0081] (1)各自的ID分别为IDU,IDE,IDO,IDC;
[0082] (2)各自的公钥分别为PKU,PKE,PKO,PKC;
[0083] (3)各自的私钥分别为SKU,SKE,SKO,SKC。
[0084] 根据交易流程,其中一用户可称为User,有1个或多个区块链账户,每个账户对应1个公钥/私钥的组合。提供相应服务的联盟链成员可作为Endorser,Orderer或Committer。
[0085] 在本实施例中,所述客户端成员与服务端成员之间进行交互时,其间传送的交互信息均携带有供验证时使用的签名,所述签名利用信息接收方的服务端公钥对所述签名进行偏移加密,所述信息接收方利用信息发送方的隐式证书对加密后的签名进行相应解密。
[0086] 在本实施例中,在对云存储设备实施查询文件时,具体包括:所述User向多个Endorser提出交易,所述交易信息中包含有需要查询文件的哈希值;多个所述Endorser接收到交易后,经验证后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则将读写操作集设置为空;User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;若从验证为有效的交易应答中的读写操作集为空则查询结果为文件不存在于云存储服务器。
[0087] 在本实施例中,若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:上传文件的User为User1。
[0088] 所述User1向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;
[0089] 多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User1;
[0090] User1接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
[0091] Committer收到背书后,相应生成交易通知发送给User1,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;
[0092] User1接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件。
[0093] 具体的,所述数据密钥以及个人密钥生成方式包括生成随机数作为文件密钥,对所述上传文件进行计算得到文件的特征值;根据所述文件的特征值对所述文件密钥加密,生成数据密钥;根据所述User的公钥基于ECIES算法对文件密钥进行加密,得到第一密文;根据所述User的服务端公钥以及文件哈希值进行哈希计算,得到偏移量;根据所述偏移量对所述第一密文进行偏移加密,得到个人密钥。
[0094] 在本实施例中,若查询结果为文件存在于云存储服务器时,且进行查询的User不为文件的第一上传者,则User为User2,Use2还将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:所述User2向多个Endorser提出交易,所述交易信息中包含有根据获取的数据密钥计算得到所述User2的个人密钥以及文件哈希值;多个所述Endorser接收到交易后,根据交易进行相应验证后,将User2的个人密钥以及文件哈希值写入交易应答发送至User2;User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;Committer收到背书后,相应生成交易通知发送给User2,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;User2接收交易通知后,以完成上传个人密钥。
[0095] 在本实施例中,若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:所述User向多个Endorser提出交易,根据获取的所述交易信息中包含有文件哈希值;多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值去云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
[0096] 就各步骤细节进一步描述基于联盟链和隐式证书的抗量子计算云存储方法的具体流程如下所示:
[0097] 非对称密钥颁发:
[0098] 非对称密钥颁发即密钥卡颁发,此流程全部在服务端进行。
[0099] 设ID为IDU的客户端为客户端CU,客户端CU的密钥卡内客户端私钥为kU,客户端公钥指针随机数为rkU和rkSU。随机生成公钥指针随机数,如当前服务端公钥池单元已被使用,则换一个公钥指针随机数继续尝试。尝试成功后,标记当前服务端公钥池单元已被使用。
[0100] 根据客户端私钥kU以及G计算得到RU=kU*G。
[0101] 将rkU结合指针函数frk得到指针rkpU,通过rkpU在服务端公钥池中取出公钥pkU。
[0102] 计算PU=RU+pkU。
[0103] 计算得到客户端CU的隐式证书CertU=Encode(PU,IDU,rkU,rkSU)。Encode(*)是指一种包括了*信息的证书的组成和实际编码方式,具体根据应用而定。再对CertU进行哈希计算得到eU=H(CertU)。
[0104] 设第i个Endorser为Ei,Ei根据rkU、rkSU结合指针函数frk得到指针rkpU、rkpSU,通过rkpU、rkpSU在服务端秘密共享私钥池取出私钥skUi和私钥skSUi。
[0105] 计算私钥参数rUi=eU*skUi+skSUi(mod n)。
[0106] Ei将rUi发给客户端密钥卡,客户端密钥卡计算rU=eU*skU+skSU=eU*(∑λi*skUi)+(∑λi*skSUi)=∑λi*(eU*skUi+skSUi)=∑λi*rUi。即客户端密钥卡得到rU=∑λi*rUi。
[0107] 将服务端公钥pkU和pkSU、客户端公钥指针随机数rkU和rkSU、客户端私钥kU以及私钥参数rU存入客户端密钥卡的对应存储区,完成对客户端的非对称密钥颁发即密钥卡颁发。
[0108] 客户端获取非对称密钥:
[0109] 客户端根据密钥卡内客户端私钥kU以及G计算得到RU=kU*G。
[0110] 客户端取出公钥pkU。
[0111] 计算PU=RU+pkU。
[0112] 计算得到客户端CU的隐式证书CertU=Encode(PU,IDU,rkU,rkSU)。再对CertU进行哈希计算得到eU=H(CertU)。
[0113] 计算得到实际的私钥SKU=eU*kU+rU(mod n)
[0114] 客户端取出公钥pkSU。
[0115] 计算得到实际的公钥PKU=eU*PU+pkSU。也可以用PKU=SKU*G计算得到实际的公钥PKU。
[0116] 客户端CU将CertU公布。CertU不含有密码相关信息,因此无需加密即可抵抗量子计算。
[0117] 服务端获取某客户端公钥:
[0118] 服务端可得到客户端CU的隐式证书CertU后,对CertU进行哈希计算得到eU=H(CertU)。
[0119] 由客户端CU的CertU中得到得到rkSU,将rkSU结合指针函数frk得到指针rkpSU,通过rkpSU在服务端公钥池中取出公钥pkSU。
[0120] 计算得到实际公钥PKU=eU*PU+pkSU。
[0121] 实施例一:查询文件是否存在:
[0122] User查询文件F是否存在。
[0123] 步骤1:User提出交易。
[0124] User对文件F进行Hash计算后得到HF。
[0125] User向N个Endorser发送交易,交易tx可表示为{proposal,userSig'}。
[0126] proposal可表示为{IDU,chaincodeID,txPayload,timestamp}。链码chaincodeID即使用智能合约函数的编号;txPayload即函数的参数,可表示为txPayload=HF。timestamp即为交易的发起时间。
[0127] userSig即User对proposal的签名。令SIGN=ECDSA,得到userSig=SIGN(proposal,SKU)={UR,US}。
[0128] User在密钥卡内提取服务端公钥pkU和pkSU,计算用于进行偏移量计算的PKUR,可表示为PKUR=H(IDU||HF||timestamp||pkU||pkSU)。H(*)是一种将整数映射到椭圆曲线点的哈希函数。
[0129] 对UR进行偏移量计算后得到userSig'={UR-PKUR,US}。
[0130] 步骤2:Endorser执行交易。
[0131] Endorser根据CertU获取rkU||rkSU,根据rkU||rkSU从密钥池获取pkU||pkSU,计算得到PKUR=H(IDU||HF||timestamp||pkU||pkSU),对(UR-PKUR)加上PKUR得到UR,即恢复了userSig。Endorser根据User的CertU使用上文所述方法得到PKU,使用PKU对userSig进行验证。验证通过后,判断IDU是否具有查询文件的权限,并查看proposal中的timestamp与本地时间的差异是否位于合理范围内。若所有判断通过,则认可该交易;若有判断不通过,则不认可该交易。
[0132] 步骤3:Endorser发送交易应答。
[0133] 验证通过后,对该交易进行处理,即根据chaincodeID执行chaincode,生成读写操作集readset和writeset并将包含读写操作集的交易应答rtx返回给User。Endorser根据txPayload即HF对本地区块链进行查询,若文件存在,则将readset设置为对应的数据密钥DKF,若文件不存在则将readset设置为空。writeset设置为空。交易应答rtx可表示为{tran-proposal,epSig'}。
[0134] tran-proposal即申请应答可表示为{IDEi,tid,chaincodeID,txPayload,readset,writeset}。包括交易的序号tid(可表示为tid=HASH(proposal)),chaincodeID和txPayload,以及读写操作集readset和writeset。如不认可该交易,readset/writeset为无效值。
[0135] epSig即使用Endorser的私钥SKE对tran-proposal签名,可表示为SIGN(tran-proposal,SKE)={ER,ES}。
[0136] Endorser计算偏移量PKER和PKE',可表示为PKER=H(IDE||tid||pkU||pkSU)和PKE'=H(tid||IDE||pkU||pkSU)。
[0137] 对ER和PKE进行偏移量计算后得到epSig'={ER-PKER,ES,PKE-PKE'}。
[0138] 步骤4:User收到结果。
[0139] User收到交易应答后,筛选出被Endorser认可的交易。根据密钥卡内服务端公钥pkU和pkSU计算得到PKER=H(IDE||tid||pkU||pkSU)和PKE'=H(tid||IDE||pkU||pkSU),对(ER-PKER)加上PKER得到ER,对(PKE-PKE')加上PKE'得到PKE,即恢复了epSig和PKE。检查HASH(PKE)是否等于IDE。User使用公钥PKE对签名epSig进行验证。
[0140] 对于验证成功的rtx,查看其readset是否一致。
[0141] 如果readset=DKF,则文件存在;如果readset为空则文件不存在。
[0142] 至此查询文件完成。
[0143] 实施例二:第1个用户上传文件:
[0144] 步骤1:User1提出交易。
[0145] 设某个文件F的第一个上传者为User1,设User1的公私钥为PKU1/SKU1,密钥卡中存储的服务端公钥为pkU1/pkSU1。
[0146] User1通过实施例一查询发现文件F不存在后,向N个Endorser发送交易,交易tx可表示为{proposal,userSig'}。
[0147] User1生成随机数KF作为文件密钥。
[0148] User1根据文件生成文件特征值,使用文件特征值加密文件密钥KF得到数据密钥DKF。文件特征值的计算方法为预定义的算法,可以是但不限于Hash计算、文件压缩或其他文件特征计算算法。
[0149] User1生成个人密钥PKF1。过程如下:
[0150] (1)User1使用个人公钥PKU1及ECIES算法对文件密钥KF进行加密,得到ENC(KF,PKU1)=(KFR1,KFc1,KFt1)。
[0151] (2)User1在密钥卡内提取服务端公钥pkU1和pkSU1,计算用于进行偏移量计算的PKKFR1,可表示为PKKFR1=H(HF||pkU1||pkSU1)。
[0152] (3)计算个人密钥PKF1=(KFR1-PKKFR1,KFc1,KFt1)。
[0153] proposal可表示为{IDU1,chaincodeID,txPayload,timestamp}。链码chaincodeID即使用智能合约函数的编号;txPayload即函数的参数,包括文件哈希HF、数据密钥DKF和个人密钥PKF1,可表示为txPayload=HF||DKF||PKF1。timestamp即为交易的发起时间。
[0154] userSig即User对proposal的签名。令SIGN=ECDSA,得到userSig=SIGN(proposal,SKU1)={UR,US}。
[0155] User1计算用于进行偏移量计算的PKUR1,可表示为PKUR1=H(IDU1||HF||timestamp||pkU1||pkSU1)。
[0156] 对UR进行偏移量计算后得到userSig'={UR-PKUR1,US}。
[0157] 步骤2:Endorser执行交易。
[0158] Endorser根据CertU1获取rkU1||rkSU1,根据rkU1||rkSU1从密钥池获取pkU1||pkSU1,计算得到PKUR1=H(IDU1||HF||timestamp||pkU1||pkSU1),对(UR-PKUR1)加上PKUR1得到UR,即恢复了userSig。Endorser根据User1的CertU1使用上文所述方法得到PKU1,使用PKU1对userSig进行验证。验证通过后,判断IDU1是否具有上传文件的权限,并查看proposal中的timestamp与本地时间的差异是否位于合理范围内。若所有判断通过,则认可该交易;若有判断不通过,则不认可该交易。
[0159] 步骤3:Endorser发送交易应答。
[0160] 验证通过后,Endorser根据txPayload即HF判断该文件是否存在(本实施例为不存在)。判断结束后,Endorser对该交易进行处理,即根据chaincodeID执行chaincode,生成读写操作集readset和writeset并将包含读写操作集的交易应答rtx返回给User1。交易应答rtx可表示为{tran-proposal,epSig'}。
[0161] tran-proposal即申请应答可表示为{IDEi,tid,chaincodeID,txPayload,readset,writeset}。包括交易的序号tid(可表示为tid=HASH(proposal)),chaincodeID和txPayload,以及读写操作集readset=空和writeset=HF||DKF||PKF1。如不认可该交易,readset/writeset为无效值。
[0162] epSig即使用Endorser的私钥SKE对tran-proposal签名,可表示为SIGN(tran-proposal,SKE)={ER,ES}。
[0163] Endorser计算偏移量PKER1和PKE1',可表示为PKER1=H(IDE||tid||pkU1||pkSU1)和PKE1'=H(tid||IDE||pkU1||pkSU1)。
[0164] 对ER和PKE进行偏移量计算后得到epSig'={ER-PKER1,ES,PKE-PKE1'}。
[0165] 步骤4:User1发送背书(Endorsement)etx到Orderer。
[0166] User1收到交易应答后,筛选出被Endorser认可的交易。根据密钥卡内服务端公钥pkU1和pkSU1计算得到PKER1=H(IDE||tid||pkU1||pkSU1)和PKE1’=H(tid||IDE||pkU1||pkSU1),对(ER-PKER1)加上PKER1得到ER,对(PKE-PKE1')加上PKE1'得到PKE,即恢复了epSig和PKE。检查HASH(PKE)是否等于IDE。User1使用公钥PKE对签名epSig进行验证。
[0167] User1将选择得到的rtx集合组成背书etx,可表示为etx=∑rtx。将etx发送至Orderer。
[0168] 步骤5:Orderer发送排序后的etx集合到Committer。
[0169] Orderer在积累到一定数量的etx后,Orderer对各个User递交过来的etx进行排序。在达到bolck的最大大小或者达到超时时间后,Orderer将多个etx排序好并打包成区块即etxs,etxs包括序列号seqno以及上个联盟链区块的哈希值prevhash。背书集合etxs可表示为{seqno,prevhash,∑etx}。Orderer将etxs发送给Committer。
[0170] 步骤6:每个Committer验证交易。
[0171] 每个Committer收到排序后的背书集合后,Committer根据背书策略对etx集合进行验证,验证方式如下:
[0172] 查看每个rtx,使用上文所述方法验证其数字签名epSig'。具体为:根据CertU1获取rkU1||rkSU1,根据rkU1||rkSU1从密钥池获取pkU1||pkSU1;根据pkU1和pkSU1计算得到PKER1=H(IDE||tid||pkU1||pkSU1)和PKE1'=H(tid||IDE||pkU1||pkSU1),对(ER-PKER1)加上PKER1得到ER,对(PKE-PKE1')加上PKE1'得到PKE,即恢复了epSig和PKE;检查HASH(PKE)是否等于IDE;使用公钥PKE对签名epSig进行验证。
[0173] 验证readset:此处无需验证。
[0174] 验证通过后Committer认可该etx为有效背书,并作出标记以示有效,否则Committer不认可该etx为有效背书,并作出标记以示无效。
[0175] 标记完成后,Committer将区块写入区块链。Committer根据区块链中的有效背书,更新本地的世界状态,即存储HF||DKF||PKF1。
[0176] 步骤7:Committer发送交易通知。
[0177] 多个Committer执行完毕后,将交易结果(成功或失败)的通知发送至User。
[0178] Committer生成交易通知ntx,包括tid,result(即成功或失败)以及签名committerSig。committerSig即Committer使用私钥SKC对result的签名,可表示为SIGN(result,SKC)={CR,CS}。
[0179] Committer根据密钥卡内服务端公钥pkU1和pkSU1计算用于进行偏移量计算的PKCR1和PKC1'。可表示为PKCR1=H(IDC||tid||pkU1||pkSU1)和PKC1'=H(tid||IDC||pkU1||pkSU1)。
[0180] 对CR和PKC进行偏移量计算后得到committerSig'={CR-PKCR1,CS,PKC-PKC1'}。
[0181] User1收到后,根据密钥卡内服务端公钥pkU1和pkSU1计算得到PKCR1=H(IDC||tid||pkU1||pkSU1)和PKC1'=H(tid||IDC||pkU1||pkSU1),对(CR-PKCR1)加上PKCR1得到CR,对(PKC-PKC1')加上PKC1'得到PKC,即恢复了committerSig和PKC。检查HASH(PKC)是否等于IDC。User1使用PKC并对签名committerSig进行验证,通过后信任该交易通知。
[0182] 若交易通知中result=成功,则上传HF||{F}KF至云存储。使用文件密钥KF加密的文件F,可表示为{F}KF,同时上传的还有文件F的Hash值HF。
[0183] 至此上传文件完成。
[0184] 实施例三:第2个用户上传文件:
[0185] 步骤1:User2提出交易。
[0186] 设某个文件F的非第一个上传者为User2,设User2的公私钥为PKU2/SKU2,密钥卡中存储的服务端公钥为pkU2/pkSU2。
[0187] User2通过实施例一查询发现文件F存在后,根据文件生成文件特征值,使用文件特征值解密数据密钥DKF得到文件密钥KF。再根据文件密钥KF制作个人密钥PKF2,具体步骤如下:
[0188] (1)User2使用个人公钥PKU2及ECIES算法对文件密钥KF进行加密,得到ENC(KF,PKU2)=(KFR2,KFc2,KFt2)。
[0189] (2)User2在密钥卡内提取服务端公钥pkU2和pkSU2,计算用于进行偏移量计算的PKKFR2,可表示为PKKFR2=H(HF||pkU2||pkSU2)。
[0190] (3)计算个人密钥PKF2=(KFR2-PKKFR2,KFc2,KFt2)。
[0191] User2向N个Endorser发送交易,交易tx可表示为{proposal,userSig'}。
[0192] proposal可表示为{IDU2,chaincodeID,txPayload,timestamp}。链码chaincodeID即使用智能合约函数的编号;txPayload即函数的参数,可表示为txPayload=HF||PKF2。timestamp即为交易的发起时间。
[0193] userSig即User2对proposal的签名。令SIGN=ECDSA,得到userSig=SIGN(proposal,SKU2)={UR,US}。
[0194] User2在密钥卡内提取服务端公钥pkU2和pkSU2,计算用于进行偏移量计算的PKUR2,可表示为PKUR2=H(IDU2||HF||timestamp||pkU2||pkSU2)。
[0195] 对UR2进行偏移量计算后得到userSig'={UR-PKUR2,US}。
[0196] 步骤2:Endorser执行交易。
[0197] Endorser根据CertU2获取rkU2||rkSU2,根据rkU2||rkSU2从密钥池获取pkU2||pkSU2,计算得到PKUR2=H(IDU2||HF||timestamp||pkU2||pkSU2),对(UR-PKUR2)加上PKUR2得到UR,即恢复了userSig。Endorser根据User2的CertU2使用上文所述方法得到PKU2,使用PKU2对userSig进行验证。验证通过后,判断IDU2是否具有上传文件的权限,并查看proposal中的timestamp与本地时间的差异是否位于合理范围内。若所有判断通过,则认可该交易;若有判断不通过,则不认可该交易。
[0198] 步骤3:Endorser发送交易应答。
[0199] 验证通过后,Endorser根据txPayload即HF判断该文件是否存在(本实施例为存在)。判断结束后,Endorser对该交易进行处理,即根据chaincodeID执行chaincode,生成读写操作集readset和writeset并将包含读写操作集的交易应答rtx返回给User。交易应答rtx可表示为{tran-proposal,epSig'}。
[0200] tran-proposal即申请应答可表示为{IDEi,tid,chaincodeID,txPayload,readset,writeset}。包括交易的序号tid(可表示为tid=HASH(proposal)),chaincodeID和txPayload,以及读写操作集readset=空和writeset=HF||PKF2。如不认可该交易,readset/writeset为无效值。
[0201] epSig即使用Endorser的私钥SKE对tran-proposal签名,可表示为SIGN(tran-proposal,SKE)={ER,ES}。
[0202] Endorser计算用于进行偏移量计算的PKER2和PKE2',可表示为PKER2=H(IDE||tid||pkU2||pkSU2)和PKE2'=H(tid||IDE||pkU2||pkSU2)。
[0203] 对ER和PKE进行偏移量计算后得到epSig'={ER-PKER2,ES,PKE-PKE2'}。
[0204] 步骤4:User2发送背书(Endorsement)etx到Orderer。
[0205] User2收到交易应答后,筛选出被Endorser认可的交易。根据密钥卡内服务端公钥pkU2和pkSU2计算得到PKER2=H(IDE||tid||pkU2||pkSU2)和PKE2'=H(tid||IDE||pkU2||pkSU2),对(ER-PKER2)加上PKER2得到ER,对(PKE-PKE2')加上PKE2'得到PKE,即恢复了epSig和PKE。检查HASH(PKE)是否等于IDE。User2使用公钥PKE对签名epSig进行验证。
[0206] User2将选择得到的rtx集合组成背书etx,可表示为etx=∑rtx。将etx发送至Orderer。
[0207] 步骤5:Orderer发送排序后的etx集合到Committer。
[0208] Orderer在积累到一定数量的etx后,Orderer对各个User递交过来的etx进行排序。在达到bolck的最大大小或者达到超时时间后,Orderer将多个etx排序好并打包成区块即etxs,etxs包括序列号seqno以及上个联盟链区块的哈希值prevhash。背书集合etxs可表示为{seqno,prevhash,∑etx}。Orderer将etxs发送给Committer。
[0209] 步骤6:每个Committer验证交易。
[0210] 每个Committer收到排序后的背书集合后,Committer根据背书策略对etx集合进行验证,验证方式如下:
[0211] 查看每个rtx,使用上文所述方法验证其数字签名epSig'。
[0212] 验证readset:此处无需验证。
[0213] 验证通过后Committer认可该etx为有效背书,并作出标记以示有效,否则Committer不认可该etx为有效背书,并作出标记以示无效。
[0214] 标记完成后,Committer将区块写入区块链。Committer根据区块链中的有效背书,更新本地的世界状态,即根据HF存储PKF2。
[0215] 步骤7:Committer发送交易通知。
[0216] 多个Committer执行完毕后,将交易结果(成功或失败)的通知发送至User。
[0217] Committer生成交易通知ntx,包括tid,result(即成功或失败)以及签名committerSig。committerSig即Committer使用私钥SKC对result的签名,可表示为SIGN(result,SKC)={CR,CS}。
[0218] Committer计算用于进行偏移量计算的PKCR2和PKC2'。可表示为PKCR2=H(IDC||tid||pkU2||pkSU2)和PKC2'=H(tid||IDC||pkU2||pkSU2)。
[0219] 对CR和PKC进行偏移量计算后得到committerSig'={CR-PKCR2,CS,PKC-PKC2'}。
[0220] User2收到后,根据密钥卡内服务端公钥pkU2和pkSU2计算得到PKCR2=H(IDC||tid||pkU2||pkSU2)和PKC2'=H(tid||IDC||pkU2||pkSU2),对(CR-PKCR2)加上PKCR2得到CR,对(PKC-PKC2')加上PKC2'得到PKC,即恢复了committerSig和PKC。检查HASH(PKC)是否等于IDC。User2使用PKC并对签名committerSig进行验证,通过后信任该交易通知。
[0221] 若交易通知中result=成功,则表明个人密钥上传成功。由于之前已经有用户上传HF||{F}KF,User2无需上传HF||{F}KF至云存储,因此去除了云存储中的重复文件,即去重。至此上传文件完成。
[0222] 实施例四:下载文件:
[0223] 以User1下载文件F为例。
[0224] 步骤1:User提出交易。
[0225] User1向N个Endorser发送交易,交易tx可表示为{proposal,userSig'}。
[0226] proposal可表示为{IDU1,chaincodeID,txPayload,timestamp}。链码chaincodeID即使用智能合约函数的编号;txPayload即函数的参数,可表示为txPayload=HF。timestamp即为交易的发起时间。
[0227] userSig即User1对proposal的签名。令SIGN=ECDSA,得到userSig=SIGN(proposal,SKU1)={UR,US}。
[0228] User1在密钥卡内提取服务端公钥pkU1和pkSU1,计算用于进行偏移量计算的PKUR1,可表示为PKUR1=H(IDU1||HF||timestamp||pkU1||pkSU1)。
[0229] 对UR进行偏移量计算后得到userSig'={UR-PKUR1,US}。
[0230] 步骤2:Endorser执行交易。
[0231] Endorser根据CertU1获取rkU1||rkSU1,根据rkU1||rkSU1从密钥池获取pkU1||pkSU1,计算得到PKUR1=H(IDU1||HF||timestamp||pkU1||pkSU1),对(UR-PKUR1)加上PKUR1得到UR,即恢复了userSig。Endorser根据User1的CertU1使用上文所述方法得到PKU1,使用PKU1对userSig进行验证。验证通过后,判断IDU1是否具有下载文件的权限,并查看proposal中的timestamp与本地时间的差异是否位于合理范围内。若所有判断通过,则认可该交易;若有判断不通过,则不认可该交易。
[0232] 步骤3:Endorser发送交易应答。
[0233] 验证通过后,对该交易进行处理,即根据chaincodeID执行chaincode,生成读写操作集readset和writeset并将包含读写操作集的交易应答rtx返回给User1。Endorser根据IDU1将readset设置为对应的PKF1,若proposal中为IDU2则将readset设置为对应的PKF2,依此类推。writeset设置为空。交易应答rtx可表示为{tran-proposal,epSig'}。
[0234] tran-proposal即申请应答可表示为{IDEi,tid,chaincodeID,txPayload,readset,writeset}。包括交易的序号tid(可表示为tid=HASH(proposal)),chaincodeID和txPayload,以及读写操作集readset和writeset。如不认可该交易,readset/writeset为无效值。
[0235] epSig即使用Endorser的私钥SKE对tran-proposal签名,可表示为SIGN(tran-proposal,SKE)={ER,ES}。
[0236] Endorser计算偏移量PKER1和PKE1',可表示为PKER1=H(IDE||tid||pkU1||pkSU1)和PKE1'=H(tid||IDE||pkU1||pkSU1)。
[0237] 对ER和PKE进行偏移量计算后得到epSig'={ER-PKER1,ES,PKE-PKE1'}。
[0238] 步骤4:User收到结果。
[0239] User1收到交易应答后,筛选出被Endorser认可的交易。根据密钥卡内服务端公钥pkU1和pkSU1计算得到PKER1=H(IDE||tid||pkU1||pkSU1)和PKE1’=H(tid||IDE||pkU1||pkSU1),对(ER-PKER1)加上PKER1得到ER,对(PKE-PKE1')加上PKE1'得到PKE,即恢复了epSig和PKE。检查HASH(PKE)是否等于IDE。User1使用公钥PKE对签名epSig进行验证。
[0240] 对于验证成功的rtx,查看其readset是否一致。
[0241] 根据readset获得PKF1=(KFR1-PKKFR1,KFc1,KFt1),计算PKKFR1=H(HF||pkU1||pkSU1),对(KFR1-PKKFR1)加上PKKFR1得到KFR1,使用私钥SKU1对(KFR1,KFc1,KFt1)进行ECIES解密得到文件密钥KF。
[0242] 根据HF从云存储下载密文{F}KF,使用KF解密得到文件F。
[0243] 至此下载文件完成。
[0244] 在发明中,使用密钥卡存储公钥和私钥,其中公钥存储在密钥卡的公钥池中。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低。由于量子计算机无法得到用户公钥,于是也无法得到对应的私钥。另外,本发明中,基于公私钥的抗量子计算签名和加密也保证了所传输消息的安全性,即使在量子计算机存在的情况下,也难以被推导出私钥。因此该方案不容易被量子计算机破解。
[0245] 在本方法中将基于隐式证书密码学中的隐式证书改为了隐式证书加上公钥随机数的形式。并且私钥服务器的私钥通过秘密共享的方式进行分布式存储,而相关的私钥分量又分别存储在多个Endorser的密钥卡中,使得私钥被窃取的险很大程度的降低。没有一个或少数几个Endorser掌握整个私钥也就没有一个或少数几个失控的Endorser非法对用户数据进行解密,使得云存储整体的安全得到了提高。
[0246] 同时,本方法在流程中的不同场合用到了偏移量,这些偏移量都需要密钥卡中的公钥的参与才能计算得到,没有密钥卡的其他方将无法破解这些被偏移量保护的数据。偏移量的使用对数据进行了加密,使得传输过程更加安全,具有抗量子计算的特性;并且该加密方式比普通加密方式的计算量更小,因此避免了使用普通加密方式来抵抗量子计算机的攻击,降低了各方的设备负担。
[0247] 本方法在云存储的全过程中,服务器端都无法接触到用户端私钥、文件密钥以及解密后的明文数据文件。本专利不存在中心化的密钥管理中心来统一管理和控制密钥分发,因此整个系统不容易遭受攻击导致整个云存储网络瘫痪。由于使用联盟链来记录云存储网络的密钥使用情况以用于计费等业务活动,因此记录的防篡改、防抵赖能力比传统的密钥管理中心有所提高。
[0248] 在其中一个实施例中,提供了一种计算机设备,即一种基于联盟链和隐式证书的抗量子计算云存储系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述基于联盟链和隐式证书的抗量子计算云存储方法。该计算机设备的显示屏可以是液晶显示屏或者电子显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0249] 在其中一个实施例中,提供了一种基于联盟链和隐式证书的抗量子计算云存储系统,包括相互通信的联盟链成员,所述联盟链成员包括客户端成员及服务端成员,所述服务端成员包括提供相应服务的Endorser、Orderer以及Committer,各方均配置有密钥卡,所述服务端密钥卡中存储有服务端公钥池、服务端秘密共享私钥池以及客户端公钥池,所述客户端密钥卡均存储有客户端私钥、私钥参数、服务端公钥以及客户端公钥指针随机数,所述客户端公钥池中存储有与各所述客户端成员一一对应的公钥单元,所述公钥单元中存储有身份标识以及隐式证书;
[0250] 所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于联盟链和隐式证书的抗量子计算云存储方法。
[0251] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0252] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈