基于区块链的密文去重和去中心化审计方法

文档序号:31470761发布日期:2022-09-09 23:09阅读:287来源:国知局
基于区块链的密文去重和去中心化审计方法

1.本发明涉及云存储中数据去重和完整性审计方法,特别是涉及一种基于区块链的密文去重和去中心化审计方法。


背景技术:

2.随着全球数据量的爆炸式增长,数据所有者本地存储数据的成本增加。因此,数据所有者自然希望将本地存储的大量数据迁移到存储成本更低的云存储服务器。云存储为数据所有者带来了相当大的好处,例如,无需复杂的本地存储管理且具有即时可用性。随着使用云存储服务的用户越来越多,云存储服务器产生了大量的冗余数据。为了提高云存储空间利用率,云存储服务提供商对冗余数据进行去重处理,即多个用户上传相同数据时服务器只保留一份。由于用户数据的机密性对于用户来说及其重要,一般上传数据至云服务器前会对数据进行加密处理。然而,传统的满足语义安全的加密算法与数据去重技术难以结合,因为相同数据选用相同的加密算法无法得到相同的密文,导致云存储服务器无法对用户上传的密文进行重复检测。收敛加密可以在保证数据机密性的同时支持密文去重。收敛加密算法使用的密钥源于数据本身,使得不同用户的相同数据可以加密成相同的密文从而可以实现密文去重。近年来,很多基于收敛加密的方案被提出,这些方案主要分为两类,客户端去重和服务端去重。客户端去重只需要通过上传去重标签到云服务器即可检查出云服务器是否已经存储数据,若云服务器中没有存储,则要求用户上传数据。若数据已经存储,用户无需上传数据。然而,服务端去重要求用户必须上传数据到云服务器。很明显,客户端去重大大节省了网络带宽的占用。然后,在客户端去重中,窃取到数据去重标签的攻击者可以直接从服务器端获取整个文件的访问权限,即所有权欺骗攻击。为了应对该问题,引入了所有权证明技术。
3.虽然用户从云存储中受益匪浅,但数据外包也带来了严重的安全问题。数据完整性作为云存储的核心安全问题已经成为研究热点。众所周知,云服务器并不完全可靠。云服务器的硬件或软件异常可能会导致数据损坏或丢失。云服务器甚至可能出于自身的经济利益,故意删除用户的部分数据。当这些问题发生时,云服务器也可能隐藏这些错误,并说服用户他们的数据保存完好。因此,用户需要一种有效的方法来验证远程数据的完整性。目前,研究者已经提出了许多远程数据完整性检查方案。现有的方案大部分引入了可信的第三方审计员来代理用户定期检查远程数据的完整性,为用户消除了繁重的验证负担。然而,当审计员是恶意时,这些方案容易受到攻击。为了抵抗恶意的审计员,人们提出了许多基于区块链的审计方案。然而,现有的基于区块链的审计方案依赖于容易出现单点故障的集中式审计员,且恶意审计员可能与恶意区块链矿工勾结产生有偏差的审计结果。另外,现有的审计方案缺乏有效的方法来惩罚恶意的云存储服务提供商,并对数据完整性遭到破坏的用户进行赔偿。为了解决该问题,引入公平仲裁机制,通过智能合约向云存储服务提供商收取一定的罚款,并赔偿数据完整性遭到破坏的用户。
4.基于以上原因,同时为了降低存储和审计成本,提高算法的效率和安全性,设计出
一种基于区块链的密文去重和去中心化审计方法是很有必要的。我们利用收敛加密算法确保数据的机密性,基于rsa的哈希函数构造同态认证标签以用于完整性审计,利用t
‑ꢀ
mht存储认证标签降低存储成本并提高查询效率,采用基于t-mht的所有权证明抵抗所有权欺骗攻击,基于rsa算法实现文件下载、删除以及更新中的身份认证。利用去中心化自治组织的概念阻止诱人的审计员勾结恶意的矿工并消除了容易出现单点故障的集中式审计员,利用公平仲裁机制惩罚恶意的云存储服务提供商,并对数据完整性遭到破坏的用户进行赔偿。


技术实现要素:

