2021-08-10

15 篇热帖

2. 想做个专门给开发者用的搜索引擎,取个啥名好呢🤔

如题,三大难题之一——命名,难倒了我。。。。。。

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

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

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

  • 不匹配的用户图片,Apple 的系统完全无法接触;
  • 匹配的用户图片,只有等匹配数达到一定阈值,Apple 才可以接触;
  • 用户无法访问 CSAM 图片数据库(要不然就不用自己找了);
  • 用户无法了解自己的哪张图片被标记为潜在的儿童色情照片。

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

  • 一套 Apple 称之为 NeuralHash 的系统,用来回答两张图片是否匹配;
  • 本地的图片 voucher 生成系统;
  • iCloud 服务器上的 voucher 处理系统。

本地的 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 无法被解开,用户信息也不会被泄漏。

这里的点主要在于:

  • 用户图片的 NeuralHash 不能发给 Apple,不然 Apple 可以解开任何照片;
  • CSAM 数据库里的原始图片的 NeuralHash 不能发到用户设备上,不然用户设备就可以提前得知图片匹配结果,而 Apple 的设计原则明确不希望这一点。

Apple 的实现思路是这样的:

  • 对 NeuralHash 本身进行传统 hash,相当于每个 NeuralHash 赋予一个 ID 。这个 hash 函数本身,iCloud 和用户设备都知道,因此用户可以在本地执行相同的 hash 。
  • 对 CSAM 数据库里的 NeuralHash 进行加密( blinding )。将 ID 以及 blinding 过的 NeuralHash 作为数据库发到用户设备上。
  • 上传图片的时候,会先计算该图片的 NeuralHash 、NeuralHash 的 ID (通过 hash )、图片的 payload,然后按照用户数据库里的 blinded NeuralHash 和图片的 NeuralHash,计算一个加密密钥,加密 payload,并将 ID 和 payload 上传给 iCloud 。
  • 注意,该图片的 ID 匹配用户数据库里的条目有两种情况,正确匹配和 hash 碰撞。

在 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) = a + b + s
  • P(2) = 4a + 2b + s
  • P(3) = 9a + 3b + s
  • P(4) = 16a + 3b + s

当我们只知道一个或者两个人的数字的时候,是无法解密的,但比如说我们知道 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 就无法准确判断一个用户究竟有多少图片已经匹配,最大程度保护用户隐私。不过这一段的具体思路我没有特别看懂。

欢迎大家讨论。

4. 生日快到,买什么礼物给自己好?

想借生日的机会给自己买点(平时可能不太会买的)东西,但最近好像也没什么特别想要的,大家开开脑洞给点建议 /推荐?(内容不限,任何都行)

一些可能相关的背景: 男生,大四在读,CS 专业,之后有留学读硕打算; 目前电子产品用的是苹果全家桶; [重要] 预算:¥1000 以内。

先提前谢谢大家~

5. 有老哥拔过智齿吗?

坐标上海,听说徐汇牙防所不错,请问直接去可以吗,有人说需要微信公众号预约,我看了一下好多科室,不知道预约哪个科室,求有经验的老哥指导。。

6. 两次从 Linux 逃离到 os x 又逃回来的感受
逃离到 os x 的主要原因是觉得苹果笔记本的屏幕细腻,次要原因是可以方便使用企业微信。

硬件方面:
mac book pro 的屏幕没的说,但是屏幕过于光滑反光很难受。键盘的按键反馈还是很清晰,就是键程过短,有点难受。再有就是没有实体的 F1-F2,ESC,对于 vim 用户来说,过于难受。后来把大小写切换映射成了 esc,但是又和 tab 键容易弄混。反正就是很别扭。

软件方面:
一些常用命令行工具的版本和 linux 系统不一样,使用上有点不习惯,例如 cp 命令的参数必须紧跟在 cp 命令后面。而不能放到一行的后面。

终端软件用的系统默认的,也用过 terminal2 啥的,大概是这么一个名字。 但是因为要使用 tmux,没有 alt 键做快捷键,也是很麻烦。

说到终端,linux 下,选中内容,然后鼠标中键或者 Ctrl+ins 键就能粘贴的功能,在 os x 上没有,只有终端勉强支持。

窗口管理虽然可以方便的用触控版切换,但是步骤繁琐,没有在 linux 上直接用功能键切换窗口方便,例如按 F1 切换到终端,F2 切换到浏览器。在 os x 上当然也可以定义快捷键,但是正如前面说的。没有实体 F 功能键,只能绑定到奇怪的组合上面。终归还是繁琐了一点。

加上 os x 的窗口切换,即便关闭了动画。窗口直接的切换还是有点迟滞的感觉。

以上就是使用 os x 比较不爽的点,所以还是回到了更低分辨率但是更流畅的 linux.
7. 港区 playstation 账号未来会限制下载游戏么, ps4, ps5
就是像国区一样限制很多游戏下载不了,显示都不显示,那一直在港区线上买游戏的人不是损失巨大。有这个担忧,不知道是不是自寻烦恼。香港现在的情况大家都懂。
8. 小米手环 6 的睡眠检测感觉不准, Apple watch 的准吗?

最近对健康比较上心,小米手环 6 的各项功能很全,但是我查了一下大家都说睡眠数据不是很准,什么深睡,浅睡,REM 之类的。
如果上 iwatch 这个能准吗?

9. 看了一上午的笔记本的, 选了 3 款,有几个疑惑求大佬帮忙参谋下

需求:

15 寸屏幕
1w 左右
主要是 java 开发,使用 docker,cpu 要好,架构问题放弃了 m1

现在的备用选项有:

ROG 魔霸新锐 2021
ROG 幻 16 
联想 R9000P

问题:

1 、看 ROG 是 6 热管 4 出风口液金散热, 联想没有详细说看起来是 4 热管,是不是 ROG 的散热更好
2 、屏幕 16:9 和 16:10 差的多吗, 之前是用的 mbp,有点纠结是不是影响很大、
3 、15 寸的 1080p 的屏幕在 windows 下 会不会不够清晰
4 、R9000P 结不结实? 上上台电脑是联想 Y580,经常背着出差,一侧塑料壳全部断了,至今心有余悸
5 、幻 16 看是只有一个内存插槽, 能自己加内存吗

对比图

10. 讨论下,未来几年硬盘速度会超过内存速度吗?
目前民用的固态硬盘速度可以达到 7GB/s 了,
比如:
浦科特 7.0 GB/s: https://item.jd.com/100022343216.html
Seagate 7.3GB/s https://item.jd.com/100024621730.html

使用的是 4.0 的接口。SSD 固态硬盘 M.2 接口(NVMe 协议 PCIe 4.0 x4)

参考知乎( 3 年前的回答):
连续读取
L1CACHE 大概是 100~500GB/s 的水平
L3CACHE 大概是 10~50G/s 的水平
DDR4 内存大概是 3GB/s 的水平
nvme ssd 大概是 2000MB/s 的水平
SATA ssd 大概是 450MB/s 的水平
机械硬盘大概是 100 ~ 150MB/s 的水平
随机读写不清楚,总之也是差 n 个数量级,只会比连续读写差距更大。
https://www.zhihu.com/question/266375329/answer/307169479

那么,就读写而言,未来的主机的速度的瓶颈不再是硬盘速度而是内存速度? 有可能吗?

PS: 因为对实际的内存原理完全不懂,欢迎指正和讨论
11. 问个问题, 大家怎么念 iphoneX iphoneXR iphoneXS

ihone 艾克斯 还是 iphone10 还是 iphone 叉

12. 关于 iCloud 扫描的一些想法

Apple 将要在新系统中上线一个扫描功能,官方声明: https://www.apple.com/child-safety/ ,以下内容为我个人对于这个功能的评价。

很早开始,我就模糊地意识到,互联网上没有隐私。对于我存放在所谓“私人云盘”里面的内容,我觉得只要不被删除或者篡改,哪怕直接公开在网上,我都不是非常介意。也就是说,我对于云盘的底线是,资料能完整地保存下来。毕竟上传到云盘,很大一个目的就是备份。

但是 Apple 这个新政策却告诉我:我的每一张照片,从规则上,都是可以被直接删掉的。

一开始我非常矛盾。因为 Apple 这个行为是防止犯罪的,而我也支持防止犯罪,但这又触及了我的底线。直到我在一封对 Apple 的公开信中,我读到了这些内容:

“It’s impossible to build a client-side scanning system that can only be used for sexually explicit images sent or received by children. As a consequence, even a well-intentioned effort to build such a system will break key promises of the messenger’s encryption itself and open the door to broader abuses […] That’s not a slippery slope; that’s a fully built system just waiting for external pressure to make the slightest change.”

Apple 的这个新系统,不可能只针对这类违规行为。只要外部施压,这些代码就可以找出任何类型的图片。现在,这些代码只在美国生效,并且只针对这类行为,但是以后呢?结合这个观点,我再次确认:我的任何资料,都是潜在的删除对象。

iCloud 引发了我对于 Apple 的思考。我一开始觉得拒绝 iCloud 相册就足够了,但是仔细思考了一下,Apple 似乎也并没有那么 Cool,甚至可以说很封闭,完全不值得我追捧。

于是,我关掉了我的 iCloud 云盘,并且停用 Apple Music,以后我可能也不会再买 Apple 的任何服务了。

不过 M1 是真的快... 希望高通支棱起来,做个能对标 Apple Silicon 的芯片吧。

节选改编自我的博客,完整的心路历程在那里: https://blog.kininaru.dev/apple/

13. Parallels Desktop 17 发布啦!速来围观新增功能

Parallels Desktop for Mac 版本 17 已经全面上线,包含必备性能更新,支持 macOS Monterey,并面向 Intel 和 Apple M1 芯片进行了优化。 快如闪电 - Windows 恢复时间最多可缩短 38%,因此可以快速进入应用程序。 更好的显卡性能 - 二维图形速度提升高达 25%,DirectX 11 速度提升高达 28%。 流畅的 Windows UI 和视频播放,更高的游戏帧速率,以及更多。 去官网了解更多: https://prf.hn/l/rdklekZ

14. Intagram 无故被封

我就改了个官方图标的头像,就把我账号封了,🤮

“We disabled this account for not following the Instagram Terms of Use and are unable to restore it. This account can no longer be accessed or viewed. ”

15. QQ 音乐免费送一个月会员
QQ 音乐 app,首页底部栏,扑通发个贴带话题#好运许愿池# ,一个月会员秒到,亲测可用