隐私攻击实战:PrivacyRaven实现模型逆向攻击概念验证

本文详细介绍了基于Python的深度学习隐私测试工具PrivacyRaven,重点探讨模型逆向攻击的实现原理、技术挑战及实验结果,涵盖黑盒查询、替代模型训练和图像重构等核心技术环节。

PrivacyRaven:实现模型逆向攻击的概念验证

项目背景

在Trail of Bits的冬季和春季实习期间,作者与Suha Hussain和Jim Miller合作开发了PrivacyRaven——一个基于Python的工具,用于测试深度学习框架对抗多种隐私攻击的能力。作者通过增加对Google Colab等服务的兼容性,并扩展隐私攻击和保障功能,提升了PrivacyRaven的多功能性。

什么是PrivacyRaven?

PrivacyRaven是一种机器学习保障和研究工具,可模拟对训练好的机器学习模型发起隐私攻击。它支持模型提取和仅标签成员推理攻击,目前正在开发对模型逆向攻击的支持。

模型提取攻击

在模型提取攻击中,用户试图窃取或提取训练好的深度学习模型,该模型输出对应每个类的概率向量或简单分类。例如,一个检测人脸情绪的分类器会返回指定每种情绪可能性的向量,或直接返回最可能的情绪作为分类结果。关键点在于,用户仅能通过黑盒查询访问分类器,无法获得其他任何信息。

攻击者首先使用随机未标记数据查询模型,以识别模型返回的所有分类。这些信息随后用于近似目标分类器:攻击者使用公共数据源获取合成数据(例如人脸图像和情绪分类的数据集),并基于该数据训练一个替代的固定架构模型。

此类攻击若成功可能带来严重后果,特别是对那些将实际模型隐藏在付费API后的服务。攻击者可以低成本近似服务模型(精度略有下降),从而获得巨大的经济优势。由于PrivacyRaven在最严格的威胁模型下运行(模拟用户仅具查询访问权限的攻击),模型提取也是PrivacyRaven其他攻击(如成员推理攻击)的关键组成部分。

模型逆向攻击的实现

作者致力于实现对模型逆向攻击的支持,旨在恢复用于训练目标模型的私有数据。该攻击利用模型提取获得对忠实近似目标的替代分类器的白盒访问权限。

什么是模型逆向?

在模型逆向攻击中,恶意用户针对预测每个类置信值向量的分类器,试图恢复其训练数据以破坏隐私。事实证明,具有模型背景知识的用户实际上能够合理近似目标模型的训练数据(例如下图从人脸识别系统恢复的图像)。这是多篇论文的核心思想,包括Ziqi Yang等人的《通过辅助知识对齐的对抗神经网络逆向》,该论文构成了作者实现模型逆向的基础。

模型逆向示例图像

基于背景知识对齐的模型逆向攻击在现实世界中有众多应用场景和后果。设想恶意用户针对前述人脸情绪分类器:用户可通过从搜索引擎抓取相关图像构建自己的数据集,运行图像通过分类器获得对应置信值,并从值构建概率向量;然后训练一个能够从给定向量重构图像近似的逆向模型。

逆向模型被设计为目标模型的逆(因此使用“逆向”一词)。攻击者不再输入图像获得情绪分类,而是提供任意情绪预测向量,从训练集获得重构图像。

攻击流程详解

以情绪分类器为例,假设用户可访问输出某些类置信值的分类器,并知悉该分类器基于人脸图像训练,因此具有分类器的背景知识。

用户通过此背景知识,从公开站点抓取人脸图像并处理,创建辅助数据集。用户还选择一个能够将构建的预测向量上采样为“重构”图像的逆向模型架构。

为训练逆向模型,用户使用辅助数据集中的每个图像查询分类器,获得分类器对图像的置信值。该信息用于构建预测向量。由于分类器可能仅输出输入的最高置信值,逆向过程假设它确实截断了预测向量,其余条目置零。例如,若分类器针对5种情绪训练但仅输出前2个(置信值0.5和0.3),用户可从这些值构建向量(0.5, 0, 0.3, 0, 0)。

用户随后将预测向量输入逆向模型,该模型将向量上采样为图像。作为训练目标,用户希望最小化逆向模型的均方误差(MSE)损失函数,该函数在辅助集图像和模型输出的重构之间按像素计算;用户随后重复此训练过程多个周期。

MSE接近0意味重构图像是真实值的合理近似,MSE为0则意味重构图像与真实图像完全相同。模型充分训练后,用户可将预测向量输入训练好的逆向模型,获得代表每个类的重构数据点。

