一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于区块链和SGX的外包数据完整性审计方法及系统与流程

2022-07-23 12:29:49 来源:中国专利 TAG:

基于区块链和sgx的外包数据完整性审计方法及系统
技术领域
1.本发明属于数据安全与隐私保护技术领域,尤其涉及一种基于区块链和sgx的外包数据完整性审计方法及系统。


背景技术:

2.随着网络信息技术的快速发展,数据量急剧膨胀。为了解决数据存储问题,越来越多的数据拥有者选择将数据外包存储在云存储服务器或ipfs等第三方存储服务器中,外包存储不仅可以降低数据拥有者的存储成本,还可以不受设备和地域限制的随时下载和使用存储数据。然而第三方存储服务器在给用户带来一定便利的同时,也会带来数据损坏或丢失等安全隐患,一旦发生数据损坏和数据丢失等安全事件,外包数据的完整性就会发生变化。实际上,用户将数据外包存储在云存储服务器等第三方服务器中,就失去了对数据的物理控制权。为了保障外包数据的安全性,用户和外包存储服务器通常采用数据完整性审计的方法判断数据是否遭到破坏。当数据完整性遭到破坏时,也就意味着数据发生了损坏或者丢失等安全问题。第三方存储服务器作为一个独立的实体并不是完全可信的,恶意的存储服务器可能会隐藏外包数据损坏事件或删除用户长时间未使用过的外包数据,而只存储外包数据完整性审计标签,以欺诈的方式通过数据完整性审计。另外,网络攻击者可能会为了政治、经济等因素攻击存储服务器,也会造成外包数据破坏或丢失。
3.为了保障外包数据的安全性,数据拥有者和数据存储方需要定期或者不定期的校验外包数据是否完整,同时,数据请求者在使用外包数据时,也需要对外包数据进行完整性审计,以确认数据没有遭到破坏。因此,安全高效的外包数据完整性审计是非常有必要的。
4.目前,数据完整性审计技术支持以下两种常见的审计方法:私有审计和公共审计。其中,私有审计方法中用户自己审计外包数据的完整性,要求用户保持周期性地在线并执行审计任务,这将对用户有严格的通信资源要求,对于带宽资源受限的用户,要求周期性保持在线的私有审计方法不是最优的方式。相较而言,公共审计是一种应用更广泛的数据完整性审计方法,这类方法通过用户授权第三方审计机构来完成外包数据的完整性审计。首先,它假设用户授权的第三方机构是完全可信的,但是在现实中,第三方审计机构很难做到完全可信,一旦第三方审计机构遭到攻击或存在恶意行为,将会导致数据完整性审计结果不正确;其次,即使第三方机构是完全可信,这类方法仍需要额外的计算开销来判断数据完整性审计结果的准确性。因此,现在的公共审计方法在可信性和审计效率方面还有待提高。


技术实现要素:

