抗选择明文攻击的基于属性的共享数据存储、访问方法及系统

文档序号:28856219发布日期:2022-02-11 18:44阅读:156来源:国知局
抗选择明文攻击的基于属性的共享数据存储、访问方法及系统

1.本发明涉及隐私保护领域,尤其涉及一种抗选择明文攻击的基于属性的共享数据存储、访问方法及系统。


背景技术:

2.近几年区块链技术和云计算技术已成为研究的技术热点。
3.(一)区块链技术
4.区块链是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。
5.区块链的四个主要特性是:
6.(1)去中心化(decentralized)。整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任意一个节点的损坏或者失去都不会影响整个系统的运作;
7.(2)去信任(trustless)。参与整个系统中的每个节点之间进行数据交换是无需互相信任的,整个系统的运作规则是公开透明的,所有的数据内容也是公开的;
8.(3)集体维护(collectively maintain)。系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的,而这些具有维护功能的节点是任何人都可以参与的;
9.(4)可靠数据库(reliable database)。整个系统将通过分布式数据库的形式,让每个参与节点都能获得一份完整数据库的拷贝。除非能够同时控制整个系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,也无法影响其他节点上的数据内容。因此参与系统中的节点越多和计算能力越强,该系统中的数据安全性越高。
10.由以上四个特征会引申出另外2个特征:
11.(1)开源(open source):由于整个系统的运作规则必须是公开透明的,所以对于程序而言,整个系统必定会是开源的。
12.(2)隐私保护(anonymity):由于节点和节点之间是无需互相信任的,因此节点和节点之间无需公开身份,在系统中的每个参与的节点的隐私都是受到保护。
13.区块链目前分为三类:私有链、公有链、联盟链。
14.·
公有链是最早的区块链,也是目前应用最广泛的的区块链。是指像比特币区块链这样的完全去中心化的、不受任何机构控制的区块链。世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。共识过程的参与者通过密码学技术以及内建的经济激励维护数据库的安全。公有链具有完全公开、不受控制、依靠加密技术来保证安全的特点。
15.·
私有链是指存在一定的中心化控制的区块链。仅仅使用区块链的总账技术进行
记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。参与的节点只有用户自己,数据的访问和使用有严格的权限管理。联盟链由于存在一定的中心化控制,所以也可以认为是属于私有链范畴。由于在私有链中全是用户说了算,里面的数据没有无法更改的特性,对于第三方也没有多大的保障。一般用作内部审计。
16.·
联盟链是由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过问记账过程。参与区块链的节点是事先选择好的,节点间很可能是有很好的网络连接。这样的区块链上可以采用非工作量证明的其他共识算法,比如有100家金融机构之间建立了某个区块链,规定必须67个以上的机构同意才算达成共识。联盟链可以做到很好的节点间的连接,只需要极少的成本就能维持运行,提供迅速的交易处理和低廉的交易费用,有很好的扩展性,但是扩展性随着节点增加又会下降。数据可保证一定的隐私,同时该区块链的应用范围有限制。
17.随着区块链技术的发展,越来越多的项目在区块链上得以部署,其中最广泛的应用之一就是数据共享。由于区块链是一个分布式的数据库,具有完全共享、透明和去中心化的特性,故非常适合于在数据共享的场景中。然而,区块链所需存储开销大,链上数据搜索困难等问题仍然严重阻碍了其在数据共享领域的应用。
18.(二)云计算技术
19.随着网络的发展和科技的进步,现实生活中产生了各种海量数据。云存储服务能够为用户提供巨大的存储空间,用户可以将自己大量的数据按需存储在云端。而数据共享是云存储提供的一个十分重要的服务,近年来被广泛应用。在共享数据云存储环境中,通过云端,属于某个群体中的用户都可以上传自己的文件并分享给群中的其他任何成员。
20.目前,许多国内外的公司都推出了自己的云存储服务,例如:百度云、腾讯云、坚果云、google cloud、apple cloud等等。然而,由于用户失去了对数据的直接控制,云端的任何故障,如系统的软硬件故障、人为的失误或是系统漏洞等安全威胁,都有可能导致用户的数据泄露和丢失。不仅如此,某些云服务提供商(csp)为了维护自己的声誉或避免对用户赔偿而故意隐瞒数据丢失的事实。更为严重的是,为了节约自己的存储空间、牟取私利,某些云服务提供商故意删除用户不经常访问的数据。目前为止,许多著名的云服务提供商都曾出现过数据泄露甚至导致服务终止的安全事件,如:苹果云存储平台icloud的信息泄露事件、sidekick出现的的服务中断事件、亚马逊s3存储服务停机事件、gmail大量邮件被删除事件等。因此,如何确保存储在云端上的数据是完整的且可以被用户随时取回具有重要的现实意义。一方面,这可以增强了用户对云存储服务的信心,让更多消费者用的放心。另一方面,也能够使云不断优化服务,促进了云存储行业的健康发展。然而,目前对于云端数据完整性的检验大多基于pki设计或者基于身份设计,这些方案的往往依赖于中心的机构,需要大量复杂且耗时的证书产生、证书存储、证书更新和证书验证操作,需要复杂的身份管理与密钥管理,容易泄漏用户身份信息,不利于用户身份隐私的保护。
21.(三)云-区块链共享模型
22.考虑到云庞大的存储空间优势以及区块链的防篡改等优势,云-区块链结合的数据共享模型应用而生。以电子病历为例,涉及主体主要有患者、医生、云存储服务器和区块链四个角色。患者就诊后产生电子病历,由医生将电子病历上传至云存储服务器,同时将有
关的索引信息上传至区块链。患者的电子病历存储在云存储服务器上,与该病历相关的索引信息存储在联盟链上。当需要数据时,通过搜索区块链上的信息获得云端数据的存储地址,定位到云端的相应病历密文。尽管,云-区块链结合的数据共享模式能在一定程度上减轻维护区块链所带来的开销,但是链上数据的隐私保护、访问控制以及用户身份的隐私保护等问题不容忽视。以上述电子病历为例,在实际的应用中仍然存储一下问题:(1)患者不希望自己的病历数据以明文的形式在云端存储;(2)无论是患者还是医生,在访问数据时候不希望泄漏真实的身份信息;(3)患者不希望自己的病历信息被非授权的用户访问。面对以上现实需求,当前并没有现有的方法或系统能解决在云-区块链共享模型中的出现的上述问题,因此需要进一步进行研究。


