BL-MLE: Block-level message-locked encryption for secure large BL-MLE: Block-level message-locked en

Rongmao Chen, Yi Mu, Senior Member, IEEE , Guomin Yang, Member, IEEE , and Fuchun Guo

解决问题        

        为了实现加密文件的安全去重,Bellare等人在2013年的Eurocrypt上提出了一种新的密码学原语——消息锁定加密(MLE)。虽然可以通过扩展MLE方案来实现大文件的安全去重,但它需要终端用户和云服务器维护大量的元数据。这篇文章提出了一种新的方法来实现对大文件(加密)更有效的去重。所提出的方法称为块级消息锁定加密(BL-MLE),可以使用少量元数据集同时实现文件级和块级的去重、块密钥管理和所有权证明。同时,BL-MLE方案易于扩展以支持存储证明,从而适用于安全云存储。        

贡献     

        1)提出了BL-MLE的形式化定义,双层去重、块密钥管理和所有权证明。安全模型还为每个功能单独定义,以获取明确的安全保证。

        2)提出了一种具体的,易于修改以支持高效的存储证明的BL-MLE方案。,并且可以得到一个安全性更强的改进PoW协议,这使得我们的方案适用于安全云存储。

预备知识

猜测概率

        给定一个具有最小熵H_\infty (X) =-\log (Max_x Pr[X = x])的随机变量X, X的猜测概率为GP(X) = Max_x \ Pr[X = X] = 2^{-H_\infty (X)}。给定随机变量Y,具有条件最小熵H_\infty (X|Y)的随机变量X的条件猜测概率GP(X|Y)为GP(X|Y) = \sum_{y}^{} Pr[Y = y]\cdot Max_x Pr[X = x|Y = y] = 2^{-H_\infty (X |Y)}

不可预测的块源

块源是一个多项式时间算法\mathcal{M},它在输入1^{\lambda }上返回(M, Z),其中M是\left\{0,1\right\}^*上的消息向量,Z\in \left\{0,1\right\}^*表示一些辅助信息。用n(\lambda)表示向量长度,即块的数量。对于所有的i ∈[1,n(λ)], M[i]表示消息M的第i个块。如果GP_{\mathcal{M}} = Max_i\left\{GP(M[i]|Z)\right\}可以忽略,则称M是一个不可预测的块源。

块级消息锁定加密

定义

语法:块级消息锁定加密方案由以下算法指定

Setup:  将安全参数λ作为输入,并返回系统参数P.

KeyGen:以公共参数P和文件消息M = M[1]||...||M[n]作为输入,并分别返回使用以下两个子算法生成的主密钥k_{mas}和块密钥\left\{k_i\right\}_{1\leq i \leq n}

密钥生成算法: M-KeyGen(P,M)\rightarrow k_{mas}                B-KeyGen(P,M[i])\rightarrow k_i
加密算法:    Enc(P,M[i],k_i)\rightarrow C[i]             
解密算法:            Dec(P,C[i],k_i)\rightarrow M[i]/ \bot
标签生成算法: TagGen : F-TagGen(P,M)\rightarrow T_0 ; \ \ \ \ \ \ B-TagGen(P,M[i])\rightarrow T_i
标签密文一致性检测: ConTest(T_i,C[i])\rightarrow True/False;
(需要确保区块标识符(即区块标签)与上传的数据块实际上是一致的,以防止重复伪造攻击。)
标签验证算法: EqTest(T_i,T_i^{'},T_0,T_0^{'})\rightarrow True/False
密钥恢复算法: B-KeyRet(k_{mas},T_i,C[i])\rightarrow k_i/\bot
所有权证明生成算法: PoWPrf(Q,M)\rightarrow \mathcal{P}
所有权校验算法: PoWVer(Q,T_0,\left\{T_i\right\}_{1\leq i \leq n},\mathcal{P})\rightarrow True/False
Q:是挑战值

