【AI隐私保护.论文笔记】XONN: XNOR-based Oblivious Deep Neural Network Inference,基于同或门的茫然深度神经网络推理

这篇文章是隐私保护的神经网络中第一篇将二值神经网络(BNN)和密码学中隐私保护的技术结合起来的文章,发表在2019年安全类顶会USENIX中,由微软研究院和美国加州大学合作完成。他们利用了BNN网络同或门计算的特性以及GC混淆电路中同或门开销较小的特性,同时使用了密码学里面秘密分享的技术和神经网络压缩和加速中的剪枝策略,实现了一个快速的神经网络秘密推理模型。

背景

隐私保护的神经网络或者机器学习,一般致力于两个方面。一:隐私保护的神经网络的训练,二:隐私保护的神经网络的推理。
这篇文章致力于实现隐私保护的推理。即服务器拥有训练好的一个神经网络的模型,客户拥有自己的一个数据样本,想要把数据输入服务器的模型,从而得到一个推理的结果,分类模型得到分类结果,回归类模型得到预测结果。但是,假如这些数据是比较隐私的,即客户不想透露给服务器,但他又想利用服务器的模型,一个方案是,可以让服务器把模型发给客户,让客户自己运行得到检测结果。但是,这也是不现实的,因为服务器的模型也是花费了大量的人力物力训练出来的,是他们保持商业竞争力的一种手段,不会轻易泄露出去。所以,结合密码学的一些方案就被提出了,用户把加密的个人数据,发给服务器,服务器在加密的数据上进行运算,再把结果发送给用户,用户解密,得到计算的结果。这种方案是可行的。目前用的较多的密码技术就是GC,同态加密,秘密分享等手段。这篇论文只用到了GC的方案,把二值神经网络和GC混淆电路结合,比当时2019年的最好的隐私保护安全推理Gazelle快大概7倍,比隐私保护的开山之作SecureML快了37倍。

BNN-二值神经网络

二值神经网络是2016年深度神经网络的大佬Bengio发表的,正如这种网络的名字,这种网络的参数和激活函数的值都是用{+1,-1}来表示的。由于其参数和激活值只能是正负一,效果不是很好,模型的准确率相对于全精度的神经网络还有一段距离。但是其提出的创新性的概念,值得学习。 MeliusNet是一种表现比较好的二值神经网络。

二值化方法一般采取的是基于符号的确定性方法。
在这里插入图片描述

将所有参数,都用二进制表示,从而使得神经网络中最耗费时间的乘法累加,能够以同或门(XNOR)和popcount的方式计算,大大提高了计算速度。二值神经网络也算是压缩模型的一种吧,可应用在嵌入式的特定的场景下。当前,应用的场景比较少,但是仍然是有较大的发展前景的,很多研究人员致力于提高二值神经网络的准确度,已经取得了较大的进展。
其最有效率的地方就在于把神经网络中的乘法累加操作用二进制同或(XNOR)和popcount来计算。
在这里插入图片描述

popcount其中的p为1出现的次数,n为x和w的位数。
一种提高计算精度的方法,就是增加神经元的数量,一般在BNN中使用scalor值量化,scalor=2
,就是把每层的神经元的数量乘以2.

神经网络基础

先介绍了神经网络的基础的一些层,包括线性层,激活层,标准化层,池化层的一些计算方式。
线性层:
作者用VDP来表示神经网络线性层的乘法。无论是全连接层还是卷积层都是重复计算VDP。总的来说,就是神经网络线性层都是计算两个向量的点积。
在这里插入图片描述
激活层:
激活层是在线性层后面,把线性元素进行非线性转换。应用在二值神经网络中就是把输入值直接根据符号取正负一。
在这里插入图片描述
BN层:
BN是批量归一的方法,一般跟在线性层的后面。就是对线性层的输出乘以一个参数,再加上一个偏置。这两个值是训练的过程学习来的。具体的过程参考BN的相关介绍。

池化层
池化一般是图像的卷积神经网络的一种方法,有最大池化和平均池化。也是一种卷积操作,目的是减少参数量,对特征进行压缩。

GC-混淆电路