技术实现要素:

23.本发明的目的在于,提供一种抗选择明文攻击的基于属性的共享数据存储、访问方法及系统,可以有效解决现有技术中存在的问题,不仅可以在云-区块链的数据共享场景中实现细粒度访问控制的数据共享,而且能够保证数据和用户身份的隐私。
24.为解决上述技术问题,本发明采用如下的技术方案:
25.一种抗选择明文攻击的基于属性的共享数据存储方法,适用于由数据所有者、数据用户、云存储服务器及属性机构组成的区块链系统,其步骤包括:
26.1)向属性机构申请并获取该数据所有者拥有的一属性ai的第一属性密钥,所述第一属性密钥通过属性机构生成的属性主公私钥对得到,所述属性机构还生成该属性ai的公开参数,并将属性主公钥与公开参数广播至区块链中;
27.2)根据设定访问策略及第一属性密钥对共享数据进行签密,得到密文和签名,并将密文上传至云存储服务器;
28.3)根据云存储服务器返回的存储地址,构建一包括设定访问策略、存储地址及签名的交易,并广播至区块链中。
29.进一步地,通过以下策略将交易广播至区块链中:
30.1)交易中还包括一交易签名;
31.2)接收到该交易的区块链维护者,通过验证交易签名,将合法交易广播中区块链中。
32.进一步地,通过以下步骤得到公开参数与属性主公私钥对:
33.1)给定一安全参数λ,运行双线性对生成算法,得到双线性群的参数q,g,g
t
,g,e,其中q是群g和g
t
的阶数,g是群g和g
t
的生成元,e是映射g
×g→gt
,两个抗碰撞的哈希函数h1:{0.1}
*
→zp
,h2:{0.1}
*

g,z
p
为模p剩余类环;
34.2)选择一个随机数α∈z
p*
,z
p*
为z
p
的乘法群,计算a香e(g,g)
α
,并根据属性集合u内的属性ai,选择一个随机数vi∈z
p*
,计算
35.3)获取公开参数pp=(q,g,g
t
,g,e,h1,h2)、属性主公钥apk=(a,vi)及属性主私钥ask=(α,vi)。
36.进一步地,通过以下步骤生成第一属性密钥:
37.1)根据数据所有者的用户id,选择一个随机数r∈z
p*