5.发明目的:本发明的目的是提供一种基于区块链的密文去重和去中心化审计方法,能够在云上只存储同一数据的唯一副本,并确保其机密性、完整性和安全性。
6.技术方案:本发明公开了一种基于区块链的密文去重和去中心化审计方法,包括如下步骤:
7.步骤1:系统初始化;
8.步骤2:数据拥有者请求上传文件,采用收敛加密算法实现文件加密并生成去重标签,上传去重标签至云服务器;
9.步骤3:云服务器检查去重标签是否已存在于云服务器中;若不存在,数据拥有者基于 rsa的哈希函数构造同态认证标签其中,ci,1≤i≤l为密文块,l为密文块的数量,并将认证标签利用结合了t树的默克哈希树(t-mht)结构存储至区块链中,同时,数据拥有者将密文和公钥上传至云服务器,云服务器对密文和认证标签进行一致性检测;若存在,进行基于t-mht的数据所有权证明;若一致性检测或所有权证明通过,将数据拥有者的公钥插入到去重标签的所有权列表中,否则,上传失败;
10.步骤4:数据拥有者请求下载文件,云服务器对数据拥有者进行身份认证,若认证通过,云服务器发送密文给数据拥有者,否则,下载失败;
11.步骤5:数据拥有者请求删除文件,云服务器对数据拥有者进行身份认证,若认证通过,云服务器把数据拥有者的公钥从去重标签的所有权列表中删除,否则,删除失败;
12.步骤6:数据拥有者请求更新文件,云服务器对旧文件执行步骤5中删除操作,对更新文件执行步骤3中上传操作;
13.步骤7:数据拥有者向区块链提交审计请求,区块链生成挑战信息,将挑战信息发送给云服务器;
14.步骤8:在挑战信息生成之后,区块链聚合挑战信息的认证标签发送到区块链选择的随机节点;云服务器在收到来自区块链的挑战信息之后,生成数据证明信息发送到区块链选择的随机节点;
15.步骤9:随机节点验证证明信息并创建审计日志;
16.步骤10:数据拥有者审核节点的行为。
17.进一步地,所述步骤1具体包括:
18.步骤1.1:密钥生成中心设置系统参数;密钥生成中心kgc选取两个保密的大素数p1和 q1并生成rsa模数n=p1q1,qrn是模n的二次剩余集,g是qrn的生成元,公开n和g;
19.步骤1.2:数据拥有者生成密钥对((e,n),d);do选取两个保密的大素数p2和q2,计算 n=p2q2,φ(n)=(p
2-1)(q
2-1),其中φ(n)是欧拉函数,do随机选取整数e,1<e<φ
(n),满足gcd(e,φ(n))=1,计算d,满足de≡1modφ(n),do的公钥为(e,n),私钥为d。
20.进一步地,所述步骤2具体包括:
21.步骤2.1:数据拥有者运行密钥生成算法k

keygen(f),该算法以文件f作为输入,返回收敛密钥k=h(f);
22.步骤2.2:数据拥有者运行加密算法c

enc(k,f),该算法以收敛密钥k和文件f作为输入,返回密文c;
23.步骤2.3:数据拥有者运行去重标签生成算法t
←‑
taggen(c),该算法以密文c作为输入,返回去重标签t=h(c);
24.步骤2.4:数据拥有者上传去重标签t至云服务器。
25.进一步地,所述步骤3中去重标签不存在于云服务器中的具体操作包括:
26.步骤3.1:云服务器检查去重标签t是否已存在于云服务器中,若不存在,进行步骤3.2,若存在,进行步骤3.3;
27.步骤3.2:云服务器返回“文件没有重复”给数据拥有者;数据拥有者将密文c拆分为一组密文块{c1,c2,

,cl},对于每个ci,1≤i≤l,计算认证标签tag(ci),并将认证标签利用t
‑ꢀ
mht结构存储至区块链中,同时将(c、(e,n))上传至云服务器;云服务器计算t

=h(c),并判断t

=t是否成立,若不成立,则文件上传失败;否则,继续下面的验证;云服务器首先按照数据拥有者的相同分块方式将密文c拆分为一组密文块{c1,c2,

,c
l
};对于每个ci, 1≤i≤l,云服务器计算对应认证标签tag(ci),然后将计算的认证标签与数据拥有者上传到区块链的认证标签进行比较,若不相同,则文件上传失败,否则,云服务器把数据拥有者的公钥(e,n)插入到去重标签t的所有权列表中,同时数据拥有者保存收敛密钥k和去重标签r,并删除本地文件f以节省存储空间。
28.进一步地,,所述步骤3中去重标签存在于云服务器中时,进行基于t-mht的数据所有权证明的具体操作包括:
29.步骤3.3.1:云服务器把密文c分成l个数据块,并随机选择一组数据块编号步骤3.3.1:云服务器把密文c分成l个数据块,并随机选择一组数据块编号作为挑战发送给数据拥有者;
30.步骤3.3.2:数据拥有者根据其拥有的密文c构建对应的t-mht,依据chal0中所有节点到根节点的路径,将挑战节点和其他节点按照一定的顺序发送给云服务器作为应答,即包含挑战chal0的能够恢复出t-mht根节点root的最小节点集合;
31.步骤3.3.3:云服务器收到数据拥有者的应答集合后,计算h(root),然后检查计算出的 h(root)是否与存储的相同;若相同,则证明通过,数据拥有者上传公钥(e,n),云服务器把 (e,n)插入到去重标签t的所有权列表中,否则,上传失败。
32.进一步地,所述步骤4具体包括:
33.步骤4.1:数据拥有者请求下载文件f,发送f对应的去重标签t以及公钥(e,n)至云服务器;
34.步骤4.2:云服务器对数据拥有者进行身份认证,执行如下认证协议:
35.步骤4.2.1:首先云服务器在所有权表y中查找公钥(e,n),选取一个随机值r,使用数据拥有者的公钥将r加密为r,并发送给数据拥有者;
36.步骤4.2.2:数据拥有者利用私钥d解密r得到r

,并返回h(r

)至云服务器;
37.步骤4.2.3:云服务器计算h(r),并检查h(r

)=h(r)是否成立;如果成立,身份验
证成功;否则认证失败,终止操作;
38.步骤4.2.4:云服务器发送密文c给数据拥有者,数据拥有者运行解密算法,该算法以密文c和收敛密钥k作为输入,返回文件f。
39.进一步地,所述步骤5具体包括:
40.步骤5.1:数据拥有者请求删除文件f,发送f对应的去重标签t以及公钥(e,n)至云服务器;
41.步骤5.2:云服务器执行算法步骤4.2中的身份认证协议;
42.步骤5.3:若认证通过,把当前数据拥有者的公钥(e,n)从去重标签y的所有权列表中删除;
43.步骤5.4:最后,云服务器检查去重标签y的所有权列表是否为空;若为空,则删除去重标签y对应的密文及相关信息来释放不必要的存储空间。
44.进一步地,所述步骤8中在挑战信息chal1生成之后,区块链通过t-mht的二分搜索算法获取chal1的认证标签,聚合认证标签为并将σ发送到区块链选择的随机节点node;同时,云服务器从区块链收到挑战信息chal1后,生成数据证明信启并发送给节点node。
45.进一步地,所述步骤9具体包括:
46.节点node根据以下等式审核证明信息proof
cs
,σ:
47.proof
cs
=σmod n
48.该算法输出0或1的审核结果,其中0表示拒绝,1表示接受,node创建一个日志条目 f
log
=(taskid、endtime、chal1、{proof
cs
,σ)、0/1),并将日志条目的哈希值存储在区块链中,其中,endtime为预定义的时间,taskid为智能合约调用newtask创建的一个id为 taskid的任务。
49.进一步地,所述步骤10具体包括:
50.数据拥有者审核node的日志条目,并验证以下等式:
51.proof
cs
=σmod n
52.将数据拥有者的验证结果输出为0或1,其中0表示拒绝,1表示接受;如果审核结果不正确,node将被添加到黑名单中,并在以后的审计过程中被拒绝。
53.有益效果:
54.本发明公开了一种基于区块链的密文去重和去中心化审计方法,利用收敛加密算法确保数据的机密性,基于rsa的哈希函数构造同态认证标签以用于完整性审计,利用t-mht存储认证标签降低存储成本并提高查询效率,采用基于t-mht的所有权证明抵抗所有权欺骗攻击,基于rsa算法实现文件下载、删除以及更新中的身份认证。利用去中心化自治组织的概念阻止诱人的审计员勾结恶意的矿工并消除了容易出现单点故障的集中式审计员,利用公平仲裁机制惩罚恶意的云存储服务提供商,并对数据完整性遭到破坏的用户进行赔偿。本发明能够在云上只存储同一数据的唯一副本,并确保其机密性、完整性和安全性。本发明提出的算法相对于同类其他算法在功能上有一定的优势,且采用多种技术降低存储成本并提高算法的效率和安全性,是一个较为理想的数据去重和审计方法,具有切实可行的实用价值。
附图说明
55.图1是本发明的文件上传流程图;
56.图2是本发明的收敛加密算法流程图;
57.图3是本发明的t-mht原理图;
58.图4是本发明的审计系统模型图。
具体实施方式
59.下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
60.本发明提出的密文去重和去中心化审计方案建立在区块链上。系统中有四种实体:密钥生成中心(kgc)、数据拥有者(do)、云服务器(cs)和区块链{bc)。kgc是一个可信第三方,负责生成系统参数。do是数据的拥有者,他们将数据外包给cs。cs由云存储服务提供商管理,并为do提供云存储服务,但do的外包数据可能会被cs损坏。bc是一个透明的、不可篡改的分布式账本,由一些许可节点维护。do的审计请求上传到bc后,这些节点可以合作生成挑战信息并验证证明信息。审计日志的哈希值被记录到bc中。表1描述了本发明所涉及的一些必要符号。
61.表1.符号
[0062][0063]
本发明公开的基于区块链的密文去重和去中心化审计方法包括如下步骤:
[0064]
(1)系统初始化
[0065]
kgc选取两个保密的大素数p1和q1并生成rsa模数n=p1q1。qrn是模n的二次剩余集, g是qrn的生成元,公开n和g。do选取两个保密的大素数p2和q2,计算n=p2q2,φ(n)= {p
2-1)(q2-1),其中φ(n)是欧拉函数。do随机选取整数e,1<e<φ(n),满足 gcd(e,φ(n))=1。计算d,满足de≡1modφ(n)。do的公钥为(e,n),私钥为d。本方案中, hash算法均实例化为
sha-256。收敛加密方案中,对称加解密算法实例化为aes-256。
[0066]
(2)去重阶段
[0067]
(2.1)文件上传
[0068]
文件上传流程图如图1所示,详细步骤如下:
[0069]
(2.1.1)数据拥有者do请求上传文件f,采用收敛加密(ce)算法实现文件加密并生成去重标签,如图2所示。do首先运行密钥生成算法k

keygen(f),该算法以文件f作为输入,返回收敛密钥k=h(f),然后运行加密算法c

enc(k,f),该算法以收敛密钥k和文件f作为输入,返回密文c,最后运行去重标签生成算法y

taggen(c),该算法以密文c作为输入,返回去重标签t=h(c),并上传去重标签y至云服务器cs。
[0070]
(2.1.2)cs检查去重标签t是否已经存在于cs中。
[0071]
(2.1.2.1)若不存在,cs返回“文件没有重复”给do,即该文件为初始上传。do将密文c 拆分为一组密文块{c1,c2,

,c
l
},对于每个ci,1≤i≤l,计算认证标签 (该标签用于数据完整性审计),并将认证标签利用结合了t树的默克哈希树(t-mht)结构存储至区块链bc中,同时将(c、(e,n))上传至cs。cs计算t

=h(c),并判断t

