Page 244 - 《软件学报》2021年第12期
P. 244
3908 Journal of Software 软件学报 Vol.32, No.12, December 2021
② 选择两个随机数γ,k∈Z p .令验证密钥的检索密钥RK pp =k,数据库的查询密钥EK DB =(C,γ);
③ 选择随机数α∈Z p 作为伪随机函数(PRF)的密钥,并建立伪随机函数 PRF(α,t)为: PRF (, )tα = g kα t+ 1 ;
j+1
④ 记 j 为模幂操作的索引,对于∀j∈[2n+2]\{n+1},执行 MExp 协议的初始化算法 ME.Setup(u,α ,p)生成模
幂计算求值密钥 ME.EK[j]和验证密钥 ME.VK[j].其中,u 和α j+1 分别为底和幂.当 j=2n+2 时,执行算法 ME.Setup(F,
C,p)生成求值密钥 ME.EK[j]和验证密钥 ME.VK[j],其中,F={PRF(α,i)|i=0,1,…,n}为底;
⑤ 令验证密钥的恢复密钥VK pp ={ME.VK[j]| 0 ≤ j ≤ 2n+2∧j≠n+1 }、计算密钥EK pp ={ME.EK[j]| 0 ≤ j ≤ 2n+2∧j≠n+1 }.其中,
ME .VK [ ]{j = g j k ,2 , g j k ,3 , ,r t ,t },ME .EK [ ]{(j = b ,w ) ,(b′ ,w′ ) ,(h ,s w ...w ),(h ,s w′ ...w′ )};
j j ,0 j ,1 , j i , j i i∈ [] n , j i , j i i∈ [] n j ,0 j ,0 j ,0 , j n j ,1 j ,1 j ,0 , j n
⑥ 最终,数据拥有者保持 PRF 密钥α,EK DB ,VK pp 和RK pp 私有,并将EK pp 发送给云服务器.值得注意的是:数
据拥有者在执行算法 ME.Setup 时只选择一次随机的六元组,在后面的操作中都使用该六元组.也就是说:对于所
有的 i∈[5]和 j∈[2n+2]\{n+1},均满足 k j,i =k 0,i .
3) 验证密钥计算算法.
该算法根据接收到的验证密钥的计算密钥来计算编码后的验证密钥.算法的主要步骤如下.
① 云服务器收到验证密钥的计算密钥EK pp 后,将其分解为{ME.EK[j]| 0 ≤ j ≤ 2n+2∧j≠n+1 };
② 云服务器执行算法 ME.Compute(ME.EK[j])生成编码后的结果 ME.σ y[j] 和证据 ME.π y[j] ;
③ 令编码后的数据库验证密钥 σ VK DB 、证据 π VK DB 分别为{ME.σ y[j] | 0 ≤ j ≤ 2n+2∧j≠n+1 },{ME.π y[j] | 0 ≤ j ≤ 2n+2∧j≠n+1 },其
中, ME .σ yj = { { w b , j i , ji },R j ,0 , } ME .π y [ ] j = {{w′ b′ , j i , ji },R j ,1 };
[]
④ 最终云服务器将σ VK DB 和 π VK DB 发给数据拥有者.
4) 验证密钥恢复算法.
该算法用于对云服务器返回的结果进行验证,并恢复出数据库的验证密钥.算法的主要步骤如下.
① 数据拥有者将VK pp ,σ VK DB 和 π VK DB 分别解析为
{ME.VK[j]| 0 ≤ j ≤ 2n+2∧j≠n+1 },{ME.σ y[j] | 0 ≤ j ≤ 2n+2∧j≠n+1 }和{ME.π y[j] | 0 ≤ j ≤ 2n+2∧j≠n+1 }.
② 执行算法 ME.Verify(ME.VK[j],ME.σ y[j] ,ME.π y[j] ).
③ 当 j∈[2n+2]\{n+1}时,数据拥有者验证是否满足如下等式:
j t
) =
(g j k ,2 R j t ,0 w j b ,0 r j (g j k ,3 R w′ j b′ ,1 ) (1)
,1
j ,0 j ,0 j ,1 j ,1
若不满足,则输出⊥并丢弃;否则,令:
U = j ME .[ ] (y j = g j k ,2 R j j t ,0 ,0 w j ,0 j b ,0 ) = u α j+ 1 .
当 j=2n+2 时,验证是否满足等式:
⎛ n b ⎞ j r ⎛ n b′ ⎞
⎜ g j k ,2 R j ,0 ∏ j t ,0 w , j i ⎟ , ji = ⎜ g j k ,3 R j ,1 ∏ j t ,1 w′ , j i ⎟ , ji (2)
⎝ i= 0 ⎠ ⎝ i= 0 ⎠
若不满足,则输出⊥并丢弃;否则,令:
− pp 1 n
RK
n
γ
σ = gME .[ ]y j RK − pp 1 = g γ ⎛ ⎜ g j k ,2 R ,0 ∏ j t ,0 w b ⎞ , j i ⎟ , j i = g ∏ γ g i c α i+ 1 .
DB
⎝ j i= 0 ⎠ i= 0
④ 数据拥有者将{U j } j∈[2n+2]\{n+1} 添加到数据库的查询密钥EK DB 中,并将更新后的该值发送给云服务器.此
时,EK DB ={C,γ,{U j } j∈[2n+2]\{n+1} }.
⑤ 数据拥有者最终令VK DB ={σ DB ,{U j } j∈[2n+2]\{n+1} ,RK pp ,PRF(α,0)},并通过安全的信道发送给授权的用户.
5) 查询算法.
该算法用于查询数据库即执行多项式求值计算.算法的主要步骤如下.
① 当云服务器收到数据拥有者发来的EK DB 以及授权用户发来的查询索引 x 后,首先将EK DB 分解为{C,γ,
2
n
{U j } j∈[2n+2]\{n+1} },并令 X={1,x,x ,…,x };