38.2)根据该属性ai,选择一个随机数ri∈z
p*

39.3)计算sk=g
α-r
,得到第一属性密钥sk={sk,{ski,ski′
}}。
40.进一步地,通过以下步骤得到密文和签名:
41.1)获取公开参数pp=(q,g,g
t
,g,e,h1,h2)与属性主公钥apk=(a,vi);
42.2)根据设定访问策略得到一访问矩阵m,其中矩阵m满足ρ(mi)=ai,mi是矩阵m的第i行,ρ()为将参数映射为属性的函数;
43.3)选择一个随机数s∈z
p
及一个矩阵向量di∈z
p
,其中t为矩阵转置;
44.4)令计算密文ct={c0,c0′
,{ci,ci′
}},其中c0=m
·as
,c0′
=gs,,m为共享数据;
45.5)选择一个随机数计算签名σ=(v,h,r,r),其中v=e(c0′
,g
ξ
),h=h1(m,v,m),r=g
ξ
·
skh,r

=skh。
46.一种基于属性的共享数据访问方法,其步骤包括:
47.1)拥有该属性ai的数据用户向该属性机构申请并获取该属性的第二属性密钥;
48.2)获取区块链中的交易及公开参数,并通过所述交易中的存储地址,获取云存储服务器中的密文;
49.3)根据第二属性密钥、公开参数、密文及交易中的设定访问策略与签名,得到共享数据。
50.进一步地,通过以下步骤得到共享数据:
51.1)定义集合i∈{1,2,...,n},满足ρ(i)∈p,并计算一组系数满足公式s=π
i∈i
wiλi;
52.2)通过交易中的设定访问策略获取访问矩阵m


53.3)计算数据其中其中
54.4)若h=h(m

,v

,m

),则数据m

为共享数据m,其中
55.进一步地,该区块链系统还包括云计算服务器;当数据用户的计算能力受限时,通过以下步骤得到共享数据:
56.1)选择一个随机数t作为外包密钥ok=t,通过第二属性密钥计算属性转换密钥tk={tki,tki′
},并将属性转换密钥tk与密文发送至云计算服务器,以获取辅助任务结果其中集合i∈{1,2,...,n}且满足ρ(i)∈p,系数且满足s=π
i∈i
wiλi;
57.2)通过交易中的设定访问策略,得到矩阵m


58.3)根据辅助任务结果t1与外包密钥ok,得到数据其中
59.4)若h香h(m

,v

,m

),则数据m

为共享数据m,其中
60.进一步地,当区块链系统内一数据所有者或数据用户的一属性被撤销时,属性机构通过以下步骤更新未撤销该属性的数据所有者或数据用户的属性密钥:
61.1)对于该属性ai,选择一随机数
62.2)计算数据所有者或数据用户的新属性密钥其中其中
63.3)将新属性密钥sk

