代码
联邦学习 | 无处不在的隐私泄露!

联邦学习 | 无处不在的隐私泄露!

联邦学习 | 无处不在的隐私泄露!

作者AI安全Mr.Jin来源:知乎

相信看过上一篇内容的同学已经对联邦学习的背景和算法思想有了概念,总结起来就是:数据不动模型动。但是,本地数据不出端就能防止隐私信息泄露吗?那可不一定!

比如说,可以进行人机对话的GPT2模型,竟然被“诱导”说出来某些网友的姓名、电话号码和地址!https://mp.weixin.qq.com/s/n1jjFzVkGFT4x7P9D9JnZg

接下来给大家介绍两种窃取数据隐私的攻击方法。

网络图片,侵删

1,模型逆向攻击

在联邦学习过程中,客户端是需要向Server发送本地训练后的模型权重的。由于模型权重是基于本地数据集进行训练的,所以它或多或少会携带本地数据集的信息。一旦模型权重在传输过程中被截取,那么攻击者就可以根据模型权重推测出训练数据集的相关信息。例如,有人提出了这么一种模型逆向攻击,可以根据模型权重还原出训练样本[1]!这种攻击方法的大概过程如下:

假设在某一轮,Server下发给Client的模型权重是 w0 ,Client把 w0 更新到自己的模型上之后,利用本地的数据集(假设是1张图片) x0 和标签 y0 进行训练,得到模型的更新梯度

∇w=∂loss(f(w0,x0),y0)∂w

其中 f(w0,x0) 表示模型对于 x0的预测值, loss(f(w0,x0),y0) 表示预测结果和真实标签对比的损失值, ∂loss∂w 表示损失函数关于模型参数求导,一般的AI计算框架会提供接口计算 ∇w 。

此外,攻击者也参与了联邦训练(这意味着攻击者也持有 w0 ,并且知道 x0 的形状),并且截获了 ∇w ,他现在要按如下步骤来还原Client的本地数据 x0 :

step 1,攻击者随机初始化一个与x0 的形状相同的初始输入 xinit 和初始标签 yinit ,然后构建一个损失函数

loss(xinit,yinit)=||∂loss(f(w0,xinit),yinit)∂w−∇w||2

其中 ||x||2 表示求 x 的2-范数。

step 2,攻击者当然希望 loss(xinit,yinit) 能尽可能地小,这样的话才能说明 xinit 接近于 x0 , yinit 接近于 y0 。那么怎么去调整 xinit 和 yinit 呢?也可以根据“梯度方向是函数增长最快的方向”,这样调整:

xnew=xinit−η∂loss(xinit,yinit)∂xinitynew=yinit−η∂loss(xinit,yinit)∂yinit

其中 η 是学习率。计算完之后,另 xinit=xnew,yinit=ynew 。把step 2迭代进行多次后, xnew 和 ynew 会逐渐向真实值 x0 和 y0 靠近——攻击者的目的达到了。一般为了加快攻击速度,可以先猜测标签 y0 的值,然后调整 xinit。看一下攻击的效果:

图片数据攻击效果[1]

可以看到,经过500次迭代之后,图片都几乎被还原了!除了图片数据集,文字数据也可以被还原:

文字数据集攻击效果[1]

所以说,不要以为数据不出端,你的隐私信息就稳了!

网络图片,侵删

除了模型逆向攻击,还有一种窃取隐私信息的方法叫做成员推理攻击。

成员推理攻击

成员推理攻击是用来判断某个样本是否属于目标模型的训练数据集,从而得知该样本的一些集体属性。比如说,某医院根据一批患者的症状训练了一个机器模型,并且把这个模型公开给了大家用;而我手里有某个人的生理特征,那么我可以利用成员推理攻击来推测这个人的数据是否被用于训练医院发布的模型,从而知道他是否去医药看过这个病。

一种比较经典的成员推理攻击是这样的:被攻击的目标是一批隐私训练数据集和利用这批训练集训练出来的模型。攻击者会通过白盒窃取或者黑盒探测的方式得到和目标模型的结构、参数都相似的影子模型,然后生成和目标数据集分布相似的仿真数据集,最后用影子模型和仿真数据集训练一个分类模型,这个分类模型可以根据某样本经过目标模型的输出来判断它是否属于目标训练数据集。当然,在真实场景中,影子模型和仿真数据集的逼真程度都不是很高,所以成员推理攻击大多时候是作为一个测试方法,评估模型训练过程的隐私泄露程度。

其实当一个AI模型具备了分类预测、生成语句的能力的时候,已经表明它存储了很多知识,这些知识又不可避免地包括了一些训练样本的个体信息。如何让AI模型学习到通用知识又不保留个体信息,是我们要解决的一个问题!

参考

  1. 1.Deep Leakage from Gradients https://arxiv.org/pdf/1906.08935.pdf

MindSpore官方资料

官方QQ群 : 486831414

官网https://www.mindspore.cn/

Gitee : https : //gitee.com/mindspore/mindspore

GitHub : https://github.com/mindspore-ai/mindspore

论坛https://bbs.huaweicloud.com/forum/forum-1076-1.html