CN110008755B - 一种云存储可撤销动态数据完整性验证***及方法 - Google Patents

一种云存储可撤销动态数据完整性验证***及方法 Download PDF

Info

Publication number
CN110008755B
CN110008755B CN201910216029.6A CN201910216029A CN110008755B CN 110008755 B CN110008755 B CN 110008755B CN 201910216029 A CN201910216029 A CN 201910216029A CN 110008755 B CN110008755 B CN 110008755B
Authority
CN
China
Prior art keywords
data
data block
tpa
service provider
csp
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910216029.6A
Other languages
English (en)
Other versions
CN110008755A (zh
Inventor
陈晶
何琨
杜瑞颖
张瑞
唐瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Uniteddata Holding Group Co ltd
Original Assignee
Guangdong Uniteddata Holding Group Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Uniteddata Holding Group Co ltd filed Critical Guangdong Uniteddata Holding Group Co ltd
Priority to CN201910216029.6A priority Critical patent/CN110008755B/zh
Publication of CN110008755A publication Critical patent/CN110008755A/zh
Application granted granted Critical
Publication of CN110008755B publication Critical patent/CN110008755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2103Challenge-response

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种云存储可撤销动态数据完整性验证***及方法,利用红黑树信息表和纠删码缓存技术减少动态更新数据的开销,利用新的签名技术让生成数据块标签时的计算开销较小,使得文件预处理速度较快,同时也支持撤销验证方。本发明用于云存储***的安全存储。

Description

一种云存储可撤销动态数据完整性验证***及方法
技术领域
本发明属于计算机网络安全技术与密码学技术领域,涉及一种云存储可撤销动态数据完整性验证***及方法。
背景技术
随着云计算的兴起,用户(Users)将数据远程地存储在云端(CSP),然而云端不是完全可信的,云端也许会修改或者删除用户的数据,导致用户的数据损坏或者丢失,这个安全问题严重制约了云计算的发展,这就需要利用数据完整性验证技术保障数据的完整性,而云端存储的数据是海量的,传统的数据完整性验证方法需要取回数据进行验证,如果直接将传统数据完整性验证方案应用到云端会带来巨大的计算开销和存储开销,这是不现实的,那么如何高效地远程验证数据的完整性呢?云存储数据完整性验证方案就是解决这类问题的技术。
在云存储完整性验证技术里,用户将文件划分为数据块,并对数据块生成同态签名上传到云端,验证方负责对数据的完整性进行验证,验证时,用户验证方或者第三方验证方(TPA)随机地产生挑战块的序号,然后发送挑战请求给云端,云端根据挑战请求对数据块和数据块的标签进行聚合,返回证据信息给验证方,验证方进行验证以判断数据块是否损坏。
然而在实际的云存储场景里,用户的需求是复杂的,第一、用户需要对文件进行快速预处理以满足目前的移动设备;第二、第三方验证者能够对文件进行完整性验证保障数据的完整性;第三、用户能够对文件进行动态更新;第四、用户可以授权或者撤销第三方验证者;第五、云端不能知道文件的内容;第六、在验证方发现数据损坏后支持数据远程修复,支持纠删码的动态更新。需要设计一种可以满足用户的实际需求的云存储安全解决方案。
发明内容
为了解决上述技术问题,本发明提供了一种云存储可撤销动态数据完整性验证***及方法,是一种实用的云存储安全解决方案。
本发明的***所采用的技术方案是:一种云存储可撤销动态数据完整性验证***,其特征在于:包括用户Users、云服务提供商CSP和第三方公有审计者TPA;所述云服务提供商CSP为用户提供计算服务和存储服务,存储用户的文件;所述用户Users为企业或者个人,企业和个人需要将一些数据存储到云服务提供商CSP处,用户Users不希望云服务提供商CSP知道数据的内容,用户Users需要确保存储在云服务提供商CSP处的数据是完好无损的,用户Users能对存储在云服务提供商CSP处的数据进行动态更新,并授权第三方公有审计者TPA对存储在云服务提供商CSP的数据进行完整性验证,当发现存放在云服务提供商CSP处的数据损坏后能远程恢复出原数据;用户Users能撤销一个第三方公有审计者TPA,也能授权一个新的第三方公有审计者TPA对数据进行完整性审计。
本发明的方法所采用的技术方案是:一种云存储可撤销动态数据完整性验证方法,其特征在于,包括以下步骤:
步骤1:文件预处理;
步骤2:文件完整性证明;
步骤3:动态更新;
步骤4:纠删码完整性证明;
步骤5:数据恢复。
本发明相对于现有技术,具备以下的特点:
(1)实现隐私保护;
用户用密码对文件加密后上传到CSP处存储,云服务器和外来的攻击者无法得知数据的内容。
(2)TPA可授权性;
用户可以授权TPA对用户存储在CSP处的数据进行概率性的完整性验证,TPA能够以很大的概率检测出丢失或者损坏的数据,用户可以在任何时刻撤销一个TPA。
(3)数据远程可恢复性;
当检测到出错的数据后,用户可以让云服务器远程地对受损的数据进行修复。
(4)公开审计;
该发明支持公开审计,任何被授权的TPA都可以对数据的完整性进行验证。
(5)支持动态更新;
该发明在满足可恢复性的同时还可以支持数据的动态更新,用户随时可以对存储在CSP处的数据进行增、删、改操作;用户在对数据进行动态更新的同时可以高效地对纠删码进行动态更新。
(6)访问数据新鲜度保障;
用户随时可以访问存储在CSP处的任何数据块,该发明可以保证用户访问的数据是最新的。
(7)文件预处理高效性;
用户对文件预处理的速度是很快的,该方案生成数据块标签的速度比基于RSA签名和BLS短签名的云存储公开数据完整性验证方案快几十倍,可以让计算能力较差的移动设备可以随时对较大的文件进行快速预处理并上传到CSP处存储。
附图说明
图1为本发明实施例的***简要模型;
图2为本发明实施例的***详细模型;
图3为本发明实施例的红黑树信息表;
图4为本发明实施例的Fn红黑树。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1、图2,本发明提供的一种云存储可撤销动态数据完整性验证***,用户Users(Users)、云服务提供商CSP(Cloud Service Provider)和第三方公有审计者TPA(Third public auditor)。CSP为用户提供计算服务和存储服务,可以存储用户的文件。Users可以是企业或者个人,企业和个人需要将一些数据存储到CSP处,用户不希望CSP知道数据的内容,用户需要确保存储在CSP处的数据是完好无损的,用户可以对存储在CSP处的数据进行动态更新,并授权TPA对存储在CSP的数据进行完整性验证,当发现存放在CSP处的数据损坏后可以远程恢复出原数据;用户可以撤销一个TPA,也可以授权一个新的TPA对数据进行完整性审计。
本发明提供的一种云存储可撤销动态数据完整性验证方法,包括以下步骤,这些步骤中包括了下面的符号描述,符号描述见表1,接下来依次介绍下面的步骤:
表1
步骤1:文件预处理;
该过程包括包括密钥生成、红黑树信息表生成、数据块加密、数据块标签生成、纠删码标签生成过程。用户先将文件分块,然后将各数据块分别加密成密文数据块,然后对密文数据块生成数据块标签和纠删码标签,并生成对应的红黑树信息表和纠删码编码系数矩阵,用户将生成的密文数据块、数据块标签、纠删码标签发送给CSP,用户授权TPA负责对其存储在CSP的数据进行完整性验证,用户将红黑树信息表、对应的密钥发送给TPA。
密钥生成:
(sk,pk,vsk,vpk)←KeyGen(m):
输入:每个数据块被划分的段数m;
输出:用于文件完整性验证的公私钥对。
红黑树信息表生成:
(doublelink,rbtree)←doublelink_add(doublelink,fid):
输入:文件名的双向链表doublelink,需要添加的一个新的文件名fid;
输出:新的双向链表doublelink,文件fid对应的红黑树rbtree。
(rbtree)←rbtreeinit(n,vitimei,rbtree):
输入:n为文件数据块的个数,vitimei为版本号和时间戳的连接值,rbtree为需要初始化的红黑树;
输出:初始化后的红黑树rbtree。
数据块加密:
(k)←genencryptkey(ε):输入:密钥空间的长度ε,输出:密钥k。
(U,B(m+n)×n)←encode(F,k,n):
输入:文件F,加密密钥k,文件的块数n;
输出:加密后的文件块集合U,生成纠删码的编码系数矩阵B(m+n)×n
数据块标签生成:
({σi,ti}i∈[1,n])←Gentag(U,sk,vsk):
输入:数据块集合U,私钥sk,验证私钥vsk;
输出:数据块主标签和副标签集合{σi,ti}i∈[1,n]
纠删码标签生成:
(esk,epsk)←keygenerasuretag():
输出:生成纠删码标签的私钥esk和公钥epsk。
({h(Ui),eσi}i∈[1,n])←generasuretag(U,esk):
输入:数据块集合U,私钥esk;
输出:数据块的纠删码标签集合{h(Ui),eσi}i∈[1,n]
步骤2:文件完整性证明;
文件完整性验证过程包括挑战阶段、响应挑战阶段和验证阶段。文件完整性验证过程是为了确保用户存储在CSP处的文件未损坏,在挑战阶段里,TPA随机生成挑战编号,将挑战信息发送给CSP,CSP收到后就返回证明信息给TPA,TPA收到后进行数据块的完整性验证。通过TPA周期性地对CSP存储的数据进行完整性验证,可以检测出数据是否被损坏。用户也可以批量验证TPA验证过的信息判断TPA是否合法。
挑战阶段:
(fid,{i,wi}i∈Q,ξ,UID,sigask(UID))←proof()
输出:文件的编号fid,挑战集合{i,wi}i∈Q,用户编号UID,用户编号的签名sigask(UID),随机数ξ;
响应挑战阶段:
输入:文件的编号fid,挑战集合{i,wi}i∈Q,用户编号UID,用户编号的签名sigask(UID),验证用户编号的公钥gask,公钥pk,验证公钥vpk;
输出:响应的证据集合;
验证阶段:
(1,0)←TPAverify(proof,evidence,vsk)
输入:挑战值proof,证据值evidence,验证私钥vsk;
输出:验证结果;
(1,0)←userverify({proofi,evidencei}i∈Q,sk)
输入:挑战和证据集合,私钥sk;
输出:验证结果。
步骤3:动态更新;
用户更新数据时需要更新数据块区U、纠删码缓存H和纠删码标签缓存用户发送更新的数据给CSP和TPA,并更新纠删码标签缓存/>然后发送给CSP,CSP更新纠删码缓存H和数据块区U,TPA更新红黑树信息表。
更新数据块区U:用户发送UTPA(F,M,i,vi’,timei’)给TPA,发送UCSP(F,M,U’i,σ’i,t’i)给CSP,TPA更新红黑树信息表,CSP更新对应数据。UCSP(F,M,U’i,σ’i,t’i),UTPA(F,M,i,vi’,timei’):F是要更新的文件,M是更新方式,分数据块的修改(MB)、数据块的***(JB)、数据块的删除(DB),i是要更新的数据块编号,U’i是更新的数据块,vi'和timei'是更新的数据块的版本号和时间戳,σ’i和t’i是数据块的标签。
更新纠删码缓存H:
(1,0)←Haddblock(H,C,B,t,U,Bm×n)
输入:B为加密后的更新数据块,C为U的纠删码,H是纠删码缓存,t是当前更新的时刻,Bm×n是编码系数矩阵;
输出:1或者0。
更新纠删码标签缓存
输入:B为更新的数据块,为Hl里的编码块的纠删码标签,/>是C的纠删码标签,设/>是更新所需要的H的纠删码标签,t是更新的时间,/>是U的纠删码标签,Bm×n是生成纠删码的编码系数矩阵。
输出:新的
步骤4:纠删码完整性证明;
纠删码完整性验证是为了检验CSP是否按照用户的要求正确计算数据块的纠删码。该过程分为挑战阶段、响应挑战阶段和验证阶段。挑战阶段,TPA将挑战信息发送给CSP;响应挑战阶段,CSP返回纠删码标签和纠删码;证明阶段,验证判断纠删码是否被正确地计算。
挑战阶段:
({addri}i∈[1,n],{r1,r2,...rn})←eproof():
输出:{addri}i∈[1,n]为挑战的编码块的索引,{r1,r2,...rn}为随机数;
响应挑战阶段:
(R,h(B*),B*)←eevidence({addri}i∈[1,n],{r1,r2,...rn})
输入:{addri}i∈[1,n]为挑战的编码块的索引,{r1,r2,...rn}为随机数;
输出:随机数R,挑战块的聚合值B*,挑战块签名的聚合值h(B*);
验证阶段:
(0,1)←everify(R,h(B*),B*)
输入:随机数R,挑战块的聚合值B*,挑战块签名的聚合值h(B*);
输出:验证结果;
步骤5:数据恢复;
该过程包括确定出错数据块过程和恢复出错数据块过程。当检测到数据块出错时先通过二分查找确定出错的数据块集合,然后恢复出错的数据块。
确定出错数据块过程:
(Q)←binary(Q,proof,evidence)
输入:proof为n个数据块的挑战信息,evidence为n个数据块的证据信息,Q为出错的数据块集合;
输出:出错的数据块集合Q。
恢复出错数据块过程:
(M)←findH(H,i,C,N)
输入:H为纠删码缓存,i为要修复的数据块的编号,C为数据块纠删码,N为H的层数;
输出:找到的包含第i块数据块的线性方程组集合M。
(R)←repair(M)
输入:包含第i块数据块的线性方程组集合;
输出:修复的第i块数据块R。
步骤6:撤销TPA;
当用户需要撤销一个TPA时,用户从CSP那里下载所有的数据块副标签{ti}i∈[1,n],然后生成新的验证公钥和验证私钥,然后将新的数据块副标签发送给CSP,并将新的验证公钥和验证私钥发送给新的TPA。
({ti'},nvsk,nvpk)←revokeTPA({ti},vsk,vpk)
输入:所有的数据块副标签{ti},旧的验证公私钥对vsk和vpk;
输出:新的数据块副标签{t′i}和新的验证公私钥对nvsk和nvpk。
本发明用到了m-BSDH难题、BLS短签名、同态验证技术、概率性验证技术、纠删码技术、红黑树和AES256加密技术;以下对这些技术的具体实现做详细阐述。
1.红黑树信息表;
见图3,红黑树信息表是一种二维的数据结构,根据云存储动态数据完整性验证方案的特点,本发明结合双向链表和红黑树设计这种数据结构,旨在提高动态数据完整性验证的效率,在红黑树信息表的左边存储文件名信息,双向链表存储文件名结点,而每一个文件名结点里包含一个指向该文件对应红黑树的指针,红黑树里每个结点存储的是该文件对应的数据块的版本号、时间戳信息。
每个文件对应的红黑树的结点里存储的是该结点左子树总的结点数left、数据块的更新版本号VN和每一次更新数据块的时间戳t的连接值VN||t以及该结点右子树总的结点数right。
每个红黑树结构见图4,红黑树根据数据块的序号i做***、删除和查找操作。
查找第i个数据块时,就是查找第i小的数据块,通过比较i和结点的left值,若大于left在右子树里找,若小于left,则在左子树里找,直到找到第i小的结点。查找的时间复杂度是O(log(n))。
***第i个数据块时,就需要先在红黑树里找到第i小的数据块,***时,需要更新结点的left和right值,若在左子树里***,需要将当前结点的left值加1,若在右子树里***,需要将当前结点的right值加1,找到***的位置后,就设置***的结点的left和right值为0,然后***结点。***的时间复杂度是O(log(n))。
删除第i个数据块时,也是比较结点的left和i的值,若i小于left,则在左子树里删除,并将当前结点的left减1,若i大于left,则在右子树里删除,并将当前的right值减1,最后删除结点。删除的时间复杂度是O(log(n))。
在进行文件的***时,需要在双向链表里***对应的文件结点,具体***时,就先找到需要***的位置,假设需要在p结点后***q结点,那么就将q结点指向后结点的指针指向p结点的后结点,即q->next=p->next,然后将q结点指向前结点的指针指向p,即q->prior=p,然后将p结点指向后结点的指针指向q,即p->next=q,然后将q结点后结点的指向前结点的指针指向q,即q->next->prior=q。删除数据块时,就先在双向链表里找到对应的结点p,然后将p结点的前结点里指向后结点的指针指向p结点的后结点,即p->prior->next=p->next,然后用p->next->prior=p->prior,即将p结点的后结点的指向前结点的指针指向p结点的前结点,然后删除p结点[47]。而查找一个结点时直接进行双向链表的遍历即可。而文件和相应的红黑树是一一对应的关系,可由文件名直接找到相应的红黑树,然后对文件的数据块进行相应的增、删、改、查询操作,在红黑树上的操作就按照红黑树的对应的算法来实现。
2.文件预处理过程;
文件预处理过程是指用户在将文件上传到CSP之前的处理,包括密钥生成、数据块加密编码、数据块标签生成、纠删码标签生成过程。
(1)文件完整性验证密钥生成算法(sk,pk,vsk,vpk)←KeyGen(m);
密钥生成算法生成用户用于数据完整性验证的密钥,密钥包括私钥、公钥、验证公钥和验证私钥。私钥公钥pk=(g0,g1,...gm),验证私钥/>验证公钥vpk=(h1,h2,...hm)。生成密钥时,输入一个数m,m表示一个数据块被分为m段,设置素数p和q,选取一个素数p来设置/>然后选取一个双线性映射e:G×G→GT,G和GT是阶为p的乘法循环群,双线性映射将G上的两个元素映射到GT上。生成私钥时,从/>上随机地选择一个元素α和s0,随机地生成/>上m个元素/>生成公钥时,生成向量/>αj=αjmodp,将α自乘m-1次就得到向量/>然后选取G上的一个生成元g,令g0=g,计算然后依次生成(g1,g2,...gm),生成验证私钥时,随机地从Zp上选择三个元素/>θ、s1即可;生成验证公钥时,计算/>而/>计算得到(h1,h2,...hm)。
(2)数据块加密编码算法;
数据块加密算法包括加密密钥生成、文件分块、数据块加密、数据块编码过程。对称密码的加密过程比非对称密码的加密过程更快,于是选取对称密码进行加密。
(a)加密密钥生成(k)←Genencryptkey(ε),首先需要生成加密数据块的密钥,输入一个ε表示密钥空间的大小,从密钥空间随机地选择一个密钥k。
(b)文件分块。将文件分为长度相同的n块,长度不足的用0来补,即F→(m1,m2,...mn),输出文件分块矩阵M。
(c)数据块加密。生成加密每一个数据块的加密密钥,ki=f(k,i),f(k,i)是一个伪随机函数,输入k和i生成加密第i块数据块的密钥ki,然后利用AES256加密算法对数据块mi加密,即用这样的方法生成所有数据块的密文,输出加密后的密文矩阵U。
(d)数据块编码。用数据块编码算法将加密后的数据块编码为编码后的数据块,用编码后的数据块就可以恢复出数据。首先需要生成用来编码数据块的行向量线性互不无关的编码系数矩阵,若选取一个有限域Fq,若选取的素数q是足够大,而且系数矩阵B.m×n里的每个元素bij是随机地选择的,那么系数矩阵B.m×n的行向量线性无关的概率就非常大。于是,就选取一个足够大的素数q初始化有限域Fq,随机生成系数矩阵Bm×n里的每一个系数,然后生成编码矩阵B(m+n)×n,然后用(U1,U2,..Un,C1,C2,..Cm)T=B(m+n)×n·(U1,U2,...Un)T生成编码后的矩阵(U1,U2,..Un,C1,C2,..Cm)T,为了减少用户的计算开销,本方案将生成数据块纠删码的编码计算开销转移到CSP端,用户只需要生成编码矩阵后发送给CSP。
(3)数据块标签生成算法;
为了让本方案支持动态更新,即当用户添加或者删除数据块时不会影响到其它的标签,本发明在数据块的标签里引入版本号vi和时间戳timei,第一次生成数据块标签时版本号为0,时间戳为刚开始数据块标签生成的时间,本方案引入伪随机函数,并将版本号和时间戳输入到伪随机函数里生成伪随机数嵌入到数据块标签里,为了让方案生成数据块标签高效并支持撤销TPA,使用两个数据标签,数据标签包括数据块主标签σi和数据块副标签ti,因为有两个数据标签,当用户撤销一个TPA时,就更新验证公私钥对,然后更新所有的数据副标签ti,而数据主标签保持不变,由于主公私钥对和数据主标签都没有改变,用户依然拥有验证数据完整性的能力。生成数据块标签时首先将Ui分为m段,即Ui→(Ui1,Ui2,...Uim),每一段都是上一个元素,然后将与Ui做内积再加上一个伪随机数,与[6-8,12,14,15]方案不同,本方案没有用到群元素的求指数运算,计算更快,为了保障数据块的新鲜度,需要将数据块的版本号和时间戳嵌入到签名里,生成数据块主标签时用等式生成数据块副标签时,用等式
在进行数据块标签生成时还需要生成对应的红黑树信息表,用红黑树信息表是为了让本方案支持高效的动态更新,将红黑树信息表存储在TPA处可以用很小的计算开销和通信开销保证数据的新鲜度,让用户访问的数据都是最新的。红黑树信息表包括两个算法,首先需要将该文件的文件名加入到双向链表中,然后再生成该文件对应的红黑树。
(4)纠删码标签生成算法
为了让本方案支持动态更新而不至于让每次更新数据块时重新生成纠删码,我在方案里引入分层的缓存H来暂时存储动态的纠删码,缓存H第N层被填满了需要向第N+1层扩充时就重新生成静态的纠删码。用户每一次更新数据都需要更新缓存H,显而易见的是,更新缓存H的计算过程交给用户来计算是最稳妥的,然而这样的话,用户不得不从CSP处下载相关的数据块,然后用编码块生成算法构建分层H,而且,当第N层H被填满后,用户还需要下载所有的数据块,然后重新生成静态纠删码,这会造成较大的计算开销和通信开销,用户本身的计算能力就比较弱,这样就没有充分利用CSP强大计算能力的优势,针对这个问题,本方案让CSP按照用户的指示进行纠删码的更新,包括动态纠删码H的更新和静态纠删码的重生成,而让TPA对CSP生成的纠删码H和静态纠删码的编码块进行完整性验证以保障纠删码的计算正确性。本方案的纠删码标签需要满足以下两个性质:
a)纠删码标签的大小与数据块的大小相独立,纠删码的标签大小远远小于数据块的大小。
b)纠删码的标签满足同态性。
为了满足这两个性质,将纠删码数据块Ui分为段,Ui→(Ui1,Ui2,...Uim),然后对每一个纠删码编码块计算这样就充分利用了群元素求指数操作满足同态性的优点,同时用分段的方法减小了纠删码的标签大小。然而计算每一个纠删码编码块的标签还是需要m次求指数运算,计算开销比较大,于是可以从选取m个随机数{r1,r2,...rm},初始化密钥时随机地生成/>上一个元素p,计算/>用户将{p,r1,r2,...rm}作为私钥,{p1,p2,...pm}作为公钥,其中/>为了让纠删码标签支持TPA的验证,需要利用公钥签名算法来h(Ci)进行签名,本方案利用短签名算法对数据块的纠删码标签进行签名验证。
用户生成数据块密文U,数据块标签{σi,ti}i∈[1,n]、数据块编码系数矩阵B(m+n)×n、数据块纠删码标签{h(Ui),eσi}i∈[1,n]以及红黑树信息表后,需要上传{U,{σi,ti}i∈[1,n],B(m+n)×n,{h(Ui),eσi}i∈[1.n]}到CSP,将红黑树信息表和公钥上传给TPA并在本地保留一份红黑树信息表。
/>
/>
3.文件完整性证明过程
为了确保数据块的完整性,TPA需要周期性地对存储在CSP的数据块的完整性进行验证,数据块的完整性证明包括挑战阶段、产生证据阶段和验证阶段。
(1)挑战阶段
在挑战阶段,TPA发送挑战的数据块编号和对应的随机数给CSP,CSP返回证据信息。然而在大部分的公开数据完整性验证方案里,CSP对所有的挑战都会响应,这使得CSP的响应变为了服务,在这个过程里,CSP没有对挑战信息进行合法验证,那么有可能会有攻击者不断地发送大量的挑战信息耗费CSP的计算资源,于是,方案在挑战阶段进行挑战的验证。TPA事先生成用户的UID,TPA将UID发送给用户,用户用私钥ask对UID生成签名发送给TPA,在挑战时,TPA发送UID和其签名给CSP,CSP进行验证,验证通过后才计算并返回证据信息。
(2)响应挑战阶段
CSP根据TPA发送的挑战信息生成证据,为抵御DDOS攻击,CSP用公钥对挑战信息里的UID及其签名信息验证,然后从用户文件里读取对应数据块,为防止TPA多次发起挑战得到证据后通过求线性方程组得到文件数据块信息,对于每一次挑战要生成选取一个随机数然后生成/>Ui为数据块分段后组成的向量{Ui1,Ui2,..Uim},然后读取用户数据块主标签文件生成/>读取用户数据块副标签文件生成/>为了验证证据,还生成/> R=gr,/>
由于/>可以除尽,那么φα可以表示为/>其中p(α,ξ)是α和ξ的多项式,所以gp(α,ξ)可以用公钥pk和ξ计算得到,生成证据的算法如下。/>
(3)验证阶段
用户和TPA都可以进行数据的完整性验证,用户还可以批量验证证据,在批量验证时,用户从TPA那里取得大量验证通过的证据,然后批量验证,如果验证不通过就证明该TPA出现问题,用户就可以撤销该TPA。下面分别描述TPA验证过程和用户验证过程。在TPA验证过程里,利用以下两个等式进行验证,
TPA收到证据信息后,就需要生成上面等式里的相应的值,首先需要在红黑树里去查找对应的vi和timei并计算f(s1,vi||timei),对于挑战集合里的每一个数据块,由数据块编号i在红黑树里找到结点,取出对应的vi和timei,然后生成f(s1,vi||timei),接下来再依次生成验证所需要的信息。
在用户验证过程里,单次验证用等式3进行验证。用户也可以从TPA那里取得大量的proof和evidence组成的集合Q,然后为每一对proof和evidence生成权重weighti,然后验证等式4是否成立。
/>
/>
4.动态更新;
(1)数据块区U和数据块标签的更新;
更新时也需要更新数据块区U,这包括三个过程,即数据块的修改(MB)、数据块的***(JB)、数据块的删除(DB),接下来依次介绍这三个过程。
数据块的修改:假设需要将文件F的第i个数据块Ui更新为U’i,用户首先就为数据块U’i生成(vi’,timei’),然后发送更新请求UTPA(F,MB,i,vi’,timei’)请求到验证方TPA那里,验证方TPA收到后,就在红黑树信息表里根据F在双向链表里找到F结点,然后在F结点对应的红黑树里调用红黑树查找算法找到对应结点,然后用(vi’,timei’)替代(vi,timei)。用户端也要更新对应的红黑树,同样,云端存储的数据块和对应的数据块标签也需要更新,用户根据数据块生成相应的数据块标签σ’i和t’i,然后发送UCSP(F,MB,U’i,σ’i,t’i)到云服务器,云服务器用收到的<U’i,σ’i,t’i>替换原来存储的<Uii,ti>。
数据块的***:假设需要将一个数据块U’i需要被***到文件F的第i个数据块的后面,那么用户首先生成数据块U’i的信息(vi’,timei’),然后发送一个更新请求UTPA(F,JB,i,vi’,timei’)给验证方TPA,验证方TPA收到后就先遍历双向链表,找到相应的文件F,然后找到文件F相应的红黑树,然后根据i找到结点,然后用(vi’,timei’)初始化结点,然后通过调用红黑树的***算法***该结点,用户也更新本地的红黑树信息表。用户再根据之前生成数据块标签的方法生成数据块的标签σ’i和t’i,然后发送UCSP(F,JB,U’i,σ’i,t’i)到云服务器,云服务器就在文件F的第i个数据块的后面***信息。
数据块的删除:假设用户要将文件F的第i个数据块Ui删除,那么用户就发送一个请求UTPA(F,DB,i)给验证方TPA,验证方TPA收到用户发来的请求UTPA(F,DB,i)后就先遍历文件的双向链表找到相应的文件结点,然后根据文件结点找到相应的红黑树,然后就调用红黑树的删除算法删除对应的结点,用户更新本地的红黑树,用户也发送请求UCSP(F,DB,i)给云服务器,云服务器收到用户发来的请求UCSP(F,DB,i)后就删除该数据块。
(2)CSP纠删码缓存H更新;
更新数据包括对数据块U的更新和C、H的更新,之前讲过,由于数据块的静态纠删码的每一个编码块都是数据块的线性组合,为了避免更新数据块时重新生成静态纠删码,本方案引入了缓存,称之为H,当更新数据块时并不立即更新静态纠删码,而是将更新纠删码缓存H,当它的第N层被填满后需要向第N+1层扩充时再更新纠删码C。
H一共有N层,N可以由用户改变,设定当第N层被填满时需要向第N+1层扩充时就重新生成纠删码C,然后清空H,每一层Hl包括Xl、Yl,Xl、Yl都包含个2l编码块。当编码块用傅里叶变换时生成时,生成的编码矩阵Hl是满秩的,即各编码块的系数都是线性无关的,那么在得到这些编码块后就可以通过求解线性方程组得到数据块。每一层Xl、Yl一个包含2l+1个编码块,可以允许2l个编码块出错,生成H时,由低层向高层填,低层的数据是最新的编码块。在进行数据恢复时,需要得知编码矩阵,同时也需要知道恢复出的数据块是何时被更新的,所以编码块的结构里需要包含系数、生成编码块的数据块号和其更新的时间戳信息,每一个编码块结构应包括{B,(i,t,β)i∈V},B表示该编码块的值,其中(i,t,β)表示该编码块的第i块数据块的系数为β,该数据块在t时刻被更新,即B=β1U12U2+...+βmUm,对H进行操作可以满足用户对数据块的增删改需求,增改操作在H中加入的是最新编码块,而删除时让新加入的编码块为空即可,在用H进行数据恢复时,若恢复出最新的数据块为空,那么就说明该数据块已经被删除。下面给出构建H的过程。
/>
/>
(3)用户端纠删码标签缓存更新;
之前讲过,为了将生成纠删码的计算销转移到CSP处,用户CSP存储了纠删码标签,值得注意的是,与Haddblock函数有所不同,因为纠删码标签是gU,在同态性上,纠删码若求和,纠删码标签就要求积;纠删码求积,纠删码标签就要求幂。所以更新纠删码标签时,更新纠删码标签的函数/>的纠删码标签计算过程要和Haddblock里的纠删码计算过程对应以保持同态性。设/>是H的纠删码标签集合,设/>是C的纠删码标签集合,(h(Bi),eσi)是数据块Bi的纠删码标签,设是更新/>所需要的,那么在更新时用户从CSP处下载/>然后对/>调用4-10算法更新/>然后将更新的信息上传到CSP。
5.纠删码完整性证明;
由于用户将计算C和H的的计算开销转移到云端,用户需要确保C和H被正确地计算,于是需要TPA对C和H进行完整性验证。纠删码完整性证明过程包括三个过程,即挑战过程、响应过程和验证过程。
(1)挑战过程;
TPA需要挑战C和H的每一层,设addr为C和H的位置,其数据结构为{identitor,a,b,c,e},identitor为1表示为C,为0表示为H,a表示为是C的第i个编码块,b表示是H的第b层,c为1表示是H的X,为0表示为H的Y,e表示为X或Y的第e块。TPA随机地生成挑战集合{addri}i∈[1,n],并生成n个随机数{r1,r2,...rn},然后将它们发送给CSP。
(2)响应过程;
CSP收到挑战信息后返回证明信息,CSP根据addr找到对应的编码块,为了防止泄露编码块给TPA,先生成一个随机的编码块r,再找到编码块并计算找到编码块的标签/>计算/>用算法4-4计算R=h(r)和h(B*),然后将B*、h(B*)和R送给TPA。
(3)验证过程;
TPA收到B*、R和h(B*)验证等式h*·R=h(B*)是否成立,如果成立输出1,不成立就输出0。
6.数据恢复;
(1)确定出错数据块;
TPA周期性地对数据块的完整性进行验证,当发现验证不通过时就要通过二分查找的方法确定出错的数据块。二分查找确定出错数据块的算法如下:
(2)恢复出错数据块;
在对出错的数据块恢复时,假设要恢复第i块数据块,H层的低层里是最新的数据块,而静态纠删码C也许并没有立即更新,不是最新的编码块,所以先从H的低层里寻找编码块,确定该层的编码块是否是包含第i块数据块的的线性组合,如果找到,就用该层的编码块进行数据恢复,如果H层里都找不到,就说明C里包含的第i块数据块就是最新的,于是用C来进行数据恢复。然后,CSP将修复的数据块发送给用户,用户重新对这些数据块生成签名,然后将签名发送给CSP,这些数据块恢复后,用户还需要对这些数据块进行完整性验证以确定数据块被正确地修复。恢复出错数据块的算法如下:
7.撤销TPA;
用户可以对TPA的审计结果进行验证,如果发现TPA的审计出现问题,就可以撤销一个TPA。用户首先从CSP处下载所有的数据副标签{ti},然后需要重新生成验证私钥vsk和验证公钥vpk,更新验证公私钥对时,就先从上随机生成一个元素τ和s′1,然后计算新的再按照等式/>方式更新验证公钥vpk=(h1,h2,...hm),与[41]不同的是,为了支持动态性,本方案需要版本号和时间戳信息,于是用户本地需要存储红黑树信息表,用户下载所有的数据副标签{ti}后就在红黑树信息表中找到每一个结点的版本号和时间戳,然后按照下面等式更新所有{ti},并用新的vsk和vpk更新其它TPA的验证公私钥对。/>
1.本发明提出了一种云存储可撤销动态数据完整性验证方案,该方案可以满足云存储里用户的实际需求,本方案通过对数据块加密防止云端知道数据的内容,通过利用m-BSDH难题让生成数据块标签的速度快于基于BLS短签名和RSA签名的方案,通过生成数据块主、副标签以支持授权和撤销第三方验证者,通过将时间戳和版本号嵌入到数据块标签里并在红黑树里存储时间戳和版本号以支持动态更新并保障数据的新鲜度,通过引入纠删码以支持数据恢复,通过对编码块生成纠删码标签以将纠删码的计算开销转移至云端,通过在挑战阶段引入认证过程以防止DDOS攻击。从理论上来考虑,本方案生成数据块标签是基于m-BSDH难题,通过增大密钥的存储开销,以空间换取时间,没有利用到求指数操作,因此生成数据块标签的速度会比基于BLS短签名或者RSA签名的方案快很多;在动态更新方面,本方案设计了红黑树信息表并用其存储数据块更新的版本号和时间戳,然后将红黑树信息表存储在用户和第三方验证方处,同时在数据块签名里嵌入版本号和时间戳,这样可以抵御重放攻击并保障数据块的新鲜度,也使得验证数据块完整性的计算开销和通信开销较小,而为了避免动态更新数据块时纠删码的重新生成,利用纠删码缓存技术,每次更新数据块时只写入纠删码缓存,当纠删码缓存累积到一定程度时才重新生成所有的纠删码,让本方案可以支持较高效的纠删码动态更新;在转移纠删码计算开销方面,利用同态验证技术,本方案对编码块生成大小很小的纠删码标签,然后让用户对纠删码标签进行更新,让云端对纠删码进行更新,让第三方验证者对纠删码进行验证,这样不仅将更新纠删码的计算量转移到了云端,而且保障了纠删码的计算正确性。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (1)

1.一种云存储可撤销动态数据完整性验证方法,采用云存储可撤销动态数据完整性验证***;其特征在于:所述***包括用户Users、云服务提供商CSP和第三方公有审计者TPA;所述云服务提供商CSP为用户提供计算服务和存储服务,存储用户的文件;所述用户Users为企业或者个人,企业和个人需要将一些数据存储到云服务提供商CSP处,用户Users不希望云服务提供商CSP知道数据的内容,用户Users需要确保存储在云服务提供商CSP处的数据是完好无损的,用户Users能对存储在云服务提供商CSP处的数据进行动态更新,并授权第三方公有审计者TPA对存储在云服务提供商CSP的数据进行完整性验证,当发现存放在云服务提供商CSP处的数据损坏后能远程恢复出原数据;用户Users能撤销一个第三方公有审计者TPA,也能授权一个新的第三方公有审计者TPA对数据进行完整性审计;
所述方法包括以下步骤:
步骤1:文件预处理;
步骤1的具体实现包括以下步骤:
步骤1.1:用户Users将文件分块;
步骤1.2:用户Users将各数据块分别加密成密文数据块,然后对密文数据块生成数据块标签和纠删码标签,并生成对应的红黑树信息表和纠删码编码系数矩阵;
步骤1.3:用户Users将生成的密文数据块、数据块标签、纠删码标签发送给云服务提供商CSP,用户Users授权第三方公有审计者TPA负责对其存储在云服务提供商CSP的数据进行完整性验证,用户将红黑树信息表、对应的密钥发送给第三方公有审计者TPA;
步骤2:文件完整性证明;
所述文件完整性证明包括挑战阶段、响应挑战阶段和验证阶段;文件完整性验证是为了确保用户存储在云服务提供商CSP处的文件未损坏,在挑战阶段里,第三方公有审计者TPA随机生成挑战编号,将挑战信息发送给云服务提供商CSP,云服务提供商CSP收到后就返回证明信息给第三方公有审计者TPA,第三方公有审计者TPA收到后进行数据块的完整性验证;通过TPA周期性地对云服务提供商CSP存储的数据进行完整性验证,检测出数据是否被损坏;用户也能批量验证第三方公有审计者TPA验证过的信息判断第三方公有审计者TPA是否合法;当用户需要撤销一个第三方公有审计者TPA时,用户Users从云服务提供商CSP那里下载所有的数据块副标签,然后生成新的验证公钥和验证私钥,然后将新的数据块副标签发送给云服务提供商CSP,并将新的验证公钥和验证私钥发送给新的第三方公有审计者TPA;
步骤3:动态更新;
用户Users更新数据时需要更新数据块区U、纠删码缓存H和纠删码标签缓存用户发送更新的数据给云服务提供商CSP和第三方公有审计者TPA,并更新纠删码标签缓存/>然后发送给云服务提供商CSP,云服务提供商CSP更新纠删码缓存H和数据块区U,第三方公有审计者TPA更新红黑树信息表;
当更新数据块时并不立即更新静态纠删码,而是将更新纠删码缓存H,纠删码缓存H一共有N层,设定当第N层被填满时需要向第N+1层扩充时再更新纠删码C,然后清空H;
步骤4:纠删码完整性证明;
纠删码完整性证明是为了检验云服务提供商CSP是否按照用户Users的要求正确计算数据块的纠删码;该过程分为挑战阶段、响应挑战阶段和验证阶段;挑战阶段,第三方公有审计者TPA将挑战信息发送给云服务提供商CSP;响应挑战阶段,云服务提供商CSP返回纠删码标签和纠删码;证明阶段,验证判断纠删码是否被正确地计算;
步骤5:数据恢复;
所述数据恢复包括确定出错数据块过程和恢复出错数据块过程;当检测到数据块出错时先通过二分查找确定出错的数据块集合,然后恢复出错的数据块。
CN201910216029.6A 2019-03-21 2019-03-21 一种云存储可撤销动态数据完整性验证***及方法 Active CN110008755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910216029.6A CN110008755B (zh) 2019-03-21 2019-03-21 一种云存储可撤销动态数据完整性验证***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910216029.6A CN110008755B (zh) 2019-03-21 2019-03-21 一种云存储可撤销动态数据完整性验证***及方法

Publications (2)

Publication Number Publication Date
CN110008755A CN110008755A (zh) 2019-07-12
CN110008755B true CN110008755B (zh) 2023-12-26

Family

ID=67167572

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910216029.6A Active CN110008755B (zh) 2019-03-21 2019-03-21 一种云存储可撤销动态数据完整性验证***及方法

Country Status (1)

Country Link
CN (1) CN110008755B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110995734B (zh) * 2019-12-12 2020-12-15 深圳大学 基于纠错码的云存储审计方法、***及计算机设备
CN111210378B (zh) * 2019-12-30 2023-09-19 北京工业大学 基于工业云上图像数据的可恢复性方法
CN112751923A (zh) * 2020-12-30 2021-05-04 武汉大学 一种支持公开完整性校验的数据共享***及方法
CN113656840B (zh) * 2021-07-16 2024-01-02 北京航空航天大学杭州创新研究院 一种具有问责性的动态完整性验证方法
CN114519078B (zh) * 2022-04-19 2022-08-09 北京理工大学 一种基于区块链的跨链可信查询方法及***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095794A (zh) * 2015-07-20 2015-11-25 武汉科技大学 一种基于平衡的梅肯哈希树的动态云数据完整性验证方法
CN106612174A (zh) * 2016-08-26 2017-05-03 四川用联信息技术有限公司 移动云计算中支持第三方的数据安全性验证和更新方法
CN107566118A (zh) * 2017-09-13 2018-01-09 陕西师范大学 轻量级用户可动态撤销及数据可动态更新的云审计方法
CN109101360A (zh) * 2017-06-21 2018-12-28 北京大学 一种基于布隆过滤器和交叉编码的数据完整性保护方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095794A (zh) * 2015-07-20 2015-11-25 武汉科技大学 一种基于平衡的梅肯哈希树的动态云数据完整性验证方法
CN106612174A (zh) * 2016-08-26 2017-05-03 四川用联信息技术有限公司 移动云计算中支持第三方的数据安全性验证和更新方法
CN109101360A (zh) * 2017-06-21 2018-12-28 北京大学 一种基于布隆过滤器和交叉编码的数据完整性保护方法
CN107566118A (zh) * 2017-09-13 2018-01-09 陕西师范大学 轻量级用户可动态撤销及数据可动态更新的云审计方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
云环境下一种可撤销授权的数据拥有性证明方案;赵洋 等;《网络信息安全》;20151231;第1-7页 *

Also Published As

Publication number Publication date
CN110008755A (zh) 2019-07-12

Similar Documents

Publication Publication Date Title
CN110008755B (zh) 一种云存储可撤销动态数据完整性验证***及方法
CN111639361B (zh) 一种区块链密钥管理方法、多人共同签名方法及电子装置
Barsoum et al. On verifying dynamic multiple data copies over cloud servers
JP5062775B2 (ja) 検索方法、検索装置、索引生成方法、索引生成装置
CN111523133B (zh) 一种区块链与云端数据协同共享方法
CN110610105B (zh) 一种云环境下基于秘密共享的三维模型文件的认证方法
KR101082917B1 (ko) 원격 컴퓨팅 환경에서 사용자 데이터의 무결성 검증 방법 및 그 시스템
CN106612320A (zh) 云存储中一种加密数据的去重方法
US8341417B1 (en) Data storage using encoded hash message authentication code
CN104978239A (zh) 一种实现多备份数据动态更新的方法、装置及***
CN111526197A (zh) 一种云端数据安全共享方法
CN110750796B (zh) 一种支持公开审计的加密数据去重方法
CN115225409B (zh) 基于多备份联合验证的云数据安全去重方法
US20190363891A1 (en) Encryption device and decryption device
CN106899406A (zh) 一种云端数据存储完整性的证明方法
CN113918528A (zh) 一种基于可信硬件的安全云数据去重方法及***
Gudeme et al. Review of remote data integrity auditing schemes in cloud computing: taxonomy, analysis, and open issues
Mukundan et al. Replicated Data Integrity Verification in Cloud.
CN117094008A (zh) 神经网络模型加密方法、解密方法、装置、设备及介质
CN113259317B (zh) 一种基于身份代理重加密的云存储数据去重方法
CN108259606B (zh) 云计算公有云文件存储及检索方法
Li et al. IPOR: An efficient IDA-based proof of retrievability scheme for cloud storage systems
US11502856B2 (en) Method for providing information to be stored and method for providing a proof of retrievability
CN114503506A (zh) 支持交易中包含的明文数据变更的区块链***
CN113342802A (zh) 区块链数据存储的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant