基于区块链实现防数据篡改、用户共谋的云数据共享方法与流程

文档序号:16502961发布日期:2019-01-05 08:52阅读:241来源:国知局
基于区块链实现防数据篡改、用户共谋的云数据共享方法与流程

本发明涉及一种基于区块链实现数据防篡改和用户抗共谋的云数据共享方法,属于云数据共享、数据隐私、区块链领域。



背景技术:

随着网络技术及云计算的快速发展,企业或者个人数据量迅速增长。为了便捷存储和共享数据,越来越多的企业或者个人将自己所拥有的数据存储和共享转移到云空间中,与传统的信息共享和通信技术相比,云计算具有低能耗和资源高效共享的特点。然而,这给数据丢失和隐私泄漏等信息安全带来了巨大的挑战。而且,当数据存储在云中,用户将完全无法控制其个人数据,这对确保共享数据的机密性和隐私性成为重点考虑的问题。

为了解决上述问题,现有的解决方法为在数据共享模式中采用中心权威(ca,centralauthority)或第三方认证机构(tpa,third-partyauthentication)来负责管理数据和秘钥的认证工作,或在认证机构中保护专用根证书密钥。然而,以上解决办法中仍有不足之处,中心权威和第三方均是不可信的,容易出现共谋或者是集权等问题。而且在某些场景中不需要ca和tpa。如一种科研、学习共享场景中,具有相似数据的用户可以根据他们的需求进行数据交易,或通过共享计算获得有意义的结果。他们之间是不需要建立一个信任中心权威ca来负责管理自己的共享数据,也不需要专门的认证机构tpa来负责。而且如果采用这种方式的话会导致系统处理步骤复杂,容易造成共享数据被篡改,且恶意用户之间合谋等问题。



技术实现要素:

本发明的目的是:在云数据共享环境下,防止数据被恶意篡改以及恶意用户共谋来窃取共享数据,提出一种安全的云共享方法。

为了达到上述目的,本发明的技术方案是提供了一种基于区块链实现防数据篡改、用户共谋的云数据共享方法,其特征在于,包括以下步骤:

步骤1、通过初始化计算得到系统参数(g,p,h,h0,h1,h2,u,v,w,h1,h2,f,encκ()),式中,g为随机选择的生成器,g∈g1,g1为循环群;p=γ·g,γ为随机整数,为非零的整数集;h、h0为属于循环群g1的两个元素;h1=ξ1·h0,h2=ξ2·h0,ξ1、ξ2为随机选择的整数,为非零的素数集;w=γ*p;h1、h2为两个哈希函数;f为随机整数,encκ()为加密算法;

步骤2、采用(p,t)门限paillier密码体制,私钥sk分离并被分发给p个用户,p>=2,在分发过程中,根据数据共享奉献率的多少进行推荐一名数据所有者组长dol,用户秘钥的分发由数据所有者组长dol负责,此处的dol和ca和tpa是不同的,dol的权限没有ca和tpa高。且在本方法中dol仅仅是私钥分发和验证的作用,其最大的权限(成员验证、数据被篡改)是有由各个成员自己负责。数据所有者组长dol通过安全的通道将秘钥发送给相应的用户;

步骤3、采用同态加密的方法生成文件,随后将文件上传;

步骤4、当用户认证通过后,用户进行共享数据访问操作,当用户需要更新数据块时,用户必须在数据块更新后,对数据块进行签名操作,设用户i对数据块mi进行更新后,在数据块mi中进行了签名操作,签名由idi,mi,σi,si四部分组成,其中,idi为数据块mi的id、mi为数据块mi、σi为签名、si为签名者的身份;

在进行数据共享过程中,若数据被某一用户恶意篡改,则导致了其他用户进行集体验证,若没有通过验证公式,则表明当前用户为不满足共享中的诚实用户的条件,数据所有者组长dol执行当前用户的撤销操作;

步骤5、用户组检测,用户组中的每个用户为一个成员,包括以下步骤:

步骤501、每一个成员向数据所有者组长dol提交和一个签名δi,ai为成员i的唯一标识,验证ai=wi*ttmp是否成立,对于成员i,若不成立,则进入步骤502,若成立,则进入步骤503;

步骤502、成员i向数据所有者组长dol发送一个错误报告,错误报告为(n,idi,γi,mi-1),式中:n=h2(idi||t|0≤t≤n-1),t为错误报告有效时间阈值;rj为成员i所选择的随机整数;mt-1为表示t-1时刻更新的数据块;,数据所有者组长dol依据错误报告检查ai=wi*ttmp是否成立,若成立,则(表示该成员并非恶意用户);若不成立,则表示成员i发送给其他成员的消息与成员i提交给数据所有者组长dol的消息不同,成员i必须在一段时间内重新发送错误报告,若成员i在阈值t内重新发送错误报告,则数据所有者组长dol依据错误报告重新检查ai=wi*ttmp是否成立,若成员i在阈值t内没有重新发送错误报告,表明成员i为不可信节点,从成员中删除成员i,数据所有者组长dol执行成员i的撤销操作;

步骤503、成员i为诚实成员,继续执行下一个成员的判断操作;

步骤6、公开记账,用户数据访问后,进行广播,其他用户对该广播用户的操作记录进行验证并记录,在整个共享过程中,当有多个用户发现错误后,申请发起错误验证操作,及最少t个成员参与验证。本方法中所有的数据均以数据块的方式存储:

为确保记录内容是可信的且未受到篡改,数据散列值存储在项目块结构中,数据块由多个项目块组成,计算散列值以获取数据块的merkle根。merkle根被提交到区块链,以便数据不会被篡改,每个项目块只存储项目的哈希值和头信息;

每个数据包含五种信息:第i个数据块mi、签名σi、数据块mi的ididi,签名者的身份si和散列值,用户记录请求并将公钥作为身份,通过代表节点是否接受广播请求来实现节点信息的更新操作;

步骤7、秘钥更新:

数据所有者组长dol定期进行用户秘钥的更新操作,同时,在一定时间间隔里,模型中出现了多次恶意篡改数据问题后,数据所有者组长dol发起用户秘钥更新操作。

本发明具有如下优点:

1)本发明可以解决云共享数据被篡改的问题。通过使用区块链技术,用户每次的访问都会记录在区块链中,而且每次的访问中都记录了基于身份的公钥信息,一旦数据被篡改,其他用户可以高效的追溯到该恶意用户。而且,在该方案中,用户之间可以交换共享数据,并且交易信息在多个用户之间被加密,以确保其安全性和可靠性。

2)本发明可以解决云共享环境中用户合谋的问题。采用了(p,t)门限paillier密码体制来保护区块链中的多方数据隐私。在本发明中,(p,t)门限paillier密码体制被应用于区块链。私钥sk被分开(sk1,sk2,...,skp)并被分配给p个参与者。如果一方想要解密密文c,则需要聚合其他方的至少(t-1)个私钥。这在实际中是很难实现。

3)本发明中诚实用户之间相互平等,平等执行数据的更新与维护操作,不仅解决了传统的中心权威ca,第三方认证机构tpa等来维护数据,而是由用户参与记账,来维护共享数据的安全。同时,解决了云服务器的不可信问题,而且将计算量进行了分解,满足实际场景需要。

附图说明

图1为本方法模型示意图;

图2为本方法数据块签名格式结构图;

图3为用户检测流程示意图;

图4merkle树的存储格式;

图5项目数据结构。

具体实施方式

为使本发明更明显易懂,兹以优选实施例,并配合附图作详细说明如下。

如图1所示,本方法的模型由数据所有者(dataowner)、云服务提供商(csp)、用户(user)等三个角色组成。(1)数据所有者首先对数据加密,然后上传到云服务器中进行共享,其中数据所有者由专门共享和兼职共享(用户)两个角色组成。即该场景中的用户也可以进行共享自己所有的数据。在数据所有者中,根据数据共享奉献率的多少进行推荐一名数据所有者组长(dataownerleader,以下简称为dol),进行数据操作的一些工作负责,在本发明的方案中dol为诚实的数据共享者和负责人的角色。(2)云服务提供商负责数据拥有者的数据存储,云服务提供商为诚实而又好奇的,它可以诚实的存储数据,但是也会不断的探测所存储的数据内容。(3)用户为方案中的数据需求者,用户通过身份认证后,便不断的访问或更新云中的数据。同时用户在该模型中也可以为数据所有者,可以更新所上传的数据,可以访问其他用户的数据。

本发明提供的一种基于区块链实现防数据篡改、用户共谋的云数据共享方法可以分为八部分:初始化、密钥生成、用户检测、文件生成及上传、文件共享、用户记账、用户撤销及秘钥更新。

步骤1:初始化,初始化部分主要包括参数初始化,用户注册等部分组成,包括以下步骤:

步骤101:选择两个元素h、h0,且h、h0∈g1,g1为循环群,并随机选择两个素数为非零素数集。该步骤由dol负责。dol为数据所有者推荐选出,dol具备用户注册和用户秘钥的撤销权限,其他权限和数据普通所有者相同,详细见式(1):

步骤102:随机选择一个生成器g∈g1和一个随机整数为非零整数集,然后计算p=γ·g,w=γ·pq。另外dol选择两个哈希函数h1、h2,将它的任意长度分别映射到g1的非零区间和非零点

步骤103:选择另外一个整数f,且

通过步骤101至步骤103的计算后,便可得到系统参数(g,p,h,h0,h1,h2,u,v,w,h1,h2,f,encκ()),其中encκ()为系统加密算法,主要用于数据加密的作用。

步骤2:秘钥生成阶段,采用(p,t)门限paillier密码体制,其中:私钥sk分离(表示为:sk1,sk2,...,skp)并被分发给p(p>=2)个用户;t为需要解密密文人数阈值,即只有t个人或者是t个人以上才可以解密密文。在实际场景中,数据是由多方维护,因此,如果一方想要解密整个密文c,则至少需要聚合其他奇偶校验的(t-1)个私钥。这在实际情况下,是很难实现共谋的。步骤2具体包括如下步骤:

步骤201:秘钥生成(sk,pk),pk为公开密钥。dol按如下方式向组用户分发秘密值:

步骤2011:创建用户多项式f(x),生成私钥,如式(2)所示:

式(2)中,为秘密,即完整的私钥;ai为代表i用户的所有标识;ski为表示i用户的私钥,其中i的取值范围在[1,p]之间。最后,每个用户都有秘密值,即共享秘密密钥。当他们需要保密时,管理员重新构建密钥,并将非常安全的通道发送给相应的用户。

步骤2012:生成公开密钥pk

公开密钥pk的生成采用现有的方法进行实现。然后,数据所有者将密文c和基于身份的公开密钥pk一起发送到云数据中心。

步骤3:文件生成及上传

文件生成及上传主要是数据所有者与云服务器之间的操作,数据所有者首先对将要共享的文件进行加密处理,然后将加密后的文件上传到云数据中心,包括以下步骤:

步骤301:文件生成操作

主要是对上传的文件进行分块和加密操作,采用的方法为同态加密。同态加密允许用户直接执行特定于密文的代数运算,获得结果,并对相同的明文加密结果执行相同的操作。公开密钥pk和私钥sk由安全参数α生成。公开密钥pk用于加密明文,私钥sk用于解密密文。假设明文m∈zn,n是一个大的正整数,zn是整数模n的集合,本发明中将明文m的加密表示为epk(m)。同态加密具有属性:

式(3)及式(4)中,m1和m2是需要加密的明文;而a是常数。

步骤302文件上传

设在用户和云之间上传文件f,对文件f进行哈希操作,使得h:{0,1}*→{0,1}l,l表示为哈希的长度。即用户对文件f进行哈希操作后,生成一个哈希键kf=h(f),使用kf进行唯一标记文件f。

步骤303:在步骤301中介绍了加密本方法中所采用的加密算法,用公式f*=epk代表文件f已加密。由于在步骤302中提到kf,存储在本地。因此将存储在云中。

步骤304:通过上述步骤后,用户将f*发送到云数据中心。

步骤4:文件共享,当用户认证通过后,用户进行共享数据访问操作,包括以下步骤:

步骤401:用户在进行身份验证通过后,便可以访问云共享中的数据;

步骤402:当用户需要更新数据块时,用户必须在数据块更新后,对数据块进行签名操作,用户对数据块签名的格式如图2所示。以用户i为例,在用户i对数据块mi进行更新后,在数据块mi中进行了签名操作,签名由idi,mi,σi,si四部分组成,其中idi代表数据块mi的id、mi代表数据块mi、σi代表签名、si代表签名者的身份。签名结构图如图2所示。

在进行数据共享过程中,如果出现数据被某一用户恶意篡改,则导致了其他用户读取到了被毁坏的数据,其他用户进行集体验证,则表明该用户为不满足共享中的诚实用户的条件,则执行删除操作。

用户集体验证公式如下:

式(5),f(x)为t个用户联合进行解密的密文。

执行删除操作时,dol进行销毁该用户的秘钥和数据的访问权限。同时,其他用户在自己的账本中也会记录不诚实用户的记录,当下次该用户再进行数据访问请求时,系统会执行拒绝请求的操作。

步骤5:用户检测,在由不通的用户组成的用户组中,不能确保每一个用户都是可信的,存在恶意的用户毁坏共享数据的可能。这将导致用户组中其他用户访问了错误的数据。因此,在共享中需要执行用户检测,对恶意用户执行撤销共享操作,包括以下步骤

步骤501:用户检测

首先,dol为所有成员进行广播{n,iddol,ai|0≤i≤v-1},式中,n=h2(idi||t|0≤i≤n-1),iddol为dol的身份标识,ai为一个成员的唯一标识。然后要求每一个成员发送一个验证报告。每一个用户向dol提交ai=γ2*g*ttmp和一个签名δi,f为一个非0整数,当验证通过后,验证ai=wi*ttmp(6)是否相等。

步骤502:错误发现

若验证式(6)不相等,则dol需要当前用户i发送一个错误报告(n,idj,γi,mt-1)。错误报告包含用户i的密钥和他从预期用户收到的消息。随后,dol再次检查式(6)是否成立。如果不成立,则表示用户i发送给其他用户的消息与用户i提交给dol的消息不同。因此,用户i必须在一段时间内重新发送错误报告。如果成立,则表明i用户并非为恶意用户。

在式(6)不成立的情况下,如果用户i在阈值t内没有重新发送报告,表明该用户i为不可信用户,则应从用户组中删除用户i,dol执行用户i的撤销操作。如果用户i在阈值t内重新发送了报告,则重新判断式(6)是否成立。

若验证式(6)相等,则当前用户i为诚实用户,dol对用户组中其余用户进行检测,检测的形式和内容与用户i检测的形式一样。如果在检测的过程中出现有类似于用户i的用户,则对该用户进行删除处理。如图3所示为整个用户检测的流程图。

步骤6:公开记账,用户数据访问后,进行广播,其他用户对该广播用户的操作记录进行验证并记录,包括以下步骤:

步骤601:数据块存储,在本发明中,所有的数据均以数据块的方式存储。为确保记录内容是可信的且未受到篡改,数据散列值将存储在我们构建的项目结构中。将各项目的散列值放入项目块结构中,可以有效减少搜索空间,加快用户对记录的检查速度。

数据块由多个项目块组成,计算散列值以获取数据块的merkle根。merkle根被提交到区块链,以便数据不会被篡改。每个项目块只存储项目的哈希值和头信息。每个数据包含五种信息:mi、σi、idi、si和散列值。merkle树的存储结构和项目数据结构分别如图4和图5所示。

步骤602智能合约

智能合约用于将数据信息写入区块链。智能合约程序的规格如下:

步骤6021:用户发起记录请求,并以公钥作为自己的身份认证。

步骤6022:代表节点接受请求,并广播已接受的请求。如果不接受,再不进行响应操作。

步骤6023:用户提交记录,代表节点根据用户的公钥将记录添加到项目。

步骤6024:代表节点广播项目验证信息,代表节点验证记录,其他节点更新数据。

步骤6025:定期检查项目块的数量,并计算块的merkle根。将所有新生成的数据块的merkle根锚定到区块链。

步骤6026:返回到步骤6021,进行执行下一步合约操作。

步骤7:秘钥更新,为了确保共享数据的安全,dol会定期进行用户秘钥的更新操作。同时,在一定时间间隔里,模型中出现了多次恶意篡改数据问题后,为了确保数据的安全,dol发起用户秘钥更新操作。

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