当前位置: 首页 > 专利查询>东北大学专利>正文

一种基于身份的动态数据完整性审计方法技术

技术编号:23561773 阅读:67 留言:0更新日期:2020-03-25 06:31
本发明专利技术涉及一种基于身份的动态数据完整性审计方法,基于私钥生成机构、客户端、第三方审计中心和云存储服务器实现。私钥生成机构生成私钥秘密交付给客户端;客户端执行文件预处理操作后将文件存储于云服务器,向第三方审计中心发送挑战请求来验证数据是否完整;第三方审计中心接收挑战请求,生成挑战信息发送给云服务器;云服务器接收挑战信息后生成证据信息返回给第三方审计中心;第三方审计中心验证数据是否完整,并将验证结果发送给客户端。本发明专利技术与现有技术相比,无需部署PKI即可认证客户端的身份,减少了资源消耗,且支持云存储数据的动态更新,能够保护动态数据的完整性。

An identity based dynamic data integrity audit method

【技术实现步骤摘要】
一种基于身份的动态数据完整性审计方法
本专利技术属于网络安全领域,具体涉及一种基于身份的动态数据完整性审计方法。
技术介绍
随着计算机技术的普及和云计算的发展,云存储因其低廉的价格、高效的存储效率以及丰富的用户个性化定制服务受到了越来越多的企业和用户的青睐。用户只需将数据上传至云服务器,就可以实现不同设备之间数据的共享。云存储极大的释放了用户本地空间,用户不需要存放数据副本,可以根据自己的实际需求决定何时上传和下载存储在云服务器上的文件,保证了用户数据存储的灵活性。然而,由于用户数据只存储在云服务器,且不存在第三方机构对数据存储过程进行监督,云存储面临着严竣的安全挑战。当用户选择云存储服务时,用户自身不会保存数据副本文件,导致用户无法对其存放在服务器上的数据进行有效的监督,也无法保证其存储在云服务器上的数据完整性。当用户将数据存储到云服务器中时,可能面临以下数据破坏的行为[3]:服务器出现软件或者硬件上的问题致使数据丢失;存储在云服务器中的数据遭到其他人恶意破坏;云服务提供商未遵守用户隐私协议,为了降低成本,擅自删除一些访问频率低的数据。因此在现有的云存储服务中,用户存储于云服务器上的数据无法得到有效保护,用户也无法及时发现服务器损坏数据的行为。因此保证云存储技术中用户数据的完整性显得尤为重要。最初的解决方案是通过下载云服务器中的文件与原始数据文件进行比较,然而对于云服务器中存储了海量数据的情况,该方案中上传下载文件将面临极大的通信代价。针对此问题,研究者们提出了许多数据完整性审计方案。数据完整性审计指的是用户在删除了本地数据副本、且无需下载原数据的情况下,利用预先生成的数据标签进行计算,验证云服务器上存储的用户数据是否遭到了篡改。然而,目前基于身份的数据完整性审计方案大多只支持静态数据的问题,如何在保证基于身份的数据完整性审计的同时实现数据的动态更新,具有十分广阔的研究意义和应用价值。
技术实现思路
针对现有技术的不足,提供一种基于身份的动态数据完整性审计方法。本专利技术的技术方案如下:一种基于身份的动态数据完整性审计方法,包括步骤如下:步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:步骤1.1:首先生成阶数为素数q的加法群G1,以及阶数为素数q的乘法循环群G2,然后选择G1的生成元g,定义离散对数问题中的加法群为G1,乘法循环群为G2,群G1和G2满足双线性映射e:G1×G2→G2,选取四个密码学哈希函数H1、H2、H、h,具体表示为令公共参数param={G1,G2,e,q,g,H1,H2,H,h};步骤1.2:令主私钥为msk,选择随机数x作为主私钥,即主私钥msk=x,且x满足x∈Zq,Zq表示[0,q-1]的整数;步骤1.3:计算主公钥mpk=gx;步骤1.4:公开公共参数param和主公钥mpk,秘密保存主私钥msk;步骤2:客户端与私钥生成机构交互,运行身份密钥生成算法,使用客户端ID、主公钥mpk、主私钥msk和公共参数param作为输入,私钥生成机构获取ID生成基于身份的私钥SKID,通过可信信道传递给客户端,具体表述为:步骤2.1:选择随机数k∈Zq,Zq表示[0,q-1]的整数;步骤2.2:通过哈希函数H2计算得到QID=H2(ID),dID=QIDx;步骤2.3:计算K=gk,α=k+xH(ID,K)modq;步骤2.4:定义SKID=(dID,K,α)为私钥,将私钥SKID通过可信信道发送给客户端;步骤3:客户端运行密钥验证算法,验证收到的私钥的正确性,具体表述为:步骤3.1:利用SKID中的α计算v=gα;步骤3.2:判断等式v=K·mpkH(ID,K)是否成立,若成立则接收SKID,并输出TRUE,若不成立,则拒绝SKID,并输出FALSE;步骤4:设计基于身份的数字签名算法,定义M为一串消息,通过调用身份签名算法SigID()使用私钥SKID对消息M进行数字签名,具体表述为:步骤4.1:选取随机数r∈Zq,计算QID=H2(ID),利用QID计算U=QIDr;步骤4.2:通过哈希函数H1计算得到p=H1(M,U);步骤4.3:利用私钥SKID中的dID计算V=dIDr+p;步骤4.4:将SigID(M)=(U,V)表示为消息M的签名;步骤5:客户端在将文件传输到云存储服务器上之前,运行文件预处理算法,对文件进行预处理;步骤6:第三方审计中心运行挑战算法,生成挑战信息发送给云存储服务器,使用挑战-应答形式实现数据完整性审计;步骤7:云存储服务器接收到第三方审计中心的验证请求后,运行证据生成算法,根据验证请求查找Merkle哈希树中的数据,计算出证据P交付给第三方审计中心;步骤8:第三方审计中心根据云存储服务器提供的证据P,运行验证算法,对存储的数据的完整性进行验证;步骤9:当客户端发出更新请求时,由云存储服务器运行更新算法执行更新请求操作,所述更新请求操作包括数据修改操作、数据插入操作、数据删除操作,具体表述为Type={INSERT,DELETE,MODIFY},客户端需要重新计算得出需要更新的新文件块对应的标签值,更新标签集,最后将更新后的新文件块、根节点签名和新标签集同步到云存储服务器上,即完成一次更新操作。所述的步骤5具体表述为:步骤5.1:将原始文件F分割为n份,记作F={m1,m2,...,mn};步骤5.2:选择随机数u∈Zq,将文件名name、文件分割的块数n和随机数u连接记作M1=name||n||u,使用身份签名算法SigID()对M1进行签名并输出(U1,V1),其中U1=QIDr,定义p1=H1(M1,U1),步骤5.3:对于原始文件F的每一个文件块mi(i=1,2,...,n)生成同态验证标签mi指原始文件F中的每一个文件块;步骤5.4:定义一个集合Φ存储所有文件块mi的同态验证标签σi,表示为Φ={σi},(i=1,2,...,n);步骤5.5:构建Merkle哈希树,具体过程如下:步骤5.5.1:在每一个Merkle哈希树的叶子节点中存储value为mi的哈希值H(mi),即hi=h(H(mi));步骤5.5.2:在每一个Merkle哈希树的非叶子节点中,存储的value是由两个孩子节点的value共同构成的Hash值,非叶子节点h(a)计算为ha=h(h1||h2),非叶子节点h(b)计算为hb=h(h3||h4),非叶子节点h(r)计算为hr=h(ha||hb);步骤5.6:构建出Merkle哈希树后得到根节点hr,利用身份签名算法SigID()将根节点签名,计算并输出其中步骤5.7:客户端不保存任何数据,将数据发送给云存储服务器。所述的步骤6具体表述为:步骤6.1:利用计算出H1(M1,U1)并赋值给p1,然后计本文档来自技高网
...

【技术保护点】
1.一种基于身份的动态数据完整性审计方法,其特征在于,包括步骤如下:/n步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:/n步骤1.1:首先生成阶数为素数q的加法群G

【技术特征摘要】
1.一种基于身份的动态数据完整性审计方法,其特征在于,包括步骤如下:
步骤1:私钥生成机构运行初始化算法,生成公共参数param、主公钥mpk和主私钥msk,具体表述为:
步骤1.1:首先生成阶数为素数q的加法群G1,以及阶数为素数q的乘法循环群G2,然后选择G1的生成元g,定义离散对数问题中的加法群为G1,乘法循环群为G2,群G1和G2满足双线性映射e:G1×G2→G2,选取四个密码学哈希函数H1、H2、H、h,具体表示为H1:H2:H:h:令公共参数param={G1,G2,e,q,g,H1,H2,H,h};
步骤1.2:令主私钥为msk,选择随机数x作为主私钥,即主私钥msk=x,且x满足x∈Zq,Zq表示[0,q-1]的整数;
步骤1.3:计算主公钥mpk=gx;
步骤1.4:公开公共参数param和主公钥mpk,秘密保存主私钥msk;
步骤2:客户端与私钥生成机构交互,运行身份密钥生成算法,使用客户端ID、主公钥mpk、主私钥msk和公共参数param作为输入,私钥生成机构获取ID生成基于身份的私钥SKID,通过可信信道传递给客户端,具体表述为:
步骤2.1:选择随机数k∈Zq,Zq表示[0,q-1]的整数;
步骤2.2:通过哈希函数H2计算得到QID=H2(ID),dID=QIDx;
步骤2.3:计算K=gk,α=k+xH(ID,K)modq;
步骤2.4:定义SKID=(dID,K,α)为私钥,将私钥SKID通过可信信道发送给客户端;
步骤3:客户端运行密钥验证算法,验证收到的私钥的正确性,具体表述为:
步骤3.1:利用SKID中的α计算v=gα;
步骤3.2:判断等式v=K·mpkH(ID,K)是否成立,若成立则接收SKID,并输出TRUE,若不成立,则拒绝SKID,并输出FALSE;
步骤4:设计基于身份的数字签名算法,定义M为一串消息,通过调用身份签名算法SigID()使用私钥SKID对消息M进行数字签名,具体表述为:
步骤4.1:选取随机数r∈Zq,计算QID=H2(ID),利用QID计算U=QIDr;
步骤4.2:通过哈希函数H1计算得到p=H1(M,U);
步骤4.3:利用私钥SKID中的dID计算V=dIDr+p;
步骤4.4:将SigID(M)=(U,V)表示为消息M的签名;
步骤5:客户端在将文件传输到云存储服务器上之前,运行文件预处理算法,对文件进行预处理;
步骤6:第三方审计中心运行挑战算法,生成挑战信息发送给云存储服务器,使用挑战-应答形式实现数据完整性审计;
步骤7:云存储服务器接收到第三方审计中心的验证请求后,运行证据生成算法,根据验证请求查找Merkle哈希树中的数据,计算出证据P交付给第三方审计中心;
步骤8:第三方审计中心根据云存储服务器提供的证据P,运行验证算法,对存储的数据的完整性进行验证;
步骤9:当客户端发出更新请求时,由云存储服务器运行更新算法执行更新请求操作,所述更新请求操作包括数据修改操作、数据插入操作、数据删除操作,具体表述为Type={INSERT,DELETE,MODIFY},客户端需要重新计算得出需要更新的新文件块对应的标签值,更新标签集,最后将更新后的新文件块、根节点签名和新标签集同步到云存储服务器上,即完成一次更新操作。


2.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤5具体表述为:
步骤5.1:将原始文件F分割为n份,记作F={m1,m2,...,mn};
步骤5.2:选择随机数u∈Zq,将文件名name、文件分割的块数n和随机数u连接记作M1=name||n||u,使用身份签名算法SigID()对M1进行签名并输出(U1,V1),其中U1=QIDr,定义p1=H1(M1,U1),
步骤5.3:对于原始文件F的每一个文件块mi(i=1,2,...,n)生成同态验证标签mi指原始文件F中的每一个文件块;
步骤5.4:定义一个集合Φ存储所有文件块mi的同态验证标签σi,表示为Φ={σi},(i=1,2,...,n);
步骤5.5:构建Merkle哈希树,具体过程如下:
步骤5.5.1:在每一个Merkle哈希树的叶子节点中存储value为mi的哈希值H(mi),即hi=h(H(mi));
步骤5.5.2:在每一个Merkle哈希树的非叶子节点中,存储的value是由两个孩子节点的value共同构成的Hash值,非叶子节点h(a)计算为ha=h(h1||h2),非叶子节点h(b)计算为hb=h(h3||h4),非叶子节点h(r)计算为hr=h(ha||hb);
步骤5.6:构建出Merkle哈希树后得到根节点hr,利用身份签名算法SigID()将根节点签名,计算并输出其中
步骤5.7:客户端不保存任何数据,将数据发送给云存储服务器。


3.根据权利要1所述的一种基于身份的动态数据完整性审计方法,其特征在于,所述的步骤6具体表述为:
步骤6.1:利用计算出H1(M1,U1)并赋值给p1,然后计算
步骤6.2:使用双线性配对e(g,V1)=e(mpk,Q1)验证签名是否正确,以及验证存储的文件信息M1是否正确,若等式成立,则...

【专利技术属性】
技术研发人员:周福才吴淇毓孙楚涵徐剑
申请(专利权)人:东北大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1