当前位置: 首页 > 编程日记 > 正文

苹果新算法已混进 iOS 14.3!CSAM 检测技术再遭网友争议

整理 | 禾木木、郑丽媛

出品 | AI科技大本营(ID:rgznai100)

苹果宣布即将推出 CSAM 检测系统时,遭到了 4000 多个组织及个人的公开反对,他们质疑苹果会破坏用户隐私和端到端加密机制。一位 Reddit 用户发现 CSAM 算法竟已被悄悄地隐藏在 iOS 14.3 里。算法公开几小时后,一位英特尔实验室的研究员就发现了其存在的缺陷:哈希冲突。

苹果宣布计划推出 CSAM 检测技术,该功能本该在今年 9-10 月份上线,将利用一种名为 NeuralHash 的加密算法,不会直接查看用户相册。

本以为这个神秘的 NeuralHash 会在苹果力排众议真正推出 CSAM 检测系统时才能感受到,不曾想却被 Reddit 网友发现 CSAM 检测技术的算法 NeuralHash 已经混进了现在的系统里。这位网友并在 GitHub 上分享了他用 Python 重建的整个 NeuralHash 算法,甚至在 macOS 和 Linux 上都可以尝试体验。

图片

这还没完,在  NeuralHash 算法被公开的几个小时后,一件令苹果更为头疼的事发生了:一位英特尔实验室的研究人员 Cory Cornelius 发现 NeuralHash 存在“哈希冲突”的问题。

网友发现隐藏在 iOS 14.3 的秘密

8月18日,据 Asuhariet Ygvar 在 Reddit 上的说法,NeuralHash 算法早就存在于 iOS 14.3,只不过藏在了模糊的类名之下因此难以发现。

在对隐藏的 API 进行挖掘时,Asuhariet Ygvar 发现了 NeuralHash,随后通过逆向工程将其模型(在 iOS 14.3 中名为 MobileNetV3)导出到 ONNX,并用 Python 进行重新构建,甚至可以在Linux上测试NeuralHash。(注:ONNX 是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。)

经 Asuhariet Ygvar 研究,总体来说 NeuralHash 就是一种基于神经网络的图像感知哈希,具体步骤如下:

图片

代码:https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX。

AsuharietYgvar则列举了这就是苹果所采用的算法的证据。

  • 首先,模型文件的前缀“NeuralHashv3b-”与苹果文档中所提到的术语相同。

  • 其次,苹果文档中 Technology Overview -> NeuralHash 章节所描述的算法细节与 Asuhariet Ygvar 提取的模型完全一致。

例如,文档中提到:“其次,描述符通过哈希方案将 N 个浮点数转换为 M 位。这里,M 比表示 N 个浮点数所需的位数要小得多。”

这点可从以下 Asuhariet Ygvar 在 GitHub 上分享的代码得出:N=128,M=96。

图片

此外,Asuhariet Ygvar 在 iOS 14.3 中发现的 NeuralHash 也能完美实现苹果文档中所描述的“无论调整图像大小或压缩图像,哈希值几乎不会改变”。

虽然不同设备生成的哈希值会有几位的差异,是由于神经网络基于浮点计算,精度在很大程度上取决于硬件。对于NeuralHash这种有200多层的网络来说,会导致大量的累积误差。

哈希算法存在 Bug

公开代码后的短短几小时内,英特尔实验室的研究人员Cory Cornelius就发现了两张毫无关联的照片竟然有一样的哈希值!

Cory Cornelius 在 Asuhariet Ygvar 的 GitHub 下评论:你能验证下面这两张图存在哈希冲突吗?

图片

图片

Cory Cornelius 补充道,他根据  Asuhariet Ygvar 给出的 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

Asuhariet Ygvar 随后也证实了这个问题:“是的!我可以确认这两个图像在我的 iPhone 上生成了完全相同的哈希值,与你生成的一样。”

这种情况的出现,显然推翻了苹果在介绍 CSAM 检测系统文件所提到的描述“名为 NeuralHash 的哈希技术会分析图像并将其转换为特定于该图像的唯一编号”。有开发者向 Cory Cornelius 提问能否因此制造哈希冲突,Cory Cornelius 给予了肯定回答:“我相信可以根据一些所需的哈希值,生成对应的灰度图像。”

通常来说,哈希算法具有以下特点

相同的输入一定得到相同的输出;

不同的输入大概率得到不同的输出。

但是由于通过哈希函数产生的哈希值是有限的,当输入数据量达到一定的程度时,就会导致不同的数据在经过哈希函数处理之后产生相同的值。

这也就产生了哈希冲突。

如果有人利用被 NCMEC 标注的图片的哈希值改变其他图片,那么任何存储这些图片的人都将拥有这些图片。

苹果:这只是一个早期版本罢了

有媒体向苹果询问了这个问题,苹果的回应却是:“用户在 GitHub 上分析的那个版本只是一个早期通用版本,并非是用于对 iCloud 照片进行 CSAM 检测的最终版本。”

此外,苹果还解释称,他们不仅依靠 CSAM 检测系统,还有“人工审查”这个「双保险」。

当用户上传 iCloud 照片时,苹果系统会进行扫描确定是否有与CSAM 照片匹配的哈希值,如果匹配的次数超过 30,系统将其进行标记,并交由苹果团队人工审核

但苹果始终没有正面回应 NeuralHash 算法可制造“哈希冲突”的疑问。

那么你对苹果宣布推出的 CSAM 检测系统怎么看呢?

参考链接:

  • https://www.apple.com/child-safety/pdf/CSAM_Detection_Technical_Summary.pdf

  • https://www.vice.com/en/article/wx5yzq/apple-defends-its-anti-child-abuse-imagery-tech-after-claims-of-hash-collisions

  • https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX

  • https://github.com/AsuharietYgvar/AppleNeuralHash2ONNX/issues/1#issue-973388387

相关文章:

2.最详细的WSDD配置文件注释

https://blog.csdn.net/u011063151/article/details/52590282转载于:https://www.cnblogs.com/sharpest/p/7851185.html

CloudStack部署篇二 高级网络设置

CloudStack 4.2.1版本基础安装: http://51log.blog.51cto.com/6076767/1598046测试默认UI访问 http:ip1:8080/client/选择【我以前使用过cloudstack,跳过配置指南】;开始应用网络配置;一、 高级网络部署管理服务器 (mangermant m…

阿里安全新研究:给图片打“马赛克”就能骗过 AI 视觉系统

阿里安全人工智能 AAIG 实验室等机构的研究者提出了一个新的机制来生成对抗样本,即与增加对抗扰动相反,他们通过扔掉一些不可察觉的图像细节来生成对抗样本。这项研究成果已被 AI 顶会 ICCV 2021 收录。 不久前,某知名品牌汽车被曝其自动驾驶…

Ubuntu下安装Apache+PHP+Mysql

Ubuntu下安装 apachephpmysql文本服务器! -------------------------------------------------------------------------------- 版本一 Install SSH Client and Server (for my remote access):sudo apt-get install ssh Install Database Server:sudo apt-…

2015香港书展

去年错过了书展,今年早早提醒自己不要错过。10点前我就到了会展中心,排队等待入场,依旧是那么多人,不过多数是年轻学生。在去的路上,没有看到13年那么多的反GCD或者反CY的宣传。 浦一进场,我便在门口张望了…

Firefox下http协议监测工具LiveHttpHeaders

当我们测试Web应用程序的安全性的时候,经常需要对HTTP流量进行分析和动态修改。此外,取得对Web 应用程序流出和流入的数据的控制权不仅对Web 应用程序安全缺陷的发现和漏洞的利用等安全测试任务具有很大的帮助,而且还有利于常规的Web 应用程序…

