Page 256 - 《软件学报》2026年第2期
P. 256
余欢 等: Antelope: 基于 GPU 的三方隐私保护机器学习框架 735
对点通信渠道. 同时每个参与方会忠实地执行协议, 不会向其他参与者恶意传输错误的信息. 然而, 参与者可能会
对输入数据表现出好奇心, 并有可能记录中间结果和接收到的其他参与者的信息, 以此来推断输入数据的隐私信
息. 在没有可信第三方的情况下, 在这种安全模型中, 本文提出的协议只需要保证 3 个参与者都无法从自身持有的
数据和计算过程中记录的数据中推断出隐私数据的任何信息, 即可保证安全性. 形式化地来说, 我们将诉诸安全模
型于定义 1.
定义 1. 半诚实安全性. 设 f : (Z/2 Z) → (Z/2 Z) 是随机可计算函数, l, q ∈ Z ⩾1 而 π 是一个 3PC 计算协议. 我
3
q
3
l
3
l
们称 π 满足单腐坏半诚实安全性, 如果存在 PPT 算法 S 使得对每个 j ∈ {0,1,2} 和每个输入 x ∈ (Z/2 Z) , 都有:
π
π
{output ( x),view (x)} ≡ { f( x),S(j, x j , f j (x))},
π
π
j
其中, view (x) 是参与方 在执行 π 时接收到的数据的有序组合, output (x) 是 3 个参与方执行 π 后得到的共同输
出, ≡ 表示两种概率分布多项式时间在忽略可略概率的情况下不可区分.
尽管本文基于半诚实安全模型, Antelope 的协议框架仍可扩展至恶意安全模型 (malicious security model), 即允
许任意数量的参与方恶意偏离协议执行. 为了提高安全性, 我们可以结合可验证秘密共享 (VSS) 防止数据篡改, 其
允许参与方在秘密共享阶段验证其他方提交的份额是否有效. 这可以防止恶意方提供错误的数据份额, 影响最终计
算结果. 例如, 可采用基于 Pedersen 承诺的 VSS 方案, 使每个秘密共享值都能被有效验证, 同时保持计算的高效性.
当前 Antelope 主要基于标准的三方计算协议, 如 SPDZ、Beaver 乘法三元组等. 这些协议在恶意模型下可以
通过如下方式增强.
(1) 采用 MAC 认证 (如 SPDZ 方案中的信息验证代码) 来防止篡改共享值.
(2) 利用强一致性检查 (如 Cut-and-Choose 技术) 降低恶意行为可能性.
结合多重门限密码学方案, 使得即使部分参与方恶意作恶, 协议仍能保证计算正确性.
尽管恶意安全性提供了更强的隐私保护能力, 本文并未在 Antelope 框架中直接实现这些优化, 主要基于以下
考虑: 首先, 恶意安全模型通常需要额外的密码学工具 (如零知识证明、MAC 认证、可验证计算等), 这会显著增
加计算和通信开销, 降低系统的整体性能, 尤其是在 GPU 计算中, 部分安全检查可能难以高效并行化. 其次, 实现
这些优化需要对协议进行较大幅度的修改, 并引入额外的工程复杂性, 例如重新设计共享验证机制或优化现有
GPU 内核以支持更复杂的安全检查. 因此, 本文选择专注于半诚实安全模型, 并将恶意安全性的扩展留作未来研
究方向, 以进一步探索在保证安全性的同时优化计算效率的可能性.
2.2 符号说明
记 Z 为整数集, 本文用 Z/kZ 表示环 Z 关于子环 kZ 的商环, 其上的加法和乘法循常规定义. 进一步, 如果 k
l−1
l
是素数, Z/kZ 构成有限域, 记作 . 如果存在正整数 使得 k = 2 , 我们将 Z/kZ 中的元素和 [−2 ,2 l−1 −1] 中的对
l
F k
应整数等同起来. 我们用 { } 表示多方计算的 3 个参与方. 由于秘密分享模式下实际参与计算的是环中的元
P j j∈Z/3Z
素, 我们在实际计算时使用整数代替相应实数作计算, 具体来说: 设 x ∈ R, 我们固定精度 f ∈ Z ⩾1 作为浮点数的定
f
l
点表示规格, 然后利用 ⌊2 x⌉ ∈ Z/2 Z 代替 x 参与计算, 这里 ⌊·⌉ 是最近舍入运算.
l
数据 x ∈ R 在精度为 时的算术秘密分享记作 [[ x; f ]] A = (x 0 , x 1 , x 2 ), 其中 x 0 , x 1 , x 2 ∈ Z/2 Z 并满足 x 0 + x 1 + x 2 =
f
f (x j , x j+1 ). 为了更高效地进行 Antelope 支持
⌊2 x⌉. 本文采用复制秘密分享模式, 这种模式中参与方 P j 将持有数据
的神经网络层计算, 我们没有使用如文献 [14,20,21] 中的二进制秘密分享模式, 但采用了一种特殊的布尔秘密分
B ′
享模式 B'用于 MSB、ReLU 以及一些非线性函数的计算: 设 b ∈ Z/2Z, 我们记 [[b]] = (b 0 ,b 1 ,b 2 ) 并满足 b 0 = b 1 ,
b 1 ⊕b 2 = b. 为了方便起见, 本文省略算术秘密分享的角标 A.
不经特别指明, 我们总是用小写字母 (如 x) 表示标量, 小写粗体字母 (如 x) 表示一维向量, 大写字母 (如 X)
表示矩阵.
3 Antelope 框架设计与实现
Antelope 底层使用 PyTorch 框架, 利用 Python 开发. 为了一方面支持 GPU 并行同时便于协议实现以及上层

