关于 Apple 扫描儿童色情照片的技术讨论

2021-08-10 18:34:30 +08:00
 minsheng

这两天看了无数人讨论 Apple 的 CSAM,感觉大家说的话都互相冲突,也没有人讨论 Apple 所谓的本地扫描的具体实现,有点难受。于是我自己相对认真的读了一下 Apple 发布的技术总结。这里简单分享一下我的理解,欢迎做纯技术讨论。

首先,Apple 非常明确,它做的是图片匹配,不是图片识别。图片的来源是第三方 NGO 机构,但它们仅提供图片,不存在提供神经网络模型的地方。Apple 希望自己的系统实现以下几点:

我个人把系统理解成三个部分:

本地的 voucher 生成系统确保了用户既无法访问 CSAM 图片数据库,也不知道自己的哪张图片被标记了。后者则从数学上确保了 Apple 无法访问不匹配的用户图片。更重要的是,即使误伤了,也需要误伤足够多的次数,Apple 才可以解开匹配的图片。这里分别用了「 private set intersection 」和「 threshold secret sharing 」这两项技术。

NeuralHash

NeuralHash 是 neural + hash 两个部分组成。Apple 训练了一个 CNN 网络,输入图像,输出一个图像的向量表示。这个 CNN 的目的是,让相近的图片映射到相近的表示上去。紧接着,Apple 使用称之为 hyperplane locality-sensitive hashing (LSH) 的技术对生成的向量表示进行处理。

我完全没听过 LSH 这个概念,根据维基百科的描述,LSH 把近似的输入放到同一个 bucket 里面;与软件开发日常接触的 hash 相比,普通的 hash 尽可能避免碰撞,而 LSH 从某种意义上最大化了碰撞。感觉这是一种对数据集做聚类的办法。

Apple 用 NeuralHash 想解决的一个问题是优化空间。把几十万张色情图片存到每个人的手机里显然是不可能的;即使通过 CNN 提取特征向量,结果也很大,但是得到的特征向量再进一步 hash,Apple 实现了可以给每一部设备上放下完整的 CSAM 数据集。

Apple 还简单描述了一下 CNN 的训练,是一个很简单的无监督学习,即给网络一对图片,输出两张图片的差。一方面,Apple 会从一张图片生成一个篡改过但视觉相等的图片,让网络输出的差尽可能小;另一方面,将两张不同的图片放在一起,让网络输出的差尽可能大。后者很有必要,不然网络可能会给任何一对图片都输出零,这样就没有意义了。

Hyperplane LSH 跟图片没啥关系,它的任务就是对图片的特征向量做压缩,并满足让相近的两个向量输出的结果相同

Private Set Intersection

但其实 NeuralHash 只是解决了图片匹配的问题。真正体系 Apple 这套系统对隐私的保护的是 Private Set Intersection (PSI) 和 Threshold Secret Share 。没有人关心,但非常有趣,所以我就简单说一下。

首先,Apple 需要对每张图片生成一定的额外信息( payload ),这些信息的具体设计会在后面提及,而它们的目的,则是在发现某个用户匹配足够多的图片的时候,帮助 Apple 读取相应的图片,人工审核。PSI 的设计是,当且仅当某张用户的图片 NeuralHash 等于 CSAM 数据库里的某张图片的 NeuralHash 时,对应的 payload 才会被解开。因此,这个问题也就变成了根据 NeuralHash,构造一个密钥,用来加密 payload 。如果这个密钥能成功解密 payload,那么这个 payload 所属的图片,必然匹配该 NeuralHash 对应的图片。若解密失败,则该 payload 的原始图片不是我们想要的图片,且因为 payload 无法被解开,用户信息也不会被泄漏。

这里的点主要在于:

Apple 的实现思路是这样的:

在 iCloud 服务器上,服务器可以重做这一步。首先,根据用户上传的 ID 和 payload,拿到图片的 NeuralHash 。然后,用 blinded NeuralHash 和该图片的 NeuralHash 计算密钥,并解密 payload 。如果用户的图片确实对应了 CSAM 数据库里的图片,那么 payload 可以正确解密;若只是 hash 碰撞,解密会失败,匹配失败,用户的 payload 隐私得到了保护。

