发明名称 一种面向云存储的远程数据完整性验证方法
摘要 本发明提出一种面向云存储的远程数据完整性验证方法,利用聚合签名、指定证明人签名技术,实现了用户以及第三方审计人对用户数据完整性的验证功能,同时保证用户用于数据完整性的信息不被泄露;通过零知识证明技术实现了验证信息的透明度控制,当用户和服务器发生争议时,第三方审计人可以通过一种非交互式的零知识证明技术,产生不可否认的高置信度证明。本发明在云存储服务提供商不可信的情况下,也能够保证云数据完整性验证的准确性,具有易于实现,成本低,数据保护性强,支持第三方审计,隐私保护机制灵活等优点。
申请公布号 CN103699851A 申请公布日期 2014.04.02
申请号 CN201310601738.9 申请日期 2013.11.22
申请人 杭州师范大学 发明人 夏莹杰;夏伏彪;刘雪娇;王贵林
分类号 G06F21/64(2013.01)I;H04L29/06(2006.01)I 主分类号 G06F21/64(2013.01)I
代理机构 杭州天正专利事务所有限公司 33201 代理人 黄美娟;王兵
主权项 1.一种面向云存储的远程数据完整性验证方法,其特征在于包括以下步骤:步骤1,系统初始化系统运行双线性Diffie-Hellman(Bilinear Diffie-Hellman,BDH)参数生成器,产生两个阶为素数q的双线性群G,G<sub>t</sub>,g是群G的生成元,e:G×G→G<sub>t</sub>为双线性对运算,定义一个安全的Hash函数H:{0,1)<sup>*</sup>→G;给定文件F,系统使用Reed-Solomon编码将文件分为n块F(m<sub>1</sub>,m<sub>2</sub>,...,m<sub>n</sub>)其中<img file="FDA0000420339000000011.GIF" wi="202" he="77" />步骤2,系统生成密钥系统运行密钥生成算法KeyGen,为用户U生成私钥:随机数<img file="FDA0000420339000000012.GIF" wi="226" he="78" />则相应的公钥为<img file="FDA0000420339000000013.GIF" wi="218" he="73" />类似地,系统为第三方审计人TPA生成私钥:随机数<img file="FDA0000420339000000014.GIF" wi="270" he="87" />则相应的公钥为<![CDATA[<math><mrow><msub><mi>y</mi><mi>TPA</mi></msub><mo>=</mo><msup><mi>g</mi><msub><mi>x</mi><mi>TPA</mi></msub></msup><mo>;</mo></mrow></math>]]></maths>步骤3,用户存储文件用户运行签名生成算法SigGen(sk<sub>U</sub>,F)为每一个数据块m<sub>i</sub>生成一个同态认证值(homomorphic authenticator):<img file="FDA0000420339000000016.GIF" wi="456" he="74" />作为文件的元数据,所有数据块的同态认证值是可以聚集成一个标签值:φ={σ<sub>i</sub>},1≤i≤n;用户采用Merkle哈希树将各数据块结构化,同时对根节点R进行签名<img file="FDA0000420339000000017.GIF" wi="312" he="76" />将{F,φ,σ<sub>R</sub>}发送给云存储服务器CSS。步骤4,一般完整性验证4.1用户发出挑战请求用户U对文件F进行数据完整性验证时,生成一组挑战信息<img file="FDA0000420339000000018.GIF" wi="474" he="76" />发送给云存储服务器CSS,其中I={s<sub>1</sub>,...,s<sub>c</sub>},s<sub>1</sub>≤i≤s<sub>c</sub>,对于每一个s<sub>i</sub>∈I,s<sub>i</sub>表示第i个数据块m<sub>i</sub>的索引,随机数<img file="FDA0000420339000000019.GIF" wi="173" he="78" />4.2服务器生成证明云存储服务器CSS接收到用户U发送的挑战信息之后,计算生成一段证明:<![CDATA[<math><mrow><msub><mi>&zeta;</mi><mi>i</mi></msub><mo>=</mo><msubsup><mi>y</mi><mi>TPA</mi><msub><mi>r</mi><mi>i</mi></msub></msubsup><mo>,</mo><msub><mi>&mu;</mi><mi>i</mi></msub><mo>=</mo><msub><mi>&sigma;</mi><mi>i</mi></msub><mo>&CenterDot;</mo><msup><mi>g</mi><msub><mi>r</mi><mi>i</mi></msub></msup><mo>,</mo><mi>&zeta;</mi><mo>=</mo><msubsup><mi>&Pi;</mi><mrow><mi>i</mi><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub></mrow><msub><mi>s</mi><mi>c</mi></msub></msubsup><msub><mi>&zeta;</mi><mi>i</mi></msub><mo>,</mo><mi>&mu;</mi><mo>=</mo><msubsup><mi>&Pi;</mi><mrow><mi>i</mi><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub></mrow><msub><mi>s</mi><mi>c</mi></msub></msubsup><msub><mi>&mu;</mi><mi>i</mi></msub><mo>,</mo><mi>&theta;</mi><mo>=</mo><msubsup><mi>&Sigma;</mi><mi>i</mi><msub><mi>s</mi><mi>c</mi></msub></msubsup><msub><mi>m</mi><mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>同时,CSS提供给用户一组辅助信息:{Ω<sub>i</sub>},s<sub>1</sub>≤i≤s<sub>c</sub>,表示第i个叶子节点(存储了H(m<sub>i</sub>))到根节点R的路径上所有兄弟节点的集合,最后,CSS发给用户U一段证明:P={(ζ,μ,θ),{H(m<sub>i</sub>)},{Ω<sub>i</sub>),σ<sub>R</sub>}           (2)其中s<sub>l</sub>≤i≤s<sub>c</sub>,而(ζ,μ)则是关于θ的指定证明人签名。;4.3用户完整性验证用户U收到云存储服务器发送来的证明P之后,首先利用{H(m<sub>i</sub>)}{Ω<sub>i</sub>)生成根节点R。然后通过计算等式e(σ<sub>R</sub>,g)≡e(H(R),y<sub>U</sub>)是否成立,来验证R值是否被篡改。如果等式不成立,则U拒绝验证该证明,并输出失败信息。如果上述等式成立,则U继续计算下列等式是否成立:<![CDATA[<math><mrow><mi>e</mi><mrow><mo>(</mo><mi>&mu;</mi><mo>,</mo><msub><mi>y</mi><mi>TPA</mi></msub><mo>)</mo></mrow><mo>&equiv;</mo><mi>e</mi><mrow><mo>(</mo><mi>&zeta;</mi><mo>,</mo><mi>g</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>e</mi><msup><mrow><mo>(</mo><msubsup><mi>&Pi;</mi><mrow><mi>i</mi><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub></mrow><msub><mi>s</mi><mi>c</mi></msub></msubsup><mi>H</mi><mrow><mo>(</mo><msub><mi>m</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>u</mi><mi>&theta;</mi></msup><mo>,</mo><msub><mi>y</mi><mi>TPA</mi></msub><mo>)</mo></mrow><msub><mi>x</mi><mi>U</mi></msub></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>如果上述等式成立,则该证明验证通过。步骤5,不可否认的完整性验证当发生争议时,第三方审计人TPA可以参与到完整性验证过程中,并给出不可否认的最终证明。TPA接收到CSS云存储服务器发送来的证明P之后,首先利用{H(m<sub>i</sub>)}{Ω<sub>i</sub>}生成根节点R。然后通过计算等式e(σ<sub>R</sub>,g)≡e(H(R),y<sub>U</sub>)是否成立,来验证R值是否被篡改。如果等式不成立,则TPA拒绝验证该证明,并输出失败信息1。否则,TPA继续计算下列等式是否成立:<![CDATA[<math><mrow><mi>e</mi><mrow><mo>(</mo><mi>&mu;</mi><mo>,</mo><msub><mi>y</mi><mi>TPA</mi></msub><mo>)</mo></mrow><mo>&equiv;</mo><mi>e</mi><mrow><mo>(</mo><mi>&zeta;</mi><mo>,</mo><mi>g</mi><mo>)</mo></mrow><mo>&CenterDot;</mo><mi>e</mi><msup><mrow><mo>(</mo><msubsup><mi>&Pi;</mi><mrow><mi>i</mi><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub></mrow><msub><mi>s</mi><mi>c</mi></msub></msubsup><mi>H</mi><mrow><mo>(</mo><msub><mi>m</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&CenterDot;</mo><msup><mi>u</mi><mi>&theta;</mi></msup><mo>,</mo><msub><mi>y</mi><mi>U</mi></msub><mo>)</mo></mrow><msub><mi>x</mi><mi>TPA</mi></msub></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>如果上述等式成立,则该证明验证通过,否则证明验证失败,输出失败信息1。需要生成不可否认的证明时,TPA首先调用上述TPA验证算法。如果验证通过,说明证明无误,TPA输出一段非交互式的零知识证明π<sub>1</sub>,以证明两个离散对数相等的关系。如果验证没有通过,输出了失败信息0,并且TPA将{H(m<sub>i</sub>)}{Ω<sub>i</sub>}这部分信息直接公开,从而任何人都能验证该结论。如果TPA输出的是失败信息1,则其输出一段非交互式的零知识证明π<sub>2</sub>,以证明两个离散对数不相等的关系。对于上述非交互式的零知识证明,任何人都可以通过简单的计算加以验证。
地址 310036 浙江省杭州市下沙高教园区学林街16号