system: [SYSTEM]

user: 2. 基本概念 2.1. 问题描述 集合成员关系的多方安全计算 Alice拥有集合 S a = { α 1 ， α 2 ， ⋯ ， α m } ，Bob拥有集合 S b = { β 1 ， β 2 ， ⋯ ， β n } 。Alice和Bob双方希望可以协作计算出 S a 与 S b 两集合交集的势，即 | S a ∩ S b | ，但要求在协作计算的过程中任何一方不可以从计算过程和结果中获取对方的私有集合元素信息。 2.2. 牛顿公式 设 f ( x ) = a 0 x n + a 1 x n − 1 + ⋯ + a n − 1 x + a n 是域K上的n次多项式，如果 a 0 ≠ 0 ，则在复数域中它有n个根，记为(其中重根出现的次数等于其重数)： α 1 ， α 2 ， ⋯ ， α n 用 s p 来记这些根的p次等幂和： s p = ∑ j = 1 n α j p ，     p = 0 ， 1 ， 2 ， ⋯ ， n 特别的， s 0 = n 。 设当 k < 0 或 k > n 时， a k = 0 ，则牛顿公式 [ 26 ] 为： a k − 1 s 1 + a k − 2 s 2 + ⋯ + a 0 s k = − k a k ，     k = 1 ， 2 ， ⋯ 可以通过上式看出，牛顿公式能够有效描述多项式根与系数的关系。 2.3. 结式 2.3.1. 西尔维斯特结式 给定两个多项式： f ( x ) = a 0 x m + a 1 x m − 1 + ⋯ + a m g ( x ) = b 0 x n + b 1 x n − 1 + ⋯ + b n 记 M 0 = ( a 0 a 1 ⋯ a m a 0 a 1 ⋯ a m ⋯ ⋯ ⋯ ⋯ a 0 a 1 ⋯ a m b 0 b 1 ⋯ ⋯ b n b 0 b 1 ⋯ ⋯ b n ⋯ ⋯ ⋯ ⋯ ⋯ b 0 b 1 ⋯ ⋯ b n ) M 0 是一个 m + n 阶的方阵，成为多项式 f ( x ) 与 g ( x ) 关于x的西尔维斯特结式矩阵 [ 26 ]，记为 S y l v e s t e r ( f ， g ， x ) 。它的行列式记为 r e s ( f ， g ， x ) ，即： r e s ( f ， g ， x ) = d e t ( S y l v e s t e r ( f ， g ， x ) ) = d e t ( M 0 ) 称为多项式 f ( x ) 与 g ( x ) 关于x的结式。其中， d e t ( M 0 ) 表示计算矩阵 M 0 的行列式。 2.3.2. 西尔维斯特结式的性质 多项式 f ( x ) 与 g ( x ) 、 r e s ( f ， g ， x ) 如上定义。 设多项式 f ( x ) 的m个根分别为： α 1 ， α 2 ， ⋯ ， α m 定理1： r e s ( f ， g ， x ) = a 0 n ∏ i = 1 m g ( α i ) 。 定理2：如果 a 0 ≠ 0 ，则 f ( x ) 与 g ( x ) 有公根的充分必要条件是 r e s ( f ， g ， x ) = 0 。 定理3：设 λ 是一个参变元，结式 r e s ( f ， g + λ ， x ) 称为 f ( x ) 与 g ( x ) 的 λ 结式。它是关于 λ 的一个多项式。那么， f ( x ) 的m个根中恰好有k个使得 g ( x ) = 0 的充要条件是结式 r e s ( f ， g + λ ， x ) 关于 λ 的最低次数为k。 2.4. 安全矩阵乘积协议 Du在文献 [ 27 ] 中提出了一种安全矩阵乘积协议。该协议在双方私有数据以矩阵形式表示时，提供了一种安全可靠的方法来帮助双方完成矩阵计算并保证信息的安全，可将其描述为： Alice拥有私有数据 m × p 大小的矩阵A，Bob拥有私有数据 p × n 大小的矩阵B，执行安全矩阵乘积协议后，Alice可得到 V A ，Bob可得到 V B ，满足 V A + V B = A ⋅ B ，并且需要保证在计算的过程中不泄露Alice、Bob双方私有信息矩阵中的数值给对方。 定义协议1如下： 输入：Alice拥有私有数据 m × p 大小的矩阵A，Bob拥有私有数据 p × n 大小的矩阵B。 输出：Alice获得 V A ，Bob获得 V B ，满足 V A + V B = A ⋅ B 。 1) Alice、Bob联合生成一个随机可逆 p × p 大小的矩阵M。 2) 在垂直方向上，将M从中间分割成左子矩阵 M l e f t 与右子矩阵 M r i g h t 。 Alice计算 A 1 = A ⋅ M l e f t ， A 2 = A ⋅ M r i g h t 。 然后将 A 1 发送给Bob。 3) 在水平方向上，将逆矩阵 M − 1 从中间分割成上子矩阵 M t o p − 1 与下子矩阵 M b o t t o m − 1 。 Bob计算 B 1 = M t o p − 1 ⋅ B ， B 2 = M b o t t o m − 1 ⋅ B ， V B = A 1 ⋅ B 1 。 然后将 V B 和 B 2 发送给Alice。 Alice计算 V A = A 2 ⋅ B 2 ，由 A ⋅ B = V A + V B ，即可得到 A ⋅ B 的结果，最后Alice将结果发送给Bob。 2.5. 安全多方计算的安全性定义 2.5.1. 半诚实参与者 半诚实参与者指的是，其在参与执行安全多方计算协议的过程中会忠实履行该协议，不会恶意篡改输入和输出的信息，但其可能会保留协议中间过程的计算结果，并尝试推导出他人的私有信息。 实际上，安全多方计算的协议运行环境分为半诚实参与者模型与恶意攻击者模型，但Goldreich在 [ 3 ] 中利用比特承诺和零知识证明设计了一种编译器。该编译器可以将在半诚实参与者条件下保密计算函数f的协议 π 自动生成在恶意参与者条件下保密计算函数f的协议 π ′ 。 π ′ 将迫使恶意参与者以半诚实方式参与协议的执行，否则就会被发现。故大多数时候，只需要设计半诚实参与者模型下的安全协议即可。本文协议的参与者都是半诚实的。 2.5.2. 半诚实模型下的安全性定义 设 f ( x ， y ) 是概率多项式函数， π 是计算f的协议。假设Alice拥有x，Bob拥有y，如果他们需要在不向对方暴露x、y的前提下合作计算函数 f ( x ， y ) = ( f 1 ( x ， y ) ， f 2 ( x ， y ) ) 。计算目的是为了让Alice和Bob分别得到f的两个分量 f 1 ( x ， y ) 与 f 2 ( x ， y ) 。Alice在执行计算的过程中所得到的视图记作 v i e w 1 ( x ， y ) ，输出记作 o u t p u t 1 ( x ， y ) ；Bob得到的视图记为 v i e w 2 ( x ， y ) ，输出记为 o u t p u t 2 ( x ， y ) 。Goldreich在 [ 3 ] 中给出了半诚实参与者模型下的安全两方计算的计算不可区分性的形式化定义，如下： 定义1.对于概率多项式函数f，如果存在概率多项式时间模拟器算法 S 1 与 S 2 使得： ( S 1 ( x ， f 1 ( x ， y ) ) ， f 2 ( x ， y ) )   = c   ( v i e w 1 ( x ， y ) ， o u t p u t 2 ( x ， y ) ) ( f 1 ( x ， y ) ， S 2 ( x ， f 2 ( x ， y ) ) )   = c   ( o u t p u t 1 ( x ， y ) ， v i e w 2 ( x ， y ) ) 上两式同时成立。其中， = c 表示计算不可分。 该定义说明了两方参与者视图中的信息均只能来自于自己的输入和获得的输出。这样可以保证任何一方得不到其他方的私有信息。