Apple 并没有讨论如果用户的图片的 NeuralHash 的 ID 不匹配数据库里的任意条目的情况。这种情况说明该图片肯定不在 CSAM 中,但是这会提前暴露用户匹配结果。我估计 Apple 的做法是通过调整 hash,是 ID 空间变小,并对不存在的条目,生成假的 blinded NeuralHash,一并发给用户。在服务器上只需要检测 ID,如果来自假的条目,则直接匹配失败,且用户设备不知道这一点。

Threshold Secret Sharing

这个系统的具体算法 Apple 一笔带过。我问了了解相关领域的同学,发现其实是一个非常基本的技术。其解决的问题 Apple 也大概描述了一下:

举个例子,比如说你有一个一元二次多项式 P(x) = ax^2 + bx + s,s 就是你要保守的秘密,有四个人,你可以告诉每个人 P(1)、P(2)、P(3)、P(4) 分别是多少。每个人都可以化简自己的等式:

当我们只知道一个或者两个人的数字的时候,是无法解密的,但比如说我们知道 P(1)、P(2)、P(3) 均是 0 的时候,就很容易解出 s = 0 。

简单来说,Apple 做了一个双重加密系统。首先,Apple 给每个账号生成一个密钥,只存在用户设备里。然后,Apple 用这个密钥加密每张图片的 payload,并且将加密的结果和这个密钥的一部分( secret share ),一起用 NeuralHash 导出的密钥进行加密。

首先,如果一张图片压根没有匹配 CSAM 数据集,那么 Apple 将无法获得用户密钥的任何 share 。只有等匹配了之后,Apple 才能拿到一个 share 。当拿到的 share 数目超过一个阈值之后,Apple 才能用这些信息构建出用户密钥,解密图片的 payload 。即使在这个时候,也只有匹配的图片的 payload 可以被解开,因为其它图片的数据被 NeuralHash 衍生的密钥保护着。

Apple 还提到用户设备会随机生成假的 voucher 。这些 voucher 在 iCloud 中会通过第一层匹配,但是其 payload 并不会包含任何有意义的信息,无法解开第二层的密钥。通过调参,这些生成的 voucher 的数目会和匹配的图片的数目处于同一数量级,这样,在解开第二层密钥之前,Apple 就无法准确判断一个用户究竟有多少图片已经匹配,最大程度保护用户隐私。不过这一段的具体思路我没有特别看懂。

欢迎大家讨论。

12078 次点击
所在节点    Apple
124 条回复
charlie21
2021-08-11 11:14:04 +08:00
@kop1989 你觉得如果苹果公司想为 “反儿童色情” 这一伟大事业出一份力 它该怎么做?

or 你觉得苹果公司不应该(以用户手机内容的方式)参与反儿童色情,反儿童色情 没有让苹果这多白莲花显得更白、反而让它增加了污点
(好像是 图库方 在 花了大价钱才买到的苹果公司的后门)

or 你根本没有儿童色情的定义,所谓色情它只是一个幌子
oshio
2021-08-11 11:28:37 +08:00
我觉得大家过虑了,从技术上将,用户对 iphone 本来就只有有限的使用权,真要弄你,直接给你远程悄悄塞几张,再让你被查到,不是更方便隐秘,到时你如何自证?大家都是无足轻重的无名小卒,没有被弄的价值,这就是最大的保护。
MrKrabs
2021-08-11 11:33:24 +08:00
@VIVVACI
第一条就很离谱了,现在就不能有漏洞吗?直接注销 apple 账号吧🏃🏃🏃🏃
hello2066
2021-08-11 11:44:58 +08:00
@VIVVACI 你买设备的时候 icloud 条款不是这样的吗?
VIVVACI
2021-08-11 11:47:14 +08:00
@MrKrabs 多一个冗余的功能就多一分泄露的可能,何况是对我没有任何好处的功能
VIVVACI
2021-08-11 11:53:10 +08:00
@hello2066 那你扫就扫,凭什么在我本地上开服务进行扫描,嘴上说着只扫 icloud 的,那么你去扫服务器不好吗,在我的本地开谁知道你能扫什么内容。更何况这种行为本身就是令人作呕的,你有合理的证据怀疑我违反了 iCloud 的协议,那你扫去,但是怎么判断你的怀疑是合理的,就硬怀疑?今天是程序扫描我的照片,明天是不是就借着名义直接人看我的相册里,反正“我们怀疑,你别管为啥,我就是怀疑了”。而且还在手机上开服务进行图像处理,借着安全的名义把计算压力转嫁给用户罢了
VIVVACI
2021-08-11 11:58:41 +08:00
@VIVVACI 这里面让我最厌恶的,甚至不是扫描我的照片,而是在我手机上开服务扫描我的照片。真就是转嫁计算成本+潜在的开后门。
minsheng
2021-08-11 12:13:16 +08:00
虽然我懒得给 Apple 当免费公关,但我还是一一回应一下 @VIVVACI

