Press "Enter" to skip to content

HBC隐私攻击

 

前言

 

一般的机器学习系统应用于分类任务时,就是给定一个测试样本,然后返回一个标签,或者说是属性。比如对于 MNIST 来说,就是给一张手写体数字图像,分类器返回 0~9 中的一个数字。但是对于其他的一些数据集,情况就没有这幺简单了,比如对于一个可以分析人类表情的机器学习系统,输入的是一张人脸,它会返回高兴或者难过,但是除此之外,人脸数据实际上还包含一些其他属性,比如性别、年龄、种族等。如果涉及到一些敏感属性的话,那可能就会带来严重的隐私风险。

 

那幺作为攻击者,是否可以训练出这幺一种分类器:它的输出不仅可以用于推断目标属性,而且还会秘密携带有关用户数据的敏感属性的信息。

 

如下图所示

 

 

假设存在一个服务器,该服务器为其用户提供对针对已知目标属性 训练的分类器的访问权限。设用户的数据 x( 比如人脸 ) 包括目标属性 y( 如年纪 ) 和敏感属性 s( 如种族 ). 由服务器提供的分类器会估计 y ,用户会得到分类器返回的 y^. 但是,作为攻击者,不仅可以训练模型使其给出关于 y 的准确估计,同时当其输入给攻击 G 的时候, G 可以推断出敏感属性 s 。图中的 (1)(2) 表示的是两种不同的场景,即不论分类器给出的是原始的输出还是软输出。

 

本文要分析的工作来自 CCS 2021 ,名为 Honest-but-Curious Nets: Sensitive Attributes of Private Inputs Can Be Secretly Coded into the Classifiers’ Outputs ,它告诉我们这类攻击都是可以实现的。

 

这里顺带说一下, Honest-but-Curious 简称 HBC 是来自密码学领域的一个半可信模型下的概念,原先是指,在两方计算中不偏离其指定协议但试图从接收到的数据中推断出尽可能多的敏感信息的合法方被称为诚实但好奇( HBC )方,这里研究人员用其指代可以实现类似目的的分类器,这种分类器的输出不仅可用于推断目标属性,而且还可以秘密携带有关用户数据的敏感属性的信息。

 

形式化

 

在给出具体定义之前,需要声明一下,这个工作用了很多信息论的公式,所以先来看看信息论相关的

 

设随机变量

 

 

随机变量 a 的熵表示为:

 

 

随机变量 b 于 a 的交叉熵:

 

 

a 和 c 的互信息为:

 

 

我们假设用户数据 x 采样自一个未知的数据分布 D ,设 x 可以提供关于至少两个潜在分类变量 ( 属性 ) 的信息,比如 y 为目标属性, s 为敏感属性。分类器 F 以 x 为输入并输出 y^, 其可以表示为

 

 

其中的 yi^^ 是 Pr(y=i|x) 。

 

设 y- 是从 y^ 得到的关于 y 的预测值 ( 比如在二分类中基于阈值,在多分类中基于 argmax 函数 )

 

我们假设 x ,以及 F 的所有中间的计算都是隐藏的,用户只知道 y^.

 

对于仅服务器知道的敏感属性 s 的攻击可以记做

 

 

设 s- 是从 s^ 得到的关于 s 的预测值 .

 

这里的马尔科夫链为:

 

 

接下来我们定义诚实方,给定测试数据 Dtest ,如果满足下式我们就说分类器 F 是诚实的,即 -h

 

 

其中 ∈ [0, 1] ,表示的是分类器的测试准确率

 

当其预测目标属性时,我们称其为 F 的诚实方

 

然后定义好奇方,给定测试数据 Dtest 和攻击者 G ,如果满足下式则称之为好奇

 

 

其中 s ∈ [0, 1] ,表示的是攻击者在测试集上的攻击成功率

 

当其预测敏感属性时,我们称其为 F 的好奇方

 

当分类器 F 在相同的数据 Dtest 上同时表现出诚实和好奇时,我们称之为 Honest-but-Curious,HBC

 

而当分类器训练的目的仅是为了达到最佳的诚实,而没有任何额外的好奇,我们称其为标准分类器。

 

此外我们还有区分黑盒和白盒环境,我们这里以用户在推理时面对分类器的视角进行区分,在黑盒下,用户只能拿到分类器的输出而不知道其架构、参数等,在白盒下,用户知道分类器的架构、输出以及计算时的所有中间过程。

 

作为攻击者,我们的目的就是要训练一个 HBC 。

 

接下来我们分黑盒和白盒两种情况介绍如何实现 HBC 。

 

