Datasig:为AI/ML数据集生成指纹以阻止数据携带的攻击
为什么没有数据可追溯性,你的AI安全就不完整
传统安全工具在应对AI独特攻击面时存在盲点。你的SBOM(软件物料清单)可能告诉你模型使用了哪些库,但它对塑造模型行为的数据一无所知。这个盲点为攻击者创造了完美的机会。
AIBOM工具的兴起
AI物料清单(AIBOM)工具正在兴起,旨在记录整个AI供应链。但有一个关键部分缺失:可靠地跟踪和验证训练数据的方法。没有这个能力,这些工具无法回答基本问题,例如:
- 这个模型是否在中毒数据上训练?
- 敏感信息是否泄露到训练集中?
- 两个模型是否使用相同的数据集,使它们容易受到相同的攻击?
为什么训练数据如此难以跟踪
跟踪数据集并不像在requirements.txt文件中添加依赖项那么简单。三个关键挑战使这变得特别困难:
- 数据波动性:数据集不断演变。如果不捕获训练时的确切状态,就不可能重现或验证训练数据的任何内容。
- 规模和隐私问题:存储训练数据的完整副本通常不切实际或存在法律问题,特别是对于包含个人信息的大型数据集。
- 不同的漏洞模式:数据携带的漏洞本质上不同于传统软件漏洞,传统的依赖扫描无法检查是否存在易受攻击的数据。
Datasig的方法:有效的指纹技术
Datasig帮助跟踪和验证用于训练模型的数据,而无需存储所有数据本身。它通过一种新颖的数据集指纹方法实现这一点,该方法为AI/ML数据集生成唯一标识符和紧凑指纹。这使得上游AIBOM工具能够高精度比较数据集,而无需访问实际训练数据,从而提高AI/ML系统中数据集的可验证性和可追溯性。更具体地说,指纹允许AIBOM工具:
- 验证数据集来源
- 比较数据集以基于相似性识别潜在漏洞
- 跨模型版本跟踪数据集演变
- 检测模型是否可能在受损数据上训练
内部机制:Datasig如何工作
Datasig的数据集指纹方法基于MinHash签名。Datasig将数据集作为输入,并输出一个二进制哈希值列表,该列表在数学上对应于MinHash签名。这个指纹可以与其他指纹比较,以估计相应数据集的相似程度。以下是其工作原理:
指纹过程
- 规范化:Datasig首先将数据集转换为标准化格式。我们对每个单独的数据点(图像、文本样本等)进行哈希处理,以创建一组扁平的哈希值。
- MinHash转换:然后我们对这个规范表示应用MinHash算法,生成一个固定大小的签名,该签名保留相似性关系。这个MinHash签名就是数据集指纹。
- 比较:然后可以直接将指纹与其他指纹比较,以测量数据集相似性,而无需原始数据。
图1:指纹工作原理:每个数据集独立处理以创建紧凑签名。这些签名可以直接比较以估计数据集相似性,而无需访问原始数据。
这种方法利用MinHash的数学特性,使指纹成为两个数据集在相同数据点方面相似度的优秀近似(参见Jaccard指数)。在我们的实验中,我们使用由400个哈希组成的指纹,其误差范围小至5%。通过生成更长的指纹可以提高准确性,但代价是更重的计算。
我们正在准备一份技术白皮书,更深入地探讨数学基础,但关键要点是:Datasig的方法在数学上合理,产生紧凑指纹,并在不同数据集类型上保持高准确性。
实际验证:MNIST测试案例
为了证明Datasig的有效性,我们使用MNIST数据集(一个标准的计算机视觉基准)进行了测试。我们的实现支持开箱即用的PyTorch视觉数据集,具有干净、直接的API:
指纹测试
我们在MNIST数据上编写了测试,构建了各种相似程度的数据集,计算它们的指纹,并仅通过指纹比较估计它们的相似性。测试经验证实,生成的指纹虽然尺寸非常紧凑,但却是数据集相似性的优秀估计器,如下所示:
| 数据集1 | 数据集2 | 真实相似性(%) | 估计相似性(%) | 误差(%) |
|---|---|---|---|---|
| 完整训练集 | 完整训练集 | 100 | 100 | 0 |
| 完整训练集 | 一半训练集 | 50 | 52.5 | 2.5 |
| 完整训练集 | 完整测试集 | 0 | 0 | 0 |
| 合并完整训练和完整测试集 | 完整测试集 | 14.28 | 13.1 | 1.18 |
图2:使用紧凑指纹的真实数据集相似性与估计相似性 - 原始MNIST数据集 - 预期误差<5%
Datasig的下一步计划
Datasig作为原型显示出有希望的结果,但我们才刚刚开始。我们的路线图专注于使其为实际AI安全需求做好生产准备。
首先,我们计划将格式支持扩展到PyTorch之外。我们将与HuggingFace集成,并通过SQLite和流接口添加对数据库支持的数据集的支持。这将使Datasig在完整的AI应用范围内有用。
在技术方面,我们正在改进核心指纹方法。我们正在探索可能提高性能的单函数MinHash变体,测试SHA1的替代方案,并研究基于非哈希的排列方案。所有这些改进都旨在加强指纹特性,同时使Datasig更快、更有弹性。
最后,我们认识到Python并不总是性能关键工具的最佳选择。这就是为什么我们正在考虑用低级语言实现我们的指纹算法,以显著提高计算效率——这是大规模AI系统的关键要求。
我们的目标很明确:提供当前AIBOM工具所需的缺失部分,以有效解决AI系统中数据携带的漏洞。我们将Datasig视为全面AI安全方法的一部分——最终为AI系统带来我们期望传统软件所具有的相同严谨性。
如果你有兴趣贡献或有关于我们方法的反馈,请查看GitHub仓库,我们的开发在那里公开进行。