=t是否成立。若不成立,则文件上传失败。否则,继续下面的验证。cs首先按照do的相同分块方式将密文c拆分为一组密文块{c1,c2,

,c
l
}。对于每个ci,1≤i≤l,cs计算对应认证标签然后将计算的认证标签与do上传到bc的认证标签进行比较。若不相同,则文件上传失败。否则,cs把do的公钥(e,n)插入到去重标签t的所有权列表中,同时do保存收敛密钥k和去重标签t,并删除本地文件f以节省存储空间。在文件上传阶段,我们利用t-mht结构对认证标签进行存储可以降低存储成本和提高查询效率。图3描述了一个基于14个认证标签的t-mht示例,将认证标签索引设置为从1到14,每个节点有两个认证标签。节点i的哈希值h(i)根据节点中认证标签的哈希值和其子节点的哈希值计算得到,即
[0072][0073]
h(i)是当前节点i的哈希值,以节点i=a举例,h(a)=h(h(tag(c3))||h(tag(c4))),其中||表示串联操作。
[0074]
为了支持高效的查询,我们在区块链bc的块头中嵌入了当前块体的索引范围字段。当使用索引index查询标签时,我们按从最新的一个块到旧块遍历的顺序,将索引index和块头的索引范围字段进行比较。如果索引index在某个块头的索引范围字段内,我们通过t-mht 中的二元搜索法找到认证标签。t-mht的搜索算法如算法1所示。例如,在图3中,如果我们想找到索引为10的标签,我们首先将10与根节点root的最小索引值7和最大索引值8 进行比较。因为10大于最大索引值8,所以我们访问root的右子节点b。接下来,我们将10 与节点b的最小索引值11和最大索引值12进行比较。因为10小于节点b的最小索引值11,所以我们访问它的左子节点e。最后,我们将10与节点e的索引范围比较。因为10在节点e 的索引范围字段内,所以我们得到节点e中的tag(c
10
)。
[0075]
算法1
[0076][0077]
(2.1.2.2)若存在,进行如下基于t-mht的数据所有权证明pow:
[0078]
(2.1.2.2.1)powchal(cs

do):cs把密文c分成l个数据块,并随机选择一组数据块编号作为挑战发送给do。如图3所示,cs随机选择chal0={5,6}作为挑战。
[0079]
(2.1.2.2.2)powpro(do

cs):do根据其拥有的密文c构建对应的t-mht,依据chal0中的所有节点到根节点的路径,将挑战节点和其他节点按照一定的顺序发送给cs作为应答,即包含挑战chal0的能够恢复出t-mht根节点root的最小节点集合。在图3的示例中,应答集合为{h(tag(c5)),h(tag(c6)),h(c),h(b),h(tag(c3)),h(tag(c4)),h(tag(c7)),h(tag(c8))}。
[0080]
(2.1.2.2.3)powver:cs收到do的应答集合后,计算h(a)=h(h(tag(c5))||h(tag(c6)) ||h(c)||h(tag(c3))||h(tag(c4))),h(root)=h(h(tag(c7))||h(yag(c8))||h(a)||h(b)),然后检查计算出的h(root)是否与存储的相同。若相同,则证明通过,do上传公钥(e,n),cs把 (e,n)插入到去重标签y的所有权列表中。否则,证明失败。
[0081]
(2.2)文件下载
[0082]
(2.2.1)当do请求下载文件f时,它发送f对应的去重标签t以及do对应的公钥(e,n)至 cs。
[0083]
(2.2.2)cs对do进行身份认证,执行如下认证协议:
[0084]
(2.2.2.1)首先cs在所有权表t中查找公钥(e,n),选取一个随机值r,计算r≡remod n并发送给do。
[0085]
(2.2.2.2)do利用私钥d解密r得到r

≡ramod n,并返回h(r

)至cs。
[0086]
(2.2.2.3)cs计算h(r),并检查h(r

)=h(r)是否成立。如果成立,身份验证成功。否则认证失败,终止操作。
[0087]
(2.2.3)cs发送密文c给do,do运行解密算法f

dec(c,k),该算法以密文c和收敛
密钥 k为输入,返回文件f。
[0088]
(2.3)文件删除
[0089]
(2.3.1)当do请求删除文件f时,它发送f对应的去重标签t以及do对应的公钥(e,n)至 cs。
[0090]
(2.3.2)cs执行算法2.2中的身份认证协议。
[0091]
(2.3.3)若认证通过,把当前do的公钥(e,n)从去重标签t的所有权列表中删除。
[0092]
(2.3.4)最后,cs检查去重标签t的所有权列表是否为空。若为空,则删除去重标签t对应的密文及相关信息来释放不必要的存储空间。
[0093]
(2.4)文件更新
[0094]
更新操作是删除和上传步骤的组合。当do请求文件更新时,cs对旧文件执行删除操作 (算法2.3),对更新的文件执行上传操作(算法2.1)。
[0095]
(3)审计阶段
[0096]
如图4所示,虚线部分在去重阶段已经执行,实线部分为审计阶段的步骤。do向区块链bc提交审计请求。bc调用challgen算法(该算法在智能合约中实现)生成挑战信息,并将挑战信息发送给cs。cs在收到来自bc的挑战信息后,调用proofgen算法生成证明信息。 bc选择一个具有足够计算能力的随机节点node,node调用audit算法来验证证明信息。do 调用checklog算法审计node的行为。同时,do与cs签订智能合约。do向智能合约发送 deposit
do
作为其押金,cs向智能合约发送deposit
cs
作为其押金。如果完整性审计通过,智能合约会自动将do的押金deposit
do
作为审计费发送给bc选择的随机节点node,并将cs的押金deposit
cs
返回给cs。否则,智能合约将cs的押金deposit
cs
发送给do作为惩罚,并将 do的押金deposit
do
发送给node。
[0097]
(3.1)challgen(params,endtime)

chal1[0098]
在do向bc提交审计请求后,智能合约将启动一些活动,这些活动将在预定义的时间 endtime内结束,以在一些获得许可的参与者中生成随机挑战消息chal1={i,vi}。
[0099]
每个活动通常有三个阶段:提交、揭示和获取随机数。每个阶段的时间可由do指定。该活动在bc中的智能合约中实施。
[0100]
提交阶段。每个参与者提交其秘密值的散列值和一定金额的押金,作为诚实的保证。这些参与者通常有足够的计算能力。
[0101]
揭示阶段。每个参与者都会透露其秘密值,智能合约将会检查透露的秘密值的哈希值是否与在提交阶段提交的哈希值相同。如果恶意参与者在此阶段未能透露其秘密值或透露不同的秘密值,其押金将不予返还,并将其添加到黑名单中。
[0102]
获取随机数阶段。智能合约将检查成功收集的秘密值,并从所有参与者的秘密值中计算随机数,将押金和奖金返还给诚实的参与者。
[0103]
我们使用单个智能合约实现bc中的challgen算法和其他功能。do向bc发送审计请求后,智能合约将调用newtask创建一个id为taskid的任务,并启动一些可以添加到任务中的活动。然后,每个活动生成一个随机值。最后,任务将从所有活动中获得许多随机值。请注意,在我们当前的构造中,我们为审计任务创建了许多活动。这种方法也可以通过在bc中创建一个活动来替代。然后,智能合约可以选择一个随机节点node来验证来自该活动所有参与者的证明信息。所选的许可节点可以基于此活动的随机值生成挑战消息,并验证云服务
器生成的证明信息。
[0104]
(3.2)proofgen(params,chal1)

proof
cs
,σ
[0105]
在挑战信息chal1生成之后,bc会通过t-mht的二分搜索算法获取chal1的认证标签,并聚合认证标签发送到node。同时,cs从bc收到挑战信息chal1后,生成数据证明信息并发送给节点node。
[0106]
(3.3)audit(params,proof
cs
,σ)

0/1
[0107]
bc中的所选节点node根据以下等式审核证明信息proof
cs
,σ:
[0108]
proof
cs
=σmod n
[0109]
该算法输出0或1的审核结果,其中0表示拒绝,1表示接受。然后,node创建一个日志条目f
log
=(taskid、endtime、chal1、(proof
cs
,σ)、0/1),并将日志条目的哈希值存储在bc中。
[0110]
(3.4)checklog(params,f
log
)

0/1
[0111]
do审核node的日志条目,并验证以下等式:
[0112]
proof
cs
=σmod n
[0113]
该算法将do的验证结果输出为0或1,其中0表示拒绝,1表示接受。如果审核结果不正确,node将被添加到黑名单中,并在以后的审计过程中被拒绝。
[0114]
上述实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1