国区的 iMessage 到底有没有端对端加密?

2019-05-07 16:29:43 +08:00
 beitanglanwu
都说 iMessage 是有端对端加密的

但是在国内有端对端加密的 IM app 都死绝了

所以说国内的 iMessage 有没有端对端加密?还是说处于想看就能看的状态?

另外如果国内用户和国外用户聊天的话 这段对话会被加密吗?
27500 次点击
所在节点    Apple
60 条回复
fluffypanda
2019-05-11 02:29:56 +08:00
@bao3 端就是设备,端到端是消息用公私钥加密,所以只有这两台设备能解密。imessage 的话如果你的接受地址有 n 个设备,那么每条消息发送 n 遍,所以发送端是一个设备,接受端可以是多个设备。有一些 app 因为设计原因或者系统限制,没有做到多个终端接受消息,但是不代表端对端这个技术是只能发送一次到一个设备。
fluffypanda
2019-05-11 02:31:00 +08:00
还有楼上说云上贵州的,他们还真看不到你发的消息,因为端到端加密是没有第三个人能解密消息的。只有一种可能就是选择同步消息到 iCloud。
suriv520
2019-05-11 19:59:19 +08:00
没想到大家讨论这么热烈,但是发现存在一个普遍的认识误区:就是把“ end2end 的加密”与“是否可能被 MITM 或第三者解密”做了强关联。还是苹果的宣传牛逼。

我觉得这个问题得从原理上来讲,因为“ end2end 加密”其实只是一个商业宣传术语,而不是一个严格的算法描述。所以纠结这个是没有意义的。

稍微具体一点来说吧。

iMessage 的消息是否只能被两个手机解密,完全取决于 Apple 的具体密钥与交换算法实现。

对于大多数常见的非对称算法,比如 rsa 等:
假如是手机本地生成了自己的 private key 与 publickey,然后相互把这个 publickey 扔给对方,把 privatekey 留在本地。那这种实现方式目前是在数学上被证明安全的。除非有 privatekey,否则第三方无法解密(毕竟还没有人解出 P=NP 不是?)

但是!(老师教了要怎么抓重点吧?)

苹果的 iMessage 实现非常复杂,因为需要多终端解密。那么,可以完全确认的是,苹果的服务器是持有密钥的。

继续从“持有密钥”说下去:

它虽然“持有密钥”,但这个密钥本身也有可能是被加密存储的,并且我倾向于,苹果也是把密钥本身加密存储的(毕竟明文存储用户密钥这种事太沙雕了,和 csdn 有啥两样?)

下面继续解释,为什么 Apple 能支持多终端解密。从上面描述可知,这个问题的关键点就落在了:如何把服务器存储的“被加密”的密钥安全传递到另一个终端上。
还记得在新的苹果设备上登陆 icloud 的过程吗?它必须要用户输入 icloud 密码。那么,假设苹果使用用户的密码作为私钥加密解密那个密钥,那么第三个设备也就拥有用户的 iMessage 私钥了。
整个过程,苹果对用户的私钥内容都一无所知。对用户的密码也一无所知。

这就是苹果声称的“端到端”。实际上这个过程可能比上面要复杂得多,但总的原理都是差不多的。
从这个过程可以看到,即使苹果持有了用户的各种密钥信息,也是可以声称“端到端”的。因为苹果只能看到一堆乱码,MITM 攻击是不可能的,这也是所谓的端到端。

但我想自己杠一下自己:假如苹果想做到能够配合权力机关调查信息,怎么办比较好。

1. 在任何一个交换环节中存着用户的私钥就行了。so easy。但是老爷子的棺材板板可能按不住。

2. 算法上给用户使用被 master 密钥信任的子密钥。由相关单位生成 master 密钥,苹果不持有 master 密钥无法解密内容(责任被撇的干干净净)。用户通过 master 公钥生成子密钥子公钥,加密的内容都是能够被 master 密钥解密的。

3. 还有一些更“优”的针对密钥自身的加密算法,比如 Shamirs Secret Sharing 算法。
https://en.m.wikipedia.org/wiki/Shamir%27s_Secret_Sharing
为什么说更“优”呢?因为它允许对于同一个加密场景同时产生 N 个不同的密钥,要求至少提供 N 个密钥里的任意 M 个,才能够对数据进行解密。好比你的保险柜有 10 把不同的钥匙,你把这些钥匙分发给了 10 个不同的人,然后只有这 10 个人里的至少 X 个人拿出钥匙,才能打开保险箱。
这种场景下,你拿一个密钥,某单位拿一个密钥。你用你的,他用他的。完美。苹果压根懒得解密也无法解密你的数据
或者,你拿一个,苹果拿一个,某单位拿一个,生成密钥的时候设置为至少两个密钥才能解密。更完美:设备上,你和 Apple 共同解密;你喝茶的时候,某单位和你的设备共同解密;你砸了设备的时候,某单位和苹果共同解密。
谁都无法自己单方面解密,然后苹果淡定表示:我们根本无法解密用户数据,第三方也无法单独解密用户数据。完美!
bao3
2019-05-11 23:30:19 +08:00
@fluffypanda #41 如果端到端消息是加密,仅有两端才能解密,那么一端发送的消息被复制多次发送不同终端解密,那么这个复制的过程就与两个终端是互为矛盾的。
端到多端的所谓端到端,都是伪的,用过端到端酒明白了。
fluffypanda
2019-05-13 10:50:44 +08:00
@bao3 你这就是在抬杠了吧,抠字眼有意思吗,仔细读一下维基的端对端加密的定义吧。
bao3
2019-05-13 16:45:37 +08:00
@fluffypanda #45 这居然叫杠?那么你用 wiki 文章来解释一下,端到端的密钥,被服务器发送到多端还能被多端解密。
fluffypanda
2019-05-14 00:00:57 +08:00
@bao3 End-to-end encryption (E2EE) is a system of communication where only the communicating users can read the messages. In principle, it prevents potential eavesdroppers – including telecom providers, Internet providers, and even the provider of the communication service – from being able to access the cryptographic keys needed to decrypt the conversation.

