关于 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 就无法准确判断一个用户究竟有多少图片已经匹配,最大程度保护用户隐私。不过这一段的具体思路我没有特别看懂。

欢迎大家讨论。

12077 次点击
所在节点    Apple
124 条回复
minsheng
2021-08-10 18:35:14 +08:00
原来 V2EX 居然还有内容审查系统,本来加了几段评论不得不删除了……
miku831
2021-08-10 18:42:14 +08:00
已经有一个讨论帖了,在水火里呢,你这个快了
hrbwaxdoll
2021-08-10 18:44:02 +08:00
终于见到理性分析的了,那些看都不看原理就喷的,简直撒比。
xtx
2021-08-10 18:56:48 +08:00
果然偏技术向的回帖就比较少,大家都爱打嘴炮。
kop1989
2021-08-10 19:00:59 +08:00
说一千道一万,hash 验证模型是苹果定的。
它可以说这个哈希模型是儿童色情,但你并不能验证。

换句话说,他也可以训练一个身份证模型,裸体模型,文件模型等等。

一把枪,上面有再多的锁,只要在人的手里,他就依然是武器。
minsheng
2021-08-10 19:08:08 +08:00
@kop1989 苹果并没有训练一个图片识别模型,这是一个非常单纯的图片匹配系统。
kera0a
2021-08-10 19:13:15 +08:00
有没有课代表一句话总结下
levelworm
2021-08-10 19:19:02 +08:00
总体来说我不希望苹果做我的警察,管他什么算法不关心。
Mitt
2021-08-10 19:21:20 +08:00
@minsheng #6 他的意思是 CSAM 不管是 hash 匹配还是什么,苹果无论技术上保证多么安全和隐私,都不可避免的短板在源头 CSAM,如果 CSAM 提供给苹果一个非儿童色情的而是政治图片等,那么一样适用于触发人工审核解密图片,而且还可能会出现算法漏洞制作一张可以使一些不沾边的照片比如聊天内容截图被恶意匹配等,短板其实一直都在苹果人工和 CASAM 上,并不是技术能力上,如果那俩短板消失不存在,那么即便没有这个技术也同样可以保证用户隐私安全
hello2066
2021-08-10 19:24:44 +08:00
@Mitt 检测到苹果就报警 fbi 直接上门抓人关牢里?要上法院吗?要看手机里到底是哪张照片吗?
hello2066
2021-08-10 19:26:16 +08:00
@Mitt 这么一想,被苹果误促警能上个头条吧,赔偿个几百万美金应该没问题吧
levn
2021-08-10 19:26:17 +08:00
它能帮助我们判断拜登的成分吗
hello2066
2021-08-10 19:26:56 +08:00
@kera0a 一句话就是,你苹果说的再好听,我不信。
kera0a
2021-08-10 19:30:44 +08:00
@hello2066
不信苹果不买就是了,要喷苹果就去另外几个帖子里喷吧

我看楼主技术贴写的很认真,想看看懂行的人怎么评价,能不能挑出漏洞,不想情绪讨论。
minsheng
2021-08-10 19:35:09 +08:00
@hello2066 这种思路就很迷。当然人可以选择不听,代码是苹果写的,苹果编译的,苹果发布的。理论上说苹果想推什么代码都行,iMessage 完全可以偷偷上传私钥,FBI 完全可能一边连根网线进苹果数据中心,一边和苹果演苦肉计。这都是有可能的,而且这一切不管苹果有没有做这套 CSAM 系统都有可能发生。

如果真的担心,且有必要担心,自然可以做出相应的决策,比如说云上贵州(美国法律可不保护中国公民不受 CIA 大规模筛查)。大家自行根据自己的屁股决定用不用 iPhone 、怎么用 iPhone 就好。
ruixue
2021-08-10 19:41:53 +08:00
最新的消息,苹果就其新的儿童安全功能与记者举行了问答会,并表示愿意在未来将这些功能扩展到第三方应用程序。

https://www.macrumors.com/2021/08/09/apple-child-safety-features-third-party-apps/

“Apple 表示,虽然今天没有任何公告可以分享,但将儿童安全功能扩展到第三方,以便用户得到更广泛的保护将是一个理想的目标。Apple 没有提供任何具体示例,但一种可能性是将通信安全功能用于 Snapchat 、Instagram 或 WhatsApp 等应用程序,以模糊儿童收到的色情照片。

另一种可能性是,苹果已知的 CSAM 检测系统可以扩展到第三方应用程序,这些应用程序将照片上传到 iCloud 照片以外的其他地方。

Apple 没有提供何时能将儿童安全功能扩展到第三方的时间表,并指出它仍然需要完成这些功能的测试和部署,该公司还表示需要确保任何潜在的扩展不会破坏这些功能的隐私性或有效性。

从广义上讲,Apple 表示将功能扩展到第三方是该公司的通常做法,自从 2008 年在 iPhone OS 2 上推出 App Store 以来,它就引入了对第三方应用程序的支持。”
felixcode
2021-08-10 19:42:18 +08:00
方案是不是安全,不是得开源供外界审查吗?
minsheng
2021-08-10 19:42:28 +08:00
我个人的看法:我更关心商业公司会不会拿我的数据压榨我,以及黑客会不会拿我的数据敲诈勒索。

Apple 很好的处理了前者。而对于后者,Apple 作为一个把隐私挂在嘴边的公司,它有数据保护的意识,因此它的系统设计应该会让商业公司无意泄漏用户数据的情况变少。

同时,作为对立的一面,Apple 软件质量不好,比如说可能不如谷歌,会增加使用 Apple 系统泄露隐私的风险。

权衡利弊之下,我依然相信 Apple 能满足我对隐私的需求,并选择它的产品。至于每个人,都需要想清楚自己的需求。有必要的话,就学 Richard Stallman 好了。
minsheng
2021-08-10 19:45:28 +08:00
@felixcode 是的,所以说如果我是恐怖分子,我肯定不会用 iMessage 。
tmado
2021-08-10 20:06:17 +08:00
从标题到主题帖的内容都比较明显地表达了楼主期待的讨论方向,即主题中第一段最后的“欢迎做纯技术讨论”。

不过直到我回复为止的前 18 个回复基本没有人在做“纯技术讨论,甚至都不见得有多少“技术讨论”,也基本没人关心楼主的在主题中谈论的思路。也没人关心楼主在主题中提的问题。

希望论坛的管理能尽快提供账户注销的功能。

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

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

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

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

© 2021 V2EX