黑盒

 

这里先以一个比较简单的逻辑回归分类器为例进行说明。数据分布如下图所示

 

 

其中每个样本 x 有两个属性 ∈{0,1} 和 ∈{0,1}

 

如果 与 相关,那幺分类器的任何输出总是会暴露一些敏感信息,所以 s 和 y 的相关性越小,构建 HBC 分类器的难度就越大。而在上图中可以看到, y 和 s 是独立的,并且对于每个属性而言,都有一个最优的线性分类器

 

很明显,对于这个数据集我们可以找到一个最优的逻辑回归分类器

 

 

模拟 y 的决策边界。这样的分类器是 -h , = 1 ,同时它也是 – , = 0.5 ;这意味着分类器是诚实的,不会泄露任何敏感信息。而任何使 > 0.5 的线性分类器的都需要通过强制 < 1 来实现,而这会降低分类器的诚实性。这也是实现 HBC 的难点所在。

 

我们可以尝试着分别在两个属性上分别训练一个分类器,并将其合并起来得到最终的 y^

 

此时的 y^ 就是对于目标属性 y 和敏感数学 s 的预测值的混合后的结果。大概的示意图如下

 

 

这里的混合其实有两种方式,用公式可以分别表示如下

 

 

 

[] 符号表示的意思是取整

 

由于这两个分类器对于各自的属性而言都是最优的,所以实际上对于第二种混合而言, y^ 实际上只有四种值。如下

 

 

只要 ≠ 0.5, ,给定 y^ ,我们就可以精确的估计 y 和 s ,从而实现 HBC 分类器的构建

 

当然了,此时的分类器不再是线性的了。

 

而对于第一种混合方式而言,其难点在于 y^ 的可能取值是在 [0,1] 范围的,所以我们可以做的就是定义一个阈值 ‘ ,并以此对 [0,1] 进行区间划分,划分如下所示

 

 

不过这种方案得到 HBC 分类器不如后一种混合方式的,一个简单的例子示意图如下

 

 

这里 = 0.8 and = 0.2 ,使用第二种混合方式,可以实现 = 1 和 = 1 ;使用第一种混合方式,可以实现当 ′ = .1 时, = .99 和 = .95

 

总之,在黑盒情况下,服务器可以训练两个单独的分类器,每个分类器都具有足够高的准确度,并且可以使用两个输出的混合来构建 HBC 。

 

白盒

 

理论上来讲,分类器的输出 y^ ,是一个可以携带无限量信息的向量。

 

所以在没有任何特定约束的情况下,通过处理 y^ 是可以泄露隐私信息的,甚至可以用于重构数据 x 。但是实际上有各种各样的限制,比如数据的复杂性、对 soft output 的要求等。这里我们引入信息论的知识来分析分类器的好奇方和输出的熵之间的关系。

 

我们知道,随机变量 x 的熵是其信息内容的期望值,也叫做自信息,即:

 

 

但我们在数据中寻找目标信息时,数据中存在的潜在的不相关的信息可能会让提取目标信息更加艰难。原则上来说,这种不相关的信息对于我们的目标任务而言,其实是一种噪声。比如说当我们在寻找目标属性时,对于一个 DNN 分类器而言其输入 x 输出概率分布,输出相比于输入而言具有更低的熵。尽管从熵的角度来看, y^ 带有的信息比 x 更少,但是相对于目标 y 而言,

 

y^ 的信息还是过多了。

 

同时,在分类器输出的熵和好奇方之间存在一定的关系。对于较大的 H(y^ )

 

说明 y^ 此时带有更多的信息,所以更有可能被提取出于目标任务不相关的信息

 

举个例子,比如 Y=4,y=1,y 独立于 s 。在一个极端的情况下,当分类器的输出为 y^=[0,1,0,0]

 

(此时 H(y^)=0 )

 

那幺 y^ 就没有携带关于 s 的信息,如果要附加关于 s 的信息的话就会增加熵

 

在监督学习中,通常使用的损失函数是交叉熵,如下所示

 

 

在训练过程中会最小化 Hy(y^)

 

然而,由于数据通常是有噪声的,所以我们不能在推理时对 Hy(y^) 设置上界。在实践中,将 H(y^) 与 H (y^) 一起最小化可能有助于在推理时保持 H(y^) 较低,但是不能保证分类器在推理时总是会产生最小或有界的熵输出。

 

根据这一事实, 我们可以将分类器输入 x 的私有属性编码到分类器的输出中。

 

正则化攻击

 

第一种实现的攻击方案是通过将正则化 F 上的损失函数来强制分类器将 s 显式编码到 y^ 的熵中

 

