并提供了一个在GitHub上将它转换成Python的教程

IT之家 夏冰 2021-08-20 16:00  阅读量:18250   

没想到苹果这么快就被打脸了本月初,苹果表示将在iOS 15和macOS 12中加入用户照片检测功能,旨在遏制儿童色情和虐童照片的传播苹果一再强调这项技术的安全性和准确性

现在,在不到半个月的时间里,苹果的技术被一位名叫Asuhariet Ygvar的程序员破解了。

他成功地逆向工程了这个未发布的人工智能模型,并提供了一个在GitHub上将它转换成Python的教程。

几个小时后,英特尔的另一名工程师发现了模型中的一个错误。

这让苹果非常尴尬。

Ygvar发现,其实早在iOS 11.3和macOS 11.4的时候,系统就已经加入了照片检测模型NeuralHash,只是还没有启用。

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

如何提取神经哈希模型

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

/系统/库/框架/愿景.框架/资源/

/系统/库/框架/愿景.框架/

你会在neuralhash的开头找到四个文件:

由于步骤很多,这里不再重复具体操作请参考本文末尾的GitHub文档

如何进行逆向工程

这四个文件中,net和shape结尾的文件为json格式,由苹果开源技术LZFSE压缩,重量节省重量。

减压前应安装LZFSE减压工具:

brewinstalllzfse

解压网和形状,并把它们放在一个文件夹与重量文件:

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

pipinstallonnxcoremltools

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

AB14 FEBAA837B6C1484C35E6神经哈希是如何工作的

话虽如此,苹果的NeuralHash是如何生成图像哈希值的。

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

1.将图像转换为RGB,

2.将图像大小调整为360x360,

3.将RGB值归一化为,

4.神经哈希模型推理,

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

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

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

这项技术可确保图像压缩或调整大小时哈希值保持不变。

几个小时后发现了Bug

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

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

只能说两者互不相干,但通过NeuralHash模型计算发现两者的哈希值完全相同。

$ python 3 nnhash . pyneural hash/model . onnxneural hash _ 128 x96 _ seed 1 . datbeagle 360 . png 59 a 34 eabe 31910 ab FB 06 f 308 $ python 3 nnhash . pyneural hash/model . onnxneural hash _ 128 x96 _ seed 1 . dat conflict . png 59 a 34 eabe 31910 ab FB 06 f 308

其实早在11天前,另一个名为unrealwill的GitHub用户就上传了哈希值冲突攻击的代码,生成了与原始图像相同的图像。

外媒TechCrunch向苹果询问了这个漏洞苹果还表示,现在已经反向工程的NeuralHash是早期版本,不是即将发布的完整版本

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

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

不知道下个月正式版的iOS 15是否真的有显著的提升。

GitHub参考链接:点击打开

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。