两方安全推理DELPHI系统


本文是对于论文Delphi: A Cryptographic Inference Service for Neural Networks (from USENIX2020)的学习和浅显的总结,如有错误,还请指正。


背景介绍

本文两方安全推理的应用场景是卷积神经网络中的模型预测阶段。也就是最终模型训练出来后,模型作为服务提供给用户使用的阶段。
在这个阶段中一般有两种场景。

  1. 用户自己的私有输入数据发送给服务器进行模型的预测。此时用户的输入数据暴露给了服务器。
  2. 服务器把模型参数发送给用户,用户在本地进行模型预测。此时服务器的模型参数暴露给了用户。

在场景一中,用户不想把自己的私有输入数据暴露给服务器,以免暴露自己的隐私。在场景二中,服务器不想把自己的辛苦训练出来的模型直接发送给用户,这相当于直接把模型买给了用户,而用户之后都不需要使用它的服务,显然不划算。


预备知识

这篇论文中使用了以下知识,下面进行相关介绍。

不经意传输OT

In cryptography, an oblivious transfer (OT) protocol is a type of protocol in which a sender transfers one of potentially many pieces of information to a receiver, but remains oblivious as to what piece (if any) has been transferred.
这里引用wiki百科对OT的定义。

OT的作用:发送方发送他拥有的众多消息中的其中一个给接受方,但是他并不知道接收方接受了那一条消息。同时接收方除了他想要接受的消息外,对其他消息的内容一概不知。

这边使用(1-2)OT对不经意传输进行具体的描述。
1-2 oblivious transfer
要求(目的): Alice为发送给方,她拥有两个消息m0和m1。Bob为接收方,他想接受其中一个消息但是不想Alice知道是那条消息,且Bob也不知道另外一个消息的内容。
步骤

  1. Alice产生一个RSA秘钥对,其中公钥为(N,e)私钥为(φ(N),d) (关于RSA的介绍RSA-wiki)
  2. Alice对于要发送的两个消息生成对应的随机数x0,x1,用于代表两个消息。Alice把这两个随机值发送和她的公钥发送给Bob
  3. Bob在0,1中选择一个赋值给b,选择想要的消息xb;
  4. Bob产生一个随机数k,使用k对xb的密文进行遮掩;计算v=(xb+ke) mod N;把遮掩后的密文发送给Alice
  5. Alice使用自己的两个随机值x0,x1对v进行去遮掩解密。获得k0,k1,其中Alice不知道k0,k1那个是kb
  6. Alice使用得到的两个k对消息进行遮掩,并发送给Bob。
  7. 由于Bob知道自己的随机数k所以可以正确解密消息mb,但是由于不知道Alice的私钥d所以不能正确解密另一个消息m1-b

混淆电路GC

定义:混淆电路是一种加密协议,它可以实现双方的安全计算,在这个协议中两个互不信任的参与方可以在他们的私有输入上共同求一个函数值,且不需要信任的第三方在场。
在混淆电路协议中,被求值的那个函数被描述为布尔电路。

下面通过对一个简单的电路进行混淆电路的说明。
使用的这个电路是一个与门(&)电路,两个输入方(Alice和Bob)。
与门电路

混淆电路大致分为两部分,混淆目标电路和通过被混淆的电路求值。
混淆(Garble)

  1. Alice对每个线路的输入值产生混淆标签(如线路wa的输入为0、1,对应的标签为Xa0,Xa1),x通常为128的比特串
  2. Alice使用混淆后的标签对线路的输入进行代替。
  3. Alice使用混淆后的输入标签对结果标签进行加密。使用的加密方法为双钥对称加密Enc(x1,x1-b,xc)。
  4. Alice混淆后的真值表进行行置换并发送给Bob。这个真值表相当于混淆后的函数。

在混淆后,Bob只知道这个混淆函数,但是不知道每个线路的输入值所代表的混淆标签。他自己的输入数据也需要通过Alice来获取自己的混淆标签。

求值(Eval)

  1. Alice把它的输入数据对应的混淆标签发送给Bob。
  2. Bob通过(1-2)OT发送自己的输入数据给Alice获取数据对应的混淆标签。
  3. Bob通过Alice和自身的混淆标签对混淆表进行解密,获取最终结果对应的混淆标签。(可以认为是对混淆电路进行输入获取混淆后的最终值)
  4. 对最终结果去混淆。可以有两种方法:①Bob把最终结果发送给Alice,Alice把结果对应的真实值发回给Bob;②Alice把结果标签的映射发送给Bob,Bob获取真实结果后发回给Alice。

线性同态加密LHE

同态加密: 如果加密算法En满足,En(m1) * En(m2) = En(m1 * m2), ∀m1,m2∈M, M为一组明文,则称En为*运算符上的同态加密。
线性同态加密: 在密文上支持线性操作的同态。
线性运算包括矩阵的线性运算,向量的线性运算。简单来说就是加法和乘法。

加法秘密共享ASS

秘密共享(秘密拆分): 指在一个群体中拆分秘密的方法,通过这种方式没有人可以通过自己的秘密份额解出秘密,但是当结合的秘密份额足够多时,秘密可以被重建。

这里介绍shamir秘密共享方案
我们有一个t-1的多项式函数q(x)=a0+a1*x+a2*x2+…+ at-1*xt-1
易知,我们如果有t个不同的点就可以解出q(x)。
其中我们把a0设置为我们的秘密S。
秘密拆分:取q(x)曲线上的n个点(xi,yi)给参与方Pi
秘密重建:收集大于等于t个以上不同的点解出q(x);

此处使用的加法秘密共享则更加简单。
秘密拆分:通过使用一个随机数把秘密s拆分成两份(r,s±r)。
秘密重建:两方同时参与则可以重建秘密。

乘法三元组BMT

由1995年D.Beaver提出的,是一种用于安全高效的计算两个秘密的相乘方法。在这篇文章中用于计算秘密的二次多项式近似,减少计算开销。
乘法三元组分为两个过程:产生乘法三元组,三元组相乘。
Generation
产生两个随机秘密[a],[b];
对于这两个秘密每个参与方随机产生两个秘密份额[a]_i,[b]_i;(此处使用的秘密共享方案可以是ASS或者shamir方案)
通过安全的乘法协议(LHE,OT)进行秘密相乘:[c] = [a] * [b]

Multiplication
input:beaver triple [a], [b], [c], 需要进行计算的秘密[x], [y]
output:[x * y]
计算[d] =[x] - [a], [e] = [y] - [b]
解密d 和 e
所有参与方P_i 计算[x * y]_i = d * e + d * [b]_i + e * [a]_i + [c]_i

在这篇文章中乘法三元组与加法秘密共享共同使用,最后两方生成的还是关于原始秘密份额生成的两份新的秘密份额。


Delphi介绍

Delphi系统是对于卷积神经网络的安全推理。下面简单介绍一下安全推理的要求。
由于现在卷积神经网络是由许多层组成的,每一层包含一个线性子层和非线性子层。
所以对于安全推理系统的要求有两点:

  1. 构建有效的自协议来计算线性和非线性子层,对双方都需要保密,且计算需要较为高效。
  2. 需要把线性层和非线性层之间的中间结果给串联起来。

Delphi是在Gazelle安全推理方案的基础上开发出来的。借鉴Gazelle的原因是因为Gazelle在Delphi之前是用于卷积神经网络最好的安全推理方案。下面对Gazelle进行简单介绍。

Gazelle介绍

Gazelle使用线性同态加密的方案计算线性层,能够直接对密文执行线性运算(方便线性层执行,不需要解密)。使用混淆电路来计算非线性层中的ReLU所需的按位计算(对于非线性层计算也不需要解密,仅面向于使用ReLU的非线性层网络)。通过使用加法秘密共享技术在线性和非线性层之间计信高效的链接。

对于Gazelle的改进

线性层
将部分LHE和SS的密码计算过程移到了预处理阶段,减少了线性层的通信成本,降低了用于在使用在线预测系统的延迟。
非线性层
使用多项式近似的方法代替ReLU函数的计算,使用的多项式为二次多项式,降低了计算成本和通信成本。
中间的二次多项式的计算使用Beaver乘法三元组的方法进行计算,保证中间结构的隐私安全。

缺点
使用二次多项式对于ReLU函数的近似会降低模型预测的精度。
解决方法
使用planner规划程序判断那些非线性层可以较好的使用二次多项式近似。在保证模型预测的精度下最大程度降低计算和通信成本。

Delphi详细介绍

Delphi系统组成

  • 混合密码协议
    • 预处理阶段
    • 在线预测阶段
  • planner规划程序

混合密码协议是用于处理模型预测过程。planner用于确定那些非线性层可以是使用二次多项式近似,减少通信和计算成本。

预处理阶段

  1. 客户端产生同态加密所需秘钥对。把公钥发送给服务器。
  2. 对于每一层客户端和服务器产生随机数ri,si。(此处把卷积神经网络中的每次线性和非线性看成两层)
  3. 客户端把每层的随机数ri加密发送给服务器,服务器通过LHE中的Eval程序对密文进行运算,产生Mi*ri-si的密文,并把密文发送给客户端。(Mi*ri-si在在线预测阶段需要用到,在预处理阶段计算出来,节省了在线预测阶段的计算和通信成本,同时降低了系统延迟,其中Mi为每层模型参数)
  4. 客户端对密文解密,获得每层的Mi*ri-si。(对于每层的Miri客户端和服务器是满足加法秘密共享的,保证模型参数和用户随机数的隐私性)
  5. 非线性层的预处理:(由于非线性层可能为两种不同类型,所以需要两种不同的处理方式)
    • ReLU函数:对于ReLU函数使用混淆电路进行混淆计算。其中被混淆的电路C(函数)在后面讲解。服务器把电路C进行混淆产生混淆电路C*,并发送给客户端。服务器和客户端通过OT交换ri+1和Mi*ri-si的所对应的混淆标签,方便客户端在在线预测阶段进行混淆电路的计算。
    • 多项式近似:服务器和客户端产生对应的乘法三元组,方便在线阶段进行多项式的近似计算。

被混淆电路(用于解密中间结果用于计算ReLU函数)
初始化:产生一个一次随机秘钥
输入:Mi ri - si, Mi (xi - ri) + si,ri+1
计算步骤
1. 计算Mixi=Mi(xi-ri)+si+(Miri-si); (此处是一个加法秘密共享的解密)
2. 计算ReLU(Mixi)获取非线性层的计算结果xi+1,同时也是下一层的输入数据。
3. 计算xi+1-ri+1,输出OTP(xi+1-ri+1)加密结果。(其中由于是在服务器端进行的混淆,所以服务器掌握了解密所需秘钥)
OTP(one time pad)代表一次性加密。

在线预测阶段

初始化:客户端根据私有输入数据x和随机数r1(即第一层随机数)把x-r1发送给服务器用于对模型输入。
层计算(Layer evaluation):分为线性层和非线性层。其实就是模型的预测过程,对模型每层进行计算。
线性层:服务器计算Mi(xi-ri)+si。Mi为第i层的模型参数,si为第i层的服务器随机数,xi为i层输入数据。计算结果会被用来在电路C中进行解密计算。
非线性层:有两中不同的处理函数,ReLU和多项式近似。

  • 已知:服务器拥有Mi(xi-ri)+si,客户端拥有Miri-si
  • ReLU:通过混淆电路计算。
    1. 服务器把Mi(xi-ri)+si所对应的混淆标签发送给客户端。
    2. 客户端通过预处理阶段所获得的ri+1和Mi*ri-si对应的混淆标签和上一步服务器发送的标签代入混淆电路中,获取输出加密结果OTP(xi+1-ri+1)。并把结果发送给服务器。(xi+1-ri+1是服务器进入下一层协议的输入数据)
    3. 服务器使用一次性秘钥(OTP key)对密文进行解密。
  • 多项式近似
    1. 服务器和客户端使用乘法三元组的乘法程序求多项式的近似值。执行完程序后客户端和服务器分别拥有了[xi+1]1,[xi+1]2
    2. 客户端计算[xi+1]1-ri+1,并发送给服务器。服务器计算[xi+1]1-ri+1+[xi+1]2获得xi+1-ri+1

Planner程序

planner程序是为了找到合适的非线性层使用多项式近似去代替ReLU函数,相当于找到一个合适的神经网络架构去降低模型成本,所以使用了神经架构搜索NAS(neural architecture search)的算法。具体算法使用的是PBT(Population-based training)
程序输入:神经玩了个架构N,训练数据D,精度阈值t (D可以直接使用网上的公共数据集,判断精度可以通过原模型进行对比)

  1. 令n等于模型N中所有非线性层数
  2. 初始化神经网络输出集F
  3. 程序描述:for i in {n/2,…,n}
    (1) 通过PBT算法计算模型中有i个多项式近似非线性层的最好模型架构集合Si
    (2) 优化Si中模型架构的超参数,获的Si
    (3) 如果任何模型Nj∈Si’,其精度小于t,则放弃
    (4) 取模型架构集合Si’中评分最好的模型架构为Ni
    (5) F=F∪{Ni}
  4. 输出模型架构集合F

具体实现
密码协议使用Rust和C++实现,使用的库有SEAL和fancy-garbling library;
Planner使用Python实现,算法NAS:PBT

实现代码

  • 线性同态加密LHE:“Microsoft SEAL (release 3.3)”. https : / /github.com/Microsoft/SEAL. Microsoft Research, Redmond, WA.
  • 混淆电路GC:https://github.com/GaloisInc/fancy-garbling/
  • PBT (NAS算法):R. Liaw, E. Liang, R. Nishihara, P. Moritz, J. E.Gonzalez, and I. Stoica. “Tune: A Research Platform for Distributed Model Selection and Training”. In:
  • Gazelle:https://github.com/chiraag/gazelle_mpc

参考方案

Gazelle
C. Juvekar, V. Vaikuntanathan, and A. Chandrakasan. “GAZELLE: A Low Latency Framework for Secure Neural Network Inference”. In:USENIX ’18.

混淆电路GC
A. C. Yao. “How to Generate and Exchange Secrets (Extended Abstract)”. In: FOCS ’86.
M. Bellare, V. T. Hoang, and P. Rogaway. “Foundations of garbled circuits”. In: CCS ’12.

线性同态加密LHE
T. Elgamal. “A public key cryptosystem and a signature scheme based on discrete logarithms”.In: IEEE Trans. on Inf. Theory (1985).
P. Paillier. “Public-Key Cryptosystems Based on Composite Degree Residuosity Classes”. In:EUROCRYPT ’99.

不经意传输OT
M. O. Rabin. “How To Exchange Secrets with Oblivious Transfer”. Harvard University Technical Report 81 (TR-81).
S. Even, O. Goldreich, and A. Lempel. “A Randomized Protocol for Signing Contracts”. In:CRYPTO ’82.
Y. Ishai, J. Kilian, K. Nissim, and E. Petrank.“Extending Oblivious Transfers Efficiently”. In:CRYPTO ’03.

乘法三元组BMT
D. Beaver. “Precomputing Oblivious Transfer”.In: CRYPTO ’95.

多项式近似
R. Gilad-Bachrach, N. Dowlin, K. Laine, K.Lauter, M. Naehrig, and J. Wernsing. “CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy”. In:ICML ’16.
J. Liu, M. Juuti, Y. Lu, and N. Asokan. “Oblivious Neural Network Predictions via MiniONN Transformations”. In: CCS ’17.
P. Mohassel and Y. Zhang. “SecureML: A System for Scalable Privacy-Preserving Machine Learning”. In: IEEE S&P ’17.
E. Chou, J. Beal, D. Levy, S. Yeung, A. Haque, and L. Fei-Fei. “Faster CryptoNets: Leveraging Sparsity for Real-World Encrypted Inference”.ArXiV, cs.CR 1811.09953.
Z. Ghodsi, T. Gu, and S. Garg. “SafetyNets: Verifiable Execution of Deep Neural Networks on an Untrusted Cloud”. In: NIPS ’17.

NAS&超参数优化
T. Elsken, J. H. Metzen, and F. Hutter. “Neural Architecture Search: A Survey”. In: JMLR(2019).
M. Wistuba, A. Rawat, and T. Pedapati. “A Survey on Neural Architecture Search”. ArXiV,cs.LG 1905.01392.

PBT
M. Jaderberg, V. Dalibard, S. Osindero,W. Czarnecki, J. Donahue, A. Razavi, et al. “Population Based Training of Neural Networks”. ArXiV,cs.LG 1711.09846.


论文中的疑问

  1. 并没有说具体描述使用的同态加密为什么方案
  2. 没有详细说明线性层的计算过程
  3. 多项式是如何近似ReLU函数的
  4. 乘法三元组的执行过程
  5. planner的具体过程不太清楚
  6. 对于如何使用OT交换混淆标签

其中一些疑问应该可以在论文的参考文献中找到答案,但是由于时间原因目前可能不能继续看了,后续如果有时间会进行阅读然后把我认为可能的答案写下来。如果评论区有大神解答,在此拜谢。

(本人学术菜鸡,如有错误,还请指正)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值