技术焦点篇|Cheetah猎豹及其在隐语中的实现

简介: 技术焦点篇|Cheetah猎豹及其在隐语中的实现


隐语开源发布会上,邀请了阿里安全双子座实验室资深安全专家洪澄进行主题分享。阿里安全双子座实验室负责密码学跟隐私保护技术相关的研究以及应用,包括同态加密、安全多方计算、可信硬件、差分隐私等,陪伴了隐语框架共同成长,在隐语框架中扮演着安全协议开发者的角色,隐语框架中的猎豹模块等密码学相关工作就是由安全双子座实验室贡献。


哔哩哔哩

Cheetah猎豹及其在隐语中的实现

小程序

1.什么是猎豹



Cheetah主要解决安全两方计算中的神经网络推理问题,主要包括同态加密、不经意传输等密码学技术,它比此前的最好工作CryptFLOW2(微软,CCS2020)快5倍,通信量是它的1/10,研究论文发表于USENIX'Sec2022,针对工业应用问题的成果能够被顶会收录还是比较少有的。

1.技术背景:神经网络推理

针对一张图片,有一个模型可以智能地告诉我们这个图片是什么内容。简单任务如手写的数字是什么,大约只需要3-5层的神经网络就可以解决。但是针对CIFAR这类相对复杂的数据集,分辨一张32×32像素的彩色图片中到底是飞机、还是鸟、还是猫,则需要10层以上的神经网络才能得到较好的效果,如果用简单的3-5层网络,那么准确率会很低无法完成任务。



比较接近生活的是IMAGENET,它是224×224像素的彩色图片,一般实战中的人脸识别就是这个级别,需要ResNet50层以上的网络,参数会达到几百万量级。可以看到,一般需要大规模的神经网络才足以解决现实生活中的问题。


2.技术背景:安全神经网络推理

假设有这样一种情景:Alice拥有神经网络模型,Bob拥有图片但是没有模型。现在Bob需要调用Alice的模型对自己的图片进行分类。这种情景是存在于生活中的,其中涉及一项安全需求:Alice的模型是Alice的隐私,Bob的图片是Bob的隐私,均不能向对方泄露。



对此,工程中存在两种解决方案:一种是Bob下载模型,但此路不通,因为Alice要保护隐私不允许模型下载;第二种解决方案是Bob将图片发至服务器,这也不满足隐私条件,Bob觉得自己的图片隐私被泄露了。安全神经网络推理就是解决这个两难问题:既不需要下载模型,也不需要将图片发至服务器,通过运行一个安全两方计算协议来解决这个问题。


那么当前业界针对这一问题的研究进展如何?



目前有完全基于全同态FHE的方案,如CryptoNets(微软,ICML16)、Lola(微软,ICML19)。但是,全同态方案的功能存在瓶颈,因为现在全同态技术只能运算加法与乘法,难以精确计算ReLU,如果通过多项式计算的近似ReLU其准确率无法满足。如果使用TFHE其计算性能又太低。综合这些问题,目前最多支持到十几层网络,也就是判断CIFAR级别的小图。目前全同态也还不能支持ResNet级别的网络,甚至短期内很难有所突破。



还有基于混合协议的安全多方计算方案,基于同态+OT+混淆电路等,且此方案的功能也比较完善,可以执行比特分解之类的协议,ReLU、MaxPool等算子都可以实现,并且微软相关研究已经实现了ResNet50级别的网络。然而,这种方案不同于全同态,通讯往返甚至可能到达几千次来回。此外,其性能也有待改进,如微软的CryptFLOW2大约需要500-900秒,且通信量达到32G,实际中使用依旧比较困难。


3.Cheetah创新点1:快速卷积

针对神经网络推理的改进。卷积是神经网络非常关键的部分,ResNet50有49个卷积层。

卷积中的一次过滤 = 向量内积

整个图片的一次卷积 = 矩阵-向量乘



我们要解决的就是“矩阵-向量乘”的问题。观察可以发现,矩阵向量乘与多项式乘同源,如下图右侧:矩阵×向量等于18、26,把矩阵变换为多项式,将向量代入多项式中,再将两个多项式进行乘法,18与26就是其中某个系数,我们只要把这个系数选出来就可以完成矩阵、向量乘。



正好我们也发现,现在Ring-LWE(如BGV)加密,支持多项式同态计算。所以可以利用这个原理,Bob将他的图片编码为一个多项式,用Ring-LWE加密多项式发给Alice,Alice也将她的模型编码为一个多项式,然后计算密文多项式乘以明文多项式,得到一个密文结果,再将卷积的两项从其中选出,得到卷积的结果。


卷积的结果还要继续执行接下来的计算,不能执行解密,所以要把它变成Secret share的方式,将加密内容减去一个随机数发给Bob,如此Bob的解密结果还是随机数。但是不同的是,我们现在得到了卷积结果的Secret share形式,这个形式可以继续进行下一层的MPC计算,它没有任何信息泄露,这是就是Cheetah的第一个创新点“快速卷积”。



快速卷积就是利用Ring-LWE与卷积层的天然结合,大大提升了性能。对比微软CryptFLOW2大概需要20+秒的性能,Cheetah只需1-2秒,且通信量更少,这是Cheetah卷积层的创新。


4.Cheetah创新点2:Silent OT

安全两方计算中的非线性操作(如Sigmoid/ReLU等)一般需要使用OT/GC实现,并且CryptFLOW2已经证明OT优于GC。CryptFLOW2使用的是IKNP-OT系列方案(来自于Crypto03,CCS13)。



但自CCS19起,学者提出了一系列新一代Silent OT方案如我国学者杨糠发明的Ferret(CCS20)以及国外的Silver(Crypto21)等,它的通信量远低于IKNP-OT、计算量稍高于IKNP-OT。将其用好并不容易,直接将已有协议中的IKNP-OT替换为Silent OT并不能取得提升(SIRNN,SP21),因为仅靠简单替换计算量又会凸显,所以需要结合其他的创新点,不能简单以黑盒模式替换成Silent OT。


5.Cheetah创新点3:truncation

MPC下很难表示浮点数,一般需要使用带Scale(精度)的定点整数来表示小数,如MPC中没办法表示0.5,必须将其乘以Scale 2^15,用16384来表示0.5。但这样的问题是,乘法会让数字增大一个 scale 的量级,如要表示0.5×0.5的话,就会变成16384 ×16384=268435456=0.25×2^30。多次相乘后,结果就会溢出MPC的表示范围(如2^64)。



所以必须设计一个协议,将秘密分享的密文截断 scale 倍,以维持 scale 不变。如将268435456截断15比特,才能变回0.25。那么如何截断呢?SecureML(SP17)、DELPHI(USENIX’Sec20)中设计了一种本地截断方案:将两个Secret share分别砍掉15比特,就能视为总体砍掉了15比特。但这种方案本身有小概率出错,但如果在ResNet几百万参数级别中使用,基本上错误是必现的,并不可行。CryptFLOW2设计了一个没有错误的截断方案,但成本高昂:运行发现在整个神经网络推理中,截断占据的时间高达50%以上。



CryptFLOW2的截断成本花在哪?如上图,2个Share本地截断加2个修正才能得到真正的截断结果,然而其中1个修正没有必要,所以只保留有意义的修正,以降低截断成本,此时再Silent OT,如此便能得到非常显著的提升。并且实验证实1bit错误对NN推理结果没有影响,如下图,Cheetah(豹纹条柱)的准确率与CryptFLOW2(斜纹条柱)的准确率相同。1bit错误大概影响到小数点后第4~5位。



而且,如果要截断的数是正数(如sigmoid或ReLU的结果肯定是正数)则性能可以进一步提升。简单来说,我们的截断协议相较原本提升了12倍~88倍(如果是正数就是88倍)。



6.Cheetah其他创新点

根据Silent OT优化的比较协议

RLWE密文压缩方法

Batchnorm fuse


7.最终性能对比

综合了多项创新后,Cheetah相比于CryptFLOW2,在同网LAN和跨网WAN性能下都提升了数倍。



如上图,均使用英特尔的指令加速后,Cheetah在同网下只需80秒就可以完成人脸识别,即使在跨网下(大概200~300兆的带宽),也只需要100+秒就可以完成识别,并且没有使用任何硬件加速,也没有使用神经网络参数裁减之类的优化,如果都使用将有希望达到1秒之内完成安全的人脸识别,这也是未来的一项工作计划。


2.Cheetah+隐语中的价值意义


1.Cheetah+隐语价值1:去除MPC中的第三方依赖

现在有很多开源框架,但基本上都是三方计算框架,需要第三方来生成三元组(Beaver triple)做安全乘法,是一个Honest Majority协议,即第三方必须保持中立,不能与其他任何一方串通。第三方于其中一方串通就可以盗取另一方的数据。这种开源框架的使用存在局限性,因为业界的隐私计算需求更多是两方的场景,一方是数据提供方(想出售数据使用权),一方是数据消费方(缺少数据)。两方需求很难用三方框架来满足,因为很难找到一个大家都信服的机构来扮演裁判第三方。



猎豹就是一个纯粹的两方计算协议,Cheetah为隐语提供了纯两方计算能力,不需要寻找第三方就可以完成隐私计算,并且在带宽小于300Mbps时,性能与第三方辅助的计算相接近,大概1-2倍的差距,这个时候已经完全没有必要使用安全第三方了。


2.Cheetah+隐语价值2:支持通用计算

Cheetah是特定方案,是解决神经网络推理的,如卷积协议都是为神经网络推理而生的。有些优化是共通的,比如Silent OT、Ring-LWE技术。如果想用猎豹来完成其他任务,比如做一个逻辑回归等则需要额外的工作。隐语就是一个通用的隐私计算框架,猎豹+隐语可以满足更多的用户需求场景,让更多的用户用上猎豹的创新技术,从特定走向通用。



3.猎豹在隐语中的实现


1.非线性算子实现

非线性算子底层基于EMP-toolkit开源库的Ferret RCOT,基于Ferret衍生出各种OT Primitive,上层的Sigmoid、ReLU等就可以调用这些OT Primitive 。



2.线性算子实现

在线性算子方面,我们使用RLWE生成自定义大小的(矩阵)乘法三元组,是基于微软SEAL的魔改版。为了更具备通用性,与Cheetah原论文的系数编码多项式的设计有所不同,因为它是为了通用的triple而生,而不是去做卷积。底层基于SEAL魔改版,将矩阵编码到多项式上,计算矩阵乘向量,生成Beaver triple来做乘法。



3.如何在隐语中使用猎豹

非常简单,只需要在协议中设置协议类型为猎豹即可。C++设置Protocol_kind=4,Python写为"Protocol": "Cheetah"即可。上层应用代码是无需改动的。


如此方便得益于阿里与蚂蚁同学的辛苦研究和开发。上层的Pytorch语言会被编译成一种独有的SecretFlow内部语言,这种语言会被转化成各个底层算法去运行,如果配置文件设置的是猎豹,就会自动转移到猎豹中运行。另外,猎豹已经写好了加法、乘法等各种操作,所以可以自动转移不会产生任何问题。



总结一下,猎豹是阿里在隐私计算方面的关键技术突破,在安全两方计算领域达到世界领先水平,并且Cheetah已经嵌入隐语框架,用户可以便捷地使用。欢迎有两方计算需求的用户使用猎豹+隐语,并提出宝贵意见。谢谢大家!


相关文章
|
Ubuntu 调度 Docker
2024.3.21隐语训练营第4讲笔记:SecretFlow & SecretNote安装部署
本文介绍了SecretFlow和SecretNote的安装和部署
911 3
|
机器学习/深度学习 存储 安全
隐语小课 | 基于秘密分享的混合比特数学运算库-SIRNN介绍
隐语小课 | 基于秘密分享的混合比特数学运算库-SIRNN介绍
710 0
|
机器学习/深度学习 并行计算 安全
安全多方计算之一:什么是安全多方计算
安全多方计算之一:什么是安全多方计算
1632 0
|
机器学习/深度学习 安全 算法
担心prompt泄露隐私?这个框架让LLaMA-7B完成安全推理
担心prompt泄露隐私?这个框架让LLaMA-7B完成安全推理
720 0
|
数据采集 缓存 安全
隐语小课|非平衡隐私集合求交(Unbalanced PSI)协议介绍
隐语小课|非平衡隐私集合求交(Unbalanced PSI)协议介绍
1543 0
|
安全 算法 Oracle
「隐语小课」Blazing Fast PSI 协议解读
「隐语小课」Blazing Fast PSI 协议解读
1589 0
四步教你快速解决UE5文件迁移失败❗️
不知道大家在用UE5迁移文件时,有没有发现这个问题:如果文件输出的路径选择了非项目路径,那么UE会提示无法迁移。在UE4中,这样做是不存在问题的,只要选择「忽略」就可以继续完成。但UE5会一直提示此对话框,如果不能快速找到解决方法,是非常浪费大家时间的。与大家分享我们发现的四步快速解决UE5文件迁移报错的方法~
|
缓存 JavaScript 前端开发
拿下奇怪的前端报错(三):npm install卡住了一个钟- 从原理搞定安装的全链路问题
本文详细分析了 `npm install` 过程中可能出现的卡顿问题及解决方法,包括网络问题、Node.js 版本不兼容、缓存问题、权限问题、包冲突、过时的 npm 版本、系统资源不足和脚本问题等,并提供了相应的解决策略。同时,还介绍了开启全部日志、使用替代工具和使用 Docker 提供 Node 环境等其他处理方法。
12128 2
|
缓存 前端开发 NoSQL
设计与实现个人博客系统的技术架构与最佳实践
设计与实现个人博客系统的技术架构与最佳实践
|
存储 算法 安全
「隐语小课」伪随机相关生成器与 OT/VOLE
「隐语小课」伪随机相关生成器与 OT/VOLE
2576 0

热门文章

最新文章