Page 386 - 《软件学报》2026年第4期
P. 386

张恩 等: 兼顾通信轮数与计算开销的门限多方隐私集合交集协议                                                  1827



                    选择  P 1  作为秘密重构参与方,     P 2  作为秘密分发参与方,    P 3 ,...,P N  作为普通参与方.
                    预处理阶段如下.
                    (1)   P 1  输入集合元素  X 1  由  k 个哈希函数生成布谷鸟哈希表   TC 1 , 如图  6  步骤  1-1  所示.
                                                k
                                                                          .
                    (2)   P i , i ∈ [2,N] 输入集合元素  X i  由   个哈希函数生成朴素哈希表  TS i P 2  作为秘密分发者为  TS 2  中每个  bin
                 生成秘密   s, 得到   b 个秘密值  s m , m ∈ [1,b], 如图  6  步骤  1-2  和  1-3  所示. 为了保证每个秘密可以在任意门限值下正
                 确重构, 要求在生成秘密份额时额外生成             N −t 个冗余份额值    (在第  3.2  节的引理  1  中进行了详细说明), 因此    P 2  需
                                                      (
                 要将每个秘密     s m  和需要生成的份额数量      2N −t N  个参与方和   N −t  个冗余份额值) 执行    F RSS-Gen  秘密份额生成算
                                                                                           N
                                                                                      1
                 法, 每个秘密对应插值出一个         t −1 次多项式   f m (·), 每个秘密对应   2N −t  个秘密份额  s m → {s ,..., s , s N+1 ,..., s 2N−t }.
                                                                                          m
                                                                                             m
                                                                                      m
                                                                                                   m
                    在线阶段如下.
                                     j
                    (1)   P 2  共享秘密份额   s m, m ∈ [1,b] 给参与方  P j , j ∈ [1,N], 如图  6 步骤  2-1 所示. 此外, 将冗余秘密份额  {s N+1 ,...,
                                                                                                   m
                 s 2N−t } 和原始秘密的哈希   H(s m ) 发给  P 1 , 如图  6  步骤  2-2  所示.
                  m
                                                                     ,
                    (2)   P i , i ∈ [2,N] 将朴素哈希表  TS i [m] 中的每个元素  ( TS i [m][q] q 是朴素哈希表每个  bin 中元素的位置索引)
                 与在线阶段步骤                          i                         i                   {TS i [m][q],
                                                 s , m ∈ [1,b]  异或, 即
                               (1) 中获得的秘密份额
                                                  m               TS i [m][q]⊕ s , 构建一个新的键值对
                                                                            m
                           i
                 TS i [m][q]⊕ s }.
                           m
                                                                                                    i
                    (3)   P i , i ∈ [2,N] 输入自己的点集对执行  F Encode , 编码一个  OKVS  结构  D i = F Encode (TS i [m][q],TS i [m][q]⊕ s ), 如
                                                                                                    m
                 图  6  步骤  3  所示.   P i , i ∈ [2,N] 执行一个简单的洗牌算法, 打破数据结构  D i  与参与方之间的关系, 将洗牌之后的数
                             P 1 , 如图  6  步骤  4  所示.
                 据结构   D i  发给
                    (4) P 1 本地解码数据结构    D i , i∈[2, N] 得到对应的秘密份额, 如图  6  步骤  5  所示.
                                                                                               I
                    (5)   P 1  将布谷鸟哈希表  TC 1  和数据结构   D i , i∈[2, N] 输入多参与方门限测试算法  F MTT , 输出交集  , 如图  6  步
                 骤  6  和  7  所示.
                  3.2   安全证明
                    引理  1. 弹性秘密共享的正确性验证.
                                                                                            [36]
                    证明: 在弹性秘密共享中, Reed-Solomon Codes 解码需要确保错误共享的数量不超过                 (n−t)/2   , 因此需要添
                                                                                 η ⩾ n−t, 在本文协议中参与方
                 加   η 个冗余值, 保证任意门限值下正确份额的数量满足              t +η ⩾ t +(n+η−t)/2, 因此
                 数量表示符号为      N, 因此协议中的冗余值为       η ⩾ N −t. 在下文的验证中依然采用       n 进行普适性验证.
                    编码  Reed-Solomon Codes: 对于  n 个抽样元素  a i ∈ F q , i ∈ [1,n] q 是一个素数幂, 对包含   个信息符号的数据
                                                                                        k
                                                                    ,
                 包进行编码    m i ∈ F q , 首先生成一个消息多项式    f(x):

                                                  f(x) = m 1 +m 2 x+...+m k x k−1                     (4)
                    然后计算每个数据元素         a i  对应的多项式值  :
                                                     c i

                                                    c i = f(a i ) ∈ F q , i ∈ [1,n]                   (5)
                 得到对应的码字      c 是:

                                                       c = (c 1 ,...,c n )                            (6)
                                                    k                                F q  上形成一个线性码, 最
                    当信息符号的所有值在         F q  上, 可以得到  q  个  n 长的码字. 很容易看到, 这些码字    c 在
                 小距离为   d = n−k +1 (这对任何  ( n,k) 线性码都是最优的). 这是由里德和所罗门提出的, 即所谓的              ( n,k,d) 里德-所
                 罗门码.
                    解码  Reed-Solomon Codes: 获得一组来自码字    c 的向量  b = (b 1 ,...,b n ) ∈ F q , 其中包含了  t (t ⩽ (d −1)/2) 个错误.
                 解码算法的目标是在多项式          f(x) = m 1 +m 2 x+...+m k x k−1   中找到定义了原始码字   c 的消息多项式   f(x). 需要预先计
                 算多项式:

                                                          n ∏
                                                     g 0 =  (x−a i ) ∈ F q                            (7)
                                                         i=1
                    在解码过程中可以找到一个多项式次数              deg ⩽ n−1 的特殊多项式    g 1 (x) ∈ F q , 使得:
   381   382   383   384   385   386   387   388   389   390   391