注意,模型逆向架构本身类似于自编码器(如论文所述)。具体而言,分类器可视为编码器,逆向网络为解码器,预测向量属于潜在空间。关键区别在于,在模型逆向中,分类器给定且固定,且分类器的训练数据不可用于训练逆向网络。

对PrivacyRaven的其他贡献

除专注于实现模型逆向支持外,作者在实习初期帮助改进了PrivacyRaven的文档和多功能性。为更好展示PrivacyRaven的某些能力,作者添加了详细的Python示例脚本,包括展示如何发起攻击和注册自定义回调以在攻击运行中获得更全面信息的脚本。作者还添加了Docker和Google Colab支持,允许用户容器化和部署攻击设置,以及协调和加速攻击开发。

注意事项与改进空间

PrivacyRaven围绕可用性设计,旨在尽可能抽象掉数据和神经网络工程的繁琐性。然而,模型逆向是一种相对脆弱的攻击,依赖于微调某些参数,包括分类器和逆向模型的输出维度以及逆向模型的架构。因此,在可用性和模型逆向保真度之间取得平衡是一项挑战。

另一困难源于模型逆向攻击产生满意结果所需满足的众多假设。一假设是用户能够通过用大量数据点查询目标分类器,恢复其训练的类数量。

例如,若用户试图确定物体识别分类器训练的类数量,用户可用大量随机物体图像查询分类器,并将该过程中识别的类添加到集合中。然而,若训练类数量庞大,这可能不总是有效;若用户无法恢复所有类,逆向质量可能受损,尽管Yang等人的论文未分析对逆向质量影响的程度。

此外,Yang等人未明确说明其分类器和逆向模型架构设计背后的理由。实验时,作者使用CelebA和MNIST数据集并调整了图像大小。他们还为数据集使用了两个独立的逆向架构:CelebA逆向架构从长度530的预测向量上采样到64x64图像,MNIST逆向架构从长度10的预测向量上采样到32x32图像。可想而知,泛化此攻击以用于任意分类器是困难的,因为最优逆向架构随每个分类器变化。

最后,作者专注于白盒场景中的模型逆向,这不直接适用于PrivacyRaven的仅黑盒威胁模型。如前所述,PrivacyRaven假设用户除输出外对分类器一无所知;虽然一般模型逆向过程大体相同,但黑盒场景要求用户做出更多假设,特别是在训练数据和分类器输出的维度上。每个关于维度的额外假设都需要考虑和解决,这种固有的定制需求使得为模型逆设计通用API非常困难。

下一步计划

PrivacyRaven尚未具备完全稳定的模型逆向API,但作者已完成论文的概念验证实现。模型逆向API的一些设计决策仍需成熟,但计划是API支持白盒和黑盒模型逆向攻击,并尽可能在不牺牲可用性的情况下使模型逆向和提取参数可定制。作者相信,凭借此模型逆向的工作概念验证,模型逆向API的开发应是一个相对顺利的过程。

逆向结果

概念验证产生的逆向结果如下所示。该攻击使用扩展MNIST(EMNIST)数据查询MNIST训练的受害者分类器,以训练替代模型,随后用于执行白盒逆向攻击。模型逆向训练过程运行300个周期,批量大小为100,产生最终MSE损失0.706。逆向质量根据辅助集图像的方向发生显著变化。左侧图像是来自MNIST集的辅助集图像样本,括号内为其标签;右侧是它们的重构。

例如,数字0的图像往往有相当准确的重构:

其他辅助集图像的重构看起来与它们相似但与标签矛盾。例如,以下图像看似描绘4,但实际上描绘旋转90度的2。

其他图像也有较差或模糊的重构,例如以下旋转的8和9图像。

总体而言,这些结果表明模型逆向是一种脆弱的攻击,并非总是产生高质量重构。然而,也必须考虑到上述逆向攻击仅使用对分类器的黑盒查询进行。回顾PrivacyRaven当前的模型逆向流程,首先执行模型提取攻击以授予用户对目标分类器白盒近似的访问权限。由于信息在模型提取和逆向过程中均会丢失,黑盒模型逆向攻击的重构质量可能显著差于白盒对应物。因此,即使在最严格假设下,逆向模型为某些图像产生忠实重构的能力确实引发对深度学习分类器训练数据的重大隐私担忧。

心得体会

作者非常享受在PrivacyRaven上的工作,并感谢Jim和Suha提供的支持和建议以帮助快速上手。作者也感激有机会学习机器学习与安全的交叉领域,特别是在隐私保障方面,并获得包括PyTorch在内的深度学习框架的宝贵经验。在机器学习保障工作的经历激发了作者对该领域的新兴趣,未来肯定会进一步深入深度学习和隐私。


分享本文:Twitter | LinkedIn | GitHub | Mastodon | Hacker News

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计