中国AI已进入迷茫阶段!从技术到科学,AI该何去何从?

作者:金榕,阿里巴巴达摩院副院长、原密歇根州立大学终身教授引言如果从达特茅斯会议起算,AI已经走过65年历程,尤其是近些年深度学习兴起后,AI迎来了空前未有的繁荣。不过,最近两年中国AI热潮似乎有所回落&a…

Libgdx学习笔记:Simple text input

2019独角兽企业重金招聘Python工程师标准>>> 官方Wiki:https://github.com/libgdx/libgdx/wiki/Simple-text-input 实现接口TextInputListener public class MyTextInputListener implements TextInputListener { Overridepublic void input (String …

CentOS7系统下修改网卡为eth0

一、编辑网卡信息 123456789101112131415[rootlinux-node2~]# cd /etc/sysconfig/network-scripts/ #进入网卡目录 [rootlinux-node2network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0 #重命名网卡名称 [rootlinux-node2network-scripts]# cat ifcfg-eth0 #编辑网卡信息 T…

squid,nginx,lighttpd反向代理的区别

反向代理从传输上分可以分为2种: 1:同步模式(apache-mod_proxy和squid) 2:异步模式(lighttpd 和 nginx) 在nginx的文档说明中,提到了异步传输模式并提到它可以减少后端连接数和压力,这是为何? 下面就来讲…

Unix_Linux系统定时器的应用(案例)

2014-05-05 Created By BaoXinjian 一、摘要 关于任务定时的命令crontab,在Linux中应用还算常见,这次为了配合开发完成一些辅助功能,以及一些备份更新等脚本,就需要crontab来完成,在windows下也就是一个批处理&#xf…

SDN 网络技术创新探索 | 移动云 TeaTalk 线上直播 倒计时启动中

在企业数字化转型、云服务和国家政策等多种因素驱动下,越来越多的企业、行业和政府机关将业务迁移到云上,随着移动云的快速发展,在“多系统、多场景、多业务”需求下,对网络提供差异化的服务能力提出了更高的要求。大规模数据中心…

学习Spring中遇到关于BeanFactory及测试类的问题

最近在学习Spring,使用的是Spring 5.0.1 学习书本中使用的是4.0 学习书本中使用以下来加载配置文件及设置 Resource resource new ClassPathResource("applicationContext.xml"); //加载配置文件 BeanFactory factory new XmlBeanFactory(resource); St…

[Java基础] Java如何实现条件编译

条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译。但是在JAVA中却没有预处理,宏定义这些东西,而有时在一些项目中,我们又需要条件编译。那么,在JAVA中,该如何实现条件编译呢&…

深度学习上的又一重点发现——利用MSCNN实现人群密度监测

作者|李秋键 出品|AI科技大本营(ID:rgznai100) 人群密度计数是指估计图像或视频中人群的数量、密度或分布,它是智能视频监控分析领域的关键问题和研究热点,也是后续行为分析、拥塞分析、异常检测和事件检测等高级视频处理任务的基础。随着城市化进程的…

nginx和squid配合搭建的web服务器前端系统

两种前端架构: lvs -> nginx前端代理 -> squid缓存lvs -> squid前端缓存 -> nginx中层代理squid在前面的优点: Squid作纯代理比较稳当前端少一级代理,响应速度会快,出问题的可能性要小功能有限,不会常被调…

聊聊jesque的几个dao

为什么80%的码农都做不了架构师?>>> 序 本文主要聊一下jesque的几个dao dao列表 FailureDAOKeysDAOQueueInfoDAOWorkerInfoDAOFailureDAO jesque-2.1.0-sources.jar!/net/greghaines/jesque/meta/dao/FailureDAO.java /*** FailureDAO provides access …

Proxy与NAT有什么区别

在internet共享上网技术上,一般有两种方式,一种是proxy代理型,一种是NAT网关型,关于两者的区别与原理,身边很多人都不是很明白,下面我来讲讲我的理解,如有不对的,欢迎指正.1.先说应用例子:服务器端,用wingate就是Proxy,用sygate就是NAT客户端,需要在IE中设置代理服务器的就是用…

【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装

原文网址:http://www.cnblogs.com/jostree/p/4137402.html 作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4137402.html 1.需要保证vim的版本大于7.3.584,否则的话需要更新vim 可以通过第三方源更新: 在终端输入…

「倒计时」2021年移动云 API 应用创新开发大赛,你居然还没报名?!

移动云API应用创新开发大赛自成立举办以来,因赛事覆盖广、规模大、奖励高等、吸引了移动、企业、高校各赛道选手踊跃报名。目前活动火爆呈现白热化状态,截至目前为止,累计报名600人。现距离大赛报名截止仅剩5天!!&…

snort源码的详细分析

前段时间由于工作关系,对snort入侵检测系统进行了仔细的研究,起初基本都是通过网上找的资料,对于snort系统的应用,原理,架构,配置,源码机构网上都可以找到比较详细的资料,我自己用vs…

TCP/IP四层模型和OSI七层模型

TCP/IP四层模型和OSI七层模型对应表。我们把OSI七层网络模型和Linux TCP/IP四层概念模型对应,然后将各种网络协议归类。 表1-1 TCP/IP四层模型和OSI七层模型对应表 OSI七层网络模型 Linux TCP/IP四层概念模型 对应网络协议 应用层(Application&am…

强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9

作者:肖智清 来源:AI科技大本营 强化学习环境库Gym于2021年8月中旬迎来了首个社区志愿者维护的发布版Gym 0.19。该版本全面兼容Python 3.9,增加了多个新特性。 强化学习环境库的事实标准Gym迎来首个社区发布版 Gym库在强化学习领域可以说是…

SCOM电子书

SCOM电子书介绍转载于:https://blog.51cto.com/286722/1599625

京东二面的几个问题

1. tcp 连接的最大数量,tcp 用什么来标识 2. 多线程时如何避免互斥 3. protected 关键字 4. 动态库和静态库 5. 线程池 6.多继承时的虚表 网络编程需要加强转载于:https://www.cnblogs.com/simplepaul/p/7865777.html

服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型

服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型 下面是“黑夜路人”的《大型网站架构优化(PHP)与相关开源软件使用建议》 F5全称: F5-BIG-IP-GTM 全球流量管理器. 是一家叫F5 Networks的公司开发的四~七层交换机,软硬件捆绑. 据说最初用BSD系统,现在是…

linux下SVN不允许空白日志提交

在svn服务端通过hooks在提交时强制要求写日志。1. 在hooks目录里,复制文件pre-commit.tmpl到pre-commit2. 修改pre-commit文件,如下。#!/bin/shREPOS"$1"TXN"$2"SVNLOOK/usr/bin/svnlook #根据你的SVN目录而定LOGMSG$SVNLOOK log -t…

没有熙熙攘攘,百度VR在世界大会的一场奇妙之旅

你可听过玄奘西行的故事?没有猴子和女儿国,也没有鬼怪和妖魔,在那个故事里有的只是人心的善恶和风雨的折磨。相传,在玄奘走到楼兰时,曾被官兵追捕,他机缘巧合才悄悄逃出大狱。那茫茫大漠里,为避…

Ubuntu下搭建postgresql主从服务器(方法1)

Ubuntu下搭建postgresql主从服务器(方法1) 安装略 postgresql主服务器: $ vi /etc/postgresql/9.1/main/postgresql.conf 按a或i进入编辑模式 listen_addresses ‘*’ (默认为注释的,此处不改从postgresql同步时会报…

利用集群技术实现Web服务器的负载均衡

集群(Cluster)所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。 负载均衡(Load Balance)网络的负载均衡是一种动态均衡技术&#xf…