最近在eprint上看到一篇关于神经网络安全推理的非常不错的综述性文章Towards Practical Secure Neural Network Inference: The Journey So Far and the Road Ahead, 概述了迄今为止面向安全推理提出的主要方法、不同方法之间的特性以及所使用的技术. 最后还总结了大规模部署时所面临的挑战. 这里只摘录了其中的一些要点和案例与大家分享, 更多的内容请查看原文.
神经网络(Neural Networks, NN)包含两个主要阶段: 训练阶段和推理阶段. 这两个阶段所进行的运算是类似的, 主要不同是训练需要通过反向传播来调整神经网络不同层中的权重参数, 而后者权重已经给出, 此外, 当考虑安全性和隐私性时, 两者要求也不相同, 对于推理阶段来说, 主要考虑如下两个要点:
推理常见于MLaaS服务场景中, 模型提供商(Server)负责提供已经训练好的NN模型\(f\)作为服务提供给客户(Client), 客户持有输入\(x\), 希望得到\(f(x)\), 但是客户希望\(x\)是保密的, 而模型提供商也不希望与客户共享NN模型\(f\)的信息. 安全神经网络推理(secure neural networks inference, SNNI)问题即是在满足这些安全需求的同时计算\(f(x)\). 有些文献也把安全推理称为隐私保护推理(privacy-preserving inference), 不经意预测(oblivious prediction).
目前安全推理已有的解决方案有两种:
这些方法通常需要在高效性、安全性、准确性和可用性等方面进行权衡.
传统意义上的神经网络是由神经元组成的, 一个神经元包含一系列权重(weight)\(w_1,\cdots,w_n\in\mathbb R\)和偏置项(bias)\(b\in\mathbb R\), 神经元首先计算\(y=\sum_{i=1}^nw_ix_i+b\), 然后将\(y\)作为非线性激活函数\(f:\mathbb R\rightarrow\mathbb{R}\)来计算输出\(z=f(y)\).
NN由一系列层组成, 第一层称为输入层, 最后一层称为输出层, 其余层被称为隐藏层, 隐藏层通常由神经元组成, 第\(i\)层的输出是第\(i+1\)层的输入. 现代NN中不再局限于单个神经元, 而是使用了许多不同类型的层, 例如:
FC层和Conv层称为线性层, 因为输出是其输入的线性函数, Conv层可以用矩阵乘法来表示. 而其他大多数层都是非线性层.
神经网络架构通常包含层的数量、类型和大小等信息, 以下是Chameleon中给出的一个CNN架构的例子.
下表中给出了现有SNNI方案的特征.
通常SNNI是个两方计算问题, 即Client持有输入, Server持有神经网络. 但还有三方、甚至四方等更多参与方设定下的方案, 此时不共谋假设是确保协议安全性中非常重要的一环. 这些参与方设定可总结如下:
此外还有一些方法假设Client是恶意的情况, 例如MUSE.
根据应用场景的不同, 不同类型信息的保密性非常重要, 典型的保密目标如下:
SNNI方案通常只考虑1-3, 而4通常不考虑, 只在通信模式中才考虑.
如果能实现上述保密目标, 则Client无法获知除了推理结果之外的其他信息. 但通过足够数量的查询推理, 推理结果仍可能泄漏NN的某些信息. 这涉及如下几种攻击:
这些是MLaaS的固有属性, 与确保推理过程安全的特定技术无关. 通常可以限制Client进行的查询数或限制Client从推理中获取的信息来避免这些攻击. 但是大部分SNNI方案不考虑这些攻击.
目前暂不清楚有效支持所有类型NN的安全计算的通用技术. SNNI的多数工作都集中在开发适用于某种神经网络类型的特定技术, 要么受限于所支持的层类型, 有么受限于权重的范围.
理想的SNNI方案应支持FC层、Conv层、激活函数层、最大池化层、softmax或argmax. 常见方案支持的层类型如下:
有一些SNNI方案限制了NN中处理的数据类型, 从而加快推理效率. 例如:
这些限制方法可以高效地实现NN中所涉及的算术运算, 但NN的准确率将降低.
SNNI方法与训练存在很大的差异, 如下图所示,
尽管这些优化有助于提高效率, 但可能会影响现有机器学习模型的可用性.
轮复杂度(Round complexity): Client和Server通信的轮数. 大多数现有SNNI方法的通信模式有如下两种:
许多方法中协议的某些部分独立于Client的输入, 因此可将协议分为独立于Client输入的离线预处理阶段和依赖于输入的在线阶段. 使用这种离线/在线范式的方法有SecureML, MiniONN, Chameleon, Delphi, Falcon等等. 离线阶段的常见活动有: 生成Beaver三元组, 或者其他用于茫化秘密的关联随机数.
离线/在线范式优缺点如下:
早期将HE用于SNNI问题的工作是[1-2]. 使用HE的优点是可以满足所有保密目标, 其主要的难点则在于非线性函数的计算和全同态加密方案的选取.
由于HE评估非线性层很困难, 故一些方案建议仅对网络中的线性层使用HE, 而对非线性层使用其他MPC技术.
从SHE来看, 虽然FHE变得越来越快, 准确度也在提高, 但单次推理所消耗的时间仍比较长, 因此实用性较差.
如果所涉及的数据都是定长的, 则NN的所有运算都可以用布尔电路来实现, 并使用混淆电路来解决SNNI问题, 此时不能保护NN架构信息, 安全性由混淆电路保证, 但效率可能会很低. 第一个主要使用GC来解决SNNI问题的工作是DeepSecure[3], 使用了Free-XOR和独立于GC的预处理技术, 利用尽可能少数量的非XOR门的基本模块来构造经典NN. 此外, 还有基于二值NN的工作XONN, 利用GC来评估非线性层的Dephi.
评估非线性层需要秘密份额之间的加法和乘法. 两方计算时秘密份额的加法是平凡的, 秘密份额的乘法则需要借助Bever三元组.
Beaver三元组不依赖于输入, 因此可以在离线预处理阶段生成. 如果只有两方, 生成Beaver三元组的方式有两种: 同态加密和不经意传输. 此外, 如果有额外的不参与在线阶段计算的第三方, 则可让其生成Beaver三元组提高计算效率, 如Chameleon. 若使用2-out-of-3秘密共享, 则不需要Beaver三元组即可计算乘法, 如Falcon.
HE、GC、ASS都有一些缺点, 限制了某些层的适用性, 由于这些缺点与不同类型层相关, 因此可以考虑将多种技术进行组合, 使得NN的每层都使用最合适的技术, 尽管这将使得方案变成交互式的. 多数情况下ASS被用作框架, 辅以其他技术, 用于在线阶段不同类型的层的安全计算, 例子:
OT通常是许多SNNI方法的重要组成部分:
理论上NN的输入和输出以及权重和其他参数可以是任何实数, 但在计算机实现中, 所有这些数字都使用有限位来表示, 选择数字表示方案取决于如下几个方面:
这些方面的不同选择可能会造成重大影响, 从而导致效率和准确性之间的不同权衡. 特别是减小位宽可以显著提高效率, 这取决于所使用的技术, 例如使用GC时减少位宽可使电路规模减小, 从而只需更少的计算和更少的通信, 但可能会限制可实现的准确性.
计算机通常天然支持给定位宽运算, 利用这种硬件支持的位宽可以实现更简单高效的方案. 例如: Delphi和Falcon使用32位的固定位宽, 而SecureML和SecureNN使用64位的固定位宽, 此外位宽不需要在整个NN中都是均匀的, 例如SiRnn引入的动态调整位宽的协议. 某些运算可能会改变位宽, 此时需要额外进行截断运算.
对于小数部分的精度, 有不同的解决方案, 例如具有统一精度的定点表示的有Delphi和Falcon, 动态确定精度的有CrypTFlow2, 还有一些方案使用整数以固定位数表示, 但要确保没有溢出, 例如MiniONN.
对于有符号数的编码, 通常使用二进制补码(two's complement), 在评估ReLU时需要确定数字是否为正数, 在二进制补码中这归结为确定数字的最高有效位.
在HE情况下, 几种加密方案都基于多项式, 明文被编码为多项式系数. 为充分利用消息空间, 一些方法(如CryptoNets)通过中国剩余定理将多个数字打包为一个系数, 用多个系数来表示一个数字. 通过使用FHE方法, 可以通过以定点表示来处理这些数字, 这需要将数字映射到实践中所使用的多项式环中, [4]给出了一种为同态函数评估设计的定点数有效编码方法.
使用密码学协议使得利用并行化计算更具挑战性. 一些同态加密方案支持SIMD处理, 从而对同一批次不同输入执行相同的操作. 离线阶段也可以利用并行化计算, 例如SecureML中生成向量化的Beaver三元组, MiniONN也使用了类似的方法.
为了茫化秘密, 有些方案使用了关联随机数, 即由不同方拥有满足某种关系的随机数. 典型的例子是Beaver三元组、ABY3和Falcon中使用的Zero sharing.
生成关联随机性主要有两种方法:
SNNI的一些方案也对NN架构进行了修改, 事实上在普通环境中使用表现良好的架构可能不是SNNI的最佳选择. 找到最佳的NN架构是一个繁琐的过程, 涉及尝试许多不同的候选架构、训练并评估实现的准确性. 此过程可以通过神经网络架构搜索(Neural Architecture Search, NAS)算法自动执行.
例如: Delphi将NAS用于特定目的: 它使用平方函数替换了NN中的一些ReLU激活, 旨在找到准确性和推理效率之间的良好权衡, 要替换哪些ReLU由NAS决定. NASS进一步使用NAS, 在寻找安全推理的最佳神经架构时, NASS会考虑不同密码原语的开销, 作为搜索过程的一部分, NASS还会自动调整用于NN线性层的HE参数[5]. 此外, HEMET也遵循类似的方法[6].
HE和ASS适合评估多项式. 对于非多项式函数, 可以使用适当的多项式近似代替, 但这将会导致高阶多项式开销大的问题, 因为乘法所需的开销大, 而低阶多项式近似效果很差. 解决这个问题的唯一可能方法是使用分段多项式近似. 例子: SecureML, MiniONN, Delphi.
卷积可以用矩阵乘法表示, 从而可以像处理全联接层一样处理卷积层, 理论上很方便, 但可能导致实现效率低下, 特别是在ASS的框架下使用Beaver三元组来实现矩阵乘法, 相同的矩阵元素被多个Beaver三元组所茫化从而导致Beaver三元组的浪费. CryTFlow的Porthos组件对此进行了优化, 以减少卷积所需的Beaver三元组数量. 而CrypTFlow2中的卷积使用了HE实现, 通过巧妙地使用SIMD, 减少HE rotation操作次数来加速卷积计算.
在大多数情况下, 基于MPC的解决方案的安全性(输入隐私性)建立在通用可组合(Universal Composability, UC)框架下, 依赖于其构造模块的安全性和可组合性. 而基于HE的解决方案的安全性通常基于困难问题, 如Ring-LWE问题等.
大多数SNNI的工作集中在图像分类问题上, 因此CNN更常见. 根据CNN规模, 常见的CNN可以分为:
常用数据集: MNIST, CIFAR-10.
其他类型的NN还有:
实验环境: 本地模拟LAN/WAN、云服务器环境的LAN/WAN.
当要说明一种新方法改进了现有技术时, 需要对两者进行对比, 此时需要面临如下问题:
[1] Barni, M., Orlandi, C., and Piva, A. A privacy-preserving protocol for neural-network-based computation. In MM&Sec (2006), ACM, pp. 146–151.
[2] Barni, M., Orlandi, C., and Piva, A. A privacy-preserving protocol for neural-network-based computation. In MM&Sec (2006), ACM, pp. 146–151.
[3] Rouhani, B. D., Riazi, M. S., and Koushanfar, F. Deepsecure: scalable provably-secure deep learning. In DAC (2018), ACM, pp. 2:1–2:6.
[4] Bonte, C., Bootland, C., Bos, J. W., Castryck, W., Iliashenko, I., and Vercauteren, F. Faster homomorphic function evaluation using non-integral base encoding. In CHES (2017), Springer, pp. 579–600.
[5] Bian, S., Jiang, W., Lu, Q., Shi, Y., and Sato, T. NASS: optimizing secure inference via neural architecture search. In ECAI (2020), vol. 325 of Frontiers in Artificial Intelligence and Applications, IOS Press, pp. 1746–1753.
[6] Lou, Q., and Jiang, L. HEMET: A homomorphic-encryption-friendly privacy-preserving mobile neural network architecture. In ICML (2021), vol. 139 of Proceedings of Machine Learning Research, PMLR, pp. 7102–7110.
本文标题: Towards Practical Secure Neural Network Inference: The Journey So Far and the Road Ahead
本文作者: 云中雨雾
本文链接: https://weiviming.github.io/16675243955254.html
本站文章采用 知识共享署名4.0 国际许可协议进行许可
除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间: 2022-11-04T09:13:15+08:00