安全定义

        如果在以下PRV$-CDA-B博弈中没有多项式时间对手a具有不可忽略的优势,那么在选择分布攻击下,BL-MLE方案是安全的:
        Setup:敌手 \mathcal{A}向挑战者发送不可预测的块源 \mathcal{M}的描述。然后,挑战者生成系统参数 P并向 \mathcal{A}发送。
       Challenge:挑战者挑选随机的b\rightarrow \left\{0,1\right\}.如果b=0,执行块源 \mathcal{M}(M_0,Z)\leftarrow \mathcal{M}(\lambda ),否则从 \left\{0,1\right\}^{|M0_|}中均匀随机选择 M_1.令 M=M_b, 假设有 n(\lambda)个数据块,挑战者为每一个数据块生成密钥并生成密文C[i].最后生成文件标签和块标签。 F-TagGen(P,M)\rightarrow T_0 ; \ \ \ \ \ \ B-TagGen(P,M[i])\rightarrow T_i。 令 T=\left \{ T_0.T_1.\cdot \cdot \cdot T_{n(\lambda)}\right \},最后,挑战者向对手提供辅助信息Z、标签T和密文C。
         Output:收到(C,T,Z)之后,敌手输出他的猜测值b',如果b'=b就胜出。
文中将这样的对手 \mathcal{A} 称为PRV$-CDA-B对手,并将对手 \mathcal{A} 的优势定义为:
定义2:如果对于任意不可预测的块源 \mathcal{M}和任意多项式时间PRV$-CDA-B的敌手 \mathcal{A},在选择分布攻击博弈 Adv_{PRC\$-CDA-B}^{\mathcal{A,M}}(\lambda)中优势可以忽略不计,则BL-MLE方案是安全的。
文中还定义了标签一致性,并设计了敌手的优势,感兴趣可以参看原文。

方案构造

        设G, GT是两个相同素数阶p的乘法群,设g是G的生成元,I是GT的单位元。一个对称双线性映射e: G × G→GT,使得e(u^a, v^b) = e(u,v)^{ab}对于所有u,v∈G和A, b∈Zp。值得注意的是,e是可以有效计算的,并且e(g, g) ≠ I

Setup( 1^\lambda ):输入 1^\lambda ,生成素数p、两个p阶组群G,GT、G的生成器g和双线性映射e: G × G→GT。选择一个整数s∈N和三个散列函数H1:\left \{ 0,1 \right \}^*\rightarrow Z_p, H2: \left \{ Z_p \right \}^s\rightarrow G, H3: G\rightarrow \left \{ Z_p \right \}^s。随机选取s个元素u_1, u_2,\cdot \cdot \cdot, u_s\leftarrow _RG系统参数为P =<p, g, G, G_T, e, H_1, H_2, H_3,s, u_1, u_2,\cdot \cdot \cdot u_s>
KeyGen(M)。给定一个数据文件M = M[1]||…||M[n]  其中对于所有1≤i≤n, M[i]∈{Zp}s,计算主键kmas和每个块键ki如下:
        
        M-KeyGen(M): 以M为输入  k mas = H 1 ( M ) ;
        B-KeyGen(M[i ] ): 以  M [ i ]为输入 , 输出  k i = H2( M [ i ] ) .
Enc( k i , M[i])。以ki和M[i]为输入,输出C[i]=H_3(k_i)\bigoplus M[i].
Dec( k i , C[i ]). 给一个密文块和密钥作为输入,输出M[i]=H_3(k_i)\bigoplus C[i],如果k_i=H_2(M[i]),输出M[i],否则输出错误。
TagGen(M). 给每一个文件M生成文件标签T0和块标签Ti。
         M-TagGen(M): 给M生成主密钥  k_{mas},然后生成标签 T_0=g^{k_{mas}}.
         B-TagGen(M , i ): 以M,块索引i为输入,生成主密钥,相关的块秘钥,块密文C[i],并将块密文分割成s个小的区块{\left \{C[i][j] \right \}_{1\leq i \leq n}},输出T_i=(k_i \prod \limits_{j=1}^s u_j^{C[i][j]})^{k_{mas}}. 在生成块标签时,还生成了一些辅助数据auxi = e(ki, T0)并将其附加到块标签Ti上。
ConTest( T i , C [i]). 给定一个块密文C[i]和带有辅助数据auxi的块标签Ti,将C[i]分成s个扇区:{C[i][j]}1≤j≤s。设T0为对应的文件标记。检查是否e (T_i, g)\overset{\text{?}}{=} aux_i \cdot e ( \prod \limits_{j=1}^s u_j^{C[i][j] }, T_0).,如果是,则输出1;否则,输出0。
EqTest(Ti, Ti', T0, T0').给定两个块标签Ti, Ti'和对应的文件标签T0, T0',检查是否e(T_i,T_0^{'})\overset{\text{?}}{=}e(T_0,T_i^{'})。如果是,输出1;否则,输出0。
note:本文的安全性分析比较完备,我在进行安全性证明时主要参考本文。。此外,本文没有考虑完整性审计方面的内容。本文是块去重方向必须参考的一篇经典。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值