目录

  1. 1.EzPC
    1. 框架
  2. 2.CrypTFlow
    1. 框架
  3. 3.CrypTFlow2
    1. 介绍
    2. 创新点:
      1. 新的百万富翁协议
      2. 定点数的计算
      3. 扩展到DNN
      4. OT vs HE
  4. 4.SIRNN
  5. 5.SecFloat
    1. 介绍
    2. 创新点
  6. 参考

最近看了很多神经网络安全推理的论文,它们彼此借鉴,积淀传承,一同造就了这个深奥有趣的领域,这里权且做个概览记录。

1.EzPC

EzPC: Programmable, Efficient, and Scalable Secure Two-Party Computation for Machine Learning
Nishanth Chandran, Divya Gupta, Aseem Rastogi, Rahul Sharma, Shardul Tripathi
IEEE EuroS&P 2019

框架

image-20220508222058701

源程序经EzPC编译为C++格式(称为 ABY API),再经过g++执行。关于EzPC编译:

  • EzPC 编译器感知算术的加密成本和源语言运算符的布尔表示
  • 基于这些成本,编译器自动选择算术或不同子部分的布尔表示,并生成相应的电路以及所需的相互转换门。结果是一个结合算术的高效 2PC 协议和布尔电路,而程序员仍然没有注意到所有这些加密细节。事实上,EzPC 是第一个这样的加密成本感知编译器

2.CrypTFlow

CrypTFlow: Secure TensorFlow Inference
Nishant Kumar, Mayank Rathee, Nishanth Chandran, Divya Gupta, Aseem Rastogi, Rahul Sharma
IEEE S&P 2020

框架

image-20220508222734289

  • 根据TensorFlow代码产生对应得graph dump(a)和元数据(b)(如图示):

    image-20220508230126997
  • 浮点数缩放转化为定点数

  • 经安全计算器编译为MPC协议

  • 向MPC协议输入数据,计算,得到输出

3.CrypTFlow2

CrypTFlow2: Practical 2-Party Secure Inference
Deevashwer Rathee, Mayank Rathee, Nishant Kumar, Nishanth Chandran, Divya Gupta, Aseem Rastogi, Rahul Sharma
ACM CCS 2020

介绍

这篇文章提出了实用的安全两方推理,能够实现安全神经网络的推理,发表在2020年安全类顶会CSS,由微软研究院的印度研究组完成。他们基于以前的密码学工作,衡量了安全和效率等多方面的问题,提出了一个叫做CrypTFlow2安全两方计算的机器学习框架。
以前的激活层,Relu,Sigmoid函数大部分是采用GC,或者近似函数的方式。GC的开销比较大,而近似函数都有精度损失。比如CryptoNets中使用的是x的平方作为激活层,CHET中使用a x 2 + b x ax^2+bxa**x2+b**x作为激活函数。本论文基于新的比较函数提出了新的激活层Relu的计算方法。

创新点:

新的百万富翁协议

首先介绍百万富翁问题,两个富翁想要在不透露自己持有资产的数量下比较谁更有钱,抽象到数学表示,就是:参与方有 P_0,P_1,他们分别持有整数x,y ,想要不透露这两个数的基础上得到比较x < y 的结果。这两个数用二进制表示,都是l 位的,即可以用l 位的比特串来表示。
作者提出的协议理论上比当前最好的比较协议,通信量复杂度(communication complexity )降低了3倍,通信轮次复杂性( round complexity)是 logl
下图表一详细介绍了一些常用安全比较的密码学方法的通信量复杂度和轮次复杂度,例如GC混淆电路,GMW,SC3和该协议。其中m 是本协议引入的参数,λ 是加密算法引入的参数。作者分别计算了m = 4 ,7 和λ = 128情况下的通信量和轮次。

使用这种比较协议,就可以计算DRelu函数,然后计算神经网络的非线性层,如Relu和MaxPool

image-20220508231722646

实现乘法和卷积运算则使用到了基于同态或OT的除法。这种设置使得框架在不同的网络配置比较灵活。
对于Relu这些非线性的运算过去大部分采用的是GC混淆电路的方法,基于本论文提出的协议实现的Relu函数比以前纯GC的方法减少了8倍到12倍的通信量。具体的比较见下图的表2.

image-20220508231646867
定点数的计算

过去的模型都是基于定点数的计算。给定的安全推理任务中,进行除法运算时,舍弃了一部分的正确性,往往求的是除法的近似。定点的乘法中,两数相乘,因为小数位数不变,相乘的结果每次都要除以2的幂次,在计算机中就是移位计算,这就导致了精度的损失。同时,在神经网络的线性计算的过程中,需要的最多次数的计算就是乘法。这就导致了误差不断增加。最近的一篇论文已经显示,这种不断增加的误差最后会导致分类精度的显著损失。
作者提供了新的协议来计算对于2的幂的除法和任意整数除法,并且证明了这种协议的正确性和有效性。
对于计算l位的除法,当前能够正确计算的就是GC混淆电路。下图中比较了在Avgpool层分别使用GC和作者使用的协议的效率。

