跳到主要内容

自身训练语料库成为泄露途径的 PII 脱敏器

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个团队在他们的日志流水线前端部署了一个经过微调的脱敏模型。它在数据进入长期存储之前剥离姓名、电子邮件、账号和 IP 地址。该模型体积小、速度快,且易于与接入层(ingestion workers)并行部署。隐私审查通过了该方案。六个月后,一位客服工程师将一行看起来很奇怪的日志粘贴到调试工具中,脱敏器产生的输出包含了一个真实客户的电子邮件地址——而这个地址在输入中根本没有出现。

流水线完全按照其构建初衷运行。而脱敏器本身就是泄露源。

这种失效模式并不罕见。它是其构造方式的直接产物。一个基于真实客户数据训练的脱敏模型,已经在某种保真度上学习了真实客户数据的分布。模型学到的任何东西都有可能被诱导输出。在隐私边界放置机器学习模型的团队实际上增加了一个新的暴露面——而隐私团队通常并不掌握这个暴露面的威胁模型,因为隐私团队将脱敏器视为一种控制手段,而不是一个本身包含受保护类数据的资产。

脱敏器不是墙,而是见证者

让团队陷入困境的思维模型是:“脱敏器位于数据和存储之间,因此数据不会到达存储端。” 这种思维模型对正则表达式(regex)是成立的。但对于一个神经网络来说,它是错误的,因为这个神经网络的权重是通过对包含那些本该被正则匹配到的字符串的示例进行梯度下降更新而来的。

生产环境中的语言模型可以被诱导逐字输出训练数据。2023 年关于 ChatGPT 大规模提取的研究表明,大约 200 美元的 gpt-3.5-turbo API 查询就产生了超过 10,000 个唯一的逐字训练示例,提取的内容涵盖了 PII、代码、新闻标题和日志格式的字符串。2024 年的 PII-Scope 研究发现,经过微调的模型泄露 PII 的比例显著高于其预训练版本,简单的模板提示攻击在 256 次查询内就能达到 50% 以上的提取率。一个在真实日志行语料库上微调的脱敏器——从经验而非假设上讲——就是一个泄露率高于预训练基线的微调模型。

这种威胁与普通的模型风险并不对称。分类错误产生的是错误的标签;而提取式脱敏器产生的是受保护的文本。错误的爆炸半径就是数据本身。

为什么微调后的脱敏器会记住它们脱敏的数值

三项结构性事实使得脱敏模型作为一个类别特别容易发生泄露。

训练标签就是这些值。 标准的有监督脱敏数据集将原始文本与标记哪些子字符串是 PII 的跨度级(span-level)标签配对。示例的两部分都包含字面上的受保护字符串。损失函数是针对 token 计算的,因此模型会因为拟合姓名、账号和电子邮件地址的准确字符而获得奖励。这不像基础模型记住受版权保护的散文那样的偶然记忆——这是有监督学习的目标。

罕见实体无处藏身。 真实日志语料库中的大多数 PII 遵循长尾分布。少数高频实体——内部测试账号、客服代表的邮箱、CTO 的名字——会出现数百次。大多数真实的客户标识符只出现一两次。重复是记忆的主导预测因子,因此高频尾部会被最先且最牢固地记住。而这些高频字符串恰恰是攻击者可以通过廉价探测提取的内容。

部署形态奖励了提取。 脱敏器通常按日志行调用,甚至按请求调用,且至少有一个路径上的输入是攻击者可控的(用户提交的表单字段、请求体、URL 参数)。攻击者可以通过正常的应用程序流量发出数千个探测提示。他们不需要模型的 API 密钥;他们只需要编写能到达脱敏器的日志行即可。2022 年关于 NER 模型中意外记忆的研究表明,即使是特定任务的脱敏器,也会通过输出内容和推理时的耗时差异泄露记住的短语——这是一个团队不太可能考虑到的侧信道。

泄露在生产环境中是如何实际显现的

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates