Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

泽南、杜伟编辑

逆向工程破解苹果监控iPhone图片的算法:原来iOS14.3上就有了

神秘的 NeuralHash 算法,打开一看是 MobileNet V3。

苹果要在新操作系统里内置机器学习扫描程序,监控所有人的手机了。

本月初,当这个消息爆出之后,整个科技圈都大为震动。虽然苹果一再表示扫描照片的算法仅在本地运行,该算法也仅会在部分国家上线,但人们对于科技大厂忽视隐私安全的担忧仍然成为了主流。

对于开发者们来说,机器学习算法是不是真的侵犯隐私,还是要看代码是怎么写的。近日,有程序员就把苹果的 neuralMatch 算法给逆向工程了。

一切都真相大白,甚至还有预料之外的发现。

该破解者在 GitHub 上建立了名为 AsuharietYgvar 的账号,并公开了代码。首先,他发现这个扫描色情信息的算法早在 iOS 14.3 上就已经存在,其隐藏在混淆的类名下。不过苹果在随后发给 Motherboard 的一份声明中表示,在 iOS 14.3 中发现的 NeuralHash 版本并不是与 iOS 15 一起发布的最终版本。

在对隐藏的 API 进行了一些挖掘和逆向工程之后,程序员设法将其模型(即 MobileNetV3)导出到 ONNX,并在 Python 中重建了整个 NeuralHash 算法。大家现在可以直接在 Linux 上尝试了。

GitHub 链接:https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX

出于显而易见的原因,这里没有训练好的模型文件。但是按照作者的操作指南,想要导出一个非常容易,你也不需要使用任何苹果设备。

经过作者的简单测试,苹果的图像识别算法可以容忍图像大小调整和压缩,但如果有人裁剪或旋转了图片,那么 AI 就无法识别了。当然你也可以使用黑客松上破解人脸识别的方法,通过加入扰动欺骗算法将两张完全不同的图片识别为同一张。

现在我们可以更加全面地了解 NeuralHash 算法,并在所有 iOS 设备上启用该算法前了解它的潜在问题了。

根据苹果的官方说法,其正在与儿童安全专家合作,在三个领域引入儿童安全功能。首先,新工具将使父母能够在孩子进行使用 Messages 接收到敏感信息时获得警告。

接下来,iOS 和 iPadOS 将使用新的加密应用程序限制 CSAM(儿童色情内容)的传播。CSAM 检测将帮助苹果向执法部门提供有关 iCloud 照片中 CSAM 集合的信息。

最后,Siri 和搜索的更新将为父母和儿童提供更多信息,并在他们遇到不安全情况时提供帮助。当用户尝试搜索 CSAM 相关主题时,Siri 和搜索也会进行干预。

苹果表示在检测敏感信息的同时,自己无法获知信息本身的内容。这些功能将于今年晚些时候在 iOS 15、iPadOS 15、watchOS 8 和 macOS Monterey 的更新中推出。

在检测到敏感信息时,iMessage 会弹出提示。

具体怎么实现的?

苹果的 NeuralHash 是一种基于神经网络的图像感知哈希算法,它可以实现图像缩放和压缩。哈希算法的步骤是这样的:
  • 图像转换为 RGB 格式;

  • 将图像大小调整为 360x360;

  • 将 RGB 值范围归一化为 [-1, 1];

  • 在 NeuralHash 模型上执行推理;

  • 计算 96x128 矩阵与 128 浮点结果向量的点积;

  • 将二进制应用于 96 浮点结果向量;

  • 将 1.0 和 0.0 的向量转换为 bit,得到 96bit 的二进制数据。

在这个项目中,作者将苹果的 NeuralHash 模型转换为了 ONNX 格式,还提供了测试模型的演示脚本。

系统要求

作者表示,macOS 和 Linux 系统都可以运行。

在安装 LZFSE 解码器时,对于 macOS 系统,运行 brew install lzfse 即可安装;对于 Linux 系统,从 lzfse 资源中创建和安装。

此外,作者选用的 Python 版本是 3.6 及以上,需要安装以下依赖:

pip install onnx coremltools

转换指南

步骤 1:准备 NeuralHash 模型

你需要最近的 macOS 或 iOS 构建中的 4 个文件,分别如下:

  • neuralhash_128x96_seed1.dat

  • NeuralHashv3b-current.espresso.net

  • NeuralHashv3b-current.espresso.shape

  • NeuralHashv3b-current.espresso.weights

具体地,你可以通过以下两种方式获取以上文件。

