晓查 发自 凹非寺
量子位 报道 | 公众号 QbitAI

没想到苹果被打脸来得如此之快。

月初,苹果表示将在iOS 15、macOS 12中加入对用户照片的检测,目的是遏制儿童色情与虐童照片的传播。

苹果还一再强调这项技术的安全性和准确性。

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

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

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

这让苹果十分尴尬。

Ygvar发现,其实早在iOS 11.3macOS 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解压工具:

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

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

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

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

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模型计算一下却发现,二者的哈希值完全一样。

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

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

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

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

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

参考链接:
[1]https://www.reddit.com/r/MachineLearning/comments/p6hsoh/p_appleneuralhash2onnx_reverseengineered_apple/
[2]https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX
[3]https://gist.github.com/unrealwill/c480371c3a4bf3abb29856c29197c0be
[4]https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX/issues/1#issue-973388387
[5]https://techcrunch.com/2021/08/18/apples-csam-detection-tech-is-under-fire-again/

苹果遭火速打脸:照片扫描AI被逆向工程,英特尔工程师发现漏洞相关推荐

  1. CPU也支持AI加速,英特尔发布第3代至强处理器,推理速度提升80%,阿里腾讯云都在用...

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI时代,英特尔最担心的是什么?当然是自家的CPU被GPU.TPU等AI硬件的冲击.现在英特尔的新一代CPU也带来了全新的AI加速能力. ...

  2. 地平线获近亿美元A+轮融资,AI时代的英特尔被英特尔领投

    李根 发自 深夜凹非寺  量子位 报道 | 公众号 QbitAI 2015年余凯出走百度创业,被媒体问梦想是什么? 彼时"人工智能"只是个起起落落的历史古董,深度学习没太多人能听得 ...

  3. AI一分钟 | 传美团37亿美元收购摩拜;苹果在给Mac设计处理器,2020年替代英特尔

    整理 | DavidZh 一分钟AI 摩拜 Mobike 可能作价 37 亿美元被美团收购,其中包括 27 亿美元的实际作价(12 亿现金+15 亿股权)和 10 亿美元的债务 Google 分拆搜索 ...

  4. 杨笠代言电脑遭投诉抵制,网友吵翻!英特尔回应了...

    "为什么看起来那么普通,但是他却可以那么自信." "男人,垃圾." 一系列有所指向的金句让脱口秀演员杨笠成功出圈,但也多次她陷入争议之中. 这两天,因为一个代言 ...

  5. 苹果“自研”心不死 仍考虑收购英特尔基带业务

    近日,据外媒最新报道,苹果正在与英特尔谈判,考虑收购英特尔德国的调制解调器部门. 苹果与高通前一段时间达成了和解,同时签署了6年的基带合作协议,这意味着未来苹果旗下的产品都可以使用高通方面提供基带方面 ...

  6. 隐瞒英特尔重大安全漏洞惹众怒,苹果遭遇集体诉讼

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作为全球知名芯片制造商,英特尔此前曝光的"Spectre"和" ...

  7. “掘金”金融AI落地,英特尔趟出一套通关攻略

    有人说,金融业是最大的AI应用场景,但不管怎样,不可否认的事实是金融业已经从数字化走向AI化. 某种程度上,AI与金融业有着天然的契合性:其一,金融业本身就是以数据为基本元素的行业,它为AI的模型训练 ...

  8. 不到400元,将你的手机变成可编程AI机器人丨英特尔出品

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只需要400块不到,就能拥有一个可编程的AI小机器人,而且还能用手机控制? 这就是英特尔实验室(Intel Lab)最新公布的研究成果Ope ...

  9. 苹果发布 iOS、macOS 更新,系统修复英特尔重大漏洞

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今日凌晨,苹果公司对面向 iPhone.iPad 产品的 iOS 系统,以及面向电脑的 ma ...

最新文章

  1. 六面!终斩腾讯NLP暑期实习offer
  2. ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案...
  3. 支持Dubbo接口文档生成的工具!
  4. 网页开发中文本编辑器UEditor的使用
  5. JVM史上最最最完整深入解析,不看后悔一百次!
  6. py-faster-rcnn + ZF 实现自己的数据训练与检测(二)
  7. BASIC-2 01字串
  8. 【机器人】一转眼,波士顿动力 Atlas 机器人又会过独木桥了!|湾区人工智能...
  9. WDF框架下 硬盘的虚拟
  10. 大智慧705服务器文件夹,大智慧2文件目录结构.doc
  11. pycharm怎么安装pygame_Python实战:运用Pygame编写Flappy bird小游戏,我能玩一天
  12. 北大教授的美国博士生涯:学术是自由灵魂的分泌物
  13. 华为云 鲲鹏ARM云服务器 和 x86云服务器 性能评测对比
  14. FastDFS自定义文件存储系统
  15. 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据
  16. 八、Echart图表 之 series盒须图(箱体图)基本使用与配置大全
  17. ArcMap出图小技巧:图例,比例尺,指北针,标题(附练习数据)
  18. scratch案例——小猫钓鱼
  19. TRIZ创新方法——特性传递
  20. 那些年,我们一起追过的Linux

热门文章

  1. 是否可以将标志传递给Gulp以使其以不同方式运行任务?
  2. 您如何确定以编程方式发送的电子邮件不会自动标记为垃圾邮件?
  3. 我可以在Android版式中加下划线吗?
  4. __add__,关于运算符重载(用户权限)
  5. Windows下使用idea git 插件
  6. web-inf下文件访问
  7. css绝对定位如何在不同分辨率下的电脑正常显示定位位置?
  8. Careercup | Chapter 1
  9. vuecli项目文件命名_vue.js学习笔记(一)——vue-cli项目的目录结构
  10. 代码流程图怎么画_程序流图怎么画?详细图文解析绘制程序流程图