image-20220508231756708
扩展到DNN

以前的很多工作都是基于MNIST和CIFAR数据集,在MNIST数据集中,识别的都是黑白图像。本论文把工作应用到了Imagenet领域,Imagenet的数据更复杂,一般都是彩色的,需要在上个类别中分类。
本作也是第一个把安全加密扩展到ResNet50和DenseNet121网络上的。相比于以前的工作,效果更好,更实用。

OT vs HE

选择OT还是同态加密,尽管最初的安全推理工作使用基于OT的协议来计算卷积,但目前提供最佳推理延迟的最先进的协议使用基于HE来计算卷积。
基于HE的安全推理通信比OT少得多,但需要更多的计算量。因此,在这项工作开始时,作者并不清楚基于HE的卷积是否能为映像级别的基准测试提供最佳延迟。
为了解决这个问题,作者分别实现了基于这两种协议的工作。
线性层使用OT或同态,也用到了作者提到的除法,非线性使用作者提出的比较协议。
WAN网络环境下,HE工作的更快。LAN的设置下,两种方法没有区别。

4.SIRNN

SIRNN: A Math Library for Secure RNN Inference
Deevashwer Rathee, Mayank Rathee, Rahul Kranti Kiran Goli, Divya Gupta, Rahul Sharma, Nishanth Chandran, Aseem Rastogi
IEEE S&P 2021

之前的安全多方计算协议多是集中在uniform bitwidth下的,即在整个计算过程中所有的整数bitwdith是一致的。但是有些中间计算过程如果在明文下计算仅仅使用较短的bitwidth即可。而且减少比特位长也可以提升安全计算的性能、减少通信开销。本文基于此,

  1. 设计了一系列适用于non-uniform bitwidth计算的两方计算协议;
  2. 基于上述协议,进一步优化计算神经网络中的非线性函数,并提升了效率和精度;
  3. 并对精度进行了分析和实现验证。

本文的工作是基于之前CrypTFlow2继续展开的,在CrypTFlow2作者优化了两方计算比较函数([公式])的计算,使用递归的思想基于OT,节省了大量的开销。本文所有协议的理论开销如下。

image-20220508231344066

本文提出了在non-uniform bitwidth下的而一种安全两方计算库,这种计算能进一步节省开销。但是许多uniform bitwidth下的常用技术也变得不能直接使用,比如Beaver Triples。但目前来看整体性能还是得到了很大提升。

5.SecFloat

SecFloat: Accurate Floating-Point meets Secure 2-Party Computation
Deevashwer Rathee, Anwesh Bhattacharya, Rahul Sharma, Divya Gupta, Nishanth Chandran, Aseem Rastogi
IEEE S&P 2022

介绍

现在大多数的方案在处理浮点数计算的时候采取如下两条技术路线:

  • 将浮点数计算电路表示为布尔电路,然后利用GC或者GMW协议按比特进行计算;1)

  • 将浮点数近似为满足一定精度的定点数,然后利用算术电路和布尔电路混合协议进行数据计算。2)

方法1)会造成巨大的开销,而方案2)则会有一定程度上的精度损失,有些时候这些损失是非常巨大的甚至不可接受。而要保证和浮点数非常接近的精度,虽然可以通过增加比特位长的方式来实现,但是这种方法大约需要512比特的大整数。这无疑给整体开销带来了非常大的负担。

本文面向32比特的单精度浮点数,涉及了安全两方计算(2PC)下的计算库SecFloat。和已有的方案,例如ABY-F和MP-SPDZ相比,SecFloat在精度和开销上都得到了大幅度的提升。SecFloat的主要贡献在于提供了用于浮点数高精度计算的2PC函数。为了达到这个目标,本文对于浮点数的各部分(指数、尾数等)利用并优化了一系列整数下的2PC库。而已有的安全计算方案在精度上不足,而明文精确计算库在2PC下开销巨大(not crypto-friendly),本文的提供的SecFloat在精度和2PC性能二者之间架起了一座桥梁。

创新点

  1. 高精度的高效2PC计算库,达到了Intel的明文数值计算库的精度要求:SecFloat构造了高精度的精确函数在2PC下实现range reduction, polynimal approximations, 和 output compensation。支持正确的浮点基本原语:加减乘除和比较;提供了精确的数学函数计算,包括三角函数、指数和对数函数。并且支持任意浮点表示;
  2. 构造了面向32比特单精度浮点数的SecFloat库,精度比已有方案高6个数量级,效率高3个数量级;
  3. 实现了隐私保护下的距离感应测试:该应用对于精度非常敏感,和之前的方案比SecFloat精度提升了4个数量级,并且减少通信 [公式]。 本文验证了之前定点数下的安全预测无法满足隐私保护广告推广服务,而SecFloat可以满足这一应用。

参考

1.https://zhuanlan.zhihu.com/p/413920476

2.https://blog.csdn.net/m0_37908414/article/details/110807694

3.https://zhuanlan.zhihu.com/p/506214347