第一种选择是从 macOS 或 jailbroken iOS 设备中获取。如果 macOS 是 11.4 及以上或者 jailbroken iOS 是 14.7 及以上,则只需要从 macOS 上的 / System/Library/Frameworks/Vision.framework/Resources / 或 iOS 上的 / System/Library/Frameworks/Vision.framework / 中抓取以上文件即可。

第二种选择是从 iOS IPSW 中获取,并将它们放在同一个目录下

mkdir NeuralHashcd NeuralHashcp /System/Library/Frameworks/Vision.framework/Resources/NeuralHashv3b-current.espresso.* .cp /System/Library/Frameworks/Vision.framework/Resources/neuralhash_128x96_seed1.dat .

步骤 2:解码模型结构和形状

一般编译的 Core ML 模型在 model.espresso.net 中存储结构,在 model.espresso.shape 中存储形状,并且都使用 JSON 格式。NeuralHash 模型同样如此,但是使用 LZFSE 进行了压缩。

步骤 3:将 NeuralHash 模型转换为 ONNX 格式

最终得到的模型是 NeuralHash/model.onnx。

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

作者答疑

作者在 Reddit 上回答了网友的一些疑问(以下作者回复以第一人称表述)。

疑问 1:如何知道提取的模型与用于 CSAM 检测的 NeuralHash 相同

首先,模型文件中有前缀 NeuralHashv3b-,它与苹果《CSAM 检测技术总结》文档中使用的 term 相同。

其次,在这篇文档中,苹果在 Technology Overview -> NeuralHash 章节描述了该算法的细节,这与我发现的完全相同。如下所示,浮点数 N=128,M=96。

Second, the descriptor is passed througha hashing scheme to convert the N floating-point numbers to M bits. Here, M is much smaller than thenumber of bits needed to represent the N floating-point numbers.

此外,如果你改变图像大小或压缩图像,该脚本生成的哈希几乎不会改变,这再次与苹果文档中描述的一致。

《CSAM 检测技术总结》文档地址:https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf

疑问 2:repo 中生成的哈希为什么略有不同?(相差几个 bits)

这是因为神经网络基于浮点运算,准确率高度依赖于硬件。对于较小的网络,影响不大。但是,NeuralHash 拥有 200 多个层,这导致了显著的累积误差。在实践中,苹果很可能在实现哈希比较时允许几个 bits 的误差。

疑问 3:如何发现隐藏的 API 函数?

隐藏的 API 之前已被其他人发现了,因此我不打算过多地讨论逆向工程的过程。我所做的主要是使用 Xcode 调试器 + Hopper 反汇编器 + LLDB 命令,来理解该 API 函数如何以汇编代码在底层工作。有一些部分我没有理解,但通过猜测,我成功地从脚本中得到与从 API 函数中得到的相同的哈希结果。

发现隐藏 API 的另一个项目地址:https://github.com/KhaosT/nhcalc

在 NeuralHash 代码被上传到 GitHub 之后,很快就引起了人们的注意。苹果立即做出回应:用户在 GitHub 上分析的那个版本是一个通用版本,而不是用于 iCloud 照片 CSAM 检测的最终版本。苹果表示,它还公开了该算法。

「NeuralHash 算法…… 是操作系统代码的一部分,(并且)安全研究人员可以验证它的行为是否符合描述,」苹果在一份文档中写道。苹果还表示,在用户存储的文件超过 30 个匹配阈值后,运行在苹果服务器上的第二个非公开算法将被激活检查结果。

文档中写道:「选择这个独立的哈希是为了避免由于非 CSAM 图像被对抗性攻击干扰导致误报的可能性。」

参考内容:
https://www.apple.com/child-safety/
https://www.vice.com/en/article/wx5yzq/apple-defends-its-anti-child-abuse-imagery-tech-after-claims-of-hash-collisions
https://www.reddit.com/r/MachineLearning/comments/p6hsoh/p_appleneuralhash2onnx_reverseengineered_apple/

工程智能软件苹果
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

图像缩放技术

人脸识别技术

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

图像转换技术

图像到图像的转换是从一个域获取图像并对其进行转换以使它们具有来自另一个域的图像的样式(或特征)的任务。

逆向工程技术

逆向工程,又称反向工程,是一种技术过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能性能规格等设计要素,以制作出功能相近,但又不完全一样的产品。逆向工程源于商业及军事领域中的硬件分析。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

Hopper机构

Hopper开发了一个移动应用程序,它使用大数据来预测和分析机票价格。它的应用程序向旅行者提供他们在航班上获得交易所需的信息,并在航班价格处于预测的最低点时通知他们。

官网,http://www.hopper.com/
推荐文章
暂无评论
暂无评论~