一种去信任的数据完整性验证方法与流程

文档序号:17923781发布日期:2019-06-15 00:17阅读:356来源:国知局
一种去信任的数据完整性验证方法与流程

本发明涉及服务计算、云计算、物联网领域中的数据安全,具体涉及一种基于区块链技术的数据完整性验证方法。



背景技术:

服务计算是跨越计算机与信息技术、咨询服务、商业管理服务等领域的一个新学科,是应用面向服务架构技术在消除商业服务与信息技术之间的横沟方面的直接产物。其中:soa(serviceorientedarchitecture,面向服务的体系架构)及web服务旨在解决平台的架构问题、网格/效用计算(grid&utilitycomputing)旨在解决服务交付问题、业务流程管理(businessprocessmanagement)旨在对业务本身进行整合和管理。

单个服务往往不能满足日益个性化复杂化的用户需求,这时就需将已有的多个原子服务进行组合,以便产生满足用户特定复杂功能需求的、增值的组合服务。而数据服务组合是将许多个简单、基本的数据服务通过算法组合成复合数据服务。数据的完整性验证是服务组合乃至服务计算的重要前提条件,数据完整性是指数据的可靠性和精确性。数据从外界输入,由于本身或环境等因素影响,数据的传入或存储过程中会发生错误或被他人篡改,当保存在数据库中的数据与原数据不同时,数据失真即完整性遭到破坏。目前实现完整性约束的方法又分为静态约束和动态约束。

随着大数据时代的到来,大量的物联网(internetofthings,iot)应用程序选择在云端存储和处理数据,数据不仅具有动态性,而且数据的更新速度逐步加快,各种破坏、篡改数据等安全问题也层出不穷,存储在云端的数据的安全性面临前所未有的挑战,因此,有效地验证云端数据的完整性,对保证数据集成服务的质量具有非常重要的意义。当前公共的数据完整性验证服务需要依靠第三方审计员(thirdpartyauditors,tpa),但是iot中基于tpa的框架往往并不让人们觉得可靠。对于安全性不高或恶意的tpa很可能使验证结果有误甚至导致用户的数据泄露。



技术实现要素:

发明目的:针对现有技术的不足,本发明提出一种去信任的数据完整性验证方法,无需借助第三方审计员就可进行数据完整性验证,提高服务系统的数据安全性。

技术方案:本发明提出一种去信任的数据完整性验证方法,基于区块链技术的去中心化特性,用智能合约对数据完整性进行验证,而非借助第三方审计员,利用rsa加密技术对存储在云服务器上的数据进行完整性验证,最终实现基于此模型的数据完整性验证方案,更加满足使用者对数据的安全性需求,具体包括以下步骤:

s10、数据拥有者产生数据,计算rsa模数并生成公私钥对;

s20、数据拥有者将数据分块处理,生成认证元数据并传送给智能合约和云存储服务器;

s30、数据拥有者对c个数据块发起挑战请求;

s40、云存储服务器接受挑战请求,计算用于数据完整性验证的证据并发送给智能合约;

s50、智能合约对证据进行验证并返回验证结果给数据拥有者。

优选地,所述步骤s10中生成公私钥对包括以下步骤:

s11、选择两个素数p和q,计算rsa模数n=p·q;

s12、选取g作为qrn的生成元,qrn是模n的二次剩余集;

s13、生成公私密钥对pk=(n,e),sk=(d),并且满足关系式:e·d≡1mod(p-1)(q-1),其中pk为公钥,sk为私钥,e为1与pq欧拉函数之间与互质的数,d为e对于的模反元素。

优选地,所述步骤s20包括:

s21、选取唯一的文件标识对文件f进行分块f={b1,b2,…,bn};

s22、对分块后的数据生成认证元数据集:φ={σi}1≤i≤n,其中σi表示分块后每个数据块的认证元数据,mi是分块后的各个数据块,h为哈希函数;

s23、将认证元数据用私钥签名后传送给智能合约,同时将文件f和认证元数据φ存入云存储服务器。

优选地,步骤s30包括:

s31、数据拥有者随机选择两个密钥:

s32、智能合约中产生随机数:并计算gs=gsmodn;

s33、智能合约令数据完整性挑战请求chal=(c,k1,k2,gs),并且将其发给云存储服务器。

优选地,所述步骤s40包括:

s41、云存储服务器接收到数据完整性挑战请求chal后,计算其中π是伪随机置换函数,f是伪随机函数;

s42、根据下式计算证据元祖{t,ρ}并发送给智能合约:

其中h是密码学里的哈希算法。

优选地,所述步骤s50包括:

s51、智能合约接收到证据{t,ρ}后,计算τ′=te

s52、对1≤j≤c,计算

s53、计算ρ′=h(τs)modn,判断ρ=ρ′是否成立,若两者相等,则数据未经篡改可以被数据使用者请求使用;若两者不相等,则数据失真,不能直接使用。

