还记得上周,苹果宣布即将推出 CSAM 检测系统时,遭到了 4000 多个组织及个人的公开反对,他们质疑苹果此举会破坏用户隐私和端到端加密机制。彼时,苹果给出的回答是:将利用一种名为 NeuralHash 的加密算法,不会直接查看用户相册。
本以为这个神秘的 NeuralHash 会在苹果力排众议真正推出 CSAM 检测系统时才能感受到,不曾想原来它早已藏在了 iOS 14.3 中!
近日,一位 Reddit 用户 Asuhariet Ygvar 通过逆向工程将隐藏在 iOS 14.3 中的 NeuralHash 完全“破解”,并在 GitHub 上分享了他用 Python 重建的整个 NeuralHash 算法,甚至在 macOS 和 Linux 上都可以尝试体验。
这还没完,在NeuralHash 算法被公开的几个小时后,一件令苹果更为头疼的事发生了:一位英特尔实验室的研究人员 Cory Cornelius 发现 NeuralHash 存在“哈希冲突”的问题。
据 Asuhariet Ygvar 在 Reddit 上的说法,NeuralHash 算法早就存在于 iOS 14.3,只不过藏在了模糊的类名之下因此难以发现。
在对隐藏的 API 进行挖掘时,Asuhariet Ygvar 发现了 NeuralHash,随后通过逆向工程将其模型(在 iOS 14.3 中名为 MobileNetV3)导出到 ONNX,并用 Python 进行重新构建。(注:ONNX 是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。)
经 Asuhariet Ygvar 研究,总体来说 NeuralHash 就是一种基于神经网络的图像感知哈希,具体步骤如下:
将图像转换为 RGB 模式;
将图像大小调整为 360x360;
将 RGB 值标准化为 [-1, 1] 范围;
用 NeuralHash 模型进行推理;
将运算得到的 128 个浮点数向量与 96x128 矩阵相乘;
通过单位阶跃函数将得到的 96 个浮点向量转化为二进制;
将 1.0 和 0.0 的向量转换为比特,生成 96 位二进制数据。
相关代码及用法可前往其 GitHub 地址进行查看:https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX。
说到这里,或许会有人提出质疑:苹果都没有发布过,他怎么就确定这是 NeuralHash 算法?
Reddit 上就有一位用户 @fourthie 在 Asuhariet Ygvar 的这则帖子下评论道:“能否详细解释一下你是如何知道你提取的模型与将用于 CSAM 检测的 NeuralHash 相同?”
对此,Asuhariet Ygvar 给出了 2 个理由:
首先,模型文件的前缀“NeuralHashv3b-”与苹果文档中所提到的术语相同。
其次,苹果文档中 Technology Overview -> NeuralHash 章节所描述的算法细节与 Asuhariet Ygvar 提取的模型完全一致。
例如,文档中提到:“其次,描述符通过哈希方案将 N 个浮点数转换为 M 位。这里,M 比表示 N 个浮点数所需的位数要小得多。”
这点可从以下 Asuhariet Ygvar 在 GitHub 上分享的代码得出:N=128,M=96。
此外,Asuhariet Ygvar 在 iOS 14.3 中发现的 NeuralHash 也能完美实现苹果文档中所描述的“无论调整图像大小或压缩图像,哈希值几乎不会改变”。
这两个强有力的理由赢得了许多人的信任,因此部分开发者立即着手研究 Asuhariet Ygvar 开源在 GitHub 上的 Python 脚本,理解其工作原理并试图搜寻漏洞的存在。
结果,苹果真的被“打脸”了:这个苹果此前反复强调安全的 NeuralHash 算法存在 Bug 并可被滥用。
一位英特尔实验室的研究人员 Cory Cornelius 在 Asuhariet Ygvar 的 GitHub 下评论:你能验证下面这两张图存在哈希冲突吗?
Cory Cornelius 补充道,他根据Asuhariet Ygvar 给出的 NeuralHash 用法进行操作,结果发现这两张迥然不同的图像的哈希值居然一模一样!
$ python3 nnhash.py NeuralHash / model.onnx neuralhash_128x96_seed1.dat beagle360.png
59a34eabe31910abfb06f308
$ python3 nnhash.py NeuralHash / model.onnx neuralhash_128x96_seed1.dat collision.png
59a34eabe31910abfb06f308
Asuhariet Ygvar 随后也证实了这个问题:“是的!我可以确认这两个图像在我的 iPhone 上生成了完全相同的哈希值,与你生成的一样。”
这种情况的出现,显然推翻了苹果在介绍 CSAM 检测系统文件所提到的描述“名为 NeuralHash 的哈希技术会分析图像并将其转换为特定于该图像的唯一编号”。
有开发者向 Cory Cornelius 提问能否因此制造哈希冲突,Cory Cornelius 给予了肯定回答:“我相信可以根据一些所需的哈希值,生成对应的灰度图像。”
Cory Cornelius 的回答也就表示了 NeuralHash 算法不仅存在缺陷,并且还有被滥用的可能:如果有人借此创建出与色情图像或虐童图像的哈希值一致的“假图像”,并将其发送给苹果用户,那这些人岂不是都会被 CSAM 检测系统判定为可疑?
为此,有媒体向苹果询问了这个问题,苹果的回应却是:“用户在 GitHub 上分析的那个版本只是一个早期版本,并非是用于对 iCloud 照片进行 CSAM 检测的最终版本。”
此外,苹果还解释称,他们不仅依靠 CSAM 检测系统,还有“人工审查”这个双保险:苹果 CSAM 检测技术将在用户设备上运行,该系统依赖于国家失踪与受虐儿童中心 (NCMEC) 和其他儿童保护组织提供的已知 CSAM 照片的哈希数据库。当用户上传 iCloud 照片时,苹果系统会进行扫描确定是否有与CSAM 照片匹配的哈希值,如果匹配的次数超过 30,系统将其进行标记,并交由苹果团队人工审核。
但苹果始终没有正面回应 NeuralHash 算法可制造“哈希冲突”的疑问,SIXGEN 网络产品总监 Ryan Duff 也表示:“看起来苹果的算法非常容易受到原像攻击。”
自本月苹果宣布即将推出 CSAM 检测系统以来,就不断被质疑和反对,许多隐私和安全专家都担忧这一系统恐会被滥用。而这几天 Asuhariet Ygvar 和 Cory Cornelius 的发现,又再次将人们抗议的声音推向了新高度,即使苹果及时回应似乎也无法缓和这持续了近半个月的反对浪潮。
那么你对苹果宣布推出的 CSAM 检测系统有什么看法?
https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf
https://www.vice.com/en/article/wx5yzq/apple-defends-its-anti-child-abuse-imagery-tech-after-claims-of-hash-collisions
https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX
本文来自微信公众号“CSDN”(ID:CSDNnews),作者:郑丽媛,36氪经授权发布。