论文学习记录20200612:隐私保护神经网络推理[USENIX2018]

GAZELLE: A Low Latency Framework for Secure Neural Network Inference
这篇论文是上周那篇的standing point,也是对神经网络推理的隐私保护
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第1张图片
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第2张图片
Gazelle是一个可扩展的低延迟安全神经网络推理系统,它使用了同态加密和传统的两方计算技术(在论文中具体指的混淆电路),它是把这两者进行结合,混合起来使用。之前的工作一般都是要么是同态,要么是安全多方计算(像秘密共享、混淆电路这些),这种混合起来使用是一个创新。
在神经网络推理系统中,有两个参与方A和B,其中A持有卷积神经网络(CNN),B持有网络的输入,也就是b的私有数据,通常是图像。
本文设计一个A和B两方都参与的协议,在该协议执行结束后,B获得结果,即神经网络的最后一层的输出(以及潜在的网络结构),而a什么得不到关于b的隐私输入的任何信息。

论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第3张图片
这个就是卷积神经网络,输入一个数据图像,h图像高度、w图像宽度、c图像通道数,接下来,红色的是线性层,可以是两种类型:卷积(Conv)层或全连接(FC)层。蓝色的非线性层,通常是激活函数,最常见的是池化函数和ReLU函数。然后在经过几层运算结束后,输出这个图像的分类,飞机、汽车、卡车等等。
这个是卷积神经网络的过程,本文就是对这个过程进行安全的两方计算。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第4张图片
作者提出的安全神经网络推理协议是基于packed加法同态加密方案和混淆电路的,作者在卷积神经网络中,是混合使用同态和安全多方计算的。对于线性层,使用pahe同态的方法,非线性层使用两方计算,具体是混淆电路
该协议的威胁模型是半诚实敌手模型,即A和B遵守协议的规则,但试图从协议文本中推断有关另一方输入(分别是网络参数或图像)的信息。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第5张图片
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第6张图片
左边是客户端b,右边是服务器端a
在线性层 PAHE阶段开始时,服务器和客户机拥有客户端输入y的加法共享 c_y, s_y
在第一次进行运算时,客户端输入y,服务器输入0
进行线性层运算时,首先从客户端B开始,使用PAHE方案加密它的共享c_y,,并将其发送到服务器a。
将GC转同态,就是服务器把接收到客户端的cy同态加sy得到一个y的密文。cy+sy=[y]。

然后服务器A输入这个y,使用同态线性代数核来计算线性层(卷积层或完全连通层)。结果是一个x的密文,x包含到下一个非线性(ReLU)层的输入。
同态方案确保A不知道B的输入y。B始终没有收到A的任何输入,因此无法学习服务器a模型参数。

在准备评估随后的非线性激活层时,A必须将她的PAHE密文转换为加法共享。
在这个步骤的开始,A持有 [x] 密文(其中x是向量),B持有私钥。
第一步是转换这个密文,使A和B都持有x的加性秘密共享。
这是通过服务器A向其密文同态添加随机向量r以获得加密的[x+r]并将其发送到客户端B来实现的。
然后客户端B使用同态加密的私钥来解密此消息以获取其共享。
因此,服务器A设置其共享sx=r,B设置其共享cx=x+r

接下来,使用Yao的GC协议评估非线性激活。
这里,双方都拥有x的秘密值的加性共享(cx,sx),并且计算得到输出y=ReLU(x)的秘密共享(服务器sy)和(客户端cy),这样sy+cy=y mod p。任何一方都没有完整的信息,而且双方的份额对各自的所有者来说都是随机的。

论文中描述的整个的流程就是这样,下面是一些更具体的步骤。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第7张图片
先看非线性层

非线性层的混淆电路是对图中描述的布尔电路进行混淆得到的。
该电路以服务器端的sx=r和sy=r′(随机选择)以及客户端的cx作为输入向量。

电路的第一块计算sx和cx在整数上的算术和,并从中减去p以获得结果mod p(是否减去p的决定由多路复用器作出)。
电路的第二块计算ReLU函数。
第三个块将结果y添加到sy以获得y的客户端份额,即cy。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第8张图片

下面说一下这个同态加密
作者设计了一个同态加密库,将支持将多个纯文本打包到单个密文中,该库提供了SIMD(单指令多数据)同态加法(SIMDAdd)和标量乘法(SIMDScMult),并置换明文时隙(Perm)SIMD
这是一个基于格的同态加密,它主要的优点是比paillier的要更高效。
这里介绍了加,乘法,这个乘法既不是点积(内积),也不是叉积(外积),是两向量各分量分别相乘。置换或者排序

论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第9张图片
这个是全连接层的矩阵向量乘法。主要描述了计算矩阵向量积的同态线性代数核(对于FC层)
这一部分主要是为了实现明文矩阵与加密向量内积。
在前面的PAHE算法中已经介绍了一种 两向量中各分量分别相乘 的同态乘法,在这里,要通过这个同态乘法来实现矩阵与向量内积
左边是一个简单的方法,因此它也是最慢的以及通信效率最低的一个方法:
把正方形矩阵按行划分w0,w1等等,每一行wi与密文向量v进行同态乘法,得到ui的密文。就图中绿色这一行为例,因为这个乘法是两向量中各分量分别相乘,所以想要得到绿色这一行与密文向量的内积,需要把各分量的乘积再相加,也就是l1+l2+l3+l4。这里就用到了同态的置换或叫排序操作,改变各个l的位置,再相加,比如这里得到的m02 是l0+l2,m13是l1+l3,然后在进行一次排序,就得到了这一行与密文向量的内积结果s0.其他行也是一样。这种方法带来的最大问题是,最后运算后会产生相应的n0(矩阵的大小是n0ni)个密文,而每一个密文中都是由重复的运算结果所构成的。
所以中间的对角线方法,可以避免输出大量的密文。
他是Helib这个同态库中的一个算法。一个正方形矩阵,将其对角线抽取出来作为一个向量与密文向量相乘,对于图中这个4
4的矩阵,就抽取出四条对角线,得到了四个各分量的乘积结果的向量,然后将这四个相加,就能够得到矩阵和向量的内积结果。
这种方法和求行列式的方式有些相似。
右边是作者提出的方法。
前两种的矩阵都是正方形,但是在实际中,许多全连接层的向量是长方形的,所以作者是按照s形抽取了向量,与密文向量相乘,再将结果相加,得到蓝色的这m0 m1 m2 m3,但是在矩阵中,同一行中有两个同色系的元素,所以参考左侧简单的方法,这里还需要对向量进行排列置换,然后再相加,最后得到结果。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第10张图片
下面是卷积层的操作
这个图是机器学习中卷积的计算过程,当滤波器在输入图像上扫描时,将滤波器与输入图像中对应位置的数值逐个相乘,最后汇总求和,就得到该位置的卷积结果。不断移动滤波器,就可算出各个位置的卷积结果。

下面这个是一个填充,这个填充也是一般的卷积中常用的方式,不是作者提出的。
卷积一般会把输入矩阵变小,甚至输出的是一个数。如果需要输出矩阵保持一定的大小,那么在卷积前需要对输入矩阵进行填充。
像图中这33的输入矩阵,会把他的上下左右进行填充0,得到一个55的矩阵,再对它进行卷积。在这里,过滤器是33的矩阵。接下来就和左边这种卷积过程一样了,我用黄色荧光笔标出的矩阵与蓝色方框构成的33的矩阵进行对应位置的数值逐个相乘。滤波器扫描完九个位置,最后汇总得到的就是输出结果,图中这个红色的输出。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第11张图片
左边是一般的方法,作者认为这种填充的方法能够计算出正确的卷积结果,但是由于填充了零,会浪费(wi+fw-1)·(hi+fh-1)- wi·hi的空间,也就是填充0的那一圈。如果输入图像很小或者过滤器的大小很大,就需要填充的更多,这可能会导致很大的开销。所以作者提出了这种packed方法。
这种方法改变输入矩阵里面元素的排列和改变过滤器的元素,来实现输出矩阵能保持一定的大小并且无需对输入矩阵填充0造成额外开销。
可以看到在之前的填充方案中,就看左上角这一个,蓝色部分是与这个黄色部分进行乘法,除了目前标红的这四个位置以外,其他的都是填充的0,因此与滤波器对应位置的元素相乘后结果也为0,可以认为没有计算的意义,没必要。作者提出的packed方案中,可以看到滤波器只保留右下角这四个,其他的位置置零,这样,将滤波器与输入矩阵中对应位置的数值逐个相乘时,只有标红的部分的结果被保留下来了,因为其他的都为0,可以看到和填充的方法得到的结果是一致的。
所以,作者提出的packed的方法,结果正确,比填充的方法还提高了效率。
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第12张图片
前面是single-input single-output的方法,下面是多通道情况下,像图中这种输入通道为ci,输出通道为co的,需要进行ci x co次之前描述的siso的卷积。
作者 通过将多个通道打包在一个密文中,可以进一步加快多通道卷积的计算。
第一步,将cn个通道打包在一起,原本需要进行ci x co次siso的卷积,就变成只需ci x co / cn次,第二步将他们相加
例如图11中,cn = 4 ,也就是四个通道打包为一个,所以框中本应该是进行四次siso的卷积,在这里只需要进行一次,因为ci和co都为8,所以输入和输出都是两组
论文学习记录20200612:隐私保护神经网络推理[USENIX2018]_第13张图片
最后是性能分析,可以看到,gazelle协议,不论在哪种卷积神经网络结构下,不论是minist集还是cifar-10数据集,都比之前的方案要好

你可能感兴趣的:(论文学习记录,神经网络,机器学习,人工智能,密码学,安全)