有益效果:

1、本发明使用完全分散的基于区块链的数据完整性服务节点取代了集中式的数据管理服务(integritymanagementservice,ims)。这消除了对第三方审核员的信任要求,并提高了数据完整性服务的可靠性,没有任何一方可以主动终止此项服务。

2、本发明利用rsa签名机制的同时,考虑先对数据文件f分块,然后计算每一个数据块的认证元数据,一定程度上降低了生成验证元数据的计算代价,相对于现有的方法,测试数据的规模更大。

3、本发明包含同态验证标签(homomorphicverifiabletags,hvts),这是一种无法造假的认证元数据,降低了区块链和点对点网络中的通信开销,并且在应用中可以将多个数据块的元数据聚成一个值,有效解决了数据块数量与认证元数据大小呈线性快速增长的问题。

4、本发明中智能合约采用随机抽样的方式对云端数据进行完整性验证,减小了计算代价。

5、本发明中提出基于区块链的数据完整性验证框架,该模型的提出将对数据服务组合的理论研究及其未来分布式应用程序(decentralizedapp,dapp)的发展产生一定的推动作用,对未来云存储服务器中的数据完整性验证是一种新的尝试,提供了一种新的思路。

附图说明

图1是本发明的基于区块链网络的数据完整性服务模型;

图2是本发明的数据完整性验证流程图;

图3是根据本发明实施例的实现该方法的系统原型。

具体实施方式

下面结合附图对本发明的技术方案作进一步说明。

本发明以区块链网络中的智能合约代替传统的tpa,对存储在云服务器中数据的完整性进行验证。针对iot数据的动态性、数据在云端存储时的机密性以及服务方的可信性等特点,提出一个数据完整性验证模型。图1示出了该模型结构,从中可以看出其包括的基本元素,即数据拥有者应用程序、数据使用者应用程序、云存储服务器、完整性验证服务方之间的结构关系。结合该模型首先给出本发明中的概念定义如下:

1)数据完整性服务(dataintegrityservice,dis)将数据的完整性验证作为一种网络服务由服务提供者执行。数据完整性是指整个生命周期内对数据的维护,以确保数据的准确性和一致性。

2)数据拥有者应用程序(dataownerapps,doa)指产生数据并将数据交给云服务提供商管理的应用程序,该实体通过物联网设备生成数据,个人计算机(personalcomputer,pc)上的doa在区块链网络中作为节点方便进行数据完整性验证。

3)数据使用者应用程序(dataconsumerapps,dca)指请求使用doa存储在云服务器上的数据的应用程序,当有dca请求时,doa应当对云服务器中存储的数据发起验证挑战请求,完成验证后由云存储服务器(cloudstorageserver,css)将完整的数据通过p2p网络传送给dca。本发明中云服务器、云存储服务方、云存储服务器指的是相同设备。

4)数据交易指此以太坊网络中需要把数据由一个节点传送到另一个节点时发起的交易。例如doa请求传送认证元数据与文件f至云服务器,云存储服务方作为矿工竞争提供服务的机会并赚取相应的服务费用gas,数据由p2p文件系统传送。

5)合约交易是指在以太坊网络中对智能合约的创建与调用,并支付一定的gas,例如完整性验证阶段doa发起验证挑战请求调用智能合约、系统初始化时智能合约的创建。

对于影响区块链系统安全性和效率的几个潜在问题,本发明中做出以下假设:第一个假设是,如果所有参与节点都试图使自己受益,则很少会出现51%的恶意攻击。第二个假设是区块链中的共识可以在短时间内达成。

基于上述模型,在实际实施时,首先进行系统初始化并生成源数据。

系统初始化包括:

1)p2p文件系统(p2pfilesystem,p2pfs)的初始化:安装p2pfs客户端及其相关项、p2pfs资料库配置。

2)区块链系统初始化:建立一个私有区块链网络,从doa和dca的每个参与节点上启动以太坊网络系统。如果云服务方想要从此服务框架中获得利润,它可以加入区块链网络并成为矿工。区块链服务由三个步骤初始化:安装以太坊客户端及其相关项、加入数据完整性验证服务智能合约所在的以太坊网络、作为矿工或从其他用户那购买足够的gas以便后续交易的进行。

源数据生成:使用树莓派2代(raspberrypi2)作为物联网设备运行doa生成源数据。本发明中物联网设备和pc共同构成数据拥有者,物联网设备负责源数据的产生,pc用于将源数据连接至区块链与p2p网络。

图2示出了数据完整性验证的流程,该流程给出了利用rsa加密算法,在以太坊网络中数据拥有者、云存储服务方、智能合约三者间的交互流程。这里的数据拥有者指的是pc上的doa。

