首页> 中国专利> 基于身份的云存储中数据完整性验证方法

基于身份的云存储中数据完整性验证方法

摘要

本发明提出了一种基于身份的云存储中数据完整性验证方法,用于解决现有技术中存在的数据完整性验证成本过高以及数据完整性验证效率低下的技术问题,实现步骤为:用户设置验证系统参数,并获取系统主密钥;用户获取自己的私钥和公钥、数据标签密钥和验证密钥;用户对待上传数据进行分块;用户计算每个数据块对应的数据标签,并将数据块和对应数据标签发送给云存储;可信第三方发起数据完整性验证挑战;云存储获取挑战数据块证明和标签证明;可信第三方对数据完整性进行验证并把验证结果发送给用户。本发明降低了数据完整性验证成本,提高了数据的完整性验证效率。

著录项

  • 公开/公告号CN108540291A

    专利类型发明专利

  • 公开/公告日2018-09-14

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201810243552.3

  • 申请日2018-03-23

  • 分类号H04L9/32(20060101);H04L9/08(20060101);H04L9/06(20060101);H04L9/30(20060101);

  • 代理机构61205 陕西电子工业专利中心;

  • 代理人陈宏社;王品华

  • 地址 710071 陕西省西安市雁塔区太白南路2号

  • 入库时间 2023-06-19 06:31:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-08-04

    授权

    授权

  • 2018-10-16

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20180323

    实质审查的生效

  • 2018-09-14

    公开

    公开

说明书

技术领域

本发明属于云存储安全技术领域,涉及一种云存储中数据完整性验证方法,具体涉及一种基于身份的云存储中数据完整性验证方法,可用于数据的安全外包存储领域。

背景技术

随着互联网技术的飞速发展,用户开始参与信息的制造和编辑,使得用户个人数据量成指数增长,导致数据存储和管理的开销逐渐增加,当个人电脑不足以保存用户的海量数据时,云存储技术随之产生。云存储是在云计算概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的系统。云存储技术处于快速发展阶段,通过为用户提供各种服务,可以用来解决大规模数据的存储和计算问题,成为各大厂商纷纷追逐的对象,比如亚马逊的AWS提供了一套商业成熟的弹性云服务,用户只需关注自己的业务需求,按需定制,而无需关心设备的购买与维护,大大降低了企业开发成本;谷歌的App Engine为程序员打造了一个无限的虚拟运行环境,使程序员无需担心系统因业务规模的扩大而需频繁重构的问题;此外还有微软的Azure、Facebook、国内的阿里云等等,都在各自的领域内发挥着重要的作用。由于其随时随地存取、大容量、按需服务以及低成本等优势,云存储中的数据呈指数上涨趋势。

虽然用户将数据存储到云存储中,节约了本地的内存消耗,但是由于用户对数据失去了实时地监控,所以就有可能给数据带来安全问题,例如当存储的数据丢失时,云存储可能会选择向用户隐藏这一损失,或者将用户长期未访问的数据删除。为了消除这些安全隐患,用户就需要不定期地对云存储中的数据进行完整性验证。现在常用的数据完整性验证方法中,用户自己的密钥一般由密钥生成中心生成,在生成密钥的同时还需要生成密钥证书,在数据完整性验证阶段,可信第三方在使用密钥的时候,需要先对密钥证书进行验证,这将增加数据完整性验证的成本,除此之外,在数据标签的生成阶段,还存在大量和复杂的运算操作,对用户和可信第三方来说,这将是不小的计算负担,同时也会造成数据完整性验证效率低下。例如Zhang等人于2017年在期刊《Cluster Computing》上发表了题目为“Achieving public verifiability and data dynamics for cloud data in thestandard model”的论文(2017,20(1):1-13),提出一种可以实现公开的云存储中数据完整性验证方法,该方法包括用户密钥生成、数据标签生成、数据完整性挑战、生成挑战证明、验证数据完整性五个阶段。在用户密钥生成阶段,用户需要密钥生成中心在生成密钥的同时也生成密钥证书,然后在可信第三方在使用密钥进行数据完整性验证时,需要先对密钥证书进行验证,除此之外,在密钥过期时用户还要对密钥以及密钥证书进行更新,这就造成巨额的密钥证书生成、验证和更新花费,从而增加了数据完整性验证的成本。除此之外,在计算数据标签以及数据完整性验证阶段,采用双线性映射来计算数据标签以及实现数据的完整性验证,而双线性映射包含大量的指数运算,这给用户和可信第三方带来巨大的计算负担,从而造成数据完整性验证的效率低下。

发明内容

本发明的目的是针对上述现有技术的不足,提出基于身份的云存储中数据完整性验证方法,用于解决现有技术中存在的数据完整性验证成本过高以及数据完整性验证效率低下的技术问题。

为实现上述目的,本发明采取的技术方案包括如下步骤:

(1)用户设定验证系统参数,并获取验证系统的主密钥msk:

(1a)用户设定验证系统参数:

用户设定验证系统有限域Fp上的椭圆曲线为Ep(a,b),椭圆曲线Ep(a,b)的基点为G,其中,a和b表示椭圆曲线的系数,p表示有限域Fp所包含的元素数,且为奇素数,q表示基点G的奇素数阶;

(1b)用户获取验证系统的主密钥msk:

用户根据q产生整数集A,A=[1,q-1],并从A随机选择一个整数作为验证系统的主密钥msk;

(2)用户获取自己的私钥sk和公钥pk:

(2a)用户从整数集A中随机选取整数r,同时根据基点G的奇素数阶q建立哈希函数H1(·);

(2b)用户计算自己的私钥sk和公钥pk:

用户通过系统的主密钥msk、整数r、哈希函数H1(·)和用户自己的身份标识ID,计算自己的私钥sk,并通过sk和基点G,计算自己的公钥pk

(3)用户计算待上传数据F的标签密钥tsk和待验证数据M的验证密钥 tpk:

用户通过哈希函数H1(·)、自己的私钥sk和待上传数据F的身份标识FID,计算待上传数据F的标签密钥tsk,并通过tsk和基点G,计算待验证数据M的验证密钥tpk;

(4)用户对待上传数据F进行分块:

(4a)用户设置数据块的长度为l,并通过l对待上传数据F进行分块,得到多个待上传数据块;

(4b)用户判断多个待上传数据块的最后一个数据块的长度是否小于l,并在小于l的数据块后补0,得到待上传数据块集合F′,F′=(m1,m2,…mi,…mn),其中,mi表示第i个待上传数据块,n表示待上传数据块的总数;

(5)用户计算每个待上传数据块mi对应的数据标签σi

用户通过哈希函数H1(·)、自己的私钥sk和待上传数据F的标签密钥tsk,计算每个待上传数据块mi对应的数据标签σi

(6)用户向云存储发送每个待上传数据块mi及mi对应的数据标签σi,同时向可信第三方发送每个数据块mi对应的版本号vi和时间戳ti

用户将每个待上传数据块mi及mi对应的数据标签σi发送至云存储中,同时将每个数据块mi对应的版本号vi和时间戳ti发送给可信第三方;

(7)可信第三方向云存储发起数据完整性验证挑战:

(7a)可信第三方根据每个待验证数据块mi对应的版本号vi和时间戳ti,确定待验证数据块的总数n;

(7b)可信第三方从n个待验证数据块中随机选取c个数据块作为挑战数据块,并将c个挑战数据块的序号值组成序号值集合S,再将S作为挑战信息chal 发送至云存储,其中,S={s1,s2,…sc},1≤c≤n;

(8)云存储计算挑战数据块证明Pm和挑战数据块对应的标签证明Pt并发送:

(8a)云存储计算挑战数据块证明Pm和挑战数据块对应的标签证明Pt

云存储通过挑战信息chal和用户自己的公钥pk,计算挑战数据块证明Pm,同时通过挑战信息chal,计算挑战数据块对应的标签证明Pt

(8b)云存储向可信第三方发送挑战数据块数据证明Pm和挑战数据块对应的标签证明Pt

(9)可信第三方对云存储中的数据完整性进行验证,并发送验证结果:

(9a)可信第三方计算挑战数据块mj对应的版本号vj和时间戳tj的哈希值之和H:

可信第三方通过挑战信息chal和哈希函数H1(·),计算挑战数据块mj对应的版本号和时间戳的哈希值之和H,并通过判断Pm+tpk·H=Pt是否成立,对云存储中的数据完整性进行验证,若是,则云存储中的数据为完整数据,否则,云存储中的数据为不完整数据;

(9b)可信第三方发送验证结果:

可信第三方将云存储中的数据为完整数据或不完整数据的判断结果发送给用户。

本发明与现有技术相比,具有以下优点:

第一,本发明中,在用户生成自己的私钥和公钥阶段,采用基于身份的方式来生成自己的私钥和公钥,用户将自己的身份标识ID融合到用户的私钥和公钥中,就无需密钥生成中心生成的密钥证书,解决了昂贵的密钥证书生成、验证以及更新花费问题,与现有技术相比,减少了数据的完整性验证的成本。

第二,本发明中,在计算数据标签以及验证数据完整性阶段,只有简单的点乘、求和以及取模运算,减少了用户和可信第三方的计算负担,与现有技术相比,提高了数据完整性的验证效率。

附图说明

图1为本发明的实现流程图。

具体实施方式

下面结合附图和具体实施例,对本发明作进一步的详细说明:

参照图1,一种基于身份的云存储中数据完整性验证方法,包括如下步骤:

步骤1)用户设定验证系统参数,并获取验证系统的主密钥msk:

步骤1a)用户设定验证系统参数:

用户设定验证系统有限域Fp上的椭圆曲线为Ep(a,b),椭圆曲线Ep(a,b)的基点为G,其中,a和b表示椭圆曲线的系数,p表示有限域Fp所包含的元素数,且为奇素数,q表示基点G的奇素数阶;

用户设定验证系统有限域Fp为F37,设定有限域F37上的椭圆曲线为E37(1,1),基点G为(0,1),其中,椭圆曲线的系数a=1,b=1,奇素数阶q为37;

步骤1b)用户获取系统的主密钥msk:

用户根据q产生整数集A,A=[1,q-1],并从A随机选择一个整数作为系统的主密钥msk;

用户根据奇素数阶37生成整数集A=[1,36],并在A中选择系统的主密钥 msk,设用户选择的系统主密钥msk=17;

步骤2)用户获取自己的私钥sk和公钥pk:

步骤2a)用户从整数集A中随机选取整数r,同时根据基点G的奇素数阶q 建立哈希函数H1(·);

设用户在整数集A=[1,36]中随机选取的整数r=19,同时,用户根据37建立哈希函数H1(·):{0,1}*→Z37

步骤2b)用户计算自己的私钥sk和公钥pk:

用户通过验证系统的主密钥msk、整数r、哈希函数H1(·)和,计算自己的私钥sk,并通过sk和基点G,计算自己的公钥pk:

sk=msk+rH1(ID)modq

pk=sk·G

用户通过验证系统主密钥msk=17,整数r=19,哈希函数H1(·)和用户的身份标识ID=0001,计算自己的私钥sk=17+19H1(0001)mod37,为了方便查阅,记为sk′,用户通过sk′以及基点G=(0,1)计算自己的公钥pk=sk′·(0,1);

步骤3)用户计算待上传数据F的标签密钥tsk和待验证数据M的验证密钥 tpk:

tsk=(sk+H1(FID))modq

tpk=tsk·G

用户通过自己的私钥sk′,哈希函数H1(·)和待上传数据F的身份标识>ID=0010,计算待上传数据F的标签密钥tsk=(sk′+H1(0010))mod37,为了方便查阅,记为tsk′,用户通过tsk′以及基点G=(0,1),计算待验证数据M的验证密钥tpk=tsk′·(0,1);

步骤4)用户对待上传数据F进行分块:

步骤4a)用户设置数据块的长度为l,并通过l对待上传数据F进行分块,得到多个待上传数据块;

步骤4b)用户判断多个待上传数据块的最后一个数据块的长度是否小于l,并在小于l的数据块后补0,得到待上传数据块集合F′,F′=(m1,m2,…mi,…mn),其中,mi表示第i个待上传数据块,n表示待上传数据块的总数;

设数据分组的长度为3,待上传的数据F=00101010,根据长度为3对待上传数据F进行分块,最后一个数据块为10,长度小于3,进行补0操作得到数据块100,得到待上传数据块集合F′=(001,010,100),数据块的总数为3;

步骤5)用户计算每个待上传数据块mi对应的数据标签σi

用户通过哈希函数H1(·)、自己的私钥sk和待上传数据F的标签密钥tsk,计算每个待上传数据块mi对应的数据标签σi

σi=[(mi·sk+H1(vi||ti)·tsk)modq]·G

用户利用数据标签生成密钥tsk′和哈希函数H1(·),计算数据块001对应的数据标签σ1=[(1·sk′)+H1(0001||0001)·tsk′mod37]·(0,1),(数据块001对应的十进制是1,记为m1=1,对应的版本号v1=0001,时间戳t1=0001),数据块010对应的数据标签σ2=[(2·sk′)+H1(0001||0010)·tsk′mod37]·(0,1),(010对应的十进制是2,记为m2=2,对应的版本号v1=0001,时间戳t1=0010),数据块100对应的数据标签σ3=[(4·sk′)+H1(0001||0011)·tsk′mod37]·(0,1),(100对应的十进制是4,记为m3=4,对应的版本号v1=0001,时间戳t1=0011),为了方便查阅,分别记为σ′1,σ′2,σ′3

步骤6)用户向云存储发送每个待上传数据块mi及mi对应的数据标签σi,同时向可信第三方发送每个数据块mi对应的版本号vi和时间戳ti

用户将每个待上传数据块mi及mi对应的数据标签σi发送至云存储中,同时将每个数据块mi对应的版本号vi和时间戳ti发送给可信第三方;

用户上传数据块001,010,100以及对应的数据标签σ′1,σ′2,σ′3到云存储中,用户发送{v1=0001,t1=0001;v2=0001,t2=0010;v3=0001,t3=0011}到可信的第三方;

步骤7)可信第三方向云存储发起数据完整性验证挑战:

步骤7a)可信第三方根据每个待验证数据块mi对应的版本号vi和时间戳ti,确定待验证数据块的总数n;

步骤7b)可信第三方从n个待验证数据块中随机选取c个数据块作为挑战数据块,并将c个挑战数据块的序号值组成序号值集合S,再将S作为挑战信息 chal发送至云存储,其中,S={s1,s2,…sc},1≤c≤n;

可信第三方根据{v1=0001,t1=0001;v2=0001,t2=0010;v3=0001,t3=0011}确定待验证数据块的总数为3;

从3个待验证数据块中随机选取2个数据块,假设选取的是第2块和第3 块,这2个挑战数据块序号值组成序号值集合集合S={2,3},将S作为挑战信息 chal发送给云存储;

步骤8)云存储计算挑战数据块证明Pm和挑战数据块对应的标签证明Pt并发送:

步骤8a)云存储计算挑战数据块证明Pm和挑战数据块对应的标签证明Pt

云存储通过挑战信息chal和用户自己的公钥pk,计算挑战数据块证明Pm,同时通过挑战信息chal,计算挑战数据块对应的标签证明Pt

云存储根据挑战信息chal={2,3},找到对应的数据块m2,m3,m2=2,m3=4,计算得到数据证明Pm=((2+4)mod37)·pk′,为了方便查阅,记为P′m;云存储根据挑战信息chal={2,3},找到对应的数据块标签σ′2,σ′3,计算得到挑战数据块对应的标签证明Pt=σ′2+σ′3,为了方便查阅,记为P′t

步骤8b)云存储向可信第三方发送挑战数据块数据证明Pm和挑战数据块对应的标签证明Pt

步骤9)可信第三方对云存储中的数据完整性进行验证,并发送验证结果:

步骤9a)可信第三方计算挑战数据块mj对应的版本号vj和时间戳tj的哈希值之和H:

可信第三方通过挑战信息chal和哈希函数H1(·),计算挑战数据块mj对应的版本号和时间戳的哈希值之和H:

并通过判断Pm+tpk·H=Pt是否成立,对云存储中的数据完整性进行验证,若是,则云存储中的数据为完整数据,否则,云存储中的数据为不完整数据;

可信第三方根据挑战信息chal=S={2,3},计算挑战数据块版本号和时间戳对应的哈希值之和H=[H1(0001||0010)+H1(0001||0011)]mod37,为了方便查阅,记为H′;因此将上述已知符号全部带入P′m+tpk·H′,则

P′m+tpk·H′=((2+4)mod37)·pk′+[H1(0001||0010)+H1(0001||0011)]mod37·tpk

=[(2·sk′)+H1(0001||0010)·tsk′mod37]·(0,1)

+[(4·sk′)+H1(0001||0011)·tsk′mod37]·(0,1)

=σ′2+σ′3=P′t

等式P′m+tpk·H′=P′t成立,则云存储中的数据为完整数据;

步骤9c)可信第三方发送验证结果:

可信第三方将云存储中的数据为完整数据或不完整数据的判断结果发送给用户。

可信第三方将云存储中的数据为完整数据的结果发送给用户。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号