技术标签: python 机器学习 计算机视觉 深度学习 人工智能
????????关注后回复 “进群” ,拉你进程序员交流群????????
来源丨新智元
新智元报道
来源:Reddit
编辑:Priscilla 好困
苹果偷偷将CSAM检测技术算法放进iOS14.3里!
前段时间,苹果宣布计划推出CSAM检测技术,能够扫描所有存储在iCloud上的照片,找出符合虐待儿童、儿童色情内容的照片(CSAM)。
该功能本该在今年9-10月份上线,却被Reddit网友发现CSAM检测技术的算法NeuralHash已经混进了现在的系统里。
即便苹果的初衷是好的,但在大多数人眼里,苹果是在监视用户的一举一动。
新闻一发布,GitHub上就有超过6000多家组织和个人签署联名信,强烈谴责苹果这项侵犯个人隐私的新技术。
而德国有关部门也致信库克,希望苹果能够重新考虑CSAM检测计划。
但现在苹果却想要试图蒙混过关了吗?!
网友发现算法早已存在
昨日,Reddit用户AsuharietYgvar表示:
在iOS 14.3里,NeuralHash就已经隐藏在混淆类名里了。
Ygvar对隐藏的API进行了一些挖掘和逆向工程,成功将MobileNetV3模型导出到ONNX。
还在Python中重建了整个NeuralHash算法,甚至可以在Linux上测试NeuralHash。
苹果的NeuralHash是一种基于神经网络的图像感知哈希方法,并且可以不受对图像大小的调整和压缩的影响。
https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX
哈希算法的步骤:
将图像转换为RGB。
调整图像大小为360x360。
将RGB值归一化为[-1, 1]范围。
对NeuralHash模型进行推理。
计算96x128矩阵与所产生的128个浮点的向量的点积。
对产生的96个浮点数向量应用二进制步骤。
将1.0和0.0的向量转换为比特,得到96位二进制数据。
AsuharietYgvar则列举了这就是苹果所采用的算法的证据。
首先,模型文件的前缀是NeuralHashv3b-,与苹果的文件中的术语相同。
(https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf)
其次,苹果对算法描述的细节也与Ygvar的发现相同:
「第二,描述符被传递到一个哈希方案,将N个浮点数转换为M位。这里,M远远小于 这里,M远远小于表示N个浮点数所需的比特数。」
从下面这两段代码中可以看到,N=128,M=96。
此外,如果调整图片的大小或压缩图片,这个脚本产生的哈希值几乎没有变化,这又和苹果的文件中描述的一样。
值得注意的是,不同设备生成的哈希值会有几位的差异。
这是由于神经网络基于浮点计算,精度在很大程度上取决于硬件。
对于NeuralHash这种有200多层的网络来说,会导致大量的累积误差。
哈希冲突
公开代码后的短短几小时内,英特尔实验室的研究人员Cory Cornelius就发现了两张毫无关联的照片竟然有一样的哈希值!
$ python3 nnhash.py NeuralHash/model.onnx neuralhash_128x96_seed1.dat beagle360.png59a34eabe31910abfb06f308$ python3 nnhash.py NeuralHash/model.onnx neuralhash_128x96_seed1.dat collision.png59a34eabe31910abfb06f308
哈希值同为59a34eabe31910abfb06f308
随后AsuharietYgvar也证实了这个发现。
哈希是将任意长度的数据映射到有限长度的域上,并使输出作为这段数据的特征。
同时,哈希算法所计算出来的哈希值(Hash Value)具有不可逆(无法逆向演算回原本的数值)的性质。
通常来说,哈希算法具有以下特点:
相同的输入一定得到相同的输出;
不同的输入大概率得到不同的输出。
但是由于通过哈希函数产生的哈希值是有限的,当输入数据量达到一定的程度时,就会导致不同的数据在经过哈希函数处理之后产生相同的值。
这也就产生了哈希冲突。
然而,早在8月8日,有技术人员就指出,NCMEC采用的PhotoDNA感知哈希算法存在缺陷。
也就是说,如果有人利用被NCMEC标注的图片的哈希值改变其他图片,那么任何存储这些图片的人都将拥有儿童色情制品。
https://www.hackerfactor.com/blog/index.php?/archives/929-One-Bad-Apple.html
微软表示「PhotoDNA的哈希值是不可逆的」。
https://www.microsoft.com/en-us/photodna
而实际上,PhotoDNA哈希值可以投射到26x26的灰度图像中,只是有点模糊,但细节足以识别人和物。
而且逆向PhotoDNA哈希值并不比解开26x26的数独题更复杂,这是一项非常适合计算机的任务。
同样,Cory Cornelius发现苹果的NeuralHash也能被同样的手法欺骗。
利用模型得到狗图像的哈希值,然后让模型去改变灰度图像,使其输出与狗图像相同的哈希值。
根据鸽巢原理可知,这是一个第二次原像攻击问题。
对此,加州大学伯克利分校的高级研究员Nicholas Weaver表示:「这只是用一些垃圾图像骚扰苹果的响应团队而已」。
而SIXGEN公司网络产品总监Ryan Duff说:「看起来苹果的算法相当容易受到原像攻击」。
解释?狡辩?
苹果在一份白皮书中解释,CSAM检测技术将在用户的设备上运行。
检测技术会扫描用户上传到iCloud上的照片,将图像转换成哈希值后,与已知CSAM照片的哈希数据库进行比对。
如果两者哈希值匹配次数超过30次,系统就会标记这个图像,由团队审查。
而英特尔实验室研究人员发现两张图片哈希值相同后,苹果作出的解释是:
GitHub分析的版本只是一个通用版本。
如果照片30次的哈希值比对都一样,CSAM检测技术还有另一个非公开的算法。
「非CSAM图像被对抗性干扰,令NeuralHash与设备上加密但CSAM数据库相匹配,导致超过了匹配阈值,这个可能性很低,但这个独立的哈希就是为了避免出现这种可能性。」
照这么说,Ygvar逆向出来的代码发生哈希冲突也没有关系,苹果还有「双保险」。
但是,苹果似乎没有get到重点:
CSAM检测技术已经悄悄地安排上了。
参考资料:
https://www.reddit.com/r/MachineLearning/comments/p6hsoh/p_appleneuralhash2onnx_reverseengineered_apple/
https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX
-End-
最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!
点击????卡片,关注后回复【面试题
】即可获取
在看点这里好文分享给更多人↓↓
文章浏览阅读171次。就是查询数组区间静态第k小,怎么感觉比线段树还好写代码:#include<stdio.h>#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<cmath>#include<vector>#inc..._p3834分块
文章浏览阅读414次。讲解关于phpdbg的相关使用方法文章目录1. phpdbg的启用1.1 phpdbg可用的选项1.2 phpdbg中p选项的使用2. 控制代码运行2.0 run启动运行2.1 step单步调试2.2 next跨越单步调试2.3 until到下一个断点2.4 leave跳过到下一条return2.5 finish完整执行3. 断点的设置3.1 设置断点3.2 删除断点3.3 设置和打印变量3..._php phpdbg使用
文章浏览阅读1.2w次,点赞10次,收藏27次。方法之一: 1.进入workspace/.metadata/.plugins/ 2.将org.eclipse.core.resources文件压缩 3.删除org.eclipse.core.resources 4.然后重启 eclipse,这时会重新创建一个org.eclipse.core.resources 5.关闭eclipse 6.将..._eclispe-swt 无响应 配置
文章浏览阅读1.7w次,点赞5次,收藏4次。解压文件时,系统找不到指定路径问题描述:将压缩包放在桌面创建的文件夹里可以正常解压,但是放在ProgramFiles中就是提示系统找不到指定路径方法一、修改Users控制权限右键点击ProgramFiles中你要用到的子文件夹→右键属性→安全→编辑→找到Users→勾选完全控制→应用。方法二、解压后复制到ProgramFiles中如题。ps:家用推荐方法一。如果文件解压后的压缩包中还有压缩包,使用方法一可以直接在文件夹操作。用用法二需要再解压,再复制。方法一明显更简单,只有一步操作,并且不用_解压系统找不到指定的路径怎么办
文章浏览阅读8.1k次。macOS 在用了一段时间(到现在有一年的时间吧)之后,变得越来越慢了,比如要上传文件或保存文件,打开浏览文件或目录对话窗口就需要等几十秒,简直没办法忍受。解决方法:1. 打开终端输入 sudo nano /etc/auto_master 回车,输入密码;nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发..._mac访达标签加载很慢怎么回事
文章浏览阅读1.9k次。How to complete git branch management with command git checkout_git checkout huawei/wl/iware/22b/2020.01
文章浏览阅读961次。游戏图形界面开发基础AWT简介AWT(Abstract Window Toolkit,抽象窗口工具集) 它为用户提供基础的界面构件 组件类(Component)容器类(Container) 图形类(Graphics) 布局管理器类(LayoutManager)在AWT中存在缺少剪切板,打印支持等缺陷,甚至没有弹出式菜单和滚动窗口,因此Swing的产生也就成为必然Swing是纯Java语言实现的轻量级组件,它不依赖系统的支持Swing基础与AWT组件不同,Swing组件不能直接添加到顶层容_java游戏编程
文章浏览阅读1.6k次。题意:给你n个点(n一般思路都是将正方形先x方向移然后再向y移求最大,显然是需要排序的,方便统计。那么会不会tle呢?两个for,n*n 可以满足。没什么陷阱,果断1y。。。最近状态不错。。。Run IDSubmit TimeJudge StatusPro.IDExe.TimeExe.MemoryCode Len.LanguageAuthor_hdu(4007)
文章浏览阅读1.6w次,点赞8次,收藏22次。类图:_android adapter 数据筛选
文章浏览阅读396次。可以看到 其中orgValidation 开始也是用大多数普通下拉的,但是由于数据了较大,报错255,百度后,单独提出去了,位置都是(1,100,8,8)这样可以达到大数据下拉框的展示,并且不报错。设置下拉,即从数据库中查询要下拉的数据,然后设置,经过实践,当下拉中显示的字符总数超过255字节的时候,会报错,这里两种情况分别展示。导入的时候,一般会有模版下载,那么会涉及到下拉框的情况,此下拉框为动态生成,今天我们来看下。所用工具easypoi。_easypoi addresslist
文章浏览阅读1.4k次,点赞3次,收藏5次。最近在学习freeRTOS时遇到了系统延时vTaskDelay();不精确的问题。学习过程中采用的例程为野火的官方例程,但是开发板并不是野火官方的,因此外部时钟频率不同,首先在stm32f4xx.h文件中修改了外部晶振的频率,将HSE_VALUE(外部高速时钟)改为8000000(与我的开发板相同)#if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External os..._为什么stm32仿真秒数不对
文章浏览阅读474次。P3243 [HNOI2015]菜肴制作题目描述知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如”i 号菜肴’必须’先于 j 号菜肴制作“的限制,我们将这样的限制简写为<..._知名美食家小 a 被邀请至 atm 大酒店,为其品评菜肴。 atm 酒店为小 a 准备了 n 道