一种云存储中密文数据的客户端安全去重方法

文档序号:10577996阅读:305来源:国知局
一种云存储中密文数据的客户端安全去重方法
【专利摘要】本发明公开了一种云存储中密文数据的客户端安全去重方法,包括如下步骤:(1)密钥生成;(2)文件初始化;(3)数据块初始化;(4)数据块验证;(5)文件存储;(6)生成挑战;(7)生成证据;(8)验证证据;(9)文件解密。本发明基于盲签名构造了一个安全的密钥生成协议,实现了对收敛密钥的二次加密,保证了密钥的安全性;并在此基础上提出了一个新的基于签名的拥有权证明方法,它能够确保用户以一个更加安全高效的方式向云服务器证明其确实拥有云端的某个文件,并且它能够同时实现对密文文件的文件级和块级去重。
【专利说明】
-种云存储中密文数据的客户端安全去重方法
技术领域
[0001] 本发明设及云存储和信息安全技术领域,特别是一种云存储中密文数据的客户端 安全去重方法。
【背景技术】
[0002] 随着云存储服务的广泛使用,越来越多的企业和个人将他们的数据信息外包给云 服务提供商(Cloud Service ProvideriCSP),运将会在云端产生大量的冗余数据。所W,云 服务提供商将面临的一个严峻的挑战就是如何高效地管理持续增加的数据。
[0003] 为此,研究人员提出了一种客户端的数据去重技术,它使得CSP对相同文件只存储 一次,所有拥有该文件的用户只能通过那份唯一的拷贝来访问文件。更具体地来说,就是 CSP只在接收到第一个用户上传请求的时候,执行数据文件的存储;对于后面的上传请求, 只是分配一个原始数据副本的链接。运样既节约了存储空间,也节约了传输带宽。然而,客 户端的数据去重存在一个很大的安全问题:攻击者可能凭借单一的文件hash值就可W从云 端获得相应文件的下载权限。运类攻击的根本原因是一个很短的文件hash值就可W代表整 个文件,一旦攻击者获得此hash值,就可W获得整个文件。为了解决运个问题,一个拥有权 证明(Proof of Ownership JoW)的方法被提出。PoW就是一个在证明者和验证者之间的交 互的协议。通过执行运个协议,证明者使验证者相信,他/她确实是一个被验证者存储的文 件的所有者。因此,对于客户端的数据安全去重来说,PoW是相当重要的。
[0004] 此外,云服务器是诚实而好奇的,它可能窃取用户的数据隐私。因此,用户在将数 据上传至云服务器之前,需要对数据进行加密来实现数据隐私保护。然而,当不同用户利用 各自的私钥对相同的文件进行加密时,将会产生不同的密文,不利于云服务器对相同文件 进行去重。一种收敛加密的技术被提出,它利用数据本身产生的一个hash值作为数据的加 密密钥,运样相同的数据文件将会产生相同的密文,便于云服务器进行去重处理。但是,收 敛加密存在很大的安全漏桐,如字典攻击:对于可预测的文件,攻击者很容易推导出收敛密 钥,并检测文件是否存在于云服务器中。另外,收敛加密会产生很多的收敛密钥,运给用户 对自己密钥的管理造成了很大困难。

【发明内容】

