苹果遭火速打脸:照片扫描 AI 被逆向工程

本文转载自IT之家

8 月 19 日消息 没想到苹果被打脸来得如此之快。月初,苹果表示将在 iOS 15、macOS 12 中加入对用户照片的检测,目的是遏制儿童色情与虐童照片的传播。苹果还一再强调这项技术的安全性和准确性。

现在,不到半个月的时间,苹果的这项技术已经被一位名为 Asuhariet Ygvar 程序员“破解”了。

他成功将这个尚未正式发布的 AI 模型逆向工程,并在 GitHub 上提供转化成 Python 的教程。

几个小时后,另一位来自英特尔的工程师就发现了该模型的一个 bug。

这让苹果十分尴尬。

Ygvar 发现,其实早在 iOS 11.3、macOS 11.4 开始,就已经在系统中加入了照片检测模型 NeuralHash,只不过尚未启用。

因此任何可以下载到苹果系统固件的人,都可以轻松将 NeuralHash 模型提取出来。

如何提取 NeuralHash 模型

对于 macOS 用户或者已经越狱的 iOS 用户来说,找到 NeuralHash 模型文件非常方便,就在以下路径中:

/System/Library/Frameworks/Vision.framework/Resources/ (macOS)

/System/Library/Frameworks/Vision.framework/ (iOS)

你会发现 neuralhash 开头的 4 个文件:

至于未越狱的用户,可以下载 ipsw 格式刷机文件,找到其中最大的 dmg 文件,从这个镜像中找到模型。

由于步骤较多,在此不再赘述,具体操作看参照文末 GitHub 文档操作。

如何逆向工程

在这 4 个文件中,net 和 shape 结尾的文件都是 json 格式,使用苹果开源技术 LZFSE 压缩;weights 保存的是权重。

解压前首先需安装 LZFSE 解压工具:

brew install lzfse

将 net 和 shape 解压,和权重文件放在一个文件夹中:

dd if=NeuralHashv3b-current.espresso.net bs=4 skip=7 | lzfse -decode -o model.espresso.net
dd if=NeuralHashv3b-current.espresso.shape bs=4 skip=7 | lzfse -decode -o model.espresso.shape
cp NeuralHashv3b-current.espresso.weights model.espresso.weights

为了把模型转换为 ONNX 格式,还要安装以下依赖项:

pip install onnx coremltools

转换模型时,Ygvar 使用了腾讯优图实验室的 TNN,这是一款可以转换多种 AI 模型的开源工具,可以将苹果的 Core ML 转为 ONNX 格式。

cd ..
git clone https://github.com/AsuharietYgvar/TNN.git
cd TNN
python3 tools/onnx2tnn/onnx-coreml/coreml2onnx.py ../NeuralHash

模型转化为 ONNX 格式后,就可以算出任何图片的 96bit 神经哈希值。

ab14febaa837b6c1484c35e6

NeuralHash 如何工作

说到这里,苹果的 NeuralHash 具体是如何生成图片哈希值的?

NeuralHash 是一种基于神经网络的图像感知哈希(perceptual hashing)方法,具体步骤如下:

1、将图像转换为 RGB;

2、将图像大小调整为 360x360;

3、将 RGB 值归一化到 [-1, 1] 范围;

4、用 NeuralHash 模型进行推理;

5、将运算得到 128 个浮点数的向量与 96x128 矩阵相乘;

6、对生成的 96 个浮点向量使用单位阶跃函数;

7、将 1.0 和 0.0 的向量转换为位,生成 96 位二进制数据。

这项技术保证图像被压缩或者大小被调整的情况下,哈希值依旧不变。

▲ 经过黑白处理的图片和原图片具有相同哈希值

几小时后就被找到 bug

但是 Ygvar 发现,虽然 NeuralHash 可以承受图像大小调整和压缩,但如果图像遭裁剪或旋转,哈希值则会发生改变。

这也意味着,不法分子可以通过后两种编辑图片的方法,逃过图片审核。

在 Ygvar 发布逆向工程的模型几个小时后,另一位高手就发现了 NeuralHash 的一个 bug。

英特尔工程师 Cory Cornelius 发现其中存在哈希值冲突漏洞,请看下面两张图:

只能说二者毫不相干,但是用 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

其实早在 11 天前,另一位名叫 unrealwill 的 GitHub 用户就上传了哈希值冲突攻击的代码,用来生成和原图哈希值一样的图片。

外媒 TechCrunch 针对这个漏洞询问了苹果。苹果还表示,现在被逆向工程的 NeuralHash 是早期版本,而不是即将推出的完整版本。

但苹果回避了哈希值冲突问题,强调有人工审核防止该功能被滥用。

破解 NeuralHash 的 Ygvar 表示,他的目的是希望帮助我们更好地了解该算法,在所有 iOS 设备上启用之前发现潜在的问题。

不知下个月的 iOS 15 正式版是否真有重大改进。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值