智东西54页PPT全解联邦学习中的同态运算与密文传输【附PPT下载】( 三 )


智东西54页PPT全解联邦学习中的同态运算与密文传输【附PPT下载】
本文插图
刚刚可以看到 , 同态上它主要是支持加法和乘法 , 但总会有一些公式不是加法和乘法 。 比如逻辑回归算法 , 会用到e的x次幂的计算逻辑 , 那怎么办?比较好的方法是把进行泰勒展开 , 这样可以把它变成多项式的运算 , 那里面只有加法、减法和乘法以及平方 , 对于梯度也可以进行类似的操作 。 可以看到进行这样转换时 , 会有一些近似 , 不过研究表明只要到2次项就已经有足够的精度 , 相关更多的研究可以参考上图中的论文 , 上图左边可以看到拟合的效果 , 由于泰勒展开式是在零点处展开 , 也就是在零点附近它的误差特别小 。 如果在机器学习中有常见的归一化方式 , 对它进行归一化 , 可以认为对精度没有影响 , 而实际的实验也证明确实是这样 。 这也是为什么使用联邦学习进行多方数据的机器学习 , 跟把数据放在一起进行机器学习效果基本上是等同的 。
智东西54页PPT全解联邦学习中的同态运算与密文传输【附PPT下载】
本文插图
前面提到怎么样解决复杂函数计算的问题 , 但还有一个问题是同态的乘法 。 就是刚刚提到选择用效率更高的部分进行同态计算 , 但是它只支持标量的乘法 , 比如计算左边的loss时 , 会发现这里面有一个(wT*x)的平方 。 那对于两方来说 , 即Ua和Ub , 要进行一个平方的计算 。 这里可以简单的把平方展开 , 得到上图所示的第三个公式 。 这时可以把A方的数据发给B方 。 因为A方是密文 , 发给B方是没有风险的 。 B方会对数据进行计算 , 因为得到结果仍然是密文 , 所以它仍可以安全的去发给A方 。 因为这两方它们都是持有了公钥 , 所以它们是解不开这个数据 。 如果有什么时候拟合或什么时候迭代结束的标注 , 可以通过C方来进行协调 。
在这个过程中发现一轮迭代 , 其实是要发来发去有几次的计算 , 这里解决了一个部分同态加密深度的问题 。 一般来说传统的加密系统是有限制加密深度的 。 而部分同态 , 一旦做了乘法之后 , 已经变成一个密文 , 没法进行计算 , 可以通过这种方式来绕开这个问题 。
除了刚刚提到的机器学习算法 , 在这之前 , 还有很重要的一步是做ID的匹配 。 做ID匹配的核心步骤是求一个交集 , 并且求关键是希望安全的求交集 , 也就是对于参与方不知道对方的样本的情况下 , 我们希望样本不会被公开 。 比如A持有1234 , B持有1235 , 而对于4和5 , 双方都是不知道对方的数据 。 而传统的方案用的是哈希或者加盐 , 因为哈希是不可逆的 , 这样就可以得到一个交集 。 而实际上这种机制安全性太差 , 因为对于手机号或者身份证号这种容量不大的ID , 用很简单的方案就能够破解 , 而这里用的是RSA+哈希的机制 。
智东西54页PPT全解联邦学习中的同态运算与密文传输【附PPT下载】
本文插图
下面介绍下RSA+哈希的机制 , 首先是B方生成公钥和私钥的密钥对 , 它会把公钥发给A方 , A方会做类似于RSA的加密的过程 , 它加密时引入了ri , ri是一个随机数 , 最终结果会乘一个ID的哈希值 。 因为加入了ri , 把计算完的数据发给B方 , B方实际上得不到ID的任何信息 , 甚至连哈希值都得不到 。 有了数据之后 , 因为B方持有私钥 , 它会做类似于RSA解密的操作 , 然后会得到一个中间结果叫Za , 同时还要进行另外一个计算就是Zb , Zb的计算是把自己的一个数据进行哈希取模 , 然后再把私钥加进去 , 它把Za , Zb同时发给D方 , 看到Zb发送是安全的 , 因为Zb里面有d的因子在 , 所以A方是得不到任何结果的 。 但是A方拿到Za之后 , 观察这个公式可以发现 , 随机数ri它自己是知道的 , 所以可以消掉 , 经过这样消除的步骤之后 , 在A方时 , 它们可以通过同样的函数或操作两次哈希 , 得到一个相同的中间结果 。 但是A方不持有私钥 , 所以不知道具体的内容 。 但因为同一个ID进行相同的操作 , 得到结果一定相同 , 所以可以在这个基础上进行一个交集 。 交集之后把结果发给B方 , 这时就得到了一个最终的交集结果 , 并且数据不会涉及交集以外的隐私 。 这里的关键是A方发给B方时 , 数据里面有随机数 , B方不知道 , 而B方发给A方时 , 这个数据里面又有私钥 , 所以A方也不知道 , 所以通过多轮的数据的交换和加密 , 就可以实现算法达到安全的效果 。


推荐阅读