[0005] 本发明的目的在于提供一种安全、高效的云存储中密文数据的客户端安全去重方 法,W实现对收敛密钥的二次加密,保证数据的隐私,预防暴力字典攻击。
[0006] 实现本发明目的的技术解决方案为:一种云存储中密文数据的客户端安全去重方 法,针对加密数据的客户端去重模型,去重过程设及到的实体如下:用户Users,云服务提供 商CSP和密钥服务器KS,具体步骤如下:
[0007] 步骤1,密钥生成:
[000引用户为每一个数据块Hii计算相对应的加密密钥ki,l《i《n,n为数据块的总数;
[0009]步骤2,文件初始化:
[0010]用户为每一个数据块nii计算块密文Ci,同时生成文件的标签T= (Tl,T2),其中Tl用 于数据完整性验证,T2用于块签名的验证;
[0011] 步骤3,数据块初始化:
[0012] 当云端不存在文件标签T时,用户为每一个数据块HU计算块标签Tl和块签名〇1,其 中Tl用于块的索引,Oi用于块存在的证明;同时,用户用自己的私钥Sk加密每一个块密钥得 到密钥的密文Ckey;
[0013] 步骤4,数据块验证:
[0014] 当云端存在数据块标签Tl时,执行块去重;CSP验证用户上传的数据块签名Oi是否 正确,从而判断用户和CSP是否拥有相同的数据块,并将验证结果返回给用户;
[0015] 步骤5,文件存储:
[0016] 当云端不存在数据块标签Tl时,请求用户上传数据块签名〇1、块密文Cl和密钥的密 文Ckey至CSP,CSP验证块标签和块密文是否来自相同文件,并且验证块签名Oi的正确性;最 终,CSP存储每一个块标签、块签名、块密文、密钥的密文;并给用户分配相应的权限;
[0017] 步骤6,生成挑战:
[001引当云端存在文件标签T时,执行文件去重;CSP生成挑战信息Chal = U, VihEI,再将 该挑战信息返回给用户,其中I为[l,n]的任意子集,随机数ViGZq,其中Zq是q阶素数域;
[0019] 步骤7,生成证据:
[0020] 用户收到挑战信息后,根据所选的块生成响应证据Pv,并返回给CSP;
[0021] 步骤8,验证证据:
[0022] CSP验证响应证据Pv的正确性,从而判断用户和CSP是否拥有相同的文件,并将验 证结果返回给用户;
[0023] 步骤9,文件解密:
[0024] 当用户需要从CSP下载文件时,CSP首先验证用户身份的合法性,并将密钥的密文 Ckey和块密文Cl返回给用户;用户首先利用自己的私钥Sk解密得到每一个块密钥ki;然后,再 利用ki解密每一个块密文Ci得到块明文Hli。
[0025] 进一步地,步骤1所述密钥生成:用户为每一个数据块HH计算相对应的加密密钥ki, 1《i《n,n为数据块的总数,具体如下:
[0026] (1.1化5随机选择一个4-^*的素数9并创建两个9阶的楠圆曲线方程&,础相阶的 素数域Zq; P,Q是Gi的两个不同的生成元,并产生一个线性配对e: Gi X Gi^G2 ; KS随机选择一 个整数X E Zq作为私钥,并计算公钥Ppub = X ? P;KS公开系统参数{q,Gi,G2,e,P,Q,Ppub},保持 X私有;
[0027] (1.2)用户将文件M分成n个块,即M=化IkM…Mmn,用户为每一个数据块化计算 收敛密钥hi = h(mi),其中哈希函数K ? ):{0,l}*^Gi;然后,用户随机选择rGZq作为盲化因 子,再计算对hi盲化后的值ai = hi+r ? P,并将ai上传到KS;
[002引 (1.3化S计算对ai加密后的值bi = ai ? X,并将bi返回给用户;
[0029] (1.4)用户计算对bi去盲化后的值di = b广r ? Ppub,同时用户验证di的正确性:e(di, P)=e化(mi),Ppub);最后,用户令ki = di作为每一个块mi的加密密钥。
[0030] 进一步地,步骤2所述文件初始化:用户为每一个数据块HH计算块密文Cl,同时生成 文件的标签T=(Ti,T2),其中Tl用于数据完整性验证,T2用于块签名的验证,具体如下:
[0031 ] (2.1)用户使用对称加密的方法为文件M的每一个块mi(I《i《n),计算块密文Ci = Enc(ki,mi) ,CiGZq;
[0032] (2.2)用户计算:。=化((:1||〔2||...||打)^2 =此(1).口,其中哈希函数出(.):2。 一{0,1}*,出(?一Zq;最后,用户生成文件M的标签:T=(Ti,T2),并上传 T至CSP。
[0033] 进一步地,步骤3所述数据块初始化:当云端不存在文件标签T时,用户为每一个数 据块HU计算块标签Tl和块签名〇1,其中Tl用于块的索引,Oi用于块存在的证明;同时,用户用 自己的私钥Sk加密每一个块密钥得到密钥的密文Ckey,具体如下:
[0034] (3.1)当用户检测到云端文件标签T不存在时,用户为每一个文件块HU计算块标签 Ti =出(M) ? h(mi);
[0035] (3.2)用户计算块签名:〇1 =出(1)-化1+。-9);
[0036] (3.3)用户随机选择自己的私钥Sk,并对块密钥ki进行加密,计算密钥的密文Ckey = Enc(sk,ki| Iksl I... ||kn)。
[0037] 进一步地,步骤4所述数据块验证:当云端存在数据块标签Tl时,执行块去重;CSP 验证用户上传的数据块签名Oi是否正确,从而判断用户和CSP是否拥有相同的数据块,并将 验证结果返回给用户,具体如下:
[0038] 当收到来自用户的块标签Tl和块签名〇i,CSP检测到块标签Tl存在则执行块去重; 然后CSP验证块签名Oi的正确性,即CSP验证〇1 = 〇1'是否成立,其中〇1'是CSP存储的数据块 的签名;若成立,说明用户和CSP拥有相同的数据块,该数据块已存在于CSP,CSP只需为该数 据块添加用户的身份IDuser;否则,返回一个请求失败消息给用户。
[0039] 进一步地,步骤5所述文件存储:当云端不存在数据块标签Tl时,请求用户上传数 据块签名〇i、块密文Ci和密钥的密文Ckey至CSP,CSP验证块标签和块密文是否来自相同文件, 并且验证块签名Oi的正确性;最终,CSP存储每一个块标签、块签名、块密文、密钥的密文;并 给用户分配相应的权限,具体过程如下:
[0040] (5.1)-旦CSP收到所有的块密文。,〔5?开始验证。=化((:1|侣|^,||打)是否成 立,若成立,说明用户上传的密文和标签是一致的;否则,说明用户上传了与标签不一致的 密文,返回一个请求失败消息给用户;
[0041 ] (5 . 2)CSP验证用户上传的每一个数据块签名Oi是否正确,通过验证 e的,巧=嘶,.雌.r:)'' '1是否成立,若成立,说明用户上传的数据块签名Oi是正确的,CSP存 储T、Ti、日i、Ci和Ckey,并添加用户的身份IDuser到IDm,则IDm= IDm U IDuser,其中IDm代表所有拥 有文件M的用户身份的集合;否则,CSP返回一个请求失败的信息给用户。
[0042] 进一步地,步骤6所述生成挑战:当云端存在文件标签T时,执行文件去重;CSP生成 妇峨信息Chal = U再将该挑战信息返回给用户,其中I为[l,n]的任意子集,随机数 Vi G Zq;具体如下:
[0043] 当CSP检测到文件标签T存在时,CSP根据文件M的总块数n,从1~n中随机生成C个 数,组成1 = {si,S2,…,Sc},且对于乂&.,^/ /)"1和3堤相互独立的;对于V?'€/ .随机生 成一个数Vi G Zq,组成挑战信息Chal = {i,Vi}iei,然后CSP将Chal发送给用户。
[0044] 讲一张她?张3?7祈沐晌!而iIF据Pv的计算公式如下;
[0045]
[0046] 进一步地,步骤8所述验证证据:CSP验证响应证据Pv的正确性,从而判断用户和 CSP是否拥有相同证结果返回给用户,具体过程如下:
[0047] CSP验证 I否成立:若成立,说明用户和CSP拥有相同的文件,该文件 已存在于CSP中,用户不需要上传文件到CSP,用户只需上传 CkeyJDuser至IjCSP, CSP存储Ckey, 并且添加用户的身份IDuser到IDm,则IDm= IDmU IDuser,其中IDm代表所有拥有文件M的用户身 份的集合;否则,CSP返回一个请求失败的信息给用户。
[004引进一步地,步骤9所述文件解密:当用户需要从CSP下载文件时,CSP首先验证用户 身份的合法性,并将密文Ckey和Cl返回给用户;用户首先利用自己的私钥Sk解密得到每一个 块密钥ki;然后,再利用ki解密每一个块密文Cl得到块明文nil,具体如下:
[0049] (9.1)首先,用户发送文件M的标签T和自己的身份IDuser至化SP;
[0050] (9.2)CSP收到文件标签T和用户的身份IDuser后,验证文件标签T和用户身份IDuser 是否正确,如果正确,将其对应的密钥的密文Ckey和块密文Cl传送给用户;否则返回一个请 求失败信息给用户;
[0051 ] (9.3)用户收到密钥的密文Ckey和块密文Ci后,首先验证Tl=化(Cll估| I -'IlCn)是 否正确,如果不正确,说明CSP返回给了用户不正确的密文文件;否则,用户先用自己的私钥 sk,解密每一个块密钥:kl Mksl I .-Mkn = Dec(SkiCkey),然后用户解密每一个数据块:mi = Dec化i,Ci)。
[0052] 本发明与现有技术相比,其显著优点为:
[0053] (1)收敛密钥安全性:基于盲签名的方法,用户首先选择一个随机数r作为盲化因 子,对收敛密钥进行了盲化处理,KS再对盲化后的收敛密钥进行加密。在整个传输过程中, 收敛密钥始终是盲化的,攻击者(甚至是KS)即使获得了交互过程中的一些信息,也不能推 导出收敛密钥;
[0054] (2)数据机密性:由于数据块的加密密钥只在用户端生成,且此加密密钥中包含了 数据块的收敛密钥和KS的私钥,此外收敛密钥安全性是得到有效保护的,所W攻击者是不 可能获得和破解此密钥的,数据机密性是得到有效保护的;
[0055] (3)数据完整性:基于文件的密文产生文件的标签Tl,当用户上传文件标签Tl和每 一个块密文Cl后,云服务器利用收到的文件标签和密文验证:Tl =化(Cl M C21 I…I I Cn)是否 成立,从而判断用户是否上传了与标签一致的密文。其次,用户下载的密文后,还需验证:Tl =化(Cl M C21 I…M Cn)是否成立,从而判断CSP是否给了用户正确的密文文件;
[0056] (4)预防字典攻击:数据块的加密密钥是通过KS对收敛密钥进行二次加密得到的, 攻击者是不可能推导出收敛密钥和数据块的加密密钥的;由于数据块的加密密钥中包含KS 的私钥,而KS的私钥是一个随机值,所W加密产生的密文存在更大的无关联性,运样攻击者 在对密文发起字典攻击的过程中,除非他们知道数据块的加密密钥,否则他们就很难猜测 明文,从而预防了字典攻击。
【附图说明】
[0057] 图1是本发明的系统模型图。
[005引图2是本发明的云存储中密文数据的客户端安全去重方法的基本流程图。
[0059] 图3是本发明的基于盲签名的密钥生成协议示意图。
【具体实施方式】
[0060] 下面结合附图及实施示例对本发明作进一步详细描述。W下实施例在W本发明技 术方案为前提下进行实施,给出了详细的实施方式和过程,但本发明的保护范围不限于下 述的实施例。
[0061] 本发明提供一种云存储中密文数据的客户端安全去重方法,该方法的系统模型如 图1所示,包含S类实体:云服务提供商(Cloud Service ProvideriCSP),密钥服务器 化eyServer,KS),用户化sers)。其中,CSP由主服务器和存储服务器组成,它有足够的存储 空间和计算能力,为用户提供数据存储和去重验证服务。KS与用户进行交互,对盲化的收敛 密钥进行再加密。Users包括多个普通用户,他们在上传文件到CSP之前,检查要上传的文件 是否已存在于CSP,若存在,不需要上传文件到CSP;否则,上传文件到CSP。
[0062] 本发明云存储中密文数据的客户端安全去重方法能够实现对收敛密钥的二次加 密,保证数据的隐私,预防了暴力字典攻击;同时用户能够在本地W-种安全有效的方式向 云服务器证明其确实拥有云端的某个文件,既节约了存储空间,也节约了上传带宽。
[0063] 为了更好地理解本实施例提出的方法,选取一次云存储环境下用户对其在CSP上 存储的文件的数据安全去重事件,基本流程如图2所示,本实施例具体实施步骤如下:
[0064] 步骤101:密钥生成:用户为每一个数据块mi(总共有n个块,计算其相对 应的加密密钥ki,其密钥生成协议如图3,具体过程如下:
[0065] (1.1)首先,为了密钥的生成和去重的证明,初始化一些系统参数。KS随机选择一 个k-bit的素数q并创建两个q阶的楠圆曲线方程61,&和9阶的素数域Zq"P,Q是Gi的两个不 同的生成元,并产生一个可接受的线性配对e: Gi X Gi^G2 dKS随机一个选择整数X G Zq,并计 ^Ppub = X ? P〇KSl^^^^^#m{q,Gi,G2,e,P,Q,Ppub},{^#xfAW〇
[0066] (1.2)用户首先将文件M分成n个块:M=HuNimII…limn。用户为每一个数据块mi计 算收敛密钥hi = h(mi),其中哈希函数K ? ):{0,l}*^Gi;然后,用户随机选择rGZq作为盲化 因子,再计算对hi盲化后的值ai = hi+r ? P,并将ai上传到KS。
[0067] (1.3化S计算对ai加密后的值bi = ai ? X,并将bi返回给用户。
[006引 (1.4)用户计算对bi去盲化后的值di = b广r . Ppub,同时用户能够验证di的正确性: e(di,P) = e化(mi) ,Ppub)。最后,用户令ki = di作为每一个块mi(l《i《n)的加密密钥。
[0069] 步骤102:文件初始化:初始化文件M的信息,用户为每一个数据块HH计算块密文Cl, 同时生成文件的标签T=(Ti,T2),其中Tl用于数据完整性验证,T2用于块签名的验证,具体 过程如下:
[0070] (2.1)用户使用对称加密的方法为文件M的每一个块Hii (1《i《n ),计算块密文Ci = Enc(ki,mi),CiGZq。
[0071] (2.2)用户计算:。=化((:1|估||。'||打)^2 =此(1).口,其中哈希函数出(.)而 一{0,1}*,出(?一Zq。最后,用户生成文件M的标签:T=(Ti,T2),并上传 T至CSP。
[0072] 步骤103:数据块初始化:初始化数据块信息。当用户检测到云端文件标签T不存在 时,用户为每一个数据块HU计算块标签Tl和块签名Oi,其中Tl用于块的索引,Oi用于块存在的 证明;同时,用户用自己的私钥Sk加密每一个块密钥得到密钥的密文Ckey,具体过程如下:
[007;3] (3.1)用户为每一个文件块mi(l《i《n),计算块标签:Ti =出(M) ? h(mi)。
[0074] (3.2)用户计算块签名:〇1 =出(1)-化1+。-9)。
[0075] (3.3)用户随机选择自己的私钥Sk,并对块密钥ki(l《i《n)进行加密,计算密钥 的密文 Ckey = E:nc(sk,ki| Iksl |...||kn)。
[0076] 步骤104:数据块验证:当收到来自用户的块标签Tl和块签名OiXSP检测到块标签 Tl存在,执行块去重;CSP验证用户上传的数据块签名Oi是否正确,从而判断用户和CSP是否 拥有相同的数据块,并将验证结果返回给用户,具体过程如下:
[0077] 当收到来自用户的块标签Tl和块签名〇i,CSP检测到块标签Tl存在则执行块去重; 然后CSP验证块签名Oi的正确性,即CSP验证:〇1 = 〇1'是否成立,其中〇1'是CSP存储的数据块 的签名。若成立,说明用户和CSP拥有相同的数据块,该数据块已存在于CSP,CSP只需为该数 据块添加用户的身份IDuser;否则,返回一个请求失败消息给用户。
[0078] 步骤105:文件存储:当收到来自用户的块标签Tl和块签名〇1,云端不存在数据块标 签Ti时,请求用户上传数据块签名〇i、块密文Ci和密钥的密文Ckey至CSP,CSP验证块标签和块 密文是否来自相同文件,并且验证块签名Oi的正确性;最终,CSP存储每一个块标签、块签 名、块密文、密钥的密文;并给用户分配相应的权限,具体过程如下:
[0079] (5.1)-旦05?收到所有的块密文。(1《1《11),〔5?开始验证:1'1 =化((:1|估||''-| Cn)是否成立。若成立,说明用户上传的密文和标签是一致的;否则,说明用户上传了与标签 不一致的密文,返回一个请求失败消息给用户。
[0080] (5.2)其次,CSP能够验证用户上传的每一个数据块签名Oi是否正确,通过验证 叫巧,/,)=如,..^,",,).雌.。)<'是否成立。若成立,说明用户上传的数据块签名是正确的,〔5口存储 T、Ti、Oi、Ci和Ckey,并添加用户的身份IDuser到IDm,则IDm= IDmU IDuser,其中IDm代表所有拥有 文件M的用户身份的集合;否则,CSP返回一个请求失败的信息给用户。
[0081] 步骤106:生成挑战:当云端存在文件标签T时,执行文件去重;CSP生成挑战信息 Chal = a, ViUei,再将该挑战信息返回给用户,其中I为[l,n]的任意子集,随机数ViGZq;具 体过程如下:
[0082] 当CSP检测到文件标签T存在时,CSP根据文件M的总块数n,从1~n中随机生成C个 数,组成I = {si,S2,…,Sc},且对于和Sj是相互独立的;对于妍e /,随机生 成一个数Vi G Zq,组成挑战信息Chal = {i,Vi}iei,然后CSP将Chal发送给用户。
[0083] 步骤107:生成证据:用户收到来自CSP发送的挑战信息Chal后,响应挑战,计算响 应证据返回给CSP。具体过程如下:
[0084] 用户计算响应证据:
'将Pv发送给CSP。
[0085] 步骤108:验证证据:CSP收到来自用户的响应证据后,CSP验证响应证据Pv的正确 性,从而判断用户和CSP是否拥有相同的文件,并将验证结果返回给用户,具体过程如下:
[00化]CSP验切
是否成立。若成立,说明用户和CSP拥有相同的文件,该文件 已存在于CSP中,用户不需要上传文件到CSP。用户只需上传 Ckey, IDuser到CSP;CSP存储Ckey, 并且添加用户的身份IDuser到IDm,则IDm= IDmU IDuser,其中IDm代表所有拥有文件M的用户身 份的集合。否则,CSP返回一个请求失败的信息给用户。
[0087] 步骤109:文件解密:当用户需要从CSP下载文件时,CSP首先验证用户身份的合法 性,并将密文Ckey和Cl返回给用户;用户首先利用自己的私钥Sk解密得到每一个块密钥ki;然 后,再利用ki解密每一个块密文Cl得到块明文HH,具体过程如下:
[0088] (9.1)首先,用户发送文件M的标签T和自己的身份IDuser至化SP。
[0089] (9.2)CSP收到文件标签T和用户的身份IDuser后,验证文件标签T和用户身份IDuser 是否正确,如果正确,将其对应的Ckey和Ci(l《i《n)传送给用户;否则返回一个请求失败信 息给用户。
[0090] (9.3)用户收到Ckey和Cia《i《n)后,首先验证Tl = Hl(Cl||C2||…MCn)是否正确, 如果不正确,说明CSP返回给了用户不正确的密文文件;否则,用户先用自己的私钥Sk,解密 每一个块密钥:ki| Iksl I'HIkn = Dec(SkiCkey)D然后,用户解密每一个数据块:Hii = DecAi, Ci)(l《i《n)。
[0091] 综上所述,本发明利用盲签名的方法构造了一个更加安全高效的密钥生成协议, 通过引入一个密钥服务器,实现了对收敛密钥的二次加密,使得数据加密更加安全,有效地 预防了暴力字典攻击。同时,在此基础上提出了一个新的基于签名的拥有权证明方法,用户 和云服务器之间必须执行一个挑战/响应协议,才能确定用户是否拥有和云端相同的文件, 它有效地预防了攻击者通过单一的哈希值来获取整个文件,并且本发明的方案能够同时实 现对密文数据的文件级和块级去重。
【主权项】
1. 一种云存储中密文数据的客户端安全去重方法,其特征在于,针对加密数据的客户 端去重模型,去重过程设及到的实体如下:用户Users,云服务提供商CSP和密钥服务器KS, 具体步骤如下: 步骤1,密钥生成: 用户为每一个数据块ΠΗ计算相对应的加密密钥ki,l《i《n,n为数据块的总数; 步骤2,文件初始化: 用户为每一个数据块ΠΗ计算块密文。,同时生成文件的标签Τ=(Τι,Τ2),其中Τι用于数 据完整性验证,Τ2用于块签名的验证; 步骤3,数据块初始化: 当云端不存在文件标签Τ时,用户为每一个数据块ΠΗ计算块标签τι和块签名〇1,其中τι用 于块的索引,〇1用于块存在的证明;同时,用户用自己的私钥sk加密每一个块密钥得到密钥 的密文Ckey; 步骤4,数据块验证: 当云端存在数据块标签τι时,执行块去重;CSP验证用户上传的数据块签名〇1是否正确, 从而判断用户和CSP是否拥有相同的数据块,并将验证结果返回给用户; 步骤5,文件存储: 当云端不存在数据块标签τι时,请求用户上传数据块签名〇1、块密文Cl和密钥的密文 Ckey至CSP,CSP验证块标签和块密文是否来自相同文件,并且验证块签名〇i的正确性;最终, CSP存储每一个块标签、块签名、块密文、密钥的密文;并给用户分配相应的权限; 步骤6,生成挑战: 当云端存在文件标签T时,执行文件去重;CSP生成挑战信息chal = {i,vihg,再将该挑 战信息返回给用户,其中I为[l,n]的任意子集,随机数VieZq,其中Zq是q阶素数域; 步骤7,生成证据: 用户收到挑战信息后,根据所选的块生成响应证据Pv,并返回给CSP; 步骤8,验证证据: CSP验证响应证据Pv的正确性,从而判断用户和CSP是否拥有相同的文件,并将验证结果 返回给用户; 步骤9,文件解密: 当用户需要从CSP下载文件时,CSP首先验证用户身份的合法性,并将密钥的密文Ckey和 块密文Cl返回给用户;用户首先利用自己的私钥sk解密得到每一个块密钥ki ;然后,再利用 ki解密每一个块密文Ci得到块明文ΠΗ。2. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 1所述密钥生成:用户为每一个数据块ΠΗ计算相对应的加密密钥ki,l《i《n,n为数据块的总 数,具体如下: (1.OKS随机选择一个k-bit的素数q并创建两个q阶的楠圆曲线方程&,&和〇阶的素数 域Zq; P,Q是Gi的两个不同的生成元,并产生一个线性配对e:Gi X Gi^G2 ; KS随机选择一个整 数xEZq作为私钥,并计算公钥Ppub = x'P;KS公开系统参数{q,Gl,G2,e,P,Q,Ppub},保持x私 有; (1.2)用户将文件Μ分成η个块,即M = mi II m2 II…Μ mn,用户为每一个数据块化计算收敛 密钥hi=h(mi),其中哈希函数h( · ):{0,l}*^Gi;然后,用户随机选择reZq作为盲化因子, 再计算对hi盲化后的值ai = hi+r · P,并将ai上传到KS; (1.3化S计算对ai加密后的值bi = ai · X,并将bi返回给用户; (1.4)用户计算对bi去盲化后的值di = b广;Γ · Ppub,同时用户验证di的正确性:e(di,P)= e化(mi),Ppub);最后,用户令ki = di作为每一个块mi的加密密钥。3. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 2所述文件初始化:用户为每一个数据块mi计算块密文。,同时生成文件的标签Τ=(Τι,Τ2), 其中Τι用于数据完整性验证,Τ2用于块签名的验证,具体如下: (2.1) 用户使用对称加密的方法为文件Μ的每一个块mi(1《i《η),计算块密文Ci = Enc 化i , nii ) , Ci ε Zq ; (2.2) 用户计算:。=出((:1||〔2||。'||片),了2=此(1)-口,其中哈希函数化(-):2。一{0, 1}*,出(·一Zq;最后,用户生成文件Μ的标签:Τ=(Τι,Τ2),并上传 Τ至CSP。4. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 3所述数据块初始化:当云端不存在文件标签T时,用户为每一个数据块mi计算块标签τι和块 签名〇1,其中τι用于块的索弓|,〇1用于块存在的证明;同时,用户用自己的私钥sk加密每一个 块密钥得到密钥的密文Ckey,具体如下: (3.1) 当用户检测到云端文件标签T不存在时,用户为每一个文件块mi计算块标签τι = 出(Μ) · h(mi); (3.2) 用户计算块签名州=出(1)-化1+。-〇); (3.3) 用户随机选择自己的私钥sk,并对块密钥kl进行加密,计算密钥的密文Ckey = Enc (sk'kil |k2|| …||kn)。5. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 4所述数据块验证:当云端存在数据块标签τι时,执行块去重;CSP验证用户上传的数据块签 名〇1是否正确,从而判断用户和CSP是否拥有相同的数据块,并将验证结果返回给用户,具 体如下: 当收到来自用户的块标签τι和块签名〇i,CSP检测到块标签τι存在则执行块去重;然后 CSP验证块签名〇1的正确性,即CSP验证〇1 = 〇1'是否成立,其中〇1'是CSP存储的数据块的签 名;若成立,说明用户和CSP拥有相同的数据块,该数据块已存在于CSP,CSP只需为该数据块 添加用户的身份IDuser;否则,返回一个请求失败消息给用户。6. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 5所述文件存储:当云端不存在数据块标签τι时,请求用户上传数据块签名〇1、块密文Cl和密 钥的密文Ckey至CSP,CSP验证块标签和块密文是否来自相同文件,并且验证块签名〇1的正确 性;最终,CSP存储每一个块标签、块签名、块密文、密钥的密文;并给用户分配相应的权限, 具体过程如下: (5.1)-旦CSP收到所有的块密文Ci,CSP开始验证Τι =化(Cl IIC211…11 Cn)是否成立,若 成立,说明用户上传的密文和标签是一致的;否则,说明用户上传了与标签不一致的密文, 返回一个请求失败消息给用户; (5 . 2 ) C S P验证用户上传的每一个数据块签名0 1是否正确,通过验证 e(巧,巧=e(r,,fp,A) 'e(谷,是否成立,若成立,说明用户上传的数据块签名是正确的,CSP存 储Τ、Ti、〇i、Ci和Ckey,并添加用户的身份IDuser到IDm,则IDm= IDm u IDuser,其中IDm代表所有拥 有文件Μ的用户身份的集合;否则,CSP返回一个请求失败的信息给用户。7. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 6所述生成挑战:当云端存在文件标签T时,执行文件去重;CSP生成挑战信息chal = { i, ViUei,再将该挑战信息返回给用户,其中I为[l,n]的任意子集,随机数VieZq;具体如下: 当CSP检测到文件标签T存在时,CSP根据文件Μ的总块数η,从1~η中随机生成C个数,组 成I = {S1,S2,· · ·,Sc},且对于Vs!.,Sj e I (i声j),Si和Sj是相互独立的;对于Vi e./,随机生成一 个数Vi e Zq,组成挑战信息chal = {i,Vi}iei,然后CSP将chal发送给用户。8. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 7所述响应证据Pv的计算公式如下:9. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步骤 8所述验证证据:CSP验证响应证据Pv的正确性,从而判断用户和CSP是否拥有相同的文件, 并将验证结果返回给用户,具体过程如下:是否成立:若成立,说明用户和CSP拥有相同的文件,该文件已存在 于CSP中,用户不需要上传文件到CSP,用户只需上传 Ckey、IDuser到CSP,CSP存储Ckey,并且添 加用户的身份IDuser到IDm,则IDm= IDm U IDuser,其中IDm代表所有拥有文件Μ的用户身份的集 合;否则,CSP返回一个请求失败的信息给用户。10. 根据权利要求1所述的云存储中密文数据的客户端安全去重方法,其特征在于:步 骤9所述文件解密:当用户需要从CSP下载文件时,CSP首先验证用户身份的合法性,并将密 文Ckey和Cl返回给用户;用户首先利用自己的私钥Sk解密得到每一个块密钥ki;然后,再利用 ki解密每一个块密文Ci得到块明文ΠΗ,具体如下: (9.1 )首先,用户发送文件Μ的标签T和自己的身份IDuser到CSP ; (9.2) CSP收到文件标签T和用户的身份IDuser后,验证文件标签T和用户身份IDuser是否 正确,如果正确,将其对应的密钥的密文Ckey和块密文Cl传送给用户;否则返回一个请求失 败信息给用户; (9.3) 用户收到密钥的密文Ckey和块密文Ci后,首先验证Tl=Hl(ClMC2M…MCn)是否正 确,如果不正确,说明CSP返回给了用户不正确的密文文件;否则,用户先用自己的私钥sk, 解密每一个块密钥:ki ||k21 I…II kn = Dec(sk,Ckey),然后用户解密每一个数据块:mi = Dec 化i,Ci)。
【文档编号】H04L9/08GK105939191SQ201610539947
【公开日】2016年9月14日
【申请日】2016年7月8日
【发明人】付安民, 宋建业, 苏铓, 朱明 , 朱一明, 丁纬佳
【申请人】南京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1