Page 257 - 《软件学报》2026年第2期
P. 257
736 软件学报 2026 年第 37 卷第 2 期
API 调用, Antelope 采用如图 1 所示的 3 层框架系统结构, 从下到上依次是基础操作层、加速层和协议层. 各层的
主要内容和作用如下.
线性层 激活层
协议层
池化层 归一化层
自定义
加速层 CUDA 库
CUDA 算子
基础操作层 线性计算 乘法 非线性函数
图 1 Antelope 架构
(1) 基础操作层: 该层主要包括线性计算、乘法、非线性函数的安全实现, 上层的复杂计算均基于这些基础操
作组合得到. 其中线性计算包含加法和标量乘法, 乘法则是两个隐私数据相乘, 非线性函数则包括除法、对数函数
和指数函数.
(2) 加速层: 该层处于基础操作层之上, 主要为协议层提供加速. 本文提供了两种加速方案, 对于现有的 CUDA
加速库支持的操作 (如 64 位整数加减法), 可以直接调用其 API 实现. 而对于某些不支持的操作 (如 64 位整数的矩
阵乘法和卷积运算), 本文使用 PyTorch 的 CUDA 扩展自定义算子加速.
(3) 协议层: 协议层包括卷积神经网络中各层的具体实现, 主要是线性层 (矩阵计算和卷积运算)、池化层、
ReLU 激活层和批量归一化层. 此外, 本文的池化层均使用平均值池化代替高复杂度的最大值池化. 通过对这些协
议层的组合, 可以搭建复杂的网络模型, 并完成隐私保护机器学习任务.
3.1 基础操作实现
下面我们介绍 Antelope 框架中的基础操作, 包括定点数编码、随机数生成、线性计算和乘法计算等.
● 秘密分享形式, 定点数编码已经于第 2.2 节说明.
● 0 的伪随机分享 (psuedo-random sharing of zero, PRSZ): 这个机制用于生成 0 的秘密分享 (z 0 ,z 1 ,z 2 ), 这样以
P 0 希望创建 x 的秘密分享, 只要 (z 0 ,z 1 ,z 2 ) ← PRSZ () 并让每个 [[ x; f ]] A =
后, 假设 3 个参与方调用 P j 拥有 , 就可以令
z j
(⌊2 x⌉+z 0 ,z 1 ,z 2 ) 完成创建. 实现方面我们采用 AFL+16 方案 [24] , 由每个 P j 生成伪随机数种子 , 并发送给 P j−1 , 三
f
k j
( ) ( )
方都持有伪随机函数 PRF 的计算方法, 只需要在本地计算 z j = PRF k j − PRF k j+1 .
● 线性计算:
[[ ]] [[ ]] [[ ]] [[ ]] [[ ]]
■ 加法: 如果三方持有 x; f , y; f , 只要分别在本地计算 x j +y j 即可, 有 x+y; f = x; f + y; f .
]]
[[
]]
]]
■ 标量乘法: 如果三方持有 [[ x; f 并给定公共的 λ ∈ Z/2 Z, 同样只需要在本地计算 λx j , 有 [[ λx; f = λ x; f .
l
[[ ]] l
,
■ 偏移量: 如果三方持有 x; f 并给定公共的 t ∈ Z/2 Z, 只需 P 0 P 2 在本地计算 x 0 ← x 0 +1 即可.
[[ ]] [[ ]]
● 乘法计算: 如果三方持有 x; f , y; f , 让每个 P 0 在本地计算 w j ← x j y j + x j y j+1 + x j+1 y j , 然后利用 PRSZ 盲
化得到:
[[ ]]
xy;2 f = (w 0 +z 0 ,w 1 +z 1 ,w 2 +z 2 ).
]]
]]
[[
这一步计算以后需要 3 轮通信恢复到复制秘密分享模式, 然后调用截断协议 [[ xy; f ← Truncate( xy;2 f , f).
l
,
Antelope 中的截断协议是 ABY 3[9] 中所介绍的, 由 P 1 P 2 使用共同的随机数种子采样 r ← Z/2 Z, 然后利用:
( )
[[ ]] z 0 z 1 +z 2
z; f = , −r,r .
2 f 2 f
截断协议中每方只需要本地计算, 计算前后数据将会保持处于复制秘密分享模式.

