Page 443 - 《软件学报》2026年第2期
P. 443

922                                                        软件学报  2026  年第  37  卷第  2  期


                    2)   OSign(x,r) → σ: 对于  i ∈ [1,n]/T , A  选择  x,r 进行查询, 预言机输出签名  , A  的请求次数为  q.
                                                                              σ i
                    3)  ORetriSerPsw(c) → sp c : A  适应性地选择  c 进行查询, 预言机输出  App  派生密钥  sp c .
                    4)   ORetriSerKw(w) → C sd w : A  适应性地选择关键词  w, 预言机输出对应的强化关键词密文      C sd w  .
                    5)  OTrapdoor(w) → td w : A  适应性地选择关键词  w, 预言机输出对应的陷门     td w .
                                                                               (
                    A  随机选取   c 0 ,c 1 ,w 0 ,w 1  发送给  .   b ∈ {0,1}  并输出   C sd w b  ,td w b  ,  σ 1 A 1  对  w b  的签名); 若  b = 0, 输出
                                             ε ε  随机选取
                                       ′    ′       .若  能够输出                 q < t −t , 或          b  满足
                                                                                   ′
                                                                                                    ′
                    ; 若  b = 1, 输出                    A         c    的有效签名且            A  对  b  的猜测
                 sp c b          sp c b  = F (c b ),F ∈ Func Z p
                 |Pr[b −b]−1/2|  不可忽略, 则  A  在  CADCsound  中获胜,  CADCsound A (ℓ) = 1; 否则, A  在  CADCsound  中失败,
                    ′
                 CADCsound A (ℓ) = 0. A  在  CADCsound  中获胜的概率定义为  Pr[CADCsound A (ℓ) = 1].
                  2.4   设计目标
                    本文的目标是构建一种云辅助的面向跨信任域                 App  的数据流转的安全保护方案, 需要设计           CADC  系统实现
                 以下目标.
                    1) 功能性. App  能够对用户进行身份验证, 用户只需要维护长效口令即可授权设备并使用设备通过                           App  的认
                 证, 使用相关服务; 在用户的授权下, 用户数据能够在各               App  间流转, App  可向用户请求数据流转, 由用户检索数
                 据并将其中允许共享的数据发送给请求数据的                 App; 云存储服务器可以通过陷门与检索关键词密文的匹配检索
                 数据.
                    2) 安全性. CADC  应当能够有效抵御来自敌手的窃听攻击、离线                 DGA  攻击和离线    KGA  攻击. 破坏一个或多
                 个  (不超过门限值) App   无法破坏    CADC  的安全.
                    3) 高效性. 用户的计算开销和通信开销应尽可能小, 各              App  和云存储服务器的存储开销应尽可能低.

                  3   具体方案

                  3.1   方案构建

                      Setup(ℓ) → pp: 系统初始化算法. 在系统初始化阶段, 根据安全参数            ℓ, 确定系统的公共参数集       PP = {p,P,G,
                 G T ,e,h,h 1 ,h 2 ,H,H 1 ,H 2 ,E,D,Sig,F 1 ,F 2 ,t,n}. 其中,  G 是一个加法循环群,  G T  是一个乘法循环群, 它们的阶都为素数  p,
                                                                                        ∗
                                                                              ,
                                                                         ∗
                 P 是  G 的生成元,  e : G×G → G T  是一个双线性映射,  h : G → Z p ,h 1 ,h 2 : {0,1} → Z p H,H 1 : {0,1} → G 以及   H 2 : G T →
                    ( lg p)
                 {0,1}   是安全的哈希函数,      Z p  为整数关于模  p 的加法群,   E/D 是一种安全的对称加/解密算法           (如  CTR[AES]),
                 Sig 是一种安全的签名算法       (如  BLS  签名),  F 1 : Z p ×Z p → Z p  以及   F 2 : Z p ×{0,1} poly(ℓ)  → {0,1} poly(ℓ)  是伪随机函数,  w 为
                                                                     ℓ
                                                                                              t
                 数据检索关键词, 与外包存储数据的内容相关,               poly(ℓ) 为一个关于   的多项式, 用于表示      w 的长度,   是门限值,   n
                 是  App  的总数.
                     MasterKeyGen(ℓ,n,t) → (s,PS, s i ,PS i ). 作为分布式服务器的  App  运行执行分布式秘密共享协议  (算法  1).

                 算法  1. 分布式秘密共享协议.
                 参数说明:   ℓ: 安全参数;  {1,...,n}: App  的索引;  t: 门限值;  i: 执行该算法的  App  的索引.
                 确保: 所有  App 共享一个服务器端密钥        s 和相应的公钥    PS ; 对于   i = 1,2,...,n S i  计算子密钥   s i  和相应的子公钥  PS i .
                                                                           ,
                                                              ∗                   f i (x) = a i,0 +a i,1 x+...+a i,t−1 x t−1
                 1. 每一个   S i (i = 1,2,...,n) 随机选取参数   a i,0 ,a i,1 ,...,a i,t−1 ∈ Z  构造一个  t −1 阶多项式
                                                              p
                 ∈ Z p , 使得   f i (0) = a i,0 ;
                 2.  S i  计算  a i,0 P、 a i,τ P(τ = 1,2,...,t −1) 并公开,   S i  计算   f i ( j) 并通过安全信道发送给  S j ( j = 1,2,...,n; j , i);
                                            ∑ t−1
                                                 γ
                 3.  S i  收到   f j (i) 后验证等式   f j (i)P =  i ·a j,γ P 是否成立; 若验证通过则接受  f j (i); 否则拒绝;
                                              γ=0
                               ∑
                                  n                                                         ∑ n
                 4.  S i  的子密钥  s i =  f γ (i), 其对应的子公钥  PS i = s i P. 在  App  {S 1 ,S 2 ,...,S n } 间共享的私钥  s =  a i,0 , 相应公
                                  γ=1                                                         i=1
                       ∑
                          n
                 钥  PS =   a i,0 P.
                          i=1
   438   439   440   441   442   443   444   445   446   447   448