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
                    截断协议中每方只需要本地计算, 计算前后数据将会保持处于复制秘密分享模式.
   252   253   254   255   256   257   258   259   260   261   262