发送至相应的数据所有者或数据用户。
64.进一步地,当区块链系统内一数据所有者或数据用户的一属性被撤销时,属性机构通过以下步骤更新云存储服务器存储的密文ct:
65.1)对于该属性ai,选择一随机数
66.2)获取云存储服务器存储的密文ct={c0,c0′
,ci,ci′
}};
67.3)计算更新的密文并存储至云存储服务器,其中
68.一种基于属性的共享数据访问系统,包括:
69.属性机构,用以生成一属性ai的公开参数与属性主公私钥对,并将公开参数与属性主公钥广播至区块链中;生成各数据所有者和数据用户的属性密钥,并分发至相应的数据所有者和数据用户;
70.数据所有者,用以根据设定访问策略及第一属性密钥对共享数据进行签密,得到密文和签名,并将密文上传至云存储服务器;根据云存储服务器返回的存储地址,构建一包括设定访问策略、存储地址及签名的交易,并广播至区块链中;
71.云存储服务器,用以存储密文;
72.数据用户,用以获取区块链中的交易及公开参数,并通过所述交易中的存储地址,获取云存储服务器中的密文;根据第二属性密钥、公开参数、密文及交易中的设定访问策略与签名,得到共享数据。
73.与现有技术相比,本发明具有以下优点:
74.(1)本发明能够支持在云与区块链相结合的数据共享模型下,利用基于属性的签密技术,使用户实现安全可控的数据共享过程;
75.(2)本发明具备更全面的安全性:第一,数据拥有者对访问策略的自主定义权限;第二,云端数据存储安全性能够保证,数据拥有者上传的过程中,根据定义的访问策略进行数据的加密,保证了云存储服务器不能获得真实的数据;第三,实现云端数据存储完整性可验证和数据拥有者身份的隐私,数据拥有者使用提出的方案进行签名,并且该签名存储在不可篡改的区块链上,实现了数据拥有者身份的隐私,同时云端数据的完整性也能通过验证签名的有效性得到验证;第四,共享数据的访问可控,由于云端数据是根据访问策略进行
加密的,这就实现了只有满足访问策略的用户才能够解密数据,而访问策略是通过一组属性进行抽象的,实现了数据访问者的身份的隐私性,保证了数据访问者能够根据拥有的属性对数据进行访问,而不泄漏真实身份;
76.(3)本发明使用多属性权威,能够适用于区块链的分布式环境,尽管在属性密钥的分发个更新过程需要属性权威的参加,但是在用户验证过程中是属性权威可以处于离线状态,用户能够在不与属性权威交互的情况下进行签名的验证,避免了单一节点故障问题;
77.(4)本发明支持用户的更新密钥自主生成:在密钥更新过程中,属性权威只需要向未被撤销属性的用户生成一个更新密钥,用户根据更新密钥对拥有的属性签名密钥进行更新;该方法的好处是:一方面,用户不需要与属性权威产生反向的交互,因此能够在保证安全的情况下节省通讯开销;另一方面,属性权威无需为所有用户一一生成相应的属性密钥,因此能够减轻属性权威的计算负担,加速更新过程;
78.(5)本发明不仅支持属性的撤销,而且支持云端密文的更新:在密文更新过程中,属性权威需要向云存储服务器发送相应属性的更新密钥,云存储服务器根据更新密钥对涉及相应属性的密文进行更新;在该过程中,一方面,用户不需要重新计算密文再向云存储服务器提交,另一方面,即使密文发生变化,区块链中的响应信息无需改变,用户仍然可以根据索引获得共享数据。
附图说明
79.图1是本发明的系统模型示意图。
80.图2是区块链的区块结构和交易结构示意图。
具体实施方式
81.下面结合附图和具体实施方式对本发明作进一步的说明。
82.本发明的实施例:一种抗选择明文攻击安全的基于属性的分布式签密方法,包括以下步骤:
83.(一)系统建立
84.s1.系统初始化:系统包括六种类型的实体,如图1所示:数据所有者(do),数据用户(du),云存储服务器(css),云计算服务器(ccs),属性机构(aa)和区块链(bc)。系统在初始时设定公共参数pp。aa负责维护属性集,生成属性公私钥ask和apk。对于系统中的实体,aa是完全受信任的,并且不同的属性授权机构管理不同的属性。bc由系统内的用户共同维护。do是数据的拥有者,能够制定其拥有的数据的访问规则。do负责将共享的数据加密上传至云存储服务器,将相关索引和验证信息发送到区块链。du是共享数据的访问者,符合访问策略的du能够从bc获取数据的存储地址,可以根据该地址定位到云端的共享数据。ccs是一个可选项,为了计算能力受限的用户所选择,可以帮助资源受限的用户实现数据的解密过程。
85.步骤s1中,通过以下步骤生成公开参数pp和属性密钥ask,apk:
86.(1)给定一个安全参数λ,运行双线性对生成算法,得到双线性群的参数,双线性群参数包括q,g,g
t
,g,e,其中是q群g和g
t
的阶数,g是群g的生成元,e是映射g
×g→gt
,两个抗碰撞的哈希函数h1:{0.1}
*
→zp
,h2:{0.1}
*

