Page 260 - 《软件学报》2026年第2期
P. 260
余欢 等: Antelope: 基于 GPU 的三方隐私保护机器学习框架 739
CPU-GPU 之间的数据迁移开销限制了 GPU 在隐私保护多方计算中发挥并行能力, 而多个参与方之间的通信
会引起数据在 CPU-GPU 之间的迁移, 尤其是 CPU 需要先将数据拷贝到锁页再载入 GPU 的存储. Antelope 中的
3PC 隐私计算协议是 GPU 友好的, 除了初始载入和读取结果之外, 所有数据始终保持在 GPU 上参与运算, 因此协
O(1) 通信轮数的 MSB 获取协议, 并且不需要离线预
议的性能表现对通信开销很敏感. 在本文中, 我们提出了一种
处理而仅通过在线计算实现. 首先介绍引理 1.
引理 1. 如果 PRF 生成的分布与 Z/2 Z 上的均匀分布多项式时间内除开可略概率不可区分, 那么对于每个
l
l l x l x +1−l 2
x ∈ Z/2 Z 满足|x|< 2 , 其中 l x < l, 如下事件以 > 1−(2 +negl(l)) 的概率发生:
[[x]] = (x 0 , x 1 , x 2 ) ⇒ (x 0 + x 1 ) 与 x 2 正负性相反.
∈ (l). 文献 [10] 的定理 l y 0 ← Z/2 Z,
l
证明: 假设该事件不发生的概率是 1 蕴含如下推论: 如果 x ∈ Z/2 Z, 均匀采样
y 1 := x−y 0 , 那么:
[ ]
Pr y 0 与y 1 正负性相同 = 2 l x +1−l .
设 PPT 算法 A 用于区分 (x 0 + x 1 , x 2 ) 和 (y 0 ,y 1 ) 的分布, 成功概率为 p(l). 现在我们构造 A 用于区分 PRF 两次
′
l l A(x−z,z), 输
独立调用的输出的差的分布与 Z/2 Z 上的均匀分布, 这个算法针对输入 z ∈ Z/2 Z, 计算 x−z 并调用
l
′ A 用于区分 Z/2 Z 上的均匀
′′
出该算法的输出, 则 A 成功当且仅当 A 成功. 进一步, 我们构造 PRF 输出的分布与
l
′′ ( (Z/2 Z,+) 成群, l
分布, 这个算法针对两次输入 (z 1 ,z 2 ), 计算 z 1 −z 2 并调用 A z 1 −z 2 ), 输出该算法的输出. 由于 Z/2 Z ∋
l ′′ ′
g 7→ g−z 2 ∈ Z/2 Z 是双射, 保持了均匀分布, 因而 A 成功当且仅当 A 成功.
根据上面的构造, ′′ A 成功. 由于我们假设了 PRF 的多次输入下的不可区分安全性, 有:
A 成功当且仅当
[ ] [ ] 1
p(l) = Pr A成功 = Pr A 成功 < +negl(l).
′′
2
我们现在构造一个算法 D 来区分 (x 0 + x 1 , x 2 ) 和 (y 0 ,y 1 ) 的分布, 根据输入的 (z 0 ,z 1 ), 如果它们的正负性相同则
认为是 (x 0 + x 1 , x 2 ), 否则认为是 (y 0 ,y 1 ). 使用全概率公式:
[ ] 1 ) ] 1 [ ] 1 1 ( )
Pr D成功 = Pr[( x 0 + x 1 与x 2 正负性 + Pr y 0 与y 1 正负性 = + ∈ (l)−2 l x +1−l .
2 2 2 2
1
根据我们先前的讨论, 任何一个试图区分 (x 0 + x 1 , x 2 ) 和 (y 0 ,y 1 ) 的分布的算法成功概率都小于 +negl(l), 因此:
2
1 1 ( ) 1
+ ∈ (l)−2 l x +1−l < +negl(l) ⇒∈ (l) < 2 l x +1−l +negl(l).
2 2 2
证毕.
引理 1 告诉我们, 可以认为 x 0 + x 1 与 总是具有不同的符号. 基于这个观察, 我们设计了协议 1.
x 2
协议 1. MSB([[x; f]]; p).
输入: 数据 x 的复制秘密分享模式 [[x; f]], p 是事先选定的素数. 为了描述方便, 我们记 y 0 := x 0 + x 1 ,y 1 := x 2 ;
B ′
f
输出: ⌊2 x⌉ 的最高符号位 msb( ⌊2 x⌉) = [x < 0] 的秘密分享 [[[x < 0]]] = (b 0 ,b 1 ,b 2 ).
f
1. 参与方 P j (j = 0, 1) 在本地调用 A j [0 : l−1] ← Encoder j (|y j |)
2. 参与方 P j (j = 0, 1) 在本地使用相同的随机数种子 k 1 与伪随机函数 PRF 采样 r, s ← F p
3. 参与方 P j (j = 0, 1) 在本地计算 B j [k] ← (r · A j [k]+ s) mod p
4. 参与方 P j (j = 0, 1) 将 B j [0 : l−1] 发送给 P 2
5. 参与方 P j (j = 0, 1) 置 b j ← msb(y j )⊕(1− j)
6. 参与方 P 2 检测是否存在 k ∈ {0,...,l−1} 使得 B 0 [k] = B 1 [k], 是则置 b 2 ← 1, 否则置 0
l
l
A j [0 : l−1] ← Encoder j (x) 将 Z/2 Z 中的元素 x 编码为 l 一元数组 A j [x], 元素仍取值于 Z/2 Z. 具体来说, 设二
l
进制串 x = (x l−1 ... x 0 ) 2 , 对每个 k = 0,...,l−1, 如果 x k = j 则置 A j [k] ← (x l−1 ... x i+1 ) 2 , 否则置为从 Z/2 Z 上用私有随机
k 和 PRF 采样的随机数. 注意, P 0 , P 1 在调用这两个算法的时候, 需要使用不同的随机数种子来完成需要
′
数种子 j
的采样.

