iMessage 私钥存储位置推测

2014-09-29 23:30:03 +08:00
 Heracles
苹果说iMessage采用端到端加密,但iMessage又可以多平台同步,这意味着多个设备共用一个私钥。那么私钥是如何分发的?苹果有没有保存这个私钥?

做了个实验,详情https://medium.com/@herac1es/imessage-9c28b7ed97a6

我的结论是:iMessage私钥保存在设备上,苹果没有私钥,因此无法破解用户通信。

不科学的实验,结论不一定对。
3791 次点击
所在节点    Apple
10 条回复
WernerLi
2014-09-29 23:39:08 +08:00
有一个问题,设备间传输私钥是不是通过Apple服务器的?是的话理论上也是可以拦截的,不是的话又是怎么传输的?
Heracles
2014-09-29 23:42:05 +08:00
@WernerLi 这个就不知道怎么验证了
yyfearth
2014-09-30 03:37:13 +08:00
@WernerLi 可以用非对称加密 只传递PubKey啊
每个设备生成自己的Pub/Private Key Pair
然后Apple服务器通过帐号分发PubKey不就好了
拦截了 也是拦截PubKey 照样是加密了不可解密
yishanhe
2014-09-30 04:37:48 +08:00
http://support.apple.com/kb/HT4865

@Heracles 我觉得设备之间应该是有共享的secret key
这个 secret key 应该是 @WernerLi 说的这样,应该是每个设备有pub/private key pair,然后用Diffie–Hellman key exchange交换这么一个secret key,这个secret key是用来做对称加密得,比如AES128/256

@WernerLi 拦截这种,对于中间人攻击,都是通过证书和CA来验证apple服务器,确认再协商key得阶段是再和真正得server通信,一旦key exchange顺利完成,可以认为接下来得通信是安全得
wy315700
2014-09-30 08:58:05 +08:00
发现LZ文章里的几个逻辑错误。
PGP加密方式是先用自己的私钥签名,然后用对方的公钥加密。

如果先用对方的公钥加密,再用自己的私钥签名的话,攻击者获取消息以后,可以用你的公钥解密后再用他自己的私钥进行签名,发给对方。

如果先用自己的私钥签名,再用对方的公钥加密后,攻击者拿到消息以后做不了任何事情。(重放除外)

然后我想知道LZ是如何删除imessage的私钥的。

端对端加密不需要共享私钥。

端对端加密真正的意义是 A要和B发消息,先通过某种手段双方交换密钥,然后使用该密钥进行加密。
而交互密钥的过程必须能够防御中间人攻击。有很多这种公开的密钥交互机制,比如ECDHE等。

至于imessage支持多终端在线,你把他们看做是不同的人,发送端发消息的时候同时给多个人发而已,但是对每个人还是要单独进行一次密钥交换的。

最后,苹果想要查看消息,压根不需要在加密上做文章。整个ios,Mac OSX都是他的,只要有某种手段将消息发给服务器就可以了。
Heracles
2014-09-30 09:58:10 +08:00
@wy315700 多谢指正。
我好像没说要共享私钥吧。。。
如果每个设备有不同的私钥,我打开Mac时应该收到那个时段发的信息,可是没有。
wy315700
2014-09-30 10:39:48 +08:00
@Heracles Mac离线以后,不能交互密钥了把,所以收不到把
yarshure
2014-10-05 16:48:38 +08:00
怎么可能共享私钥的? 密码学没学习过吧?
多设备共享msg 是每个设备都发一次,用对应设备的公钥,设备收到用自己的private 解密。
yishanhe
2014-10-08 10:33:04 +08:00
我今天无意中读到这篇post,大家有兴趣可以看看

http://blog.cryptographyengineering.com/2014/10/why-cant-apple-decrypt-your-iphone.html
yishanhe
2014-10-08 10:59:29 +08:00

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

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

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

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

© 2021 V2EX