智能合约作为区块链2.0技术的代表性产物,是一种计算机协议,旨在以数字的方式促进、验证或执行合同的履行。智能合约允许在没有第三方的情况下执行可信交易。并且这些交易是可追踪、不可逆转的。本发明中智能合约指代遵循该协议的计算机设备,其包含有以太坊中可自行设计的一段代码,当触发后按照规定的指令进行操作。

rsa算法是第一个较为完善的非对称密码学算法,相对于对称加密算法(symmetricencryptionalgorithm,sea)利用相同的密钥对数据加解密,该算法需要一对密钥即公钥和私钥,使用其中一个加密,则需要用另一个才能解密。它既能用于加密,也能用于数字签名。rsa模数即其密钥的长度,通常随机选取两个素数相乘得到模数n。分解模数是最常见的攻击方法,因此,根据具体适用情况,模数n尽量选大一些。rsa算法需要一对密钥即公钥和私钥,公钥是公开的,而私钥只有用户本人知道并可以用于数字签名,使用其中一个加密,则需要用另一个才能解密。rsa的密钥越长,就越难破解。

如图2所示,数据拥有者生成密钥对,对数据进行分块处理,每个分块生成用于验证的元数据,组成认证元数据集合,并用私钥签名后传送给智能合约,同时将原数据文件及认证元数据存入云服务器存储。在以太坊网络中,数据拥有者应为自己发起的两种交易支付一定的gas。因此云服务提供商在此方案中不会失去利润,他们在区块链网络中充当矿工的角色以赚取gas。数据拥有者应用对c个数据块发起挑战请求,智能合约随机选择两个密钥,并选取随机数;云存储服务方接收到挑战请求,计算出证据,并发送证据给智能合约用于验证;智能合约收到证据后进行验证,返回数据完整性验证结果至数据所有者应用。

图3给出了在一个实施例中数据拥有者、数据使用者与云存储服务方在数据存储方式与数据传输上的结构关系。结合图2和图3,对该数据完整性验证方法具体描述如下。

步骤s10,数据拥有者计算rsa模数并生成公私钥对。

首先选择两个长度为1024位的素数p和q,计算rsa模数n=p·q;根据安全性要求,也可以选择其他长度,位数越多越难破解,安全性越高。选取g作为qrn生成元,qrn是模n的二次剩余集;生成公私密钥对pk=(n,e),sk=(d),pk为公钥,sk为私钥,计算欧拉函数并在1与之间取一个与互质的数e,计算e对于的模反元素d,并满足公式1:

e·d≡1mod(p-1)(q-1)(1)

步骤s20,数据拥有者生成认证元数据(hvts)并传送给智能合约。

分块:选取唯一的文件标识对文件f进行分块f={b1,b2,…,bn};

计算元数据:对分块后的数据生成认证元数据集合:φ={σi}1≤i≤n,满足公式2:

σi表示分块后每个数据块的认证元数据,mi是分块后的各个数据块,h是哈希函数。

传送:先将认证元数据用私钥签名后传送给智能合约,同时将文件f和认证元数据φ存入云存储服务器,doa首先发起数据交易,云服务器此时作为区块链网络中的矿工获得gas,之后doa发起合约交易,同时doa支付gas调用智能合约,将认证元数据集合发送到智能合约中保存,代替了传统方案中的tpa,保障备份元数据不可篡改性的同时实现了去信任。

步骤s30,数据拥有者发起挑战请求。

doa需要验证数据,发起挑战请求,生成的具体数据需要转交给智能合约,最后根据云存储服务方提供的证据,智能合约进行计算比较,因此代替了第三方审计员。具体步骤如下:

s31、doa随机选择两个密钥:

假设两个随机密钥分别为

s32、智能合约收到doa的挑战请求之后自动生成一个随机数并做公式3的计算:

gs=gsmodn(3)

s33、智能合约令数据完整性挑战请求chal=(c,k1,k2,gs),并且将其发给云存储服务方(证明者)。

步骤s40,存储服务方接受挑战请求,计算用于数据完整性验证的证据。

云存储服务方(证明者)接收到数据完整性挑战请求chal后,首先计算其中π是伪随机置换函数,f是伪随机函数;

然后根据公式4和公式5计算用于验证的证据,其中h是密码学里的哈希函数:

最后将证据元组{t,ρ}发送给智能合约(验证者)。

步骤s50,智能合约对证据进行验证并返回验证结果。

智能合约(验证者)接收到证据{t,ρ}后,先计算τ′=te

对1≤j≤c,计算

使用公式6计算出ρ′并与ρ进行比较:

ρ′=h(τs)modn(6)

智能合约返回验证结果,判断ρ=ρ′是否成立,若两者相等,表明数据未经破坏或篡改是完整的,数据使用者在以太坊网络中的请求形成交易,同时数据由点对点网络提供给数据使用者使用;若两者不相等,说明数据失真,则不能直接使用,否则将对之后使用此数据的服务质量造成影响,可利用数据恢复机制对被篡改的数据进行更新复原。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1