混淆电路一般在双方都不知道进行对方输入的情况下计算某些函数的结果。比如比较函数,最有名的就是百万富翁问题,两个富翁想要比较他们谁更有钱,但是又不想透露他们的具体的资产数量。也可行的方案是,这两个人把自己的资产数额告诉一个可信第三方,可信第三方,是可信的意思是,他知道两个人的资产数额,但是不会把具体的数额告诉任何一方,然后由可信第三方进行比较,把结果返回给这两个人。这就是安全多方计算(MPC)的基础,由密码学大佬姚期智教授提出。
论文中给出了大概的流程:
姚的混淆电路的方案,可以结合任意的茫然传输实现,它是一个常数轮次的协议对于两方安全计算,它能够抵抗半诚实的参与方。这里介绍了基本的实现方式,具体的实现方式,需要参考别的论文。
首先,固定一个两个参与方都知道的电路C,这里所说的电路,一般指的是可以计算任意函数的一个电路。为了简化整个过程,假设电路C只输出一个位数,扩展是很容易的。
一个参与方是Alice,她对应C能生成一个混淆电路。首先对应于这个两条线路的输入的电路,两个随机的密钥被生成,表示为 w i 0 , w i 1 w^0_i,w^1_i wi0,wi1 ,其中 w i 0 w^0_i wi0 对应于线路中的0值, w i 1 w^1_i wi1对应于电路中的1值。
基于最基础的GC混淆电路,之后提出了各种优化的算法,其中free-XOR的GC方案就是其中的一种,即异或门开销基本为0的一种GC方案.这种方案结合了混淆电路和安全函数计算(SFE),使得电路中的异或门开销是免费的。在Kolesnikov的异或门方案中,计算和传输的开销基本是免费的。
基于free-XOR的GC的这种特性,能够和二值神经网络结合。

SS-秘密共享

也是安全多方计算的工具,加法秘密共享应用的比较广泛。XONN中使用的加法秘密共享。就是一个秘密S,选择一个随机数S1,令S2=S-S1.把S1,S2分给两个参与方,他们都不知道原始的S,恢复S需要他们相加。有两个秘密的话,拥有秘密的人就可以把两个秘密都以这种形式分成两部分然后分给两个参与方,参与方可以获得两个秘密分享后的值,把这两个值相加,就可以获得两个秘密值的秘密分享值。

OT-茫然传输

在基本的OT协议的基础上,许多研究大佬进行改进,提出了各种各样的茫然传输扩展的算法,也就是OTE。最基本的一轮OT,是基于公钥加密体系的。多次OT的开销往往是很大的,所以一些优化的算法也被提出了,就是使用基于对称密钥和公钥加密结合的多次OT,这种方法,只用固定次数的公钥加密,就可以实现任意次数对称加密的OT.大大提高了OT的效率。

剪枝

剪枝一种提高网络推理速度的方法,一般在训练完成以后剪枝。即删除一些神经元参数,简化神经元的计算。其他提高神经网络速率的方法:知识蒸馏。

Int-VDP协议

效率分析如下:
在这里插入图片描述

针对茫然神经网络推理的攻击

在黑盒的设置下,即客户只能接收推理结果,不能访问服务端模型时,一些针对性的攻击方式被提出。
但是作者提出可以在神经网络最后一层,再添加一层,抵抗这种攻击,这层是一个很小的开销。在附录B中被介绍。在这几种攻击中,考虑CS架构模型,客户端是一个坏人,他不断地发送数据给服务器得到推理的结果,想要从结果中分析服务器模型的参数w和服务器用于训练的数据,从而导致服务器的数据泄露。但是这种泄露并不是全部信息的泄露,只会泄露模型或者训练数据的部分信息,业界比较有发展前景 ,难以解决的问题就是模型信息泄露的一个量化。因为基于各种密码工具的神经网络,效率通信量精度都不是很理想,无法落地,大多数研究都是致力于解决这三者之间的均衡。如果能够给出一个可以接受泄露不会产生安全风险的阈值,那么安全性降低,效率可能增加。
三种主要的攻击方式包括:模型反演的攻击,模型提取攻击,成员推理攻击
模型反演攻击中,攻击者试图获得一个分类的原型样本。攻击者多次提交样本,通过最大化置信度,得到一个接近的原型样本。
模型提取攻击中,攻击者试图估计出服务器的模型参数,在有n个参数的logistic回归模型中,攻击者可以
通过查询服务器n次,在接收到置信值后,求解一个n个方程的系统来提取参数。模型提取损害了科技公司按预测付费的商业模式。而且,它能够作为模型反演攻击的预备步骤。
成员推理攻击中,攻击者攻击的目的是确定在模型的训练阶段是否使用了给定的输入。这种攻击背后的想法是,神经网络通常在经过训练的数据上表现得更好。因此,如果两个输入属于同样的类别,一个曾经用于训练阶段,一个没有,将在置信值上有显著差异。这种现象被称为过度拟合。使用正则化技术可以减少DL模型对单个训练样本的依赖,从而减轻这种攻击。然而,过度拟合并不是造成这种信息泄漏的唯一因素。
可能的防御手段:
在过去,提出一种简单的防御机制就是限制访问次数。但是,这种机制可以很容易被攻击者破解,只要他模仿多个访问者再多次访问就行了。请注意,这三种攻击都依赖于这样一个事实:除了推断结果之外,服务器还提供了推理出的结果向量,分类模型中,该向量指定客户端输入属于每个类的概率有多大。
值得推荐的一种方法是在最后增加一个过滤层,直接输出概率最高的结果,而不输出结果向量。

抵抗恶意攻击的模型