5.为了解决现有外包数据完整性审计方法可信性较低且审计效率较差的问题,本发明公开了一种基于区块链和sgx的外包数据完整性审计方法及系统,支持外包数据预处理、加密存储、基于区块链的数据发布和使用请求授权,通过链上链下协同的方式,利用sgx可信硬件执行环境,审计合约自动完成外包数据完整性审计,并上链公开;不依赖任何第三方审计机构,可有效避免恶意欺诈,提升了数据完整性审计的可信性和效率。
6.本发明公开的基于区块链和sgx的外包数据完整性审计方法及系统即可用于数据使用方在使用数据前校验数据的完整性,也可以用于数据拥有者和数据外包存储方定期或不定期的对外包存储数据进行完整性审计,以保障外包存储数据的安全性。
7.为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:本发明第一方面提供了一种基于区块链和sgx的外包数据完整性审计方法。
8.一种基于区块链和sgx的外包数据完整性审计方法,包括以下步骤:数据拥有者对外包数据进行预处理,生成加密数据块及辅助信息,上传至数据存储方,并接收返回的存储哈希地址;数据拥有者将外包数据摘要和存储哈希地址上传至区块链,通过区块链发布数据;数据请求者与sgx完成双向身份认证后,在区块链上进行数据资源查询,发送数据使用请求后通过区块链接收数据使用授权,向区块链部署审计合约;数据请求者通过区块链转发时间参数至数据存储方,数据存储方生成证明信息,并发送至sgx;sgx接收证明信息后执行审计合约,完成数据完整性审计,将审计结果签名后上传至区块链;数据请求者通过区块链获得并验证审计结果签名后,获得最终审计结果。
9.进一步的技术方案,所述对外包数据进行预处理,生成加密数据块及辅助信息,包括以下步骤:数据拥有者对拟外包数据进行分组加密,生成加密数据块di(i=1,2,...,n),然后再将每个数据块di划分为n个子块,即di=(d
i1
,d
i2
,...,d
in
);针对数据块di,利用同态哈希函数生成每个数据块di对应的辅助信息。
10.进一步的技术方案,生成辅助信息是指,利用同态哈希函数,生成每个加密数据块di对应的标签ti,建立标签集合tc=(t1,t2,...,tn)。
11.进一步的技术方案,外包数据存储包括:数据存储方接收到上传的数据信息时,先对签名进行验证,后验证外包加密数据块的完整性和辅助信息的正确性,若验证均通过,则数据存储方存储外包加密数据块和辅助信息,并返回存储哈希地址,反之则拒绝存储数据,等待数据重新上传。
12.进一步的技术方案,数据请求者发送数据使用请求后通过区块链接收数据使用授权,向区块链部署审计合约,具体包括以下步骤:数据请求者向区块链发送数据使用请求;区块链查询数据拥有者的授权信息,若查询到数据请求者已经授权且在授权期限内,则直接授权数据请求者使用数据的权限;否则,区块链转发数据请求者发送的数据使用请求至数据拥有者,数据拥有者接收到数据使用请求后,通过区块链授权数据请求者使用数据的权限。
13.数据请求者在收到数据使用授权后,向区块链部署审计合约。
14.进一步的技术方案,数据存储方生成证明信息,并发送至sgx,包括:数据存储方根据时间参数对应的区块链哈希,通过调用区块链中部署的随机值生成合约,生成随机值确定挑战信息r和数据块序号集合q = {s1,...,sx},选取q中序号对应的拟审计的外包加密
数据块集合b = {d
s1
,...,d
sx
},并依次生成d
s1
...d
sx
对应的证明信息proof
s1
... proof
sx
,最后将该证明信息依次发送到sgx。
15.进一步的技术方案,sgx接收证明信息后执行审计合约,完成数据完整性审计,包括:在sgx收到证明消息proof
s1
后,用拟审计的外包加密数据块d
s1
生成标签;重新计算拟审计的外包加密数据块的证明消息,判断等式;重复上述步骤,直到遍历完待审计的外包加密数据块集合b中所有的数据块di;返回数据完整性审计结果,若所有数据块di对应的证明消息均满足,则审计成功,否则审计失败。
16.本发明第二方面提供了一种基于区块链和sgx的外包数据完整性审计系统。
17.一种基于区块链和sgx的外包数据完整性审计系统,包括:包括数据拥有者模块、数据请求者模块、数据存储方模块、sgx模块和区块链模块;数据拥有者模块,用于对外包数据预处理,将预处理后的数据上传至数据存储方模块,通过区块链模块进行数据发布,以及对数据请求者模块进行审计授权;数据请求者模块,用于与sgx模块进行双向身份认证,在区块链模块进行数据资源查询并发送数据使用请求,以及接收审计结果;数据存储方模块,用于存储预处理后的外包数据,接收区块链模块发送的时间参数,以及发送证明信息至sgx模块;sgx模块,用于与数据请求者模块进行双向身份认证,接收证明信息,执行审计合约,以及将审计结果签名上链存储;区块链模块,用于数据资源查询,转发数据使用请求和审计授权,部署审计合约,以及转发审计结果。
18.进一步的技术方案,所述数据存储方模块接收数据拥有者模块预处理的数据和辅助信息,完整性校验通过后存储数据,并返回数据存储哈希地址;否则拒绝数据存储,需要数据重新上传;接收区块链模块发送的时间参数,根据时间参数对应区块链哈希生成随机值确定挑战信息,并生成d
si
对应的证明信息proof
si
;依次发送证明信息proof
si
到sgx模块。
19.进一步的技术方案,所述sgx模块用于在sgx可信执行环境中运行审计智能合约,包括:接受数据存储方模块发送的证明信息proof
si
;重新计算证明消息和;判断等式是否成立;返回数据完整性审计结果签名上链存储。
20.以上一个或多个技术方案存在以下有益效果:(1)本发明通过利用sgx在保证数据安全情况下,不依赖任何第三方审计机构,且
能避免强大计算能力的存储服务器只存储数据块标签以欺诈方式通过数据完整性审计,来掩盖数据损坏或丢失等真实情况问题,实现安全高效的外包数据完整性审计。
21.(2)本发明基于区块链实现数据链上存储、数据使用请求、抽样集合随机性、审计结果存储,相对于现有的未使用区块链的审计方案相比,既保证了外包数据的安全性,防止了数据存储方只选取特定的数据块集合作为审计样本,又保障了审计结果的可信性。
22.(3)本发明通过同态哈希函数对每个加密数据块生成标签来完成拟审计数据块的完整性验证,与现有的使用区块链的审计方案如采用rsa或双线性映射技术的方案相比,降低了审计计算开销;通过链上链下协同的方式,数据请求者能在数据使用前利用过去时间time对应的哈希值生成随机信息完成数据完整性审计,使用同态哈希对密文直接进行计算,与现有的采用sgx的方案相比,用户不需要在本地生成哈希树,降低了本地的计算开销,且能防止数据存储方只选取特定的数据块集合作为待审计样本集合以欺诈方式通过数据完整性审计,随机性和可信性更高。
附图说明
23.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
24.图1为本发明实施例一所述外包数据完整性审计方法的流程图;图2为本发明实施例二所述外包数据完整性审计系统的示意图。
具体实施方式
25.应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
26.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
27.术语解释sgx,software guard extensions,是intel指令集架构的一个扩展,在内存中提供一个加密的可信执行区域,以硬件安全为强制性保障,不依赖于固件和软件的安全状态,由 cpu保护数据和隐私不被恶意窃取。
28.ipfs,inter planetary file system,是一个面向全球的、点对点的分布式文件传输系统,其目标是为了补充目前互联网的超文本传输协议,将所有具有相同文件系统的计算设备连接在一起,其原理是利用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,可以让数据传输的速度更快、更安全、更健壮。
29.实施例一为了解决现有外包数据完整性审计方法可信性较低且审计效率较差的问题,本发明公开了一种基于区块链和sgx的外包数据完整性审计方法及系统,支持外包数据预处理、
加密存储、基于区块链的数据发布和使用请求授权,通过链上链下协同的方式,利用sgx可信硬件执行环境,审计合约自动完成外包数据完整性审计,并上链公开;不依赖任何第三方审计机构,可有效避免恶意欺诈,提升了数据完整性审计的可信性和效率。
30.如图1所示,本实施例公开了一种基于区块链和sgx的外包数据完整性审计方法,包括以下步骤:数据拥有者对外包数据进行预处理,生成加密数据块及辅助信息,上传至数据存储方,并接收返回的存储哈希地址;数据拥有者将外包数据摘要和存储哈希地址上传至区块链,通过区块链发布数据;数据请求者与sgx完成双向身份认证后,在区块链上进行数据资源查询,发送数据使用请求后通过区块链接收数据使用授权,向区块链部署审计合约;需要指出的是,此时向区块链部署的审计合约即是用于完整性审计的审计程序,具体包括链上合约和链下合约,链上合约就是部署在sgx上执行的审计;数据请求者通过区块链转发时间参数至数据存储方,数据存储方生成证明信息,并发送至sgx;sgx接收证明信息后执行审计合约,完成数据完整性审计,将审计结果签名后上传至区块链;数据请求者通过区块链获得并验证审计结果签名后,获得最终审计结果。
31.在本实施例中,所述基于区块链和sgx的外包数据完整性审计方法的具体步骤如下,其中,上述方案中的预处理即图1所示的步骤1,具体包括以下步骤:数据拥有者a对拟外包数据进行分组加密,生成加密数据块di(i=1,2,...,n),然后再将每个数据块di划分为n个子块,即di=(d
i1
,d
i2
,...,d
in
)。
32.同时,针对数据块di,利用同态哈希函数生成每个数据块di对应的辅助信息。具体的,利用同态哈希函数,生成每个加密数据块di对应的标签ti,建立标签集合tc=(t1,t2,...,tn),i=1,2,...n,其中,该式表示:首先选择两个大素数p和q,然后选择n个随机值来生成一组向量g={g1, g2, ..., gn},其中每一个g
l
的阶是q;dil表示第i个加密数据块di的第l个子块,其中l={1,2,..., n },每个加密数据块共划分为n个子块;mod p表示对p取模运算。
33.其中,在本实施例中,数据拥有者为区块链注册用户数据拥有者a。通过上述同态哈希函数对每个加密数据块生成标签来完成拟审计数据块的完整性验证,进一步降低审计计算的开销。
34.步骤2,数据上传:数据拥有者a对外包数据进行预处理,通过上述方案生成加密数据块及辅助信息,并将加密数据块及其对应的辅助信息签名后上传至数据存储方ds。
35.步骤3,外包数据存储:数据存储方ds接收到上传的数据信息时,先对签名进行验证,后验证外包加密数据块的完整性和辅助信息的正确性,若验证均通过,则数据存储方ds存储外包加密数据块和辅助信息,并返回存储哈希地址,反之则拒绝存储数据,等待数据重新上传。
36.步骤4,数据发布:数据拥有者a将上传的外包数据的数据摘要和从数据存储方ds处接收的存储哈希地址上传至区块链,通过区块链发布数据,部署随机值生成合约。
37.步骤5,双向身份认证:数据请求者利用sgx的远程认证机制,完成与sgx的双向身份认证。其中,在本实施例中,数据请求者为区块链注册用户数据请求者b。
38.在完成上述步骤5数据请求者与sgx的双向身份认证后,由于区块链上存储有外包数据的数据摘要和存储哈希地址,因此,数据请求者在区块链上进行数据资源查询,并通过区块链接收数据使用授权,在获取数据使用授权后,向区块链部署审计合约,具体步骤包括:步骤6,数据资源查询:在完成身份认证后,数据请求者b在区块链上进行查询数据资源目录,找到需要使用的数据。
39.步骤7,数据使用服务请求:数据请求者b向区块链发送数据使用请求。
40.步骤8,数据使用请求转发:区块链查询数据拥有者a的授权信息,若查询到数据请求者已经授权且在授权期限内,则转至步骤10;否则,区块链转发数据请求者b发送的数据使用请求至数据拥有者a。
41.步骤9,数据使用授权:数据拥有者a接收到数据使用请求后,通过区块链授权数据请求者b使用数据的权限。
42.步骤10,审计合约部署:为了确定使用数据在使用前的数据完整性,数据请求者b在收到数据使用授权后,向区块链部署审计智能合约。
43.此时,需要进行数据完整性审计,具体包括:步骤11,时间参数发送:数据请求者b通过区块链转发给数据存储方ds时间参数time。这个时间是指过去很久的某个时间,对于以太坊区块链上的数据,由于是过去的时间,当时的区块链数据已经无法发生变化,进而保证后续数据完整性审计的可信性。
44.步骤12,发送证明信息:数据存储方ds根据时间参数time对应的区块链哈希,通过调用区块链中部署的随机值生成合约,生成随机值确定挑战信息r和数据块序号集合q = {s1,...,sx},选取q中序号对应的拟审计的外包加密数据块集合b = {d
s1
,...,d
sx
},并依次生成d
s1
对应的证明信息proof
s1 = r||{s1,...,sx}||d
s1
||{t
s1
,...,t
sx
},以及d
s2
...d
sx
对应的证明信息proof
s2
... proof
sx
,最后将该证明信息依次发送到sgx。
45.步骤13,链下审计合约执行:在sgx的安全区执行审计合约,完成数据完整性审计,具体包括:步骤13.1,在sgx收到证明消息proof
s1
后,用拟审计的外包加密数据块d
s1
生成标签,用标签ti计算证明消息,其中标签ti已知,且;步骤13.2,重新计算拟审计的外包加密数据块的证明消息,判断等式,其中:;步骤13.3,重复步骤13.1-13.2,直到遍历完待审计的外包加密数据块集合b中所有的数据块di;步骤13.4,返回数据完整性审计结果result,若所有数据块di对应的证明消息均满足,则审计成功,记result = 1;否则,审计失败,记result = 0。
46.步骤14,审计结果上链:sgx将审计结果上传至区块链,通过链上合约,对数据完整性审计结果result进行签名,并将签名后的审计结果存储到区块链中。
47.结合上述步骤13和步骤14,通过链上链下协同的方式,数据请求者能在数据使用前利用过去时间time对应的哈希值生成随机信息来完成数据完整性审计,使用同态哈希对密文直接进行计算,与现有的采用sgx的方案相比,用户不需要在本地生成哈希树,降低了本地的计算开销,并且能够防止数据存储方只选取特定的数据块集合作为待审计样本集合,以欺诈方式通过数据完整性审计情况的出现,进一步提高随机性和可信性。
48.步骤15,获得审计结果:数据请求者b从区块链中获得并验证审计结果签名后,获得审计结果,若数据完整性审计通过,则数据请求者b即可使用查询到的数据。
49.通过上述方案,在利用sgx在保证数据安全情况下,不依赖任何第三方审计机构,能够避免强大计算能力的存储服务器只存储数据块标签,进而以欺诈方式通过数据完整性审计来掩盖数据损坏或丢失等真实情况问题,实现安全高效的外包数据完整性审计。
50.实施例二本实施例公开了一种基于区块链和sgx的外包数据完整性审计系统,如图2所示,包括数据拥有者模块、数据请求者模块、数据存储方模块、sgx模块和区块链模块;数据拥有者模块,用于对外包数据预处理,将预处理后的数据上传至数据存储方模块,通过区块链模块进行数据发布,以及对数据请求者模块进行审计授权;数据请求者模块,用于与sgx模块进行双向身份认证,在区块链模块进行数据资源查询并发送数据使用请求,以及接收审计结果;数据存储方模块,用于存储预处理后的外包数据,接收区块链模块发送的时间参数,以及发送证明信息至sgx模块;sgx模块,用于与数据请求者模块进行双向身份认证,接收证明信息,执行审计合约,以及将审计结果签名上链存储;区块链模块,用于数据资源查询,转发数据使用请求和审计授权,部署审计合约,以及转发审计结果。
51.在本实施例中,所述基于区块链和sgx的外包数据完整性审计系统,包括数据拥有者模块、数据请求者模块、数据存储方模块、sgx模块和区块链模块,具体的:1. 数据拥有者模块:数据拥有者a在数据拥有者模块实现的数据预处理、数据上传、数据发布和审计授权,具体功能及实现步骤如下:1.1 数据拥有者a对外包数据块进行分组加密、加密数据块再分块,并生成数据块对应的标签集合;1.2 数据预处理后,数据拥有者a将其上传到数据存储方ds,并接收存储哈希地址;1.3 数据拥有者a将数据摘要和存储哈希地址信息上传到区块链模块,通过区块链模块发布数据;1.4数据拥有者a通过区块链转发的数据使用请求进行授权。
52.2. 数据请求者模块:数据请求者b通过数据请求者模块实现数据资源查询、发送使用请求和获得审计结果。其中,包括数据拥有者模块和数据请求者模块通过区块链模块进行查询数据使用请求和授权的交互。
53.2.1数据请求者b在区块链模块上进行查询数据资源目录,找到需要使用的数据。
54.2.2数据请求者b向区块链模块发送数据使用请求,并接收数据使用授权结果。
55.2.3 数据请求者b从区块链模块中获得并验证审计结果签名后获得审计结果。
56.3. 数据存储方模块:用于外包数据存储、生成证明信息和发送证明信息。
57.3.1 数据存储方模块接收数据拥有者a预处理的数据和辅助信息,完整性校验通过后存储数据,并返回数据存储哈希地址;否则拒绝数据存储,需要数据重新上传;3.2 接收区块链模块发送的时间参数time;3.3 数据存储方模块根据时间参数time对应区块链哈希生成随机值确定挑战信息,并生成d
si
对应的证明信息proof
si
;3.4 依次发送证明信息proof
si
到sgx模块。
58.4. sgx模块:用于在sgx可信执行环境中运行审计智能合约。
59.4.1 接受数据存储方ds发送的证明信息proof
si
;4.2 重新计算证明消息和;4.3 判断等式是否成立;4.4 返回数据完整性审计结果签名上链存储。
60.5. 区块链模块:实现数据资源发布、数据资源查询、智能合约部署。
61.5.1 接收数据拥有者a上传外包数据的摘要和存储哈希地址等信息,并发布数据,并加入数据资源目录;5.2 接收数据拥有者a的随机数生成智能合约部署请求,该合约用于生成挑战信息;5.3 数据请求者b通过区块链模块查询数据资源目录,查找到所需要的数据资源;5.4 接收数据请求者b的数据使用请求,查询数据拥有者a授权信息,如果已授权,转至步骤2.5;否则,转发给数据拥有者a;5.5 接收数据拥有者a的数据使用许可信息;5.6 转发数据使用许可信息给数据请求者b;5.7 为数据请求方b部署审计智能合约,该合约用于待审计数据进行数据完整性审计;5.8 转发时间参数time给数据存储方模块;5.9 接受数据存储方模块的随机值生成合约调用;5.10 接收sgx模块通过链上合约发来的数据完整性审计结果签名,并进行存储;5.11 转发数据完整性审计结果签名给数据请求者b。
62.以上实施例二中涉及的各步骤与方法实施例一相对应,具体实施方式可参见实施例一的相关说明部分。
63.本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。
64.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
65.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
66.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献