一种基于属性的云数据审计方法及系统与流程

文档序号:11253989阅读:756来源:国知局
一种基于属性的云数据审计方法及系统与流程

本发明属于网络安全技术领域,具体涉及一种基于属性的云数据审计方法及系统。



背景技术:

作为云计算中“设施即服务iaas”模式中最基础的一种,云存储能使数据拥有者在云端存储他们的数据,并且将存储在本地的备份删除,这极大地降低了用户对本地数据的存储和管理负担。而当用户需要回取数据时,也只需要通过手机、平板电脑等移动终端接入云端,下载自己所需的那部分数据即可。云存储服务有许多显著的优势:随时随地的访问,地理位置无关,按需服务,弹性资源等等。然而,除了上述的优势之外,云存储服务还存在一些安全问题和挑战。当用户选择把他们的数据外包给云服务器之后,他们便失去了对数据的物理拥有权,他们并不是很确定地知道他们的数据被具体存储在哪一个磁盘上或者到底谁有权利访问到他们的数据。这也就是说,用户选择上传数据到云上以后,这些数据的命运将完全被云服务提供商掌控。虽然大多数云服务提供商是诚实的,但是数据丢失事件还是不可避免地时有发生。比如,云服务器一小段时间内的宕机,或存储介质(如ram等)崩盘便会很轻易地将云存储服务器中的数据损坏。云数据是大数据分析和云计算的基础,如果数据完整性都不能被保证,那么数据分析出的结论和云计算出来的结果都是不可靠的,因此数据完整性对于安全可靠的云存储系统是尤为重要的。

针对上述问题,云数据审计协议被提出。云数据审计协议是检验数据完整性的一个有利工具。目前的云数据审计协议的研究主要分为两大类,分别是数据可回取协议por(proofofretrievability)和可证明数据拥有协议pdp(provabledatapossession)。pdp是一个概率检测协议,它使用一些随机取样的数据块,而不是对整个文件进行审计。对于一些大文件来说,这样的思路比确定性审计协议要实用很多。概率性检测可以通过用户想达到的审计精度来调整挑战块数的多少,这提供了一种效率和精度上的折中方案。por协议与pdp协议类似,但是它兼具检测云端数据的完整性,以及数据恢复功能。por协议在数据上传之前使用冗余编码技术,如纠删码等对数据进行编码,使得在审计之后,可以将数据完整地回取。除此之外,pdp协议和por协议都是挑战-响应协议,除了用户要外包的原始数据之外,协议中还加入了一些额外的元数据(metadata)用来验证原始数据的完整性。这些元数据(也称为标签或认证子)由用户根据原始数据计算得到,在计算的过程中需要用户的私钥的参与,因此其他人无法伪造。并且元数据需要具有同态可验证的性质,因此可以在验证阶段对响应结果进行一些聚合,以降低云服务器和验证者之间的通信代价。近几年,一系列具有各种特殊功能的审计方案被相继提出,主要包括以下几类:支持动态操作的审计方案,具有隐私保护性质的审计方案和具有公开可验证的审计方案等,具有多副本的审计方案,跨云平台的审计方案,所有权证明方案pow(proofofownership),支持云端数据去重的审计方案等。

上述的方案都是基于公钥基础设施pki系统或是基于确定身份的,对于一个pki系统,证书的申请、发布、维护、吊销都需要很大的人力物力和时间开销,而对于一个确定身份,也需要用户本地维护一个确定的字符串作为身份,这都给用户带来繁重的密钥管理负担。



技术实现要素:

为了解决云存储服务的安全问题,本发明提供了一种基于属性的云数据审计方法及系统。

基于属性的云数据审计方法可以使云用户在上传文件时定义一些属性集合,例如姓名,性别,年龄等,并为这些属性生成密钥,对待上传的文件进行预处理;在审计阶段,云数据用户可以指定一些具有相似属性集合的人对云数据进行审计,而与数据不相关的人无法获得审计权限。

本发明要解决的技术问题通过以下技术方案实现:

一种基于属性的云数据完整性验证方法,包括以下步骤:

步骤s100,系统初始化:

步骤s101,云服务器运行系统初始化算法,输入一个安全参数l,该算法输出两个以p为阶的乘法循环群g1和g2,其中p是一个安全的大素数,群g1的生成元是g;e:g1×g1→g2是一个双线性映射;h:{0,1}*→g1是一个抗碰撞的哈希函数;

步骤s102,密钥产生中心服务器随机选择一个系统主密钥y∈zp,然后根据主密钥计算参数g1=gy∈g1,并发送给云服务器,其中zp为模p的循环群;

步骤s103,云服务器随机选择g2,h∈g1;定义用户的属性集合最多包含m个zp中的元素,集合m={1,2,...,m+1};选择随机元素t1,...,tm+1∈g1,计算函数t(x)。用户端选取整数d作为审计精度,并发送给云服务器;

步骤s104,云服务器生成系统公钥,即mpk={g,g1,g2,h,t1,…,tm+1}。

步骤s200,用户端向密钥产生中心服务器申请密钥:

步骤s201,用户端输入系统公钥mpk,并将自己的属性身份a一同发送给密钥产生中心服务器;

步骤s202,密钥产生中心服务器收到用户端密钥申请后,为其生成私钥sska=({dk}k∈a,{dk}k∈a)。

步骤s300,用户端上传数据至云服务器:

用户端选择文件名为name的文件f进行上传。首先为该文件生成一个文件标签τ;然后对该文件f进行预处理、将文件分成数据块,并为每个数据块生成认证子然后用文件标签、数据块和认证子生成上传文件f*,,最后将上传文件f*存入云服务器:

步骤s301,用户端选择一个文件名为name的文件f,首先挑选s个随机数u1,…,us∈g1来为文件生成文件标签τ;

步骤s302,用户端用纠删码为文件f进行编码得到编码文件f′,然后将编码文件f′分成n个数据块{mi}1≤i≤n,再将每一个数据块分成s个部分,得到分块文件{mij}1≤i≤n,1≤j≤s;

步骤s303,用户端为数据块{mi}1≤i≤n计算数据块标签然后将用户属性集合a、文件标签τ、分块文件{mij}1≤i≤n,1≤j≤s和数据块标签生成上传文件最后将上传文件f*存入云服务器,同时删除本地备份文件。

步骤s400,审计服务器对云服务器的验证过程:

用户端生成一个审计请求发送给审计服务器;审计服务器与云服务器的交互,云服务器先验证当前的审计属性集合是否具有审计权限,然后生成响应值发给审计服务器;审计服务器验证云服务器发来的响应值是否有效,进而确定用户端的文件是否完整地保存在云服务器上,最后,审计服务器生成验证报告发送给审计者:

步骤s401,用户端产生一个审计属性集合b,并根据审计属性集合b和一些相关信息生成一个审计请求requ,发送给审计服务器,请求验证云服务器;

步骤s402,审计服务器生成挑战值chal,并发送给云服务器;

步骤s403,云服务器验证审计属性集合b的有效性,验证通过则生成相应的响应值resp,否则,拒绝用户端的审计请求;

步骤s404,审计服务器收到云服务器发来的响应值resp后,根据自己发送的挑战值chal,云服务器的响应值resp以及审计属性集合b来验证响应值resp的有效性;

步骤s405,审计服务器根据验证结果发送验证报告给审计者,若验证成功,则发送验证成功;否则,发送验证失败;

步骤s406,当用户端或其他审计者需要验证云服务器上的数据完整性时,重复步骤s401-s406。

进一步的,所述步骤s103的具体步骤为:设置函数其中是拉格朗日系数。

进一步的,所述步骤s202的具体步骤为:密钥产生中心服务器从用户端上传的属性集合a中提取出m个属性;密钥产生中心服务器随机选择一个d-1阶多项式q(x),使得q(0)=y;然后,密钥产生中心服务器为属性身份的每个属性选择一个随机数rk(k∈a),根据公式1和公式2为用户端计算密钥sska=({dk}k∈a,{dk}k∈a);

