联邦学习 - 安全多方计算概述

463 阅读6分钟

安全多方计算(Secure Multi-party Computation,SMC)指的是在保护数据安全的前提下实现多方计算。

举个例子:假如我们需要计算班级每个学生的手机号数字加和(没错,就是这么无聊。。),但是某一个同学又不希望自己的手机号被别人知道,这个问题就可以用安全计算去解决。

安全计算主要的目的就是保护数据隐私,在联邦学习中等场景中很实用。

目前主要分为基于噪音的安全计算方法和不基于噪音的方法。基于噪音的安全计算方法主要代表是差分隐私 (differential privacy),通过对原始数据加噪音(也可以对模型的参数和输出加噪音),让攻击者无法根据计算结果反推原始数据,但是这种方法的缺点也很明显,即训练模型与正常训练结果相差较大。

非噪音方法是通过密码学的方法,对数据进行加密,看上去已经与原始数据无关,但是它们会保持某种性态,加密后的数据中与原始数据有一些关联。这一类方法主要包括:混淆电路(Garbled Circuit)、同态加密(Homomorphic Encryption)和秘密共享(Secret Sharing)但这一类方法也有明显的缺点,即联邦学习中的计算量会增大且每轮通信的数据量也会增大。

下面的内容仅为大家理解,所以没有相关算法的具体过程!!!

1.不经意传输(Oblivious Transfer,OT)

不经意传输(Oblivious Transfer,OT)是一种密码学协议。 可以简单理解为阿丽拥有两个漂亮室友的微信,此时,小明想要向阿丽要两个舍友中的一个的微信,但是小明又不想让阿丽知道他选的是哪一个,这时候他们就需要OT来完成这个过程。

参考:不经意传输(OT)-总结

2.差分隐私

差分隐私是用来防范差分攻击的,差分攻击就是通过本次模型上传参数和下一次的模型上传参数推断出原始数据。差分隐私即使通过加入噪音让攻击者无法推断的方法。

公式化的定义即:

Pr[M(x)S]eεPr[M(x)S]\begin{aligned}\text{Pr}[\mathcal{M}(x)\in S]\leq e^{\varepsilon}Pr[\mathcal{M}(x')\in S]\end{aligned}

其中M(x)是随机化函数(随机化是指每次输入相同得到的输出都不相同),x和x'是训练数据集,可以把x'想象成是x加入噪音后的数据集(也可以称为相邻数据集),即两个数据集差别很小。也就是说作用于任何相邻数据集,得到同样输出S的概率很大,无法根据解决推断出原始数据。

在网上还看到一种标准化解:随机噪声为r,最终查询的结果就是M(x)= f(x) + r ,其中f(x)是随机化函数。

关于详细的内容:差分隐私(一) Differential Privacy 简介

3.同态加密

同态加密(Homomorphic Encryption)是指将原始数据经过同态加密后,对得到的密文进行特定的运算,然后将计算结果再进行同态解密后得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果。

同态加密与一般加密方案的关注点不同,一般的加密方案关注的是数据存储安全,即我要给其他人发送信息或者存储信息,我需要对数据进行加密之后再发送和存储,这里我们只需要保证在数据传送和存储的过程中不被其他人窃听到即可,在这个过程中用户时不能对加密的结果做任何操作的,否则可能会导致解密失败

同态加密的关注点则是数据处理安全,同态加密提供了一种对加密数据进行处理的功能。也就是说其他人可以对加密后的数据进行处理,在这个过程中不会泄露任何原始的内容,在数据处理完成之后再进行解密,得到的正是对原始数据进行相同处理后的结果。

3.1 加密步骤

  1. (本地)生成一对公私钥,公钥pub和私钥priv,公钥用于加密,私钥用于解密;
  2. (本地)使用公钥pub分别加密m1和m2,得到Epub(m1)E_{pub}(m1)Epub(m2)E_{pub}(m2)
  3. (第三方)使用AddpubAdd_{pub}函数处理Epub(m1)E_{pub}(m1)Epub(m2)E_{pub}(m2),即Addpub(Epub(m1),Epub(m2))Add_{pub}(E_{pub}(m1),E_{pub}(m2))
  4. (本地)使用密钥priv解密Addpub(Epub(m1),Epub(m2)),即Dpriv(Addpub(Epub(m1),Epub(m2)))Add_{pub}(E_{pub}(m1),E_{pub}(m2)),即D_{priv}(Add_{pub}(E_{pub}(m1),E_{pub}(m2)))

Addpub(Epub(m1),Epub(m2)),即Dpriv(Addpub(Epub(m1),Epub(m2)))Add_{pub}(E_{pub}(m1),E_{pub}(m2)),即D_{priv}(Add_{pub}(E_{pub}(m1),E_{pub}(m2)))就等于m1+m2。第三方通过上述步骤3实现了m1和m2在加密状态下做加法的操作。

部分同态加密(partially homomorphic)

部分同态加密算法允许某一操作被执行无限次。例如,一个特定的算法可能是加法同态的,这意味着将两个密文相加会产生与加密两个明文之和相同的结果。

  • 加法同态:该加密方案支持的同态函数族为所有可以仅由加法实现的函数。目前使用比较广泛的是paillier加法同态。
  • 乘法同态:该加密方案支持的同态函数族为所有可以仅由乘法实现的函数。比如经典的RSA加密方案。

稍微同态加密(somewhat homomorphic)

有点同态加密算法可以对密文进行有限次数的任意操作,例如,某种程度的同态加密算法可以支持最多五种加法或乘法的任意组合。但是,任何一种类型的第六次操作都将产生无效的结果。

某种同态加密算法是实现完全同态加密的重要垫脚石。设计一个同时支持加法和乘法的算法(即使是支持一组数量的操作)的算法比创建一个允许无限加法或乘法密文的算法要困难的多。

全同态加密(fully homomorphic)

可以对密文进行无限次数的任意同态操作,也就是说它可以同态计算任意的函数

4. 秘密共享

秘密共享的思想是将数据以适当的方式拆分,拆分后的每一个份额由不同的参与者管理,只有若干个参与者一同协作才能恢复数据。

秘密共享有两个特点:

  • 单个参与者无法恢复数据;
  • 当其中任何相应范围内参与者出问题时,数据仍可以完整恢复。

秘密共享的目的是阻止数据过于集中,秘密共享能有效地防止系统外敌人的攻击和系统内用户的背叛。

秘密共享方案

秘密共享的关键是怎样更好的设计秘密拆分方式和恢复方式。目前的秘密共性方案有shamir方案,中国剩余定理(CRT),Brickell,Blakley等。

相关具体算法,大家可以搜索。

5.混淆电路

姚老力作!文字描述过于抽象,大家可以在网上找资料阅读。