CN110737907B - 基于联盟链的抗量子计算云存储方法及系统 - Google Patents
基于联盟链的抗量子计算云存储方法及系统 Download PDFInfo
- Publication number
- CN110737907B CN110737907B CN201910916937.6A CN201910916937A CN110737907B CN 110737907 B CN110737907 B CN 110737907B CN 201910916937 A CN201910916937 A CN 201910916937A CN 110737907 B CN110737907 B CN 110737907B
- Authority
- CN
- China
- Prior art keywords
- file
- key
- transaction
- user
- cloud storage
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种基于联盟链的抗量子计算云存储系统,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数,所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。通过使用通过联盟链来进行分布式的生成和存储密钥,进一步提高了文件存储的安全性。
Description
技术领域
本申请涉及联盟链领域,特别是涉及一种基于联盟链的抗量子计算云存储方法及系统。
背景技术
区块链是一种全新的分布式基础架构与计算范式,利用有序的链式数据结构存储数据,利用共识算法更新数据,利用密码学技术保障数据安全。在基于区块链的交易中,确保交易的数据安全和客户的隐私是区块链能够进一步发展的必要条件。为此,密码学技术尤其是公钥密钥学在区块链中得到了广泛的应用。而联盟链是区块链的一个分支,所以它本身也是一个分布式的,去中心化的公共数据库,跟其他链的区别就是它是针对特定群体的成员和有限的第三方,其内部指定多个预选节点为记账人,其共识过程受到预选节点控制的区块链。
随着科技的发展,云存储已经越来越成为一种趋势,各种云存储技术层出不穷,为了保证云存储数据的安全,通常会利用各种加密方法来保证数据的安全性,例如,可以通过非对称密钥加密来保证数据的安全性,非对称密钥加密需要使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公钥,另一个由用户自己秘密保存,即私钥。信息发送者用公钥去加密,而信息接收者用私钥去解密。
正如大多数人所了解的,量子计算机在密码破解上有着巨大潜力。当今主流的非对称(公钥)加密算法,如RSA加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为RSA、离散对数加密算法的破解提供可能。
现有技术存在的问题:
1.在云服务上进行密钥存储有一定的危险性,公有云客户对云上数据有后顾之忧。
2.当前云存储直接简单使用公钥密码体制,并不能抵抗量子计算的攻击。
3.在现有技术那个使用公共密钥池服务器对密钥进行统一的存储管理,这种方式尚且存在两个问题。一是该密钥管理中心容易遭受攻击导致整个云存储网络瘫痪。二是该密钥管理中心掌握所有的密钥,万一该密钥管理中心失去控制,非法对用户数据进行解密,会造成严重后果。
发明内容
基于此,有必要针对上述技术问题,提供一种基于联盟链的抗量子计算云存储方法及系统。
一种基于联盟链的抗量子计算云存储方法,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数;
所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
可选的,实施查询时,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含有需要查询文件的哈希值;
多个所述Endorser接收到交易后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则生成文件密钥分量,并将所述文件密钥进行加密后写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;
若从验证为有效的交易应答中获取加密后的所述文件密钥分量,则查询结果为文件不存在于云存储服务器,并相应解密后,得到文件密钥分量,根据多个所述文件密钥分量基于秘密共享的理论获取文件密钥。
可选的,若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;
多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;
User接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件。
可选的,将所述文件进行哈希计算,得到所述文件哈希值;
根据所述文件的特征值对所述文件密钥加密,得到数据密钥;
根据User的公钥对所述文件密钥加密,得到个人密钥。
可选的,若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:
所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值;
多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
可选的,若查询结果为文件存在于云存储服务器时,User将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含所述User的个人密钥以及文件哈希值;
多个所述Endorser接收到交易后,根据交易进行相应验证后,将所述个人密钥以及文件哈希值写入交易应答发送至User;
User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;
User接收交易通知后,以完成上传个人密钥。
可选的,User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,以及Committer收到背书后,相应生成交易通知发送给User,交互的消息中携带有供验证时使用的签名,所述签名基于ID密码学的方式生成。
可选的,在基于联盟链实施查询时,所述Endorser将交易通知发送给User的过程中,以及基于联盟链实施上传和下载时,User、Orderer以及Committer的其中两者进行交互过程中,交互的消息中携带有加密信息,所述加密为基于ID密码学的加密方式。
可选的,所述加密方式具体包括:
发送消息方根据消息接收方的身份标识从所述公钥单元中获取相应的公钥随机数,再根据所述公钥随机数以及所述身份标识,得到所述消息接收方的公钥;
获取随机数,根据所述随机数、系统管理公钥以及消息接收方的公钥进行计算,得到加密密文;
根据所述加密密文对所述消息内容进行偏移加密,得到加密消息。
本发明还提供了一种基于联盟链的抗量子计算云存储系统,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数,所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于联盟链的抗量子计算云存储方法。
上述基于联盟链的抗量子计算云存储方法及系统,通过使用通过联盟链来进行分布式的生成和存储密钥,并且用户对应的个人密钥也是上传到联盟链或者从联盟链下载,与云存储服务器分开来,即密钥和密文的分离,从而极大提升了云存储的安全性,并减轻了云存储服务器的压力,同时也避免了服务器遭受攻击时所有密钥被泄露的可能性,因而提高了文件存储的安全性。
附图说明
图1为一个实施例中基于联盟链的抗量子计算云存储系统的结构示意图;
图2为一个实施例中服务端密钥卡的内部结构图;
图3为一个实施例中客户密钥卡的内部结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好地描述和说明本申请的实施例,可参考一幅或多幅附图,但用于描述附图的附加细节或示例不应当被认为是对本申请的发明创造、目前所描述的实施例或优选方式中任何一者的范围的限制。
应该理解的是,除非本文中有明确的说明,各步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图1所示,提供了一种基于联盟链的抗量子计算云存储方法,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数。所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
在本实施例中,联盟链由区块链服务和区块链客户端组成,其中的每一个成员都配备有密钥卡。如图2和图3所示,本实施例中联盟链服务端和客户端的密钥卡中包含各自的私钥和公钥随机数池(也称为公钥池),服务端公钥池中有所有联盟链服务端和客户端对应的公钥单元,客户端公钥池中有客户端自己的公钥单元和所有联盟链服务端对应的公钥单元,每个公钥单元存有ID和一个公钥随机数R。对于所有的密钥卡,可以根据ID在密钥卡中找到对应的公钥单元从而得到R,并且公钥随机数R与该用户公钥PK的对应关系如下:PK=H(ID||R)。所有密钥卡均为某组织颁发,各个用户的密钥卡保留各自的私钥并且永不公开,密钥系统采用基于ID密码学的理论。本实施例中,Endorser、Orderer和Committer等区块链服务端拥有图2所示的服务端密钥卡,Client拥有图3所示的客户端密钥卡。
对于本发明中的私钥来说,有SK=s*PK。所有的密钥卡中都还存储有系统管理公钥Ppub,如图2和图3所示。
基于ID密码学的相关知识:假设G是一个群,从G中取生成元P,再选一个随机数作为私钥生成服务器的私钥s,有私钥生成服务器的系统管理公钥Ppub=sP。
在本实施例中,一个文件的文件密钥KF是通过秘密共享进行分布式存储并生成的,由其中的n个Endorser组成基于ID密码学的分布式密钥生成服务。
下面简单介绍秘密共享的原理和流程。
从素数阶q的有限域GF(q)中随机选取n个不同的非零元素x1,x2,…,xn,分配给参与者Pi(i=1,2,…,n)。把文件密钥KF作为共享的秘密信息,从GF(q)中选取t-1个元素a1,a2,…,a(t-1),构造多项式则有KFi=f(xi)(1≤i≤n)。(xi,KFi)作为参与者Pi的影子秘密。
联盟链成员还包括相应的区块链服务,每个服务有1个或多个ID。区块链服务包括Peer服务,Order服务等。其中Peer服务分为Committer和Endorser;Order服务由多个Orderer组成。联盟链所有成员均带有Committer功能,保存有区块链数据,Endorser还存有智能合约,智能合约运行于密钥卡内。
下文设User Client,Endorser,Orderer,Committer的标记如下:
1)ID分别为IDU,IDE,IDO,IDC。可以根据ID找到对应的公钥池单元
2)公钥分别为PKU,PKE,PKO,PKC
3)私钥分别为SKU,SKE,SKO,SKC
对于云存储客户端Client,设分别为Client1、Client2、……,它们不仅需要上传文件到云存储服务器,也需要从云存储服务器下载文件,而在这个过程中,文件都是呈现被文件密钥KF加密的密文形式。云存储服务器:可以为公有云、私有云、混合云、P2P存储网络、其他存储服务器等。
在本实施例中,对云存储服务器中的文件实施查询时,具体包括:所述User向多个Endorser提出交易,所述交易信息中包含有需要查询文件的哈希值;多个所述Endorser接收到交易后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则生成文件密钥分量,并将所述文件密钥进行加密后写入应答交易发送至User;User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;若从验证为有效的交易应答中获取加密后的所述文件密钥分量,则查询结果为文件不存在于云存储服务器,并相应解密后,得到文件密钥分量,根据多个所述文件密钥分量基于秘密共享的理论获取文件密钥。
在本实施例中,若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User;User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;User接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件。
具体的,将所述文件进行哈希计算,得到所述文件哈希值;根据所述文件的特征值对所述文件密钥加密,得到数据密钥;根据User的公钥对所述文件密钥加密,得到个人密钥。
在本实施例中,若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值;多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
在本实施例中,若查询结果为文件存在于云存储服务器时,User还将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:所述User向多个Endorser提出交易,所述交易信息中包含所述User的个人密钥以及文件哈希值;多个所述Endorser接收到交易后,根据交易进行相应验证后,将所述个人密钥以及文件哈希值写入交易应答发送至User;User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;User接收交易通知后,以完成上传个人密钥。
进一步的,User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,以及Committer收到背书后,相应生成交易通知发送给User,交互的消息中携带有供验证时使用的签名,所述签名基于ID密码学的方式生成。
进一步的,在基于联盟链实施查询时,所述Endorser将交易通知发送给User的过程中,以及基于联盟链实施上传和下载时,User、Orderer以及Committer的其中两者进行交互过程中,交互的消息中携带有加密信息,所述加密为基于ID密码学的加密方式。
具体的,所述加密方式具体包括:发送消息方根据消息接收方的身份标识从所述公钥单元中获取相应的公钥随机数,再根据所述公钥随机数以及所述身份标识,得到所述消息接收方的公钥;获取随机数,根据所述随机数、系统管理公钥以及消息接收方的公钥进行计算,得到加密密文;根据所述加密密文对所述消息内容进行偏移加密,得到加密消息。
就各步骤细节进一步描述基于联盟链的抗量子计算云存储方法的具体流程如下所示:
一、查询文件在云存储服务器中是否存在
步骤1:Client提出交易。
Client提出交易tx,tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,其中有Client对文件F做哈希计算得到其哈希值HF,并将HF赋值给txPayload,即proposal={IDU,chaincodeID,txPayload=HF,timestamp}。
计算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的私钥。
由于本专利的公钥随机数R不公开,敌方无法得到PKU;因此敌方无法通过r*PKU和PKU得到随机数r。由于签名的对象为消息认证码,因此无法被敌方所知,因此敌方无法通过签名的对象得到h。由于敌方无法得到r和h,因此敌方无法通过(r+h)*SKU得到SKU。综上所述,公开的数字签名能抵抗敌方量子计算机对基于身份的公钥密码学的攻击。
Client将tx即{{IDU,chaincodeID,txPayload=HF,timestamp},(r*PKU,(r+h)*SKU)}发送给Endorser。
步骤2:Endorser执行交易。
Endorser收到交易后,取出{{IDU,chaincodeID,txPayload=HF,timestamp},(r*PKU,(r+h)*SKU)}中各个部分。Endorser根据IDU在密钥卡中找到公钥单元并从中取出公钥随机数RU,根据公式PKU=H(IDU||RU)可以计算得到公钥PKU,然后用PKU来验证得到的签名(r*PKU,(r+h)*SKU)。
要验证该签名,根据《An Identity-Based Signature from Gap Diffie-HellmanGroups》的数字签名验证理论,只需要验证(P,Ppub,r*PKU+h*PKU,(r+h)*SKU))是一个有效的Diffie-Hellman元组。
验证签名成功之后,Endorser判断Client是否具有查询文件的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易,否则Endorser不认可该交易。
步骤3:Endorser发送交易应答。
Endorser对proposal作哈希运算得到tid,又有tran-proposal包含{IDE,tid,chaincodeID,txPayload,readset,writeset}。Endorser在密钥卡中生成文件密钥的秘密共享分量即随机数KFi,又取随机数xi为参数,其中每个Endorser有各不相同的xi的取值范围,可保证任意两个Endorser获取的xi不相等。然后用PKU对KFi||xi进行基于ID密码学的加密,根据公式gU=e(PKU,Ppub)可以计算得到gU。取随机数r1,计算EU=r1*P,进而可以得到加密密文EKFi=<EUi,EVi>。Endorser用哈希函数作用于IDE||tid||RU得到H(IDE||tid||RU),也称为PKEU,对EKFi做偏移得到EKFi’=<EUi-PKEU,EVi>。
Endorser通过搜索区块链的世界状态数据库,检查与文件hash值HF对应的数据密钥DKF是否存在于本地区块链,如果存在该DKF就说明HF对应的文件存在于云存储服务器,如果不存在该DKF就说明HF对应的文件不存在于云存储服务器。
文件F的数据密钥的定义:设文件的特征值为FF,文件密钥为KF,则数据密钥DKF={KF}FF,即使用文件的特征值对文件密钥进行加密后得到的值。文件的特征值可以为哈希值或者其他根据实际应用而定义的对文件的计算值。
如果Endorser认可交易tx并且找到了与HF对应的DKF,则将DKF赋值给readset,将NULL赋值给writeset;如果Endorser认可交易tx并且没找到与HF对应的DKF,则将EKFi’赋值给readset,将NULL赋值给writeset;如果Endorser不认可该交易的话,则readset和writeset的值为无效值。
将tran-proposal作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,Endorser得到交易应答rtx={tran-propasal,epSig},并将rtx发送给Client。
步骤4:Client收到结果。
Client收到交易应答后,取出rtx即{tran-propasal,epSig}中各个部分。
首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值,如果readset与writeset不是无效值的话,则说明该交易是被Endorser认可的交易。Client判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求,否则认为流程失败。对于收到的多个值有效的readset,如果readset值都是DKF,则说明想要查询的文件F存在于云存储服务器。如果readset值都是EKFi’,则说明想要查询的文件F不存在于云存储服务器,Client判断收到的被认可的交易不少于t个,则达到了秘密共享的要求,否则认为流程失败;取出有效readset值中的EKFi’并对其进行解密。
Client用哈希函数作用于IDE||tid||RU得到H(IDE||tid||RU),即PKEU。对EKFi’做偏移恢复得到EKFi=<EUi-PKEU+PKEU,EVi>=<EUi,EVi>。对密文<EUi,EVi>进行解密,根据公式计算得到解密后的原文(KFi||xi)。解密多个EKFi得到多组(KFi||xi),即多组(xi,KFi),作为(t,n)秘密共享的秘密,由秘密共享的理论可以计算拉格朗日参数 然后可以得到KF=∑λi*KFi,由此得到了文件密钥KF。
至此,查询文件完成。
二、上传文件至云存储服务器
即在上个实施例中经查询发现文件F不存在于云存储服务器,故用户将会上传文件至云存储服务器。
步骤1:Client1提出交易。
Client1提出交易tx,tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU1、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,其中有Client1对文件F做哈希计算得到其哈希值HF,根据将要上传的文件F的特征对KF加密生成数据密钥DKF,根据个人公钥PKU1对KF加密生成个人密钥PKF1,并将HF||DKF||PKF1赋值给txPayload,即proposal={IDU1,chaincodeID,txPayload=HF||DKF||PKF1,timestamp}。个人密钥的加密方式与前文类似,即PKF=<UU-PKUU,UV>,其中PKUU=H(IDU||RU||HF)。
计算proposal的基于ID密码学的签名,得到签名SIGN(proposal,SKU1),即clientSig,过程如下。Client1用哈希函数作用于proposal得到Hm,用Hm作为密钥指针随机数,在密钥卡中找到一个公钥单元并从该单元取出公钥随机数Rm。求得Rm和proposal的MAC值MAC(proposal,Rm),又取随机数参数r,求得r和Client1公钥PKU1的乘积r*PKU1,再用函数H1作用于MAC(proposal,Rm)和r*PKU1,可得到签名参数h=H1(MAC(proposal,Rm),r*PKU1)。则可以得到proposal的签名clientSig=SIGN(proposal,SKU1)=(r*PKU1,(r+h)*SKU1),其中SKU1为Client1的私钥。
Client1将tx即{{IDU1,chaincodeID,txPayload=HF||DKF||PKF1,timestamp},(r*PKU1,(r+h)*SKU1)}发送给Endorser。
步骤2:Endorser执行交易。
Endorser收到交易后,取出{{IDU1,chaincodeID,txPayload=HF||DKF||PKF1,timestamp},(r*PKU1,(r+h)*SKU1)}中各个部分。Endorser根据IDU1在密钥卡中找到公钥单元并从中取出公钥随机数RU1,根据公式PKU1=H(IDU1||RU1)可以计算得到公钥PKU1,然后用PKU1来验证得到的签名(r*PKU1,(r+h)*SKU1)。
要验证该签名,根据《An Identity-Based Signature from Gap Diffie-HellmanGroups》的数字签名验证理论,只需要验证(P,Ppub,r*PKU1+h*PKU1,(r+h)*SKU1))是一个有效的Diffie-Hellman元组。
验证签名成功之后,Endorser判断Client1是否具有上传文件的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易,否则Endorser不认可该交易。Endorser通过搜索区块链的世界状态数据库,检查与文件hash值HF对应的文件是否存在于云存储服务器,即检查与HF对应的数据密钥DKF是否存在于本地区块链(在本实施例中为不存在的的情况)。如果Endorser搜索到DKF,则认为用户请求无效;否则认为用户请求有效。
步骤3:Endorser发送交易应答。
Endorser对proposal作哈希运算得到tid,又有tran-proposal包含{IDE,tid,chaincodeID,txPayload,readset,writeset}。
如果Endorser认可交易tx,则将HF||DKF||PKF1赋值给writeset,将NULL赋值给readset;如果Endorser不认可该交易,则readset和writeset的值为无效值。
将tran-proposal作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,Endorser得到交易应答rtx={tran-propasal,epSig},并将rtx发送给Client1。
步骤4:Client1发送加密后的背书到Orderer。
Client1收到交易应答后,取出rtx即{tran-propasal,epSig}中各个部分。Client1判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求。
首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值,如果readset与NULL相等,且writeset不是无效值的话,则说明该交易是被Endorser认可的交易。
Client1将认可的交易的rtx组成背书,即背书etx=∑rtx。用Orderer的ID值IDO在密钥卡中读取公钥随机数RO,再根据公式PKO=H(IDO||RO)计算得到公钥PKO。使用PKO对背书etx进行加密,根据公式gO=e(PKO,Ppub)可以计算得到gO。取随机数r1,计算UU=r1*P,进而可以得到加密密文Uetx=<UU,UV>。Endorser用哈希函数作用于IDU1||tid||RO得到H(IDU1||tid||RO),对Uetx做偏移得到Uetx’=<UU-H(IDU1||tid||RO),UV>。并将密文Uetx’发送给Orderer。如果etx长度太大,则使用一个随机数密钥对称加密etx,并对该随机数密钥非对称加密得到Uetx;后续解密时,可先非对称解密Uetx得到随机数密钥,然后使用随机数密钥对称解密etx。本文其他涉及长消息的加密均可按照此方法。
步骤5:Orderer加密并发送排序后的etx集合到Committer。
Orderer收到各个Client1发送的Uetx’后,用哈希函数作用于IDU1||tid||RO得到H(IDU1||tid||RO),对Uetx’做偏移恢复得到Uetx=<UU-H(IDU1||tid||RO)+H(IDU1||tid||RO),UV>=<UU,UV>。取出自己的私钥SKO,根据公式 计算得到解密后的背书etx。在积累到一定数量的etx后,Orderer对etx进行排序。在达到block的最大大小或者达到超时时间后,Orderer将序列号seqno、上个联盟链区块的哈希值prevhash、∑etx组合起来,可以得到etx集合={seqno,prevhash,∑etx}。
接着Orderer用Committer的ID值IDC在密钥卡中读取公钥随机数RC,再根据公式PKC=H(IDC||RC)计算得到公钥PKC。按照步骤4中的方法使用PKC对etx集合进行加密得到密文OC=<OU-H(IDO||tid||RC),OV>,并将密文OC发送给该Committer。按照这种方法将etx集合用所有Committer的公钥分别加密并分别发送给所有的Committer。
步骤6:每个Committer验证交易,并更新世界状态。
每个Committer收到OC后,取出OC中的各个部分,并用前文所述恢复偏移量的方法得到<OU,OV>。取出自己的私钥SKC,根据公式 计算得到解密后的etx集合。再取出{seqno,prevhash,∑etx}中的各个部分。分别取出每个etx,查看其中的rtx,即{tran-propasal,epSig}。首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。
Committer查看通过验证的rtx是否达到秘密共享的要求,例如是否达到了达到背书策略要求个数的有效的背书。如果认可该etx为有效交易就做出标记以示有效;否则Committer将不认可etx为有效交易,并做出标记以示无效。接下来,Committer将区块写入区块链,并且根据区块链中的有效背书,更新本地的世界状态。即将writeset的值HF||DKF||PKF1存储在本地。
步骤7:Committer发送交易通知。
Committer发送交易通知给Client1。如果tx有效,将success作为result的值;如果tx无效则将failure作为result的值。将result、tid、committerSig组合来起到得到ntx={tid,result,committerSig}。其中committerSig是Committer按照步骤1中的方法对result的签名,即可以得到committerSig=SIGN(result,SKC)。
Committer将组合ntx发送给Client1。
Client1收到ntx后,得到{tid,result,committerSig}中的各个部分。按照步骤2中的方法来验证签名committerSig。验证签名成功之后,取出result查看其值,如果result的值是success,则说明这是一个被认可的交易。Client判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求,否则认为流程失败。如流程成功,则进行以下计算:用文件密钥KF加密文件F得到密文{F}KF,再将HF||{F}KF上传至云存储服务器;如果result的值是failure,则说明本用户上传失败。
三、上传个人密钥至区块链
即在上个实施例中经查询发现文件F存在于云存储服务器,故用户将个人密钥上传至区块链。
步骤1:Client2出交易。
Client2提出交易tx,tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU2、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,其中有Client2对文件F做特征值计算得到其特征值FF,用FF解密DKF得到KF,根据个人公钥PKU2对KF加密生成个人密钥PKF2,并将HF||PKF2赋值给txPayload,即proposal={IDU2,chaincodeID,txPayload=HF||PKF2,timestamp}。
计算proposal的基于ID密码学的签名,得到签名SIGN(proposal,SKU2),即clientSig,过程如下。Client2用哈希函数作用于proposal得到Hm,用Hm作为密钥指针随机数,在密钥卡中找到一个公钥单元并从该单元取出公钥随机数Rm。求得Rm和proposal的MAC值MAC(proposal,Rm),又取随机数参数r,求得r和Client2公钥PKU2的乘积r*PKU2,再用函数H1作用于MAC(proposal,Rm)和r*PKU2,可得到签名参数h=H1(MAC(proposal,Rm),r*PKU2)。则可以得到proposal的签名clientSig=SIGN(proposal,SKU2)=(r*PKU2,(r+h)*SKU2),其中SKU2为Client2的私钥。
Client2将tx即{{IDU2,chaincodeID,txPayload=HF||PKF2,timestamp},(r*PKU2,(r+h)*SKU2)}发送给Endorser。
步骤2:Endorser执行交易。
Endorser收到交易后,取出{{IDU2,chaincodeID,txPayload=HF||PKF2,timestamp},(r*PKU2,(r+h)*SKU2)}中各个部分。Endorser根据IDU2在密钥卡中找到公钥单元并从中取出公钥随机数RU2,根据公式PKU2=H(IDU2||RU2)可以计算得到公钥PKU2,然后用PKU2来验证得到的签名(r*PKU2,(r+h)*SKU2)。
要验证该签名,根据《An Identity-Based Signature from Gap Diffie-HellmanGroups》的数字签名验证理论,只需要验证(P,Ppub,r*PKU2+h*PKU2,(r+h)*SKU2))是一个有效的Diffie-Hellman元组。
验证签名成功之后,Endorser判断Client2是否具有上传文件的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易,否则Endorser不认可该交易。Endorser通过搜索区块链的世界状态数据库,检查与文件hash值HF对应的文件是否存在于云存储服务器,即检查与HF对应的数据密钥DKF是否存在于本地区块链(在本实施例中为不存在的的情况)。如果Endorser搜索不到DKF,则认为用户请求无效;否则认为用户请求有效。
步骤3:Endorser发送交易应答。
Endorser对proposal作哈希运算得到tid,又有tran-proposal包含{IDE,tid,chaincodeID,txPayload,readset,writeset}。
如果Endorser认可交易tx,则将HF||PKF2赋值给writeset,将NULL赋值给readset;如果Endorser不认可该交易,则readset和writeset的值为无效值。
将tran-proposal作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,Endorser得到交易应答rtx={tran-propasal,epSig},并将rtx发送给Client2。
步骤4:Client2发送加密后的背书到Orderer。
Client2收到交易应答后,取出rtx即{tran-propasal,epSig}中各个部分。Client2判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求。
首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值,如果readset与NULL相等,且writeset不是无效值的话,则说明该交易是被Endorser认可的交易。
Client2将认可的交易的rtx组成背书,即背书etx=∑rtx。用Orderer的ID值IDO在密钥卡中读取公钥随机数RO,再根据公式PKO=H(IDO||RO)计算得到公钥PKO。使用PKO对背书etx进行加密,根据公式gO=e(PKO,Ppub)可以计算得到gO。取随机数r1,计算UU=r1*P,进而可以得到加密密文Uetx=<UU,UV>。Endorser用哈希函数作用于IDU2||tid||RO得到H(IDU2||tid||RO),对Uetx做偏移得到Uetx’=<UU-H(IDU2||tid||RO),UV>。并将密文Uetx’发送给Orderer。如果etx长度太大,则使用一个随机数密钥对称加密etx,并对该随机数密钥非对称加密得到Uetx;后续解密时,可先非对称解密Uetx得到随机数密钥,然后使用随机数密钥对称解密etx。本文其他涉及长消息的加密均可按照此方法。
步骤5:Orderer加密并发送排序后的etx集合到Committer。
Orderer收到各个Client2发送的Uetx’后,用哈希函数作用于IDU2||tid||RO得到H(IDU2||tid||RO),对Uetx’做偏移恢复得到Uetx=<UU-H(IDU2||tid||RO)+H(IDU2||tid||RO),UV>=<UU,UV>。取出自己的私钥SKO,根据公式 计算得到解密后的背书etx。在积累到一定数量的etx后,Orderer对etx进行排序。在达到block的最大大小或者达到超时时间后,Orderer将序列号seqno、上个联盟链区块的哈希值prevhash、∑etx组合起来,可以得到etx集合={seqno,prevhash,∑etx}。
接着Orderer用Committer的ID值IDC在密钥卡中读取公钥随机数RC,再根据公式PKC=H(IDC||RC)计算得到公钥PKC。按照步骤4中的方法使用PKC对etx集合进行加密得到密文OC=<OU-H(IDO||tid||RC),OV>,并将密文OC发送给该Committer。按照这种方法将etx集合用所有Committer的公钥分别加密并分别发送给所有的Committer。
步骤6:每个Committer验证交易,并更新世界状态。
每个Committer收到OC后,取出OC中的各个部分,并用前文所述恢复偏移量的方法得到<OU,OV>。取出自己的私钥SKC,根据公式 计算得到解密后的etx集合。再取出{seqno,prevhash,∑etx}中的各个部分。分别取出每个etx,查看其中的rtx,即{tran-propasal,epSig}。首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。
Committer查看通过验证的rtx是否达到秘密共享的要求,例如是否达到了达到背书策略要求个数的有效的背书。如果认可该etx为有效交易就做出标记以示有效;否则Committer将不认可etx为有效交易,并做出标记以示无效。接下来,Committer将区块写入区块链,并且根据区块链中的有效背书,更新本地的世界状态。即将writeset的值HF||PKF2取出,并根据HF将PKF2对应地存储在本地。
步骤7:Committer发送交易通知。
Committer发送交易通知给Client2。如果tx有效,将success作为result的值;如果tx无效则将failure作为result的值。将result、tid、committerSig组合来起到得到ntx={tid,result,committerSig}。其中committerSig是Committer按照步骤1中的方法对result的签名,即可以得到committerSig=SIGN(result,SKC)。
Committer将组合ntx发送给Client2。
Client2收到ntx后,得到{tid,result,committerSig}中的各个部分。按照步骤2中的方法来验证签名committerSig。验证签名成功之后,取出result查看其值,如果result的值是success,则说明这是一个被认可的交易。Client判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求,否则认为流程失败。如流程成功,则表明用户的个人密钥PKF2上传成功,无需再将HF||{F}KF上传至云存储服务器;如果result的值是failure,则说明本用户上传失败。
四、从云存储服务器中下载文件
步骤1:Client提出交易。
Client提出交易tx,tx由proposal和clientSig组成,即tx={proposal,clientSig},其中proposal包括IDU、链码chaincodeID(即使用智能合约函数的编号)、txPayload(即函数的参数)和时间戳timestamp,其中有txPayload的值为将要下载的文件F的哈希值HF,即proposal={IDU,chaincodeID,txPayload=HF,timestamp}。
计算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的私钥。
Client将tx即{{IDU,chaincodeID,txPayload=HF,timestamp},(r*PKU,(r+h)*SKU)}发送给Endorser。
步骤2:Endorser执行交易。
Endorser收到交易后,取出{{IDU,chaincodeID,txPayload=HF,timestamp},(r*PKU,(r+h)*SKU)}中各个部分。Endorser根据IDU在密钥卡中找到公钥单元并从中取出公钥随机数RU,根据公式PKU=H(IDU||RU)可以计算得到公钥PKU,然后用PKU来验证得到的签名(r*PKU,(r+h)*SKU)。
要验证该签名,根据《An Identity-Based Signature from Gap Diffie-HellmanGroups》的数字签名验证理论,只需要验证(P,Ppub,r*PKU+h*PKU,(r+h)*SKU))是一个有效的Diffie-Hellman元组。
验证签名成功之后,Endorser判断Client是否具有下载文件的权限,判断timestamp与本地时间的差异是否位于合理范围内。如果所有判断都通过,则Endorser认可该交易,否则Endorser不认可该交易。
步骤3:Endorser发送交易应答。
Endorser对proposal作哈希运算得到tid,又有tran-proposal包含{IDE,tid,chaincodeID,txPayload,readset,writeset}。
Endorser根据得到的HF,通过搜索区块链的世界状态数据库,查找到与之对应的用户个人密钥PKF。
如果Endorser认可交易tx,则将PKF赋值给readset,将NULL赋值给writeset;如果Endorser不认可该交易,则readset和writeset的值为无效值。
将tran-proposal作为原文,用步骤1中的签名方法用私钥SKE对其进行签名得到epSig,Endorser得到交易应答rtx={tran-propasal,epSig},并将rtx发送给Client。
步骤4:Client收到结果。
Client收到交易应答后,取出rtx即{tran-propasal,epSig}中各个部分。
首先按照步骤2中的方法对签名epSig进行验证,如果验证成功了则进行后面的步骤,如果验证失败了该rtx就会被丢弃。取出readset和writeset的值,如果readset与writeset不是无效值的话,则说明该交易是被Endorser认可的交易。Client判断收到的被认可的交易不少于足够个数,则达到了背书策略的要求,否则认为流程失败。如流程成功,则对个人密钥进行解密。使用用户的私钥SKU对个人密钥进行解密得到文件密钥KF。然后可以根据HF从云存储服务器下载密文{F}KF,并用KF对密文进行解密得到文件F。至此,完成了下载文件的流程。
在本实施例中,使用的密钥卡存储公钥随机数和私钥,其中公钥随机数存储在密钥卡的公钥池中。密钥卡是独立的硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低。由于量子计算机无法得到用户公钥,于是也无法得到对应的私钥。另外,本发明中,基于公私钥的抗量子计算签名和加密也保证了所传输消息及密钥自身的安全性,即使在量子计算机存在的情况下,也难以被推导出私钥。因此该方案不容易被量子计算机破解。
本发明中将基于ID密码学中的ID改为了ID加上公钥随机数或者部分公钥的形式,并对签名参数h也做了相应的改进使得签名参数h无法被敌方计算得到,使得数字签名具有很高的抗量子安全性。
同时,本发明在流程中的不同场合用到了偏移量,这些偏移量都需要密钥卡中的公钥池的参与才能计算得到,没有密钥卡的其他方将无法破解这些被偏移量保护的数据。偏移量的使用对数据进行了加密,使得传输过程更加安全,具有抗量子的特性;并且该加密方式比普通加密方式的计算量更小,因此避免了使用普通加密方式来抵抗量子计算机的攻击,降低了各方的设备负担。
本发明中,一个文件的文件密钥KF是通过秘密共享进行分布式生成的,敌方通过各种手段获取少于秘密共享阈值t个秘密,均无法得到最终的文件密钥,因此无法对文件密钥加密的文件进行解密,所以提升了云存储文件数据的安全性。另外,文件密钥分量KFi作为真随机数,均有服务端生成,而无需客户端生成,减少了客户端配备真随机数发生器的成本。
本发明不存在密钥管理中心来统一管理和控制密钥,而是通过联盟链来进行分布式的生成和存储密钥,并且用户对应的个人密钥也是上传到联盟链或者从联盟链下载,与云存储服务器分开来,即密钥和密文的分离,从而极大提升了云存储的安全性,并减轻了云存储服务器的压力,同时也避免了服务器遭受攻击时所有密钥被泄露的可能性,因而提高了文件存储的安全性。
本发明使用联盟链替代密钥管理中心作为密钥管理机构群组,不容易因为遭受攻击而导致整个云存储网络瘫痪。另外,没有一个单独的联盟链服务掌握完整的文件密钥,万一某个联盟链服务失去控制,敌方也无法对用户数据进行解密。
在其中一个实施例中,提供了一种计算机设备,即一种基于联盟链的抗量子计算云存储系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述基于联盟链的抗量子计算云存储方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在其中一个实施例中,提供了一种基于联盟链的抗量子计算云存储系统,实施在相互通信的联盟链成员之间,所述联盟成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数,所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载。
所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于联盟链的抗量子计算云存储方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
Claims (5)
1.基于联盟链的抗量子计算云存储方法,实施在相互通信的联盟链成员之间,所述联盟链成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,各所述密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟链成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数;
所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载;
实施查询时,具体包括:
所述User向多个Endorser提出交易,交易信息中包含有需查询文件的哈希值;
多个所述Endorser接收到交易后,根据所述需查询文件的文件哈希值在世界状态中查询与所述文件哈希值相对应的数据密钥,若存在,则将查询到的数据密钥写入应答交易发送至User;若不存在,则生成文件密钥分量,并将所述文件密钥分量进行加密后写入应答交易发送至User;
其中,若所述需查询文件已存储于云存储服务器时,则在世界状态中存储有与所述需查询文件哈希值相对应的所述数据密钥;
其中,所述文件密钥基于秘密共享的理论生成多个相关的所述文件密钥分量,并分别存储于各所述Endorser中;
User接收多个交易应答后,对各交易应答进行验证,若从验证为有效的交易应答中获取所述数据密钥,则查询结果为文件存在于云存储服务器;
若从验证为有效的交易应答中获取加密后的所述文件密钥分量,则查询结果为文件不存在于云存储服务器,并相应解密后,得到文件密钥分量,根据多个所述文件密钥分量基于秘密共享的理论获取文件密钥;
其中,所述文件密钥用于在上传文件时对文件行进行加密;
若查询结果为文件不存在于云存储服务器时,则上传该文件至云存储服务器,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值、数据密钥以及个人密钥;
其中,将所述文件进行哈希计算,得到所述文件哈希值;
根据所述文件的特征值对所述文件密钥加密,得到数据密钥;
根据User的公钥对所述文件密钥加密,得到个人密钥;
多个所述Endorser接收到交易后,将所述文件哈希值、所述数据密钥以及个人密钥写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取文件哈希值、所述数据密钥以及个人密钥,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值、所述数据密钥以及个人密钥对世界状态进行更新;
User接收交易通知后,根据所述文件密钥对上传文件进行加密后,得到文件密文,并将所述文件密文以及文件哈希值上传至云存储服务器,以完成上传文件;
若查询结果为文件存在于云存储服务器时,则从云存储服务器下载该文件,包括:
所述User向多个Endorser提出交易,所述交易信息中包含有文件哈希值;
多个所述Endorser接收到交易后,根据所述文件哈希值在世界状态中查询与所述文件哈希值相对应的个人密钥,并将查询到的个人密钥写入应答交易发送至User;
User接收多个交易应答后,对各交易应答进行验证,从验证为有效的交易应答中获取个人密钥,根据所述个人密钥以及User私钥得到文件密钥,再根据所述文件哈希值去云存储服务器处下载文件密文,并利用文件密钥对文件密文进行解密后,得到文件,以完成下载文件。
2.根据权利要求1所述的抗量子计算云存储方法,其特征在于,若查询结果为文件存在于云存储服务器时,User还将个人密钥上传至联盟链,联盟链根据所述个人密钥更新世界状态,具体包括:
所述User向多个Endorser提出交易,所述交易信息中包含所述User的个人密钥以及文件哈希值;
多个所述Endorser接收到交易后,根据交易进行相应验证后,将所述个人密钥以及文件哈希值写入交易应答发送至User;
User接收多个交易应答后,对各交易应答进行验证,还利用有效的交易应答制作背书并经由Orderer发送给Committer;
Committer收到背书后,相应生成交易通知发送给User,还根据所述文件哈希值在世界状态中相应的更新所述个人密钥;
User接收交易通知后,以完成上传个人密钥。
3.根据权利要求1所述的抗量子计算云存储方法,其特征在于,User向Endorser提出交易,Endorser响应于该交易并进行相应操作,再将与交易结果相应的交易通知发送给User的过程中,以及Committer收到背书后,相应生成交易通知发送给User,交互的消息中携带有供验证时使用的签名,所述签名基于ID密码学的方式生成,所述基于ID密码学的方式包括:
其中,Endorser、Committer分别与User交互时,交易信息中携带消息内容;
根据所述消息内容计算哈希函数得到密钥指针随机数;
根据所述密钥指针随机数在消息发送方的公钥单元中取出相应的公钥随机数;
计算所述公钥随机数以及消息内容的MAC值;
从消息发送方的密钥卡中获取一随机数参数,并计算所述随机数参数以及交易发送方公钥的乘积;
根据所述MAC值、乘积进行计算得到签名参数,根据所述签名参数以及消息发送方私钥进行计算得到所述签名。
4.根据权利要求1所述的抗量子计算云存储方法,其特征在于,在基于联盟链实施查询时,所述Endorser将交易通知发送给User的过程中,以及基于联盟链实施上传和下载时,User、Orderer以及Committer的其中两者进行交互过程中,交互的消息中携带有加密信息,所述加密为基于ID密码学的加密方式;
所述加密方式具体包括:
发送消息方根据消息接收方的身份标识从所述公钥单元中获取相应的公钥随机数,再根据所述公钥随机数以及所述身份标识,得到所述消息接收方的公钥;
获取随机数,根据所述随机数、系统管理公钥以及消息接收方的公钥进行计算,得到加密密文;
根据所述加密密文对消息内容进行偏移加密,得到加密消息。
5.基于联盟链的抗量子计算云存储系统,实施在相互通信的联盟链成员之间,所述联盟链成员包括User以及多个提供相应服务的Endorser,Orderer和Committer,其特征在于,各方均配置有密钥卡,所有密钥卡均存储有各自的私钥、公钥池以及系统管理公钥;所述公钥池中存储有与各所述联盟成员一一对应的公钥单元,所述公钥单元中存储有公钥随机数,所述抗量子计算云存储方法包括基于联盟链实施查询文件,并根据查询结果进行相应的传输文件,所述传输文件包括从云存储服务器处上传和下载;
所述联盟链和用户包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现权利要求1~4任一项所述的基于联盟链的抗量子计算云存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910916937.6A CN110737907B (zh) | 2019-09-26 | 2019-09-26 | 基于联盟链的抗量子计算云存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910916937.6A CN110737907B (zh) | 2019-09-26 | 2019-09-26 | 基于联盟链的抗量子计算云存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737907A CN110737907A (zh) | 2020-01-31 |
CN110737907B true CN110737907B (zh) | 2021-06-22 |
Family
ID=69269627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910916937.6A Active CN110737907B (zh) | 2019-09-26 | 2019-09-26 | 基于联盟链的抗量子计算云存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110737907B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159750B (zh) * | 2020-04-07 | 2021-02-05 | 南京邮电大学 | 基于联盟链的汽车维修数据存储方法 |
CN114978518A (zh) * | 2021-02-20 | 2022-08-30 | 南京如般量子科技有限公司 | 基于量子通信服务站的抗量子计算数字签名方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768972A (zh) * | 2018-05-16 | 2018-11-06 | 智车优行科技(北京)有限公司 | 车辆数据的存储和访问方法及装置、系统、电子设备 |
CN109166221A (zh) * | 2018-09-30 | 2019-01-08 | 安徽灵图壹智能科技有限公司 | 一种区块链监狱探访管理方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101720268B1 (ko) * | 2015-10-26 | 2017-03-27 | (주)아이알엠 | 환자정보 보호를 위한 의료영상의 클라우드 데이터베이스 구축 및 판독 방법 |
CN107612934A (zh) * | 2017-10-24 | 2018-01-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于密钥分割的区块链移动端计算系统和方法 |
CN108259169B (zh) * | 2018-01-09 | 2021-07-20 | 北京大学深圳研究生院 | 一种基于区块链云存储的文件安全分享方法及系统 |
CN108768634B (zh) * | 2018-05-30 | 2021-03-23 | 数安时代科技股份有限公司 | 可验证加密签名生成方法和系统 |
CN109687976B (zh) * | 2019-01-07 | 2022-01-04 | 西安邮电大学 | 基于区块链与pki认证机制的车队组建及管理方法及系统 |
-
2019
- 2019-09-26 CN CN201910916937.6A patent/CN110737907B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108768972A (zh) * | 2018-05-16 | 2018-11-06 | 智车优行科技(北京)有限公司 | 车辆数据的存储和访问方法及装置、系统、电子设备 |
CN109166221A (zh) * | 2018-09-30 | 2019-01-08 | 安徽灵图壹智能科技有限公司 | 一种区块链监狱探访管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110737907A (zh) | 2020-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111639361B (zh) | 一种区块链密钥管理方法、多人共同签名方法及电子装置 | |
CN109687963B (zh) | 基于公钥池的抗量子计算联盟链交易方法和系统 | |
CN113364576B (zh) | 一种基于区块链的数据加密存证与共享方法 | |
US11212094B2 (en) | Joint blind key escrow | |
CN110768781B (zh) | 基于联盟链且抗量子计算的公私钥颁发方法及系统 | |
CN114730420A (zh) | 用于生成签名的系统和方法 | |
CN110519046B (zh) | 基于一次性非对称密钥对和qkd的量子通信服务站密钥协商方法和系统 | |
CN110661613B (zh) | 基于联盟链的抗量子计算隐式证书颁发方法及系统 | |
CN109919611B (zh) | 基于对称密钥池服务器的抗量子计算区块链交易方法和系统 | |
CN110690957B (zh) | 抗量子计算私钥备份、挂失及恢复方法及系统 | |
CN109670826B (zh) | 基于非对称密钥池的抗量子计算区块链交易方法 | |
CN110830244B (zh) | 基于身份秘密共享和联盟链的抗量子计算车联网方法及系统 | |
CN110930251A (zh) | 基于联盟链和隐式证书的抗量子计算云存储方法及系统 | |
CN110380845B (zh) | 基于群组对称密钥池的量子保密通信联盟链交易方法、系统、设备 | |
CN110737915A (zh) | 基于联盟链和隐式证书的抗量子计算匿名身份识别方法及系统 | |
CN110737907B (zh) | 基于联盟链的抗量子计算云存储方法及系统 | |
CN110557248A (zh) | 基于无证书密码学的抗量子计算签密的密钥更新方法和系统 | |
CN110493005B (zh) | 基于联盟链的抗量子计算公钥池更新方法和系统 | |
CN110557367B (zh) | 基于证书密码学的抗量子计算保密通信的密钥更新方法和系统 | |
CN108809996B (zh) | 不同流行度的删重存储数据的完整性审计方法 | |
CN110740034B (zh) | 基于联盟链的qkd网络认证密钥生成方法及系统 | |
CN110971403A (zh) | 一种基于秘密共享公钥池的抗量子计算区块链系统和交易方法 | |
CN110557247A (zh) | 基于身份的抗量子计算区块链方法和系统 | |
CN110636050B (zh) | 基于联盟链且抗量子计算的匿名身份识别方法及系统 | |
Li et al. | Recoverable Private Key Scheme for Consortium Blockchain Based on Verifiable Secret Sharing. |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |