导致苹果CSAM系统崩溃的对抗性碰撞(及其对苹果以外的广泛影响)
这篇文章是“64比特决定你能上传什么到互联网”的技术后续。如果你还没读过它,请先阅读。这里我们假定你已经理解了什么是感知哈希以及为什么PhotoDNA、PDQ和NeuralHash是密切关联的。 2021年8月5日,苹果宣布推出NeuralHash。仅仅13天后——8月18日——匿名研究员Asuhariet Ygvar在GitHub上发布了从iOS二进制文件中提取的完整模型的逆向工程。数日后,两个独立的研究人员——Brad Dwyer及其合作者——公布了碰撞实例:两张视觉上完全不同的图像却生成了相同的哈希值。苹果承诺其系统的一年每账户误报率为“万亿分之一”,然而事实证明,这个系统可以用普通消费级硬件成功攻击。 公众舆论将焦点放在“苹果出了错”。但后续技术分析却表明事实相反:苹果并未犯错。对抗性脆弱性是感知哈希家族的一种结构性特性。如果有问题,NeuralHash可能是市场上最复杂的设计之一。 五年后,欧盟正在制定法律,强制在WhatsApp、Signal和Telegram中部署同样的技术。这项法规假定该算法是一种不变的基础技术,如同SHA-256一样。然而事实并非如此。 偶然碰撞与对抗性碰撞 熟悉密码学哈希的读者可能会有一个直觉模型:碰撞是一个罕见的、偶然的事件,其概率可以通过2^(-n)来计算,其中n为比特数。对于SHA-256来说,需要2^128次操作来找到一个碰撞——这在已知的计算基础设施下难以实现。 感知哈希属于另一类对象。这一区别非常重要。 **偶然碰撞。**两张合法图像因偶然因素生成了相同的哈希值。对于64比特的感知哈希,概率并非2^(-64),而远大于这个值,因为“合理”图像(人类生成的图像,而非随机噪声)具有统计规律性。实际概率取决于数据集分布,远高于理论上限。 对抗性碰撞。有意生成两张图像刻意使其产生相同的哈希值。这里的区别是质的。在感知哈希中: 哈希空间很小(64-96比特)。 哈希函数“平滑”——像素的小扰动会导致哈希值的小变化。这一特性是需要的(对重新编码的容忍度),但也带来了攻击性(容易被攻击)。 基于CNN的哈希(如NeuralHash)是可微的。攻击者可以使用梯度下降直接找到碰撞。 传统哈希(例如pHash、PDQ)在同样意义上并非可微,但可以通过局部搜索和标准机器学习启发式方法进行攻击。 实际而言:在消费级GPU和PyTorch工具支持下,一个研究生可以在一个下午解决感知哈希的对抗性碰撞问题。 三种攻击类型及其不同后果 2021-2023年的学术文献区分出三种攻击方式,每种都具有不同的操作影响。 任意碰撞 给定哈希算法H,找到两张图像x₁和x₂,它们视觉上完全不同,但满足H(x₁) = H(x₂)。这是最简单的攻击:如果哈希空间很小,它就会自然发生。Ygvar在2021年8月发布的碰撞就是这种类型:一只狗和一片灰色的风景,它们视觉上毫无关系,但生成了相同的NeuralHash。 **操作用途:**降低系统的可信度。如果能够公开展示碰撞,前提“哈希是可靠的标识符”便会瓦解。 定向预影 给定目标哈希值h₀(比如从NCMEC数据库提取或估计的值),生成一个视觉上无害的图像x,使得H(x) = h₀。这种攻击才是实际操作中最令人担忧的。 **操作用途:**发送图片给受害者。攻击者生成一张猫的照片,它具有与已知CSAM材料相同的哈希值,然后通过WhatsApp发送。在系统扫描触发警报后,即使人工审查确认图片为无害,过程依然耗费了时间、法律资源(在某些情况下)以及对受害者的污名化。如果规模化——同时针对数千名受害者——系统将变得不可操作。 苹果在2021年表示该攻击不太可能发生,因为NCMEC数据库是封闭的,攻击者无法知道目标哈希值。然而Prokos等人(USENIX Security 2023)证明该论点站不住脚:攻击者不需要每个具体哈希,只需要对目标集的参考图像拥有访问权限,而在现实世界中,拥有这种访问权限对高级黑客来说并不困难。 规避 已知一张图像x(例如NCMEC数据库中的CSAM材料),生成一个修改后的图像x’,视觉上与x几乎一致但生成不同的哈希值。这种攻击破坏了系统实现其声明用途的能力。 **操作用途:**真正的CSAM分发者对其材料应用该攻击。即使对人类来说修改后的图像几乎像素级相同,系统扫描无法检测到修改后的副本。新的材料加入NCMEC数据库的速度比对抗性变体的增长速度慢,覆盖率随着时间的推移而恶化。 NeuralHash案例详细分析 NeuralHash崩溃的时间线具有教育意义。 **2021年8月5日。**苹果宣布推出CSAM检测套件。发布的技术文档声明每年每账户误报率为1万亿分之一,基于对参考数据集的内部测试。 **2021年8月18日。**Asuhariet Ygvar在GitHub上发布了AppleNeuralHash2ONNX。该项目从iOS 14.7的二进制文件中提取了NeuralHash模型,并将其转换为ONNX格式,可在任何设备上运行。代码无需特权访问:任何拥有越狱过的iPhone或静态内核分析能力的用户都能提取CoreML模型。 **2021年8月19日。**该项目的用户首次公开碰撞示例:两张视觉上截然不同的图像(collision1.png和collision2.png)在NeuralHash下生成了相同的96比特哈希。该技术基于提取的模型进行梯度搜索,大约需要50行PyTorch代码。 **2021年8月20日至27日。**苹果确认示例碰撞风险确实存在,但坚称从操作角度看,这些问题并无问题,理由如下:(a)NCMEC数据库是机密的,(b)需达到30次匹配才能触发警报。批评者回应称:(a)数据库详细内容无需全部公开,只需要渠道获取目标集中的参考图像,(b)当攻击者可以随意创建N次碰撞时,30次门槛变得微不足道。 **2021年9月。**苹果宣布延期。幕后决策是由于无法在不公开承认架构设计缺陷的情况下技术性捍卫系统。 **2023年。**Prokos、Fendley、Green、Jois和Cao发表了论文《Squint Hard Enough: Attacking Perceptual Hashing with Adversarial Machine Learning》(USENIX Security)。这篇论文对NeuralHash、PhotoDNA(黑盒)和PDQ的三种攻击类型进行了形式化研究。实验结果表明使用标准的对抗性机器学习工具,攻击成功率超过80%。该研究结束了学术争论:脆弱性并非NeuralHash的漏洞,而是哈希家族的结构特性。 那么PhotoDNA和PDQ呢? 有人偶尔会提出这样一个论点:“NeuralHash基于CNN,因此是可微的;而PhotoDNA是传统方法,因此是安全的”。这是错误的。 PhotoDNA是微软的专有技术。我们无法审核其确切实现。然而,Prokos等人展示了黑盒攻击:攻击者无需访问算法,只需通过使用该算法的服务的输入/输出行为。在实验条件下,对PhotoDNA进行黑盒攻击的碰撞生成率为75-80%。 Meta的PDQ是开源的。任何人都可以研究代码并使用梯度进行攻击。Prokos等人用与NeuralHash相同的技术成功攻破了它,虽然成功率略有差异但大致相当。 其根本原因是:所有感知哈希必须是“平滑”的才能实用。如果不“平滑”,哈希无法容忍重新编码或小的改变,也就失去了目的。如果“平滑”,则可以被攻击。平滑性和对抗性防御之间在结构上不可兼得。 PhotoDNA、PDQ、pHash、dHash、aHash、NeuralHash:这些感知哈希都存在可被攻击的风险。过程中有难易程度与成功率的差异,但它们无一能够幸免。在学术文献中,没有一种感知哈希可以同时实现操作容忍度与对抗性鲁棒性。这个问题至今仍未解决,理论上可能在不放弃其中一种特性时无法解决。 对法规的影响 这应该是Chat Control辩论中最重要的问题。 欧洲委员会提出的CSA Regulation要求通信服务提供商通过客户端扫描检测加密消息中的CSAM。这项技术中立的提案提到了“感知哈希匹配”作为可接受的方法之一。关键问题在于:该法规将这一算法视为不变的技术基础,仿佛它是密码学上稳定的。 事实并非如此。由此产生的操作后果是可以预测的。 **复杂攻击者可规避。**具有一定技术知识的实际CSAM分发者利用学术文献中已发表的规避技术修改其材料。这些材料通过系统扫描时不会触发警报。法规所承诺的检测无法实现真正的目标。 **普通用户容易受到攻击。**攻击者生成带有已知CSAM哈希值的图像,并将这些图片大规模发送给受害者(政治对手、前伴侣、记者、持不同政见者)。警报触发后启动法律流程,证明无辜的责任落在受害者身上。该系统为法律骚扰打开了新的途径,难以被轻易排除。 **系统针对普通用户而非真正犯罪分子。**那些通过非常基础手段传播材料的用户——在很多情况下并没有明确的恶意——最终成为被捕的对象。而法规实际要追查的犯罪分子并没有受到真正影响。 这三种效应的结合导致了一个关键问题:系统在检测到真实犯罪情况所需的代价/实际案例随着部署规模增加而升高,同时系统的真实阳性与虚假阳性比率不断恶化。在某些规模上下,系统产生的噪音超过了信号。NCMEC关于PhotoDNA在异构场景中的实际效率研究表明我们可能已经接近这个极限,但公开证据由于供应商的利益而存在偏差。 ...