本发明涉及一种云计算安全技术领域,尤其涉及一种入侵容忍的云存储数据审计方法。
背景技术:
随着云计算的快速发展,越来越多的用户将数据存储在云服务器上。这种存储服务为用户带来了很多便利,但是用户会对存储在云服务器上的数据的安全问题产生担忧。云服务可能会为了声誉而隐藏数据丢失问题,或者是为了节省存储空间而删除用户不经常访问的数据。因此用户需要对存储在云服务器上的数据进行完整性检测。
目前可行的云存储数据审计方案中,公共审计是一种广泛应用的数据完整性验证技术。这种技术将审计工作委托给一个有能力的第三方审计者(third-partyauditor,tpa)。用户将数据文件及生成的文件标签上传到云服务器,需要检测数据完整性时只需向tpa发送审计请求。tpa执行审计操作并将结果返回给用户。
然而,很多用户在一些安全级别低的移动设备上计算数据文件标签,使得用户计算标签的私钥容易泄露。一旦用户的私钥被云服务器等敌手获得,即使用户的数据在云服务器上不存在了,云服务器依然可以向tpa提供完整存储数据的证明。因此如何防止用户的审计密钥泄露或者减少部分密钥泄露带来的危害至关重要。而定期更新用户的私钥会大大降低用户密钥泄露带来的危害。
现有的方法存在如下缺点:
(1)前向安全的密钥更新算法更新用户密钥。该方法可以保护用户密钥泄露之前所计算的文件标签不可伪造,这些文件的审计结果仍然可信。但是密钥泄露之后,敌手可以执行密钥更新操作,得到后续时间的密钥。
(2)密钥隔离更新算法更新用户密钥。该方法可以保证除了敌手直接获得的时间段的用户私钥,其他时间段用户密钥都是安全的,包括密钥泄露之后的时间段。但是该方法要求一个安全设备来协助用户更新密钥,而且该安全设备要求是物理安全的,假设不会被敌手攻击。一旦安全设备被敌手攻击,密钥安全无法保证。
从以上分析可以看出目前的用户审计密钥更新算法在抗密钥泄露方面的保护力度偏弱。在实施本发明的过程中,我们通过引入入侵容忍密钥更新算法来执行用户的密钥更新操作,借助tpa协助用户更新密钥,使tpa执行两项任务:审计和协助用户更新密钥。本发明达到的安全级别如下:
(1)仅仅tpa上的密钥泄露了,对用户私钥的安全性毫无影响;
(2)tpa和用户的密钥多次泄露,但同一时间段tpa和用户的密钥泄露之间存在密钥刷新操作。此时除了用户私钥泄露的时间段,其他时间段用户私钥都是安全的;
(3)tpa和用户的密钥多次泄露,某一时间段tpa和用户的密钥泄露之间不存在密钥刷新操作。此时该时间段之前的文件标签仍然不可伪造,审计结果仍然可信。
技术实现要素:
本发明的目的在于提供一种入侵容忍的云存储数据审计方法,该方法中借助tpa协助用户进行周期性的密钥更新以及每个时间周期内的密钥刷新操作。使得即使用户和tpa上的密钥多次泄露,只要用户和tpa同一时间周期内的密钥泄露之间存在密钥刷新,除了用户端密钥泄露的那几个周期,其他任何周期数据审计仍然是安全的。
为解决上述技术问题,本发明提供了一种入侵容忍的云存储数据审计方法,其包括:
系统参数生成步骤:由系统参数生成中心生成各种参数以及用户和tpa的初始私钥;
密钥更新步骤:由tpa协助用户在每个周期末生成下一个周期的私钥,用户公钥保持不变,系统执行完参数生成步骤后立即执行密钥更新步骤;
密钥刷新步骤:tpa在每个周期内协助用户刷新私钥,每个周期内密钥刷新的次数可由用户随机指定;以及
数据上传和审计步骤:用户为数据文件生成文件块标签和文件标签,然后将标签与文件一起上传到云服务器,当用户需要检测文件完整性时,向tpa发送审计请求,tpa执行审计操作并将审计结果发送给用户。
进一步地,所述系统参数生成步骤包括以下步骤:
第a1步,参数生成中心选择两个阶为素数q的乘法循环群g1和g2,以及可计算的双线性映射
第a2步,参数生成中心为用户生成一对公私钥(st,pk),用于计算文件标签;
第a3步,参数生成中心选择n=2l作为数据文件的生命周期,其中l+1为完全二叉树的深度,n为该二叉树的叶子结点数目。二叉树的根结点用ε(空串)表示,左孩子用0表示,右孩子用1表示。时间周期整数t(t=0,1,…n-1)用对应的l比特长度的二进制字符串表示,与前序遍历该时间周期对应叶子结点得到的l比特01字符串相同。
第a4步,参数生成中心选择群g1的生成因子g和u,随机选择
第a5步,参数生成中心计算
第a6步,参数生成中心随机选择一个分配,sec′<0>和sec″<0>,满足sec<0>=sec′<0>·sec″<0〉,这两部分分别保存在不同的栈中。设置tpa的初始私钥为skb0.0=sec'<0〉,将skb0.0发送给tpa。用户的初始密钥为sk0.0=(sk<0>,sec″<0>),将sk0.0发送给用户后,删除参数生成中心的其他中间消息。
所述密钥更新步骤包括以下步骤:
第b1步,tpa执行密钥更新操作。在第t个周期(<t>=t0t1…tl,0≤t<n)末,栈sec'<t>的栈顶元素出栈。
第b2步,tpa判断当前周期t的tl是否为0,如果为0表明当前时间周期对应于完全二叉树的一个左叶子结点,否则对应完全二叉树的一个右叶子结点。再依据tl的值进行不同的密钥更新操作。如果tl=0,则当前栈中的保存的数值就是tpa下一个周期的私钥sec'<t+1>,步骤b1中出栈的元素为s'<t+1>。tpa将密钥更新消息skut=s'<t+1>发送给用户,然后删除s'<t+1〉。如果tl=1,tpa找出t0t1…tl中满足ti=0的最大i值,此时步骤b1中出栈的元素为s'w(w=t0t1…ti-11)。对于j=0,1,…l-i-1,tpa选择
第b3步,用户执行密钥更新操作。用户接受tpa发送的密钥更新消息skut,在第t个周期末(<t>=t0t1…tl,0≤t<n),栈sec”<t>的栈顶元素出栈。
第b4步,用户判断当前周期t的tl是否为0,如果为0表明当前时间周期对应于完全二叉树的一个左叶子结点,否则对应完全二叉树的一个右叶子结点。用户依据不同的tl的值进行不同的密钥更新操作。如果tl=0,则当前栈中保存的数值就是用户下一个周期的sec”<t+1>,步骤b3中出栈的元素为s”<t+1>,而且ω<t+1>=ω<t>。tpa发送的密钥更新消息为skut=s'<t+1>。用户计算s<t+1>=s'<t+1>·s”<t+1>,得到t+1周期的私钥skt+1.0=(s<t+1>,ω<t+1>,sec”<t+1>)。如果tl=1,用户找出t0t1…tl中满足ti=0的最大值,此时步骤b3中出栈的元素为s″w(w=t0t1…ti-11)。tpa发送的密钥更新消息为
所述密钥刷新步骤包括以下步骤:
第c1步,tpa执行密钥刷新操作。tpa对私钥
第c2步,用户执行密钥刷新操作。用户接受tpa发送的密钥刷新消息,对私钥中的
所述数据上传和审计步骤包括以下步骤,
第d1步,用户将文件上传到云服务器。用户在周期t时段上传文件f,首先将文件分成n个文件块f={m1,…mn}。用户选择
第d2步,数据审计。用户向tpa发送文件审计请求。tpa从数据块索引值[1,2,…n]随机选择c个整数i={s1,s2,…,sc}表示文件f需要检测的c个数据块。对每个i∈i,tpa选择一个随机数vi∈zq,然后将挑战chal={(i,vi)}发送给云服务器进行审计。云服务器接收到挑战后,计算
本发明还提供了实现上述入侵容忍的云存储数据审计方法的入侵容忍的云存储数据审计系统,其包括系统参数生成模块;密钥更新模块、密钥刷新模块以及数据上传和审计模块,所述各个模块按照上面所述的方法的各步骤实现入侵容忍的云存储数据审计方法。
本发明的有益效果:
本发明借助tpa帮助用户执行密钥更新操作,保持公钥不变,在不影响审计效率的情况下提高了审计的安全性;用户周期性的更新审计密钥,并在每个周期内执行密钥刷新操作,使得即使用户多个时间周期的审计密钥泄露了,其他时间周期的审计仍然安全;本发明采用公共审计,用户将审计任务委托给审计中心,减轻自身负担。审计时随机取样数据块,检查一小部分数据就能以很高的概率保证发现异常,提高了审计效率。
本发明相对于使用前向安全密钥更新算法更新用户审计密钥的方案和使用密钥隔离更新算法来更新用户审计密钥的方案,具有以下优点:
相对于使用前向安全密钥更新算法更新用户审计密钥的方案,本发明使得即使用户某个时间端审计密钥泄露,其他时间段的审计安全不受影响,包括密钥泄露周期之后的时间段。然而使用前向安全密钥更新算法更新用户审计密钥的方案中,一旦用户的审计密钥泄露,之后的审计都不安全,仅仅保证密钥泄漏之前的审计安全性。
相对于使用密钥隔离更新算法来更新用户审计密钥的方案,本发明借助tpa协助用户更新密钥,不需要引入安全设备。使得即使tpa上密钥泄露了,对用户私钥的安全性毫无影响,而使用密钥隔离更新算法来更新用户审计密钥的方案要保证安全设备不受攻击。本发明中,即使tpa和用户的密钥多次泄露,只要同一时间段tpa和用户的密钥泄露之间存在密钥刷新操作,此时除了用户私钥泄露的时间段,其他时间段用户私钥都是安全的;而使用密钥隔离更新算法来更新用户审计密钥的方案中一旦安全设备的密钥泄露,方案的安全性无法保证。另外,即使tpa和用户的密钥多次泄露,而且某一时间段tpa和用户的密钥泄露之间不存在密钥刷新操作,此时该时间段之前的文件标签仍然不可伪造,审计结果仍然可信。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明一实施例的云存储数据审计方法中的系统参数生成阶段示意图;
图2为根据本发明一实施例的云存储数据审计方法中的tpa密钥更新阶段树形示意图;
图3为根据本发明一实施例的云储存数据审计方法中的tpa密钥更新阶段栈的示意图;
图4为根据本发明一实施例的云储存数据审计方法中的用户密钥更新阶段树形示意图;
图5为根据本发明一实施例的云存储数据审计方法中的用户密钥更新阶段栈的示意图;
图6为根据本发明一实施例的云存储数据审计方法中的密钥刷新阶段示意图;以及
图7为根据本发明一实施例的云存储数据审计方法中的文件上传和审计阶段示意图;
图8是根据本发明一实施例的云存储数据审计方法的流程图;以及
图9是根据本发明一实施例的云存储数据审计系统的架构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
如图1和图8所示,本发明提供的入侵容忍的云存储数据审计方法所使用的系统成员包括系统参数生成中心、云服务器、用户、第三方审计(tpa)。参数生成中心生成系统运行所需要的各种参数,包括用户私钥、用户公钥等等;云服务器为用户提供存储服务;用户将大量的数据文件上传到云服务器存储;第三方审计为用户提供审计服务,检测用户存储的云服务器上数据的完整性。
以下采用实施例来详细说明本发明的实施过程,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。
如图9所示,本发明提供的入侵容忍的云存储数据审计方法包括四个步骤:系统参数生成步骤s10、密钥更新步骤s20、密钥刷新步骤s30、数据上传和审计步骤s40。系统参数生成步骤由系统参数生成中心生成各种系统参数;密钥更新步骤由tpa协助用户周期性更新审计密钥;密钥刷新步骤由tpa协助用户在每个周期内刷新审计密钥;数据上传和审计步骤,用户为文件生成验证标签后,将文件和验证标签上传到云服务器,tpa对文件进行审计以验证文件是否完整得存储在云服务器上。
各附图相关说明如下:
图1为系统参数生成阶段的示意图。参数生成中心生成初始的系统参数,首先参数生成中心选择两个阶为素数q的乘法循环群g1和g2,满足双线性映射
参数生成中心选择n=2l作为数据文件的生命周期,即文件的生命时间分为n个周期0,1,…n-1,其中l+1为某个完全二叉树的深度,n为该二叉树的叶子结点数目,叶子结点从左到右依次对应时间周期0,1,…n-1。二叉树的根结点用ε(空串)表示,左孩子用0表示,右孩子用1表示。时间周期整数t(t=0,1,…n-1)用对应的l比特长度的二进制字符串表示,与前序遍历该时间周期对应叶子结点得到的l比特01字符串相同。
参数生成中心选择群g1的生成因子g和u,随机选择
ω<t>为从二叉树根结点到时间周期t对应叶子结点前序遍历的路径上经过的二叉树结点(非叶子结点)拥有的数值,审计时作为验证值,不需要保密;s<t>是时间周期t时刻的私钥,用于计算文件块标签;ω<t>和s<t>组成了时间周期t对应叶子结点拥有的秘密值sk<t>;令
参数生成中心随机选择一个分配,sec'<0〉和sec”<0〉,满足sec〈0>=sec'<0>·sec”<0>,并将两部分保存在不同的栈中。设置tpa的初始私钥为skb0.0=sec'<0>,将skb0.0发送给tpa。
用户的初始密钥为sk0.0=(sk<0>,sec”<0>),将sk0.0发送给用户后,参数生成中心删除其他中间消息。
图2和图3分别为tpa密钥更新阶段树形示意图和栈的示意图。如图2所示,设二叉树深度为4,则l=3,n=8,周期为0,1,…,7。设当前周期t为<2>=010。则在周期t末,如图3所示,栈sec'<t〉的栈顶元素s'011出栈。tpa判断当前周期t的tl是否为0,如果为0表明当前时间周期对应于完全二叉树的一个左叶子结点,否则对应完全二叉树的一个右叶子结点,并依据tl的值进行不同的密钥更新操作。
如图2所示,tl=0,则当前栈中的保存的数值就是tpa下一个周期的私钥sec'<t+1〉,如图3所示上述出栈的元素为s'<t+1〉。tpa将密钥更新消息skut=s'<t+1〉发送给用户,然后删除s'<t+1〉。如果假设当前周期t为〈3〉=011,如图2所示,tl=1,tpa找出t0t1…tl中满足ti=0的最大i值,如图3所示上述出栈的元素为s'w(w=t0t1…ti-11)即s′1。对于j=0,1,…l-i-1,tpa选择
,将
图4和图5分别为用户密钥更新阶段树形示意图和栈的示意图。如图4所示,同上述图2,设l=3,n=8,周期为0,1,…,7。并设当前周期t为<2>=010。在当前周期t末,用户接受tpa发送的密钥更新消息skut。
如图5所示,栈sec”<t>的栈顶元素s″011出栈。用户判断当前周期t的tl是否为0,如果为0表明当前时间周期对应于完全二叉树的一个左叶子结点,否则对应完全二叉树的一个右叶子结点。用户依据不同的tl的值进行不同的密钥更新操作。
如图4所示,tl=0,则当前栈中保存的数值就是用户下一个周期的sec”<t+1>,如图5所示上述出栈的元素为s”<t+1>,如图4所示ω<t+1〉=ω〈t〉。于是tpa发送的密钥更新消息为skut=s'<t+1〉。用户计算s<t+1>=s'<t+1>·s”<t+1>,得到t+1周期的私钥skt+1.0=(s<t+1>,ω<t+1>,sec”<t+1>)。如果假设当前周期t为<3>=011,如图4所示,tl=1,用户找出t0t1…tl中满足ti=0的最大值,如图5所示上述中出栈的元素为s″w(w=t0t1…ti-11)即s″1。
于是tpa发送的密钥更新消息为
,将
图6为密钥刷新阶段示意图。如图6所示,设当前周期为t,用户指定周期t内密钥刷新次数为rn(t)。tpa对私钥
图7为文件上传和审计阶段示意图。如图7所示,用户在周期t时段上传文件f,首先将文件分成n个文件块f={m1,…mn}。用户选择
用户将文件f、验证标签φ以及文件标签tag一起发送给云服务器。当用户希望检测云服务器上文件f的完整性时,用户向tpa发送文件审计请求。tpa从数据块索引值[1,2,…n]随机选择c个整数i={s1,s2,…,sc}表示文件f需要检测的c个数据块。对每个i∈i,tpa选择一个随机数vi∈zq,然后将挑战chal={(i,vi)}发送给云服务器进行审计。
云服务器接收到挑战后,计算
如果成立表明文件f完整的存储在云服务器上,否则表示云服务器上存储的文件f是不完整的。验证完成后tpa将审计结果发送给用户。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。