整理 | 禾木木
出品 | CSDN云计算(ID:CSDNcloud)
苹果宣布即将推出 CSAM 检测系统时,遭到了 4000 多个组织及个人的公开反对,他们质疑苹果会破坏用户隐私和端到端加密机制。一位 Reddit 用户发现 CSAM 算法竟已被悄悄地隐藏在 iOS 14.3 里。算法公开几小时后,一位英特尔实验室的研究员就发现了其存在的缺陷:哈希冲突。
苹果宣布计划推出 CSAM 检测技术,该功能本该在今年 9-10 月份上线,将利用一种名为 NeuralHash 的加密算法,不会直接查看用户相册。
本以为这个神秘的 NeuralHash 会在苹果力排众议真正推出 CSAM 检测系统时才能感受到,不曾想却被 Reddit 网友发现 CSAM 检测技术的算法 NeuralHash 已经混进了现在的系统里。这位网友并在 GitHub 上分享了他用 Python 重建的整个 NeuralHash 算法,甚至在 macOS 和 Linux 上都可以尝试体验。
这还没完,在 NeuralHash 算法被公开的几个小时后,一件令苹果更为头疼的事发生了:一位英特尔实验室的研究人员 Cory Cornelius 发现 NeuralHash 存在“哈希冲突”的问题。
网友发现隐藏在 iOS 14.3 的秘密
8月18日,据 Asuhariet Ygvar 在 Reddit 上的说法,NeuralHash 算法早就存在于 iOS 14.3,只不过藏在了模糊的类名之下因此难以发现。
在对隐藏的 API 进行挖掘时,Asuhariet Ygvar 发现了 NeuralHash,随后通过逆向工程将其模型(在 iOS 14.3 中名为 MobileNetV3)导出到 ONNX,并用 Python 进行重新构建,甚至可以在Linux上测试NeuralHash。(注:ONNX 是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。)
经 Asuhariet Ygvar 研究,总体来说 NeuralHash 就是一种基于神经网络的图像感知哈希,具体步骤如下:
代码:https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX。
AsuharietYgvar则列举了这就是苹果所采用的算法的证据。
首先,模型文件的前缀“NeuralHashv3b-”与苹果文档中所提到的术语相同。
其次,苹果文档中 Technology Overview -> NeuralHash 章节所描述的算法细节与 Asuhariet Ygvar 提取的模型完全一致。
例如,文档中提到:“其次,描述符通过哈希方案将 N 个浮点数转换为 M 位。这里,M 比表示 N 个浮点数所需的位数要小得多。”
这点可从以下 Asuhariet Ygvar 在 GitHub 上分享的代码得出:N=128,M=96。
此外,Asuhariet Ygvar 在 iOS 14.3 中发现的 NeuralHash 也能完美实现苹果文档中所描述的“无论调整图像大小或压缩图像,哈希值几乎不会改变”。
虽然不同设备生成的哈希值会有几位的差异,是由于神经网络基于浮点计算,精度在很大程度上取决于硬件。对于NeuralHash这种有200多层的网络来说,会导致大量的累积误差。
哈希算法存在 Bug
公开代码后的短短几小时内,英特尔实验室的研究人员Cory Cornelius就发现了两张毫无关联的照片竟然有一样的哈希值!
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 给予了肯定回答:“我相信可以根据一些所需的哈希值,生成对应的灰度图像。”
通常来说,哈希算法具有以下特点:
相同的输入一定得到相同的输出;
不同的输入大概率得到不同的输出。
但是由于通过哈希函数产生的哈希值是有限的,当输入数据量达到一定的程度时,就会导致不同的数据在经过哈希函数处理之后产生相同的值。
这也就产生了哈希冲突。
如果有人利用被 NCMEC 标注的图片的哈希值改变其他图片,那么任何存储这些图片的人都将拥有这些图片。
苹果:这只是一个早期版本罢了
有媒体向苹果询问了这个问题,苹果的回应却是:“用户在 GitHub 上分析的那个版本只是一个早期通用版本,并非是用于对 iCloud 照片进行 CSAM 检测的最终版本。”
此外,苹果还解释称,他们不仅依靠 CSAM 检测系统,还有“人工审查”这个「双保险」。
当用户上传 iCloud 照片时,苹果系统会进行扫描确定是否有与CSAM 照片匹配的哈希值,如果匹配的次数超过 30,系统将其进行标记,并交由苹果团队人工审核。
但苹果始终没有正面回应 NeuralHash 算法可制造“哈希冲突”的疑问。
那么你对苹果宣布推出的 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
https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX/issues/1#issue-973388387
往期推荐
一则有趣的机场广告
微软云打印将直接与 OneDrive 集成等
这个数据仓库,竟然把淘宝和京东干翻了。。
被 AI 算法“监控”的打工人
点分享
点收藏
点点赞
点在看