一些茫然推理只能抵抗半诚实的模型,xonn可以通过一种叫做cut-and-choose oblivious transfer的手段抵抗恶意的模型的攻击。
这种方式最早2012年提出的,用于两方安全计算。但是目前安全性的增加,会带来效率的下降。而且,目前没有混合协议被实现,

实验部分

GC的一些优化中,AES加密的性能较好。作者使用了Intel的AES-IN指令集,实现了AES高级加密标准的性能密集的硬件结构,提升AES的性能。我在Linux上简单的测试。
在这里插入图片描述
GC中最有效率的优化是XOR-free技术,使得否门,异或门,同或门都有比较高的效率。本文使用的GC库是TinyGarble。但是整个库比较旧了,更新日期还是三年前的。

使用的OT库是libOTe,一个大神自己使用c++写的ot库,实现了了几种OT算法。

布尔电路
现代神经网络的描述包括在数百万到数十亿的布尔门之间,然而,合成工具不能支持这种大小的电路。然而,由于XONN模块化设计,可以使用每个基本电路合成整个网络。因此,瓶颈从合成工具的最大门数到系统的内存。因此,XONN可以有效地扩展任何神经网络,网络复杂性不考虑合成工具的限制,只要有足够的内存(即RAM)可用。可以通过动态管理分配的内存来提高可伸缩性。

流水线的机制:
作者采用了计算和通信流水机制提升性能。如下图所示:
Garbler的流水机制:
第一步:Garbler结束了第L-1层,开始混淆第L层
第二步:为L层的输出线创建随机标签
第三步:发送给Evaluator与他的输入相关联的随机标签
第四步:生成混淆表
第五步,把混淆表发送给Evaluator
Evaluaror的流水机制:
第一步:结束了第L-1层,开始混淆第L层
第二步:得到随机标签
第三步:得到混淆表
第四步:计算
第五步:生成计算结果
在这里插入图片描述

动态内存管理:
只用这种动态分配内存的方式,大大降低了内存的使用量。
应用程序接口:
XONN为茫然推理提供了一个简化且易于使用的API,但是作者并没有给出该API的代码等,不知道是不是因为效率并没有那么好,如果想要代码或许可以给作者发邮件。该框架接受网络的高级描述,例如每一层的参数和输入结构。它自动计算调用的次数和所有基础电路之间的互连。下图显示了用户需要为一个示例网络架构(BM3架构,见第7节)编写的完整网络描述。所有需要的电路都是使用TinyGarble合成库自动生成的。对于茫然推理任务,作者的的API比最近的高级EzPC框架要简单得多。例如,在EzPC中描述BM1、BM2和BM3网络架构(见第7节)所需的代码行分别是78、88和154。相比之下,XONN框架中,只需6、6和10行代码就可以描述它们。
EZPC是微软的一个印度人为主的研究组研究的安全多方计算库,也致力于同方向的研究,能够实现机器学习推理任务。看到他们主页上在2020年安全定会上CCS发表了论文,提出了自己的框架,实现了安全两方推理。还在github上给出了自己的代码,还是给出代码感觉最靠谱啊,决定了,下一个就看你们的论文。
感觉微软研究院的这个研究组都要打起来了hhh,都觉得自己的比较好。还有最近一篇Falcon框架的也要安排到日程上。


在这里插入图片描述

相关的其他文献:
CryptoNets使用了同态加密,SecureML使用了同态加密,秘密分享和混淆电路,EzPC使用了混淆电路和秘密分享技术…
常数轮的复杂度,这里作者说是一个常数轮的复杂度,通信轮数是一个常数,这个特性
,D是深度学习协同计算,独立于第二个服务器…

在这里插入图片描述

电路安全性

第六章,作者专门介绍了电路安全性的问题。主要介绍了Gazelle的方法无法满足电路的安全的问题。
因为Gazelle使用BFV框架的同态加密,可能会泄露信息。所以为了公平比较,作者扩大了Gazelle框架的时间效率。
不过,作者提出的神经网络二值化和GC电路的结合还是有很大意义的。

实验结果

作者在MNIST和 CIFAR10 数据集上进行了实验,展示了实验结果。二值神经网络库的训练使用了keras和tensorflow后端.

没有解决的问题

1.批量归一化的过程中,作者说伽马的值一定是正值,这个说法不知道来自于哪里。
在这里插入图片描述

参考文献:

  • 二值神经网络综述:https://zhuanlan.zhihu.com/p/270184068

  • Improved Garbled Circuit: Free XOR Gates and Applications:
    http://www.cs.toronto.edu/~vlad/papers/XOR_ICALP08.pdf

  • Secure two-party computation via cut-and-choose oblivious
    transfer:https://link.springer.com/content/pdf/10.1007/s00145-011-9107-0.pdf

  • libOTe::https://github.com/osu-crypto/libOTe

  • TinyGarble:https://github.com/esonghori/TinyGarble

  • Ezpc:https://github.com/mpc-msri/EzPC

  • CrypTFlow2: Practical 2-Party Secure Inference

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值