一般来说, y^ 有两个属性可以用于创建 HBC 分类器,分别是:

 

Argmax :使用 y^ 中最大元素的索引来预测

 

Entropy:y^ 的熵至少可以有两种状态: (i) 接近最大熵,即 H(y^) = log ,或 (ii) 接近最小熵,即 H(y^) = 0 。

 

实际上,在不干扰 argmax(y^) 的情况下,

 

H(y^) 确实可以被用于预测二值 s

 

不失一般性,我们假设 Y=2, 考虑 ^1 ≡ ^ 和 ^0 = 1 – ^1 , yˆ = [ˆ0,ˆ1]

 

下图展示了我们如何使用单个实值 ^ 来预测两个属性,例如, y^ = [.95, .05] 和 y^ = [.75, .25] 具有相同的 argmax 但不同的熵:分别为 0.29 和 0.81

 

 

根据上图,我们观察 y^ ,当其小于 0.5 时,我们可以预测 y-=-, 否则为 1 ;而我们可以训练一个分类器,使得对于 = 0 的样本, ˆ 接近边界( 0 或 1 ),具体取决于 ; 否则,对于 = 1 , ^ 远离边界。 使用阈值 ,我们从 ˆ 预测二元属性 和 。

 

接下来我们就要定义用于训练分类器的损失函数

 

 

其中乘数 和 旨在控制诚实和好奇之间的权衡。 第一项是交叉熵,第二项是香农熵,旨在对于 = 0 的样本最小化 y^ 的熵,同时对于 = 1 最大化 y 的熵。

 

这样训练之后,在推理阶段,当观察到 y^ ,会计算其熵值,并使用阈值 t 来估计 s- ,如下所示

 

 

所以其实攻击者 G 就是一个简单的阈值函数,阈值则可以通过在训练期间的验证集进行优化得到

 

参数化攻击

 

当 S>=2 时,上一种攻击方式就不可行了,所以这里介绍第二种攻击方式,在此之前我们简单提一下信息瓶颈

 

之前我们提到了马尔科夫链

 

 

服务器希望找到一个分类器 F* 可以将用户的数据 x 映射到一个向量 y^

 

同时使得 y^ 尽可能地包含关于 y 和 s 的信息

 

这种 F* 可以被定义为下面数学优化公式的解

 

 

其中 、 和 是拉格朗日乘数,它们允许我们沿着不同的可能局部最小值移动,并且都是非负实值

 

上面这条公式实际上是信息瓶颈公式的扩展,其中由 F * 产生的最优 y^ 是根据其与三个变量 x 、 和 的关系来决定的。 通过改变 乘数,我们可以探索不同速率的压缩之间的权衡,即通过最小化 I(y^;x) 和我们旨在保留的信息量,即通过最大化 I(y^;) 和 I(y^;) 。 特别是对于 DNN ,压缩可能有助于分类器实现更好的泛化

 

现在我们来看看对于一个计算有界且只能访问原样本的服务器,应该怎幺求解上式并创建最优的 HBC 分类器

 

我们有

 

 

对于固定的训练集而言,在优化过程中 H(y) 和 H(s) 是常量,而对于一个判别 F 来说,有

 

 

所以我们将上式简化如下

 

 

上式可以看做是一个优化问题,旨在最小化 y^ 的熵,并将尽可能多的关于 y 和 s 的信息编码进去。因为优化的过程是寻求一个函数 F∗ 来产生一个低熵 y^ ,使得 y^ 只提供关于 和 的信息,而没有关于其他任何信息的信息。 乘数 和 指定 和 如何在 y^ 的熵中竞争剩余容量

 

现在,服务器需要训练一个已知的现成分类器。 在这里,我们对目标属性 使用交叉熵损失函数,并使用 SGD 训练分类器 F 。 然而,除了这个交叉熵损失之外,我们还需要为属性 寻找另一个损失函数。 因此,我们需要一种方法来为 模拟这样的损失函数。

 

让 |y^ 表示给定 y^ 的真实但未知的 概率分布, |y^ 表示 |y^ 的近似值。 考虑到这两个分布 H |y^ ( |y^ ) 之间的交叉熵,已知有

 

 

这个不等式告诉我们,未知分布之间的交叉熵和它的任何估计,是 H 的上界,并且当 |y\^=|y^ 时,等式成立。 因此,如果我们为 |y^ 找到一个有用的模型,那幺最小化 H( |y^ ) 的问题可以通过最小化 H |y^ ( |y^ ) 来解决。

 

我们可以下面的交叉熵来估计 H |yˆ ( |yˆ )

 

 

在为 |yˆ 初始化一个参数化模型以估计 H( |yˆ ) 后,我们对下式进行优化

 

 

此时优化问题的变分近似可以写作

 

 

其中联合最小化是在参数化模型 F 和 G 上执行的。这里, H^(·) 和 H^(·|·) 表示分别在每批采样数据上计算的经验熵和条件熵。该方案的训练示意图如下所示

 

 

至此,两种攻击方案都介绍完毕。在正则化攻击里,我们只需要修改 F 的损失函数,在参数化攻击里,我们不仅要修改损失函数,还有利用额外的模型 G 来估计敏感属性。因此, F 可以被看做在同时扮演两个角色,一个是诚实方,用于估计目标属性,一个是好奇的编码方,用于编码敏感属性;而 G 则是好奇的解码方,用于解码收到的输出并估计敏感属性。

 

实验分析及复现

 

分析

 

我们以 UTKFace 为例。我们假设性别 Gender 为目标属性 y ,种族 Race 为敏感属性 s

 

实验得到的 ROC 曲线如下

 

 

上一行是标准分类器,下一行是通过正则化攻击得到的 HBC 分类器

 

在左上图中,标准分类器的 ROC 曲线下面积 (AUC) 为 0.97 ,而在左下图中,分类器是 HBC ,但仍达到相当大的 0.94 AUC 。而对于好奇方而言,右上图中的标准分类器没有提供有关 Race 的信息,它基本上与随机猜测一样。 但是,右下角的 HBC 分类器通过正则化攻击预测 Race 可以达到 0.89 AUC 。

 

这表明正则化攻击确实可以实现 HBC 分类器及其攻击效果。

 

而当 S>2 时,我们进一步的实验结果如下所示,这里我们将性别、年龄或种族中的一个设置为 ,另一个设置为 ,并比较实现的 和

 

 

上表是参数化攻击的结果,其中目标属性是年龄,敏感属性是种族

 

 

上表是各类攻击的结果,其中目标属性是种族,敏感属性是性别

 

从表格中我们可以看到,对于所有 RawHBC 的情况, HBC 分类器的 非常接近 Std 中相应分类器的 。此外,我们看到在某些情况下, HBC 甚至有助于实现更好的泛化,从而获得更好的诚实度;这非常重要,因为 HBC 分类器可以看起来尽可能诚实。

 

当我们可以拿到原始输出时,攻击在所有任务中都非常成功,并且在许多情况下,我们可以达到与我们可以针对特定敏感属性训练 F 的情况相似的准确性。例如,在第一个表中,对于 = 3 和 > 2 ,我们可以达到大约 83% 的好奇来从针对年龄属性训练的分类器中推断种族属性。

 

在 SoftHBC 中,通过参数化攻击实现高好奇度更加困难,因为需要降低更多的诚实度。特别是对于具有 > 的任务,其中敏感属性比目标属性更精细。此外,虽然我们之前已经看到 SoftHBC 成功的正则化攻击,但正则化攻击不能应用于 > 2 的任务。此外,尽管 RawHBC 的好奇心比 SoftHBC 更高,但随着输出的大小 变大,两者之间的差异会变小。

 

另外我们还可以观察到,当 ≤ 时,攻击非常成功,因为释放的输出容量更大。但是,当 > 时,攻击也是成功的。最有难度的情况是 = 2 并且我们只能访问软输出,因为在这些任务中我们只释放一个值(即 ^1 = 1 – ^2 )。此外,我们在第二个表中看到,对于具有 = = 2 的 SoftHBC ,正则化攻击比参数化攻击实现了更好的权衡。

 

复现

 

准备 UTKFace 的数据

 

 

数据集信息如下

 

 

准备模型

 

 

打印出 summary 如下

 

 

我们来复现参数化攻击

 

参数化攻击的 G 的架构

 

 

打印出 summary 如下

 

 

参数化攻击主体代码

 

 

其中评估 acc 的代码如下

 

 

测试结果如下

 

 

 

可以看到通过训练,模型推理目标属性 y 和敏感属性 s 的 acc 都一直在上升,说明 HBC 攻击确实有效,能够从模型的输出中成功推理出敏感属性。

 

参考

 

1.Honest-but-Curious Nets: Sensitive Attributes of Private Inputs Can Be Secretly Coded into the Classifiers’ Outputs

 

2.The InformationBottleneck Method

 

3.Stealing Machine Learning Models Via Prediction APIs

 

4.A Hybrid Approach to Privacy-Preserving Federated Learning

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注