g,z
p
为模p剩余类环。
87.(2)aa选择一个随机数α∈z
p*
,z
p*
为z
p
的乘法群,计算a=e(g,g)
α
。对于属性集合u内的属性ai,选择一个随机数vi∈z
p*
,计算
88.公开参数pp=(q,g,g
t
,g,e,h1,h2),属性主公钥apk=(a,vi),属性主私钥ask=(α,vi)。
89.s2.密钥提取:拥有相应属性的用户向对应的权威机构申请相应的属性密钥sk。
90.步骤s2中,密钥提取步骤执行如下:
91.(1)对于用户id,选择一个随机数r∈z
p*

92.(2)为用户id拥有的属性ai,选择一个随机数ri∈z
p*

93.(3)计算sk=g
α-r

94.(4)用户id拥有的属性ai对应的属性密钥sk={sk,{ski,ski′
}}。
95.(二)数据上传
96.s3.签密:用户根据访问策略对共享的数据信息进行加密和签名。根据定义访问策略,使用属性的公钥对数据进行加密和签名,得到密文ct和签名σ。用户将访问策略,密文ct上传至云存储服务器。根据云存储服务器返回的存储地址,构建并广播一条交易,交易结构如图2所示。该交易包含:访问策略,数据云端地址,签名σ以及交易的签名等信息。接收到该交易的区块链维护者,只需验证交易签名的有效性。如果验证通过,说明该交易来自合法成员,该信息将被打包进区块,区块的机构如图2所示。
97.步骤s3中,用户的签密过程通过以下步骤进行生成:
98.(1)用户id定义访问策略p,根据p得到相应的访问矩阵m,该矩阵m满足
99.ρ(mi)=ai,其中mi是矩阵m的第i行,ρ()为将参数映射为属性的函数;
100.(2)选择一个随机数s∈z
p
及一个矩阵向量di∈z
p
,其中“t”表示矩阵的转置,能够实现将行向量转化为列向量;
101.(3)令计算密文ct={c0,c0′
,{ci,ci′
}},其中c0=m
·as
,c0′
=gs,,m为共享数据;
102.(4)选择一个随机数计算签名σ=(v,h,r,r

),其中v=e(c0′
,g
ξ
),h=h1(m,v,m),r=g
ξ
·
skh,r

=skh。
103.(三)数据解密
104.s4.解签密:du通过访问bc获得数据的地址。通过改地址定位到共享的数据的密文ct。之后,du通过验证签名σ的有效性,检验数据的完整性。du通过属性密钥sk对密文进行ct进行解签密,获得共享的数据。
105.步骤s4中,解签密过程包括以下步骤:
106.由于方案中云计算服务器作为一个可选项,可以帮助计算能力受限的用户进行解密过程,但是鉴于云的不可信特点,需要保证云计算服务器不能够获得计算任务的输入与输出值。在s4中使用云计算服务器与不使用云计算服务器在步骤上略有不同,下面进行分别阐述。
107.使用云计算服务器的情况下:
108.(1)用户选择一个随机数t作为外包密钥ok=t,计算外包时需要使用属性转换密
钥tk={tki,tki′
},其中
109.(2)云计算服务器进行下述计算:
110.首先,定义集合i∈{1,2,...,n},满足ρ(i)∈p。之后,计算一组系数满足公式s=∏
i∈i
wiλi;最后,该云计算服务器执行计算:
[0111][0112]
(3)用户根据云计算服务器返回的结果,使用外包密钥进行解密,得到共享数据m

[0113][0114]
如果h=h1(m

,v

,m

),那么m

=m。
[0115]
不使用云计算服务器的情况下:
[0116]
首先,定义集合i∈{1,2,...,n},满足ρ(i)∈p。之后,计算一组系数满足公式s=∏
i∈i
wiλi;之后用户进行下列:
[0117][0118][0119][0120]
h=h(m

,v

,m

).
[0121]
同样,如果h=h(m

,v

,m

),那么m

=m。
[0122]
(四)数据更新
[0123]
s5.更新:系统内出现用户属性的撤销问题时,未撤销该属性的用户可以自行更新属性密钥sk,与该属性相关的相应签密文件ct也会进行更新。
[0124]
步骤s5中,更新过程包括以下操作:
[0125]
(1)对于相关的属性ai,aa选择一个随机数计算
[0126]
(2)未被撤销该属性的用户id,计算
[0127]
(3)云端与该属性相关的密文,计算
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1