只有发送双方可以解密消息,运营商和其他第三方都无法解密。端到端是指双方的客户端,并不是说只有一个端到一个端。
bao3
2019-05-14 04:19:01 +08:00
@fluffypanda #47 兄弟,你把 end to end 理解成同一个客户端的多个终端 …… 并且英文原文不也提示你了,imsg 加密的 key 连苹果服务器都不能访问,可是你解释不了你说的同一个 imsg 每一个终端一个 key 啊。是不是很难圆回去?
fluffypanda
2019-05-14 06:13:43 +08:00
@bao3 加密的消息只能用你的私钥解密,如果你有三个终端那么你有三个不同的私钥去解密这些消息,每一条消息都是端到端加密的,我这样解释够清楚了吧
bao3
2019-05-14 22:01:06 +08:00
@fluffypanda #49 你的解释违背了 wiki 原文,因为现在所有基于帐户的消息软件,都是你这个机制……而且你的解释和你最初的描述也是不符的。其实,显然,你并不理解 End 意义。
xbigfat
2019-05-14 22:17:53 +08:00
其实看了楼上这么多讨论,想起来不知道从哪里看到的一句话:
苹果在美国不做什么,是因为美国法律不要求它做;
苹果在中国做什么,是因为中国的法律要求它做。
fluffypanda
2019-05-15 02:54:52 +08:00
@bao3 行 8。
"因为现在所有基于帐户的消息软件,都是你这个机制",如果你觉得微信和其他 im 也是端到端加密,那么当我没说。我还以为这里都是懂技术的程序猿居多,没想到还是碰上个杠子,白浪费我时间。
bao3
2019-05-15 17:22:01 +08:00
@fluffypanda 别曲解,谢谢。这句话的前提是 “加密的消息只能用你的私钥解密,如果你有三个终端那么你有三个不同的私钥去解密这些消息,每一条消息都是端到端加密的,我这样解释够清楚了吧” “"因为现在所有基于帐户的消息软件,都是你这个机制"”

你再反过来想想,既然你说 3 个客户端都是私钥,一把锁可以被不通的钥匙打开,这还是加密吗?更别说端到端加密了。。。。你的这个说法本身是“你的解释违背了 wiki 原文”。

所以,你能解释一下为什么一个加密,可以有不同私钥加密,还能叫做 End- End ?别老是绕来绕去,自己跟自己杠,真的没劲。
dre021500
2019-05-15 20:51:22 +08:00
端对端加密是有,但是 ZF 有密钥的。简单来讲就是锁和钥匙放在一个地方的,所以无意义所谓加密
fluffypanda
2019-05-16 01:19:35 +08:00
@bao3 因为是一条消息,用你的三个设备的三个公钥加密,发送给你的三个设备,每条消息只能被那个对应设备的私钥解密,懂了么?为什么一个简单的概念你就看不明白?去看看苹果的开发者文档好么?
fluffypanda
2019-05-16 01:20:26 +08:00
@dre021500 iMessage 还真不是,端对端的设计就是为了防止 ZF 能看。像 iCloud 那样的 ZF 能看就不是端到端了。
bao3
2019-05-16 12:49:16 +08:00
@fluffypanda #55 所以一个 imsg 客户端要自己同步所有其他客户端公钥,然后分别加密,多次发送相同信息?你和你的朋友发送,你 imsg 要同步你朋友所有 imsg 的公钥,你可以分别发送到这些终端?这就是和端到端相违背的地方。
fluffypanda
2019-05-17 00:01:14 +08:00
@bao3 每一条消息都保证是端对端,都保证没有第三方可以解密,哪里违背了?
js9527
2020-03-10 13:27:27 +08:00
@suriv520 参考你的回复,理解就是 tg 也是不安全的呗
zhaaron
2021-10-12 08:36:35 +08:00
大家還是沒有回覆樓主的問題啊?
國區和美區聊天,都開了 iCloud,那麼聊天數據是放在雲上貴州還是國外服務器?還是國內外服務器都有備份。
我想這裏大部分用戶並不擔心被 FBI 抓,而是擔心老大哥。

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

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

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

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

© 2021 V2EX