关于 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 条回复
binux
2021-08-11 00:15:50 +08:00
"Apple 希望自己的系统实现以下几点" 中的三四点会让一无法成立。
systemcall
2021-08-11 00:21:12 +08:00
不管 Apple 怎么说,开了这个口子,谁知道以后会不会实时录屏顺带人脸识别?
至少,不同政见之类的比较模糊的部分,还是有一些可以被操作的地方的
坚决反对这个技术。如果苹果继续开这种口子,那只能说美国人的好日子也要来了
cadmuxe
2021-08-11 00:31:51 +08:00
不是图像识别,而是图像对比。意味着只有 ngo 提供的已知的色情图像才会被命中。
所以就是只能抓看黄图的人而不能抓创作者,当然看儿童色情很变态啊。
这就像费了天大的劲天天只抓吸毒的人,然后不去管毒工厂和毒贩。
当然无论如何这种努力是很好的。
至于隐私,理论上来讲只要 hash 不出问题应该不会爆出私人照片吧。
WebKit
2021-08-11 00:53:57 +08:00
@lovestudykid 肯定是识别啊。匹配怎么匹配?
haiironezumi
2021-08-11 00:57:42 +08:00
@dingwen07 目的是为了将原本在 iCloud 上进行的 CSAM 审查变成 on device, 从而保证 iCloud 端不用解密数据.

@systemcall 扫描上传 iCloud 的图库到录屏人脸识别, 这属于逻辑滑坡, 因为从任意一点到录屏人脸识别都是突变. 扫描上传 iCloud 图库中的 CSAM, 到扫描上传 iCloud 图库中的 political content, 属于潜在风险, 这个在讨论范围情有可原. 不管怎么说, 你直接跳转到摄像头人脸识别的的确确在输出情绪.


@minsheng LSH 在目标超平面进行多次随机切分, 每一次随机切分的平面对图片的特征向量进行编码 hash, 在同一个 bucket (Hash 值相同) 中的特征进行比对, 看是否相近. 在这多次随机切分后得到一个综合结果. 每一次切分时会有一定的遗漏率, 通过多次切分确保查准率和查全率. 可以看看这个视频 <amp-youtube data-videoid="Arni-zkqMBA" layout="responsive" width="480" height="270"></amp-youtube>
freelancher
2021-08-11 01:15:07 +08:00
大家反感的是苹果未经用户同意就碰用户的数据。就算举着正义的大旗也不行。
Xs0ul
2021-08-11 01:52:56 +08:00
@minsheng #37 我想表达的是,因为 CNN 和之后的 LSH 都是无监督的,很难区分儿童色情和成年人的裸照,但前者是要打击的对象,后者却是用户不想让人工审核看的隐私
minsheng
2021-08-11 02:03:30 +08:00
@haiironezumi Thanks!
minsheng
2021-08-11 02:05:18 +08:00
@Xs0ul LSH 的作用是用来匹配图片……所以如果你把 Tim Cook 的图片弄成黑白的存在手机里,然后再把它塞入 CSAM 数据集里,照样可以匹配成功的。因为 CSAM 数据集不可能有你自己拍的裸照(除非你传出去),所以不会被匹配到。

注意,这也是 Apple 被抨击的一个点,如果 Apple 有意无意的让儿童色情之外的照片进入数据集里,那这些东西也会被匹配,使得这套系统被滥用。
lovestudykid
2021-08-11 02:06:05 +08:00
@minsheng 按照我对神经网络的理解,苹果做的类似自编码器,这个肯定是有分类识别的作用,而不只是匹配特定的图片。如果要匹配的话,有很多传统算法就可以了,也是有一定 robustness 的。用神经网络的话,还有个弊端,添加一些噪点可能就骗过去了。
thx2u
2021-08-11 02:40:23 +08:00
还记得 Siri 与隐私吗?
Xs0ul
2021-08-11 02:48:34 +08:00
@minsheng #49 我理解 LSH 是“匹配”,但这个匹配是基于 CNN 提取出来的 feature 的。要如何保证儿童和成人的照片 feature 不类似呢?

还是我理解错了,目标是只匹配 CSAM 数据集里的照片(以及它们的 augmented 版本),而不考虑泛化?
levelworm
2021-08-11 03:10:24 +08:00
@dingwen07 没错,这点是最恶心的,它非要放在客户端扫描,哥大不了不买了呗。这要是行了以后随便找个理由都可以客户端玩儿了。
parametrix
2021-08-11 03:13:17 +08:00
技术还是挺有意思的。不知道有没有提本地密钥的轮换制度?如果本地密钥长期不更新,那么随着误匹配的增多可能导致本地密钥失密,并且一部分照片被解密?以及如果人工审核发现是误判,那么本地密钥会不会更新呢?
Bryan0Z
2021-08-11 04:06:53 +08:00
不升级 ios15 就好了,我是觉得这个机制挺恶心人的…总感觉有个 big brother 在盯着我
DeutschXP
2021-08-11 04:50:47 +08:00
对于图片匹配方面的技术其实没有太多疑问,但对于匹配后的隐私相关流程,还是有值得质疑的地方:
1. 应该允许用户选择打开或关闭本地图片匹配的功能。未成年人的手机应该由监护人来决定是否打开。
2. 应该只有上传到 iCloud 的照片才能够强制打开匹配功能。
3. 不太理解为什么苹果不想让用户知道是哪些照片被匹配,为什么非要搞成黑箱操作。我认为,应该效仿 YouTube 等的方式,匹配成功的,该文件会被冻结,不能打开,分享,导出或上传,用户只能选择删除,或者申诉,必须用户主动要求申诉的照片,才会由程序和数据库中的原始照片进行匹配,如果算法认为相似分数低于某个值,申诉成功,照片解冻。分数超过阈值,那么申诉自动被驳回。如果分数在某个区间,用户可以选择人工介入或者放弃。只有到了这一步,才会有苹果的人工来复核这一张照片。但这一切的前提都是用户明确的意愿表达。
此外,为了防止数据污染,苹果的人工可以主动审核所有申诉对应的数据库照片,如果真的是误入的证件照或油画,删掉就好了。
而且如果认真来说,苹果想要达成什么目的,如果是为了阻止图片传播,那么标记警告,强迫用户删除,已经足够了,苹果又不是执法者,查获保留证据等行为不是苹果该做的事,我不觉得苹果有什么正当理由和借口,强迫用户允许自己的员工审核用户的照片。
sunboman
2021-08-11 05:07:56 +08:00
我希望大家能够从头到尾去把苹果的声明和 faq 看完再来讨论
这里有一些其他链接有助于理解苹果到底用了什么技术要做什么事情
https://9to5mac.com/2021/08/09/apple-csam-faq/
https://daringfireball.net/2021/08/apple_child_safety_initiatives_slippery_slope

我觉得有几点要澄清:
苹果并没有在手机上扫描图片内容,他们做的事 fingerprint matching,要做的是扫描你的手机上是不是有 csam 数据库里的图片,或者同一张图片的修改版,所以如果你的手机里有裸照,除非这裸照被 csam 录了,要不然不会被 report 。
这个 csam 扫描机制只针对 iCloud photo 用户,所以如果你不想苹果扫你的照片库,那就关掉 iCloud photo,所以是可以 opt out 的。

明确关键点之后,我们再来讨论这个 on device 扫描算不算 backdoor,或者认为手机上存在这样的一套机制就是对隐私的侵犯或者未来可能的侵犯之类的。
crazydd
2021-08-11 05:25:15 +08:00
Neural hash 估计就是个 CNN 抽特征向量,训练时弄点 contrastive 无监督聚下类。问题是这种得到的特征向量其实是可以重建图像的。现在神经网络的安全性研究可才刚刚起步,苹果就在这种安全性敏感问题上用 CNN,说是特意留 backdoor 可能也不为过了。
imnpc
2021-08-11 08:54:15 +08:00
我发现了一个问题 为啥没人讨论

用户在自己手机的数据属于用户本人 任何人不能动的

除非被法院 /警方搜查
ufjfeng
2021-08-11 09:05:29 +08:00
@imnpc 不开 iCloud 相册的话就像你说的那样,开了 iCloud 相册,数据就不完全是属于你本人了

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

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

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

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

© 2021 V2EX