> 安全性。理论上,哈希是敏感的,一个比特改变就会产生不同的哈希结果,这个显然不符合 apple 的初衷,所以一定是采用了图像处理技术。也就是说,这个算法可以直接拿到我的相册的真实内容。这意味着如果程序设计出问题、有人做出漏洞,也可以看到我的相册内容。所以不安全。

只有当程序的计算结果泄漏隐私,且该信息流出,个人隐私才会被破坏。这里需要注意,足够多的脱敏信息是可以暴露隐私的。

@crazydd 其实提到一点,就是特征向量会泄漏信息。但是 NeuralHash 会对 CNN 提取的特征向量做进一步处理。即使如此,NeuralHash 还是可能泄漏个人信息,所以 Apple 通过 private set intersection 确保了 NeuralHash 只有在匹配了数据库才会泄漏。

> 可靠性。虽然图像处理技术是可以避免哈希的敏感程度,但是用神经网络的就会有对抗攻击,那么我在原始图片下加入某种噪声,人眼看几乎没有任何区别,但是可以让敏感图片脱敏,神经网络失效。同样的,如果别人用加了某种噪声的正常图片发给我,那么有可能可以做到恶意的诬陷。所以不可靠。

「但是可以让敏感图片脱敏,神经网络失效。」有漏网之鱼很正常,至少这样没有破坏隐私。

「某种噪声的正常图片发给我」人工审查还是可以兜底的,尽管不完美,这点所有人都承认。

这里有个**很严肃的问题**,就是其实有一种潜在的攻击方式,是提供图片的组织本身想匹配图像 A,然后合成出图像 B,后者看起来就是个普通的儿童色情图片。Again,人工审查可以兜底……

> 敏感的界定。如果父母,记录孩子的成长过程,比如第一次洗澡的纪录,是否会触发?

不会,因为这是图片匹配。

> 算力开销问题。我的本地设备要生成 hash,那么这部分的算力开销是我自己承担的,也就是我花钱买了一个对我完全没有任何益处的功能。耗电量?手机性能损失?发热?这些问题谁来负责。

对一张图片跑个 CNN,算个 hash,影响不大。Apple 的产品经理比你我更关心这个事情。
minsheng
2021-08-11 12:18:29 +08:00
@kop1989

2 、识别结果不呈现给用户,那么如何佐证与呈现“特征库”的识别范围?有没有监督机制?
3 、技术上如何呈现“关闭 icloud 就不会被匹配”?(毕竟匹配是本地的)

这里非常反直觉的是,识别结果不是不呈现给用户,而是不呈现给你的设备。理论上来说,就算 Secure Enclave 失效,本地计算结果暴露,根据 PSI 系统的构造,这些计算结果对 iCloud 服务之外依然没有任何意义。
miku831
2021-08-11 12:28:44 +08:00
@oshio 哈哈英剧神探夏洛克,里面 Magnussen 被国.安局保护起来,Microft 就说不要说你在这儿听说过有关此人的讨论否则你的手机会出现一些不可言述的资料然后被捕。这还是 2014 年的片啊真有远见
jhdxr
2021-08-11 13:01:50 +08:00
我昨天其实打了一个长篇大论,但最后没有发,因为我也认为这个本质上更多的是业务问题而非技术问题。很多人已经点出了这一点,而许多反对的人也明白了这一点,却依然反对。换句话说分歧更多的是在价值判断上,我不认为这种讨论会有大的价值。。。