进一步的,所述步骤s301中计算文件标签τ的具体步骤为:令文件标识τ0=name||n||u1||…||us,用户端对文件标识τ0进行签名,即计算sign(τ0),其中sign是一个任意选取的基于属性的签名算法;最终,生成的文件标签为τ=τ0||sign(τ0)。

进一步的,所述步骤s303中数据块{mi}1≤i≤n的认证子根据公式3、公式4和公式5计算得到;

进一步的,所述步骤s401的具体步骤为:用户端根据公式6计算用户请求req,并用sign算法签名,最后得到审计请求requ=req||sign(req),并发送至审计服务器,请求验证云服务器数据的完整性;

req=ipaudit||b||τ(公式6);

其中,ipaudit表示云服务器ip地址,b表示审计属性集合,τ表示文件标签,“||”为级联操作。

进一步的,所述步骤s402的具体步骤为:审计服务器收到用户端的审计请求时,审计服务器随机选取一个整数c∈zp(c≤n),并对每一个1≤i≤c选择一个随机的元素vi∈zp;根据公式7计算挑战值chal,并将挑战值chal发送至云服务器;

chal=τ||b||{(i,vi)}1≤i≤c(公式7);

在{(i,vi)}1≤i≤c中,i是一个计数变量,vi是随机挑战。

进一步的,所述步骤s403中验证审计属性集合b的具体步骤为:首先验证审计请求签名的有效性;若有效,则提取审计属性集合b,并验证|a∩b|≥d是否成立;若成立,则审计请求有效,任取一个包含d个元素的集合继续生成响应值,否则,拒绝审计请求。

进一步的,所述步骤s403中云服务器生成响应值resp的具体步骤为:根据划分的集合对于所有的k∈s,云服务器根据公式8计算对于所有的k∈b\s,云服务器根据公式9计算最后根据公式10计算响应值resp;

其中,

进一步的,所述步骤s404中审计服务器验证响应值resp有效性的具体方法为:判断等式11是否成立,若等式11成立,则响应值resp有效,云服务器完整保存着用户端的数据;否则,响应值resp无效;

一种基于属性的云数据完整性验证方法的系统,包括云服务器、密钥产生中心服务器、用户端和审计服务器;所述用户端分别与云服务器、审计服务器、密钥产生中心服务器交互式连接,所述云服务器与所述审计服务器交互式连接。

与现有技术相比,本发明的有益效果:

(1)密钥管理代价低:在基于公钥基础设施和基于身份的云数据完整性验证协议中,用户端和验证者都需要保存公钥证书或身份标识符,故而承担复杂的密钥管理代价。本发明中,审计属性集合是由用户的固有属性组成,如性别、年龄、职称等,这大大降低了云数据审计方法中的密钥管理代价。

(2)指定审计者范围:一个基于属性的云数据审计协议可以指定审计者的范围,使得与该数据有关的群组可以对数据进行审计,而与数据不相关的人无法获得审计权限。用户可以根据设置不同的审计精度来指定审计者的范围。当审计精度提高时,则数量更少但相关性更强的群体可以获得审计权限。这是一般的云数据审计协议不具备的优势。

(3)支持用户属性隐私保护:基于属性的云数据审计协议还可以支持用户的属性隐私保护,使得审计者在审计过程中无法精确地推测云用户上传文件时使用的所有属性,进而保证云用户的属性隐私。

(4)抗合谋攻击:如果一群用户中的每一个人都无法成功完成审计工作,那么这群用户将他们的属性合在一起,也无法完成对云数据的审计。换句话说,没有一个人能将这群用户的密钥通过某种方式合在一起来完成审计工作。

附图说明

图1是本发明的云数据审计方法流程示意图。

图2是本发明的云数据审计方法系统模型示意图。

图3是本发明的用户端在上传数据时文件处理流程示意图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

本发明以密码学理论为基础,提供了一种基于属性的云数据审计的实现方法。相对于传统的基于pki或基于确定身份的云数据审计方法,本发明方法能提供简化的密钥管理,即用户端和第三方验证者都无需维护数字证书,也无需保存身份标识符即可完成验证,大大减轻了系统的密钥管理负担。本方案能够通过调整审计精度来指定审计者的范围。在审计阶段还能够提供抗合谋和保护用户属性隐私的性质。因此本发明不仅对云计算的发展有促进作用,同时对安全云存储兼具诸多理论意义和实际意义。

首先对本发明所应用的密码学理论进行简单介绍:

(1)哈希函数(hash函数)

哈希(hash)函数可以把任意长的输入消息映射成固定长的输出消息,输出消息的长度由所选用的算法决定。哈希函数有许多实际的应用,如哈希树、哈希表等。哈希函数在密码学中也发挥着重要的作用,它通常用来产生消息、数据块和文件的短的“指纹”,主要用于数据的完整性校验,如消息验证码(hmac)或用于数字签名算法中,来提高数字签名的有效性。一个密码学哈希函数可以允许用户很容易地验证一些给定数据与他们的哈希值是否匹配;但是如果仅仅给定一些哈希值,而输入的数据未知,则想要找到与给定的哈希值匹配的输入值是十分困难的。上述的两个性质分别被称为哈希函数的可计算性和单向性。一个安全的hash函数除了满足上述两个条件以外,还要满足以下两个抗碰撞性:

a)抗弱碰撞性:对于任意给定的输入串x,想要找到另一个输入串x≠y,使得h(x)=h(y)在计算上是不可行的;

b)抗强碰撞性:找到任意的x,y,其中x≠y,使得h(x)=h(y)在计算上是不可行的;

本文中所使用的抗碰撞hash函数h,指的是把任意长的由0、1组成的比特串映射到椭圆曲线乘法循环群g1上。

(2)双线性对

假设g和gt是阶同为p的两个乘法循环群,其中p是一个安全的大素数,g是群g的生成元。如果映射e:g×g=gt满足以下三个条件,则称为双线性对。

a)可计算性:e的计算是有效的。

b)双线性:对于任意的a,b∈zp,称为e(ga,gb)=e(g,g)ab

c)非退化性:对于g中的生成元g,满足e(g,g)≠1;

本发明中的双线性对都是满足上述性质的双线性对,这样的双线性对可以通过有限域上超奇异椭圆曲线的tate或weil对来构造。

(3)shamir秘密共享

秘密共享是存储高度敏感和高度重要的信息的理想选择,如加密密钥,导弹发射代码和集体银行帐户等。秘密共享的概念是shamir在1979年提出的,秘密共享方案可以通过很多种方式进行构造,如,基于矩阵乘法的构造、基于中国剩余定理的构造、基于单调张成空间的构造等等,其中最简单也是最常见的一种构造方法是shamir通过使用拉格朗日插值多项式构造的秘密共享方案。一个(k,n)秘密共享方案是按照如下步骤实现的:分发者将要分割的秘密值定义为一个数值s,为了将s分成k份,需要选择k-1个随机数a0,a1,…,ak-1,并由此确定一个k-1阶的多项式f(x)=a0+a1x+…+ak-1xk-1,其中,a0=s。在秘密分发阶段,分发者随机选择一些xi∈zp,并计算si=f(xi)作为一个子秘密,然后将子秘密si分给一个群体p中的参与者pi。在秘密恢复阶段,任选一个参与者子集且集合s中的元素个数必须大于或等于k个,则他们可以重构多项式其中,△xis(x)被称为拉格朗日系数,定义为进而将自变量取0,即可恢复出秘密值s。

本发明中,利用shamir秘密共享的思想,使方案具备容错性,进而实现属性相近的用户即可完成审计的功能。

本发明的目的在于:针对云环境中,用户的数据可能由于某些原因被篡改、删除等问题及传统的基于pki或基于确定身份的云数据完整性验证协议中复杂的密钥管理问题,提出了一种基于属性的云数据完整性验证的实现方法,可以使得当审计者的用户集合与数据上传时所使用的属性集合相近时即可完成数据的审计,这样可以保证数据用户指定审计者的范围,使得与该数据有关的群组可以对数据进行审计,而与数据不相关的人无法获得审计权限。同时,相对于传统的云数据完整性验证协议,该方案免去了维护数字证书或保存身份标识符的密钥管理负担,用户只需要自身的固有属性,如性别、职称等,即可完成审计工作。因此,本发明中的基于属性的云数据审计方法可以大大降低用户端的密钥管理负担。因此该发明成果对于促进云存储的蓬勃健康发展不仅具有重要的理论意义,同时兼具更大的实用价值。

如图1、图2和图3所示,本实施例提供了一种基于属性的云数据审计方法,具体步骤如下:

步骤s100.系统初始化:

密钥产生中心服务器40选择主密钥,云服务器10生成系统公钥mpk:

步骤s101:云服务器10运行系统初始化算法,输入一个安全参数l,该算法输出两个以p为阶的乘法循环群g1和g2,其中p是一个安全的大素数,群g1的生成元是g;e:g1×g1→g2是一个双线性映射,;h:{0,1}*→g1是一个抗碰撞的哈希函数;

步骤s102:随机选择一个系统主密钥y∈zp,然后根据主密钥计算参数g1=gy∈g1,并发送给云服务器10,其中zp为模p的循环群;

其中,g是生成元,y是主密钥,g1就是一个由主密钥和生成元计算出来的参数,模p的循环群:是指一个循环群,p是它的模数(p是在步骤s101中选择的一个安全大素数);

步骤s103:云服务器10随机选择g2,h∈g1(其中,h、g2是循环群g1中的两个随机选择的安全参数);定义用户的属性集合最多包含m个zp中的元素,令集合m={1,2,...,m+1};选择随机元素t1,...,tm+1∈g1,计算函数其中是拉格朗日系数。用户端20选取整数d作为审计精度发送给云服务器10(本步骤中的d是由用户端根据需要随机选取的一个审计精度,如果用户需要审计精度很高,则d就选取的大一些,反之亦然;d是一个整数);

步骤s104:云服务器10生成系统公钥mpk,即mpk={g,g1,g2,h,t1,…,tm+1}。

步骤s200.用户端20向密钥产生中心服务器40申请密钥:

用户端20向密钥产生中心服务器40提出密钥申请,同时向密钥产生中心服务器40上传自己的属性身份ω,经密钥产生中心服务器40验证后,为其生成密钥对。本过程的具体步骤如下:

步骤s201:用户端20输入系统公钥mpk,并将自己的属性身份a一同发送给密钥产生中心服务器40;

步骤s202:密钥产生中心服务器40收到用户端20的密钥申请后,首先从用户端20上传的属性集合a中提取出m个特征点(即属性);密钥产生中心服务器40随机选择一个d-1阶多项式q(x)使得,q(0)=y(y是主密钥)。随后,密钥产生中心服务器40对属性身份的每个属性选择一个随机数rk(k∈a),根据公式1和公式2为用户端20计算私钥sska=({dk}k∈a,{dk}k∈a);

其中,q(k),t(k)是将k作为自变量的函数值。

步骤s300.用户端20上传数据至云服务器10:

用户端20选择文件名为name的文件f进行上传。首先为该文件生成一个文件标签τ;然后对该文件f进行预处理、将文件分成数据块,并为每个数据块生成认证子然后用文件标签、数据块和认证子生成上传文件f*,,最后将上传文件f*存入云服务器10,同时本地删除备份文件。本过程的具体步骤如下:

步骤s301:用户端20选择一个文件名为name的文件f,首先挑选s个随机数u1,…,us∈g1,令文件标识τ0=name||n||u1||…||us,用户端20对文件标识τ0进行签名,即计算sign(τ0),其中sign是一个任意选取的基于属性的签名算法;最终,生成的文件标签为τ=τ0||sign(τ0);

步骤s302:用户端20用纠删码为文件f进行编码得到编码文件f′,然后将编码文件f′分成n个数据块{mi}1≤i≤n,再将每一个数据块分成s个部分,得到分块文件{mij}1≤i≤n,1≤j≤s;

步骤s303:用户端20根据公式3、公式4和公式5为数据块{mi}1≤i≤n计算数据块标签然后将用户属性身份a、文件标签τ、分块文件{mij}1≤i≤n,1≤j≤s和数据块标签生成上传文件最后将上传文件f*存入云服务器10,同时本地删除数据;

步骤s400.审计服务器30对云服务器10的验证过程:

用户端20生成一个审计请求发送给审计服务器30;审计服务器30与云服务器10的交互,云服务器10先验证当前的属性集合是否有审计权限,然后生成响应值发给审计服务器30;审计服务器30验证云服务器发来响应值是否有效,进而确定用户端的文件是否完整保存在云服务器上,最后,审计服务器30生成验证报告发送给用户端2:

步骤s401:用户端20根据云服务器10的ip地址ipaudit、审计属性集合b,文件标签τ计算一个用户请求req,并用sign算法签名,最后得到审计请求requ=req||sign(req),发送给审计服务器30,请求验证云服务器10;其中req根据公式6计算;

req=ipaudit||b||τ(公式6);

步骤s402:审计服务器30收到用户端20的审计请求时,审计服务器30随机选取一个整数c∈zp(c≤n),并对每一个1≤i≤c选择一个随机的元素vi∈zp;根据公式7计算挑战值chal,并将挑战值chal发送至云服务器10;

chal=τ||b||{(i,vi)}1≤i≤c(公式7);

其中,vi是审计服务器选的随机数。

步骤s403:云服务器10首先验证审计请求签名的有效性;若有效,则提取审计属性集合b,并验证|a∩b|≥d是否成立;若不成立,则审计请求无效,拒绝审计;否则,审计请求有效,任取一个包含d个元素的集合继续生成响应值,对于所有的k∈s,云服务器根据公式8计算对于所有的k∈b\s,云服务器10根据公式9计算最后根据公式10计算响应值resp;

其中,

步骤s404:审计服务器30收到云服务器10发来的响应值resp后,根据自己发送的挑战值chal,云服务器的响应值resp以及审计属性集合b来判断等式11是否成立,若等式11成立,则响应值resp有效,云服务器完整保存着用户端的数据;否则,响应值resp无效;

步骤s405:审计服务器30根据验证结果发送验证报告给用户端20,若验证成功,则发送验证成功;否则,发送验证失败;

步骤s406:当用户端20或其他审计者需要验证云服务器10的数据完整性时,重复步骤s401-s405。

本发明还涉及一种基于属性的云数据完整性验证方法的系统,包括云服务器10、用户端20、审计服务器30和密钥产生中心服务器40;所述用户端20分别与云服务器10、审计服务器30、密钥产生中心服务器40交互式连接,所述云服务器10与所述审计服务器30交互式连接。

本实施例是基于公钥基础设施和基于身份的云数据完整性验证协议中,用户端和验证者都需要保存公钥证书或身份标识符,故而承担复杂的密钥管理代价。本发明中,审计属性集合是由用户的固有属性组成,如性别、年龄、职称等,这大大降低了云数据审计方法中的密钥管理代价。

在本实施例中,一个基于属性的云数据审计协议可以指定审计者的范围,使得与该数据有关的群组可以对数据进行审计,而与数据不相关的人无法获得审计权限。用户可以根据设置不同的审计精度来指定审计者的范围。当审计精度提高时,则数量更少但相关性更强的群体可以获得审计权限。这是一般的云数据审计协议不具备的优势。

本实施例基于属性的云数据审计协议还可以支持用户的属性隐私保护,使得审计者在审计过程中无法精确地推测云用户上传文件时使用的所有属性,进而保证云用户的属性隐私。

在本实施例中,如果一群用户中的每一个人都无法成功完成审计工作,那么这群用户将他们的属性合在一起,也无法完成对云数据的审计。换句话说,没有一个人能将这群用户的密钥通过某种方式合在一起来完成审计工作。

本实施例不仅简化了传统审计方法中复杂的密钥管理负担,同时还提供用户属性隐私保护,使得审计服务器在审计的过程中无法推断出用户上传数据所用的全部属性,使得该方法更具实用性。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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