发明名称 一种云存储数据持有性验证方法
摘要 一种云存储数据持有性验证方法,该方法有七大步骤:步骤1:文件分块{F→(f<sub>1</sub>,f<sub>2</sub>…f<sub>l</sub>)};步骤2:标签的计算{(sk,F)→T<sub>i</sub>};步骤3:数据的云端存储{(F,T<sub>i</sub>)→S};步骤4:用户发起挑战{chal};步骤5:服务器作出响应;步骤6:验证{(R,sk)→("success","failure")};步骤7:报告{Report}:如果验证输出为“failure”,则用户向服务器发送警告通知。本发明中运用了双线对技术实现云端数据的持有性验证,在挑战-响应交互过程中,对数据块随机抽样,通信量小且固定,与文件的大小无关,而且验证次数不受限制。它在云计算安全技术领域里具有较好的实用价值和广阔的应用前景。
申请公布号 CN102647433B 申请公布日期 2015.04.22
申请号 CN201210159377.2 申请日期 2012.05.21
申请人 北京航空航天大学 发明人 毛剑;张晏;刘建伟;徐先栋;冯克;尚涛
分类号 H04L29/06(2006.01)I;H04L29/08(2006.01)I;H04L9/32(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种云存储数据持有性验证方法,其特征在于:该方法的具体步骤如下:阶段1:数据预处理:包括第1~3步,数据块F的拥有者执行数据分块操作,标签T<sub>i</sub>的生成{(sk,F)→T<sub>i</sub>}操作,然后将分块数据f<sub>i</sub>和其对应的标签T<sub>i</sub>外包到云端进行存储和管理,用户需严格保证私钥的安全;步骤1:文件分块{F→(f<sub>1</sub>,f<sub>2</sub>…f<sub>l</sub>)}:用户首先对原始文件F进行预处理,F被分成l个等大小的数据块{f<sub>1</sub>,f<sub>2</sub>,…,f<sub>l</sub>};步骤2:标签的计算{(sk,F)→T<sub>i</sub>}:对于每一个数据块f<sub>i</sub>,用户根据系统参数和公私钥为其计算标签T<sub>i</sub>;步骤3:数据的云端存储{(F,T<sub>i</sub>)→S}:用户将标签(T<sub>1</sub>,T<sub>2</sub>,…,T<sub>l</sub>)和数据块(f<sub>1</sub>,f<sub>2</sub>,…f<sub>l</sub>)一起存入云端的服务器中,用户则自己存储私钥;阶段2:挑战‑响应:包括第4~5步,用户生成挑战,指定其要检测的随机数据块,根据用户挑战,云服务器通过执行生成证据{(chal,T<sub>i</sub>,F)→R}操作作出响应;步骤4:用户发起挑战{chal}:当用户想要验证服务器是否正确持有数据的时,用户向其发出挑战:用户生成一个挑战chal,发送给服务器;步骤5:服务器作出响应:生成证据{(chal,T<sub>i</sub>,F)→R}:当服务器收到挑战chal时,服务器根据挑战计算一个证据R=(T,ρ);之后,服务器将R返回给用户;其中T为挑战chal所选中的数据块的标签的乘积;其中,ρ由公式<img file="FDA0000631931600000011.GIF" wi="466" he="109" />计算得到,其中Q<sub>s</sub>=Q<sup>s</sup>,用户每次发起挑战时,选择不同的s∈Z<sub>p‑1</sub>生成Q<sub>s</sub>,而其中<img file="FDA0000631931600000012.GIF" wi="227" he="92" />g为P阶循环群G的生成元且<img file="FDA0000631931600000013.GIF" wi="211" he="105" /><img file="FDA0000631931600000014.GIF" wi="330" he="77" />为各个数据块,数据块的编号<img file="FDA0000631931600000015.GIF" wi="243" he="81" />1≤r≤c,其中c满足c∈Z且1≤c≤l,而<img file="FDA0000631931600000016.GIF" wi="132" he="92" />为一个伪随机置换,其中k<sub>3</sub>为密钥,用于确定每次随机抽取的数据块的位置;x<sub>i</sub>∈G为随机数,由带密钥k<sub>1</sub>的伪随机数发生器产生,用户保存k<sub>1</sub>阶段3:验证与报告操作:包括第6~7步,最后用户根据服务器的响应,执行验证{(R,sk)→("success","failure")}操作,作出最后的数据检测结果判断;如果验证操作的输出结果为“success”则表明服务器正确持有用户数据,否则说明服务器出现了存储错误,用户作出“failure”报告;步骤6:验证{(R,sk)→("success","failure")}:当用户收到服务器返回的R时,利用自己的私钥sk进行运算,对其服务器存储的数据状态进行判断,结果为“success”或者“failure”;步骤7:报告{Report}:如果验证输出为“failure”,则用户向服务器作出警告通知。
地址 100191 北京市海淀区学院路37号