> 这里有个**很严肃的问题**,就是其实有一种潜在的攻击方式,是提供图片的组织本身想匹配图像 A,
> 然后合成出图像 B,后者看起来就是个普通的儿童色情图片。Again,人工审查可以兜底……

我没发的那个长篇大论中其实也想到了这个问题,就是针对神经网络本身的攻击,前几年我参加的 workshop 看到了对于物体识别的相当成功的攻击范例。在图片中加一些肉眼可忽略的噪音就可以产生错误的结果(同时模型还无比自信→_→)。 @minsheng 你所提及的人工审核兜底在 @anzu 的回复中已经给了一个例子『 Apple 收到扫描警报,但在检查过程中发现只是一些普通的儿童照片,询问相关机构,答复是:这名儿童正在遭受侵害,请提供该手机用户的信息。』更何况,『人工』这两个字本身就意味着不可靠。高考打分我们有双重、三重、再到阅卷组组长复核。苹果这个审核的流程,『人工』这一点上如何保证可信,我也希望看到它进行更多的披露。
Cielsky
2021-08-11 13:11:00 +08:00
既然是开了 iCloud 的用户才会扫,那为什么不在云上扫,非要在用户端扫?
这么大个公司连这点钱都要省?
用户花花了钱买了个对自己毫无卵用甚至加剧电池损耗的功能
RiverYKB
2021-08-11 14:34:55 +08:00
TechChurch 采访 Apple 隐私首席说“哈希列表是内置于操作系统的,我们有一个全球性的操作系统,没有能力针对个别用户进行更新,因此当系统启用时,哈希列表将被所有用户共享。其次,该系统要求超过图像的阈值数量,所以试图从一个人的设备或一组人的设备中寻找哪怕是一张图片都不会成功,因为该系统根本不向苹果提供任何关于存储在我们服务中的单一照片的内容。”

这可能会使得对隐私稍微友好一点。意思要死一起死呗。
bluesakura
2021-08-11 14:49:40 +08:00
@Cielsky 我的猜测是:如果在云上扫的话苹果大量服务器是租的,可以参考下斯诺登的 PPT 。
ruixue
2021-08-11 14:59:40 +08:00
@RiverYKB 中国、日本、美国销售的 iPhone 搭载的是同一个 iOS 系统,但是中国的 iPhone 无法启用 FaceTime Audio,日本的 iPhone 无法关闭拍照快门声。同样的,即使是相同的一台 iPhone,登录国区 Apple ID 连接的就是云上贵州的服务器,登录外区的 Apple ID 连接的就是苹果自家的服务器。显然 Apple 有能力针对特定的用户群体区别化地实施功能,Apple 隐私首席所说不尽不实
VIVVACI
2021-08-11 15:39:03 +08:00
@minsheng 虽然算力影响不大,但是实实在在影响到我手机的性能了,如果我现在用的是老一些的手机呢?不论怎么这都是在为对我没有任何帮助的功能买单。
人工兜底也不是完美的,我觉得应该是 FBI 提供给 Apple 具体的有嫌疑的人,然后 apple 配合调查。让大部分人为少部分人的行为买单是离谱的。这种图片合成一下,然后从非美国境内上传到网上,一堆人下载下来上传 icloud,瞬间多出一堆嫌疑人。要多少人工审查呢?难道 FBI 已经无能到需要这种“普查”的方式才能找到犯罪嫌疑人了吗?
VIVVACI
2021-08-11 15:52:41 +08:00
@VIVVACI 打一个不恰当的比方,就好为了抓某个在逃嫌疑人,然后强制所有手机厂商开后门,去扫描用户之前拍过的照片,来判断嫌疑人曾经出现过的地方一样。很离谱。
xiang1xiang
2021-08-11 16:37:17 +08:00
不扯那么多,如果是国内厂商这么做呢?还是这反应吗?还有这么多支持吗?
leeuu
2021-08-11 16:44:06 +08:00
今天是照片匹配 下次就是某个 PDF 匹配了 只要开了后门 匹配的是什么东西还重要吗?
tsohgdivil
2021-08-11 18:15:53 +08:00
@xiang1xiang 如果是那样你以为你还能看到有人讨论(滑稽)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/794903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX