文本类通信手段如手机短信、微信、Line、iMessage、Skype 哪个最安全? 知乎用户,剑桥大学NLP组//自由而无用的程序员 收到其他答案启发,我查了一下,发现 iMessage 确实很安全,但这也是建立在你信任苹果的基础上,先说结论: 苹果官方声称 iMessage 是端对端加密算法,任何一条消息在离开发送者手机的那一刻,直到到达接受者手机的之前的所有过程,消息全程加密,只有接收者能解密,苹果公司只能看到加密过的文本信息,无法处理。 但是,由于用于端对端加密算法的加密解密的密钥,也是苹果负责生成的。苹果只要存储了密钥,他当然可以读到用户信息。虽然苹果官方声称他们的架构是不会存储这个密钥的,但由于苹果的 iMeesage 不是开源的,谁知道呢。 以下是详细的解释 【公钥私钥加密】 先普及一个基本的加密原理,这是现在普遍商用的一种加密方法,如果已经熟悉可以直接略过本部分。 假设小明要给小红发送一个私密信息,如何确保不被中间的邮递员叔叔偷看?这时候,小红会利用加密算法,生成一对公钥和私钥 (public key、private key),小红然后通过一种安全和值得信赖的方式(这里面又有大文章,略)把生成的公钥,送到小明那里(以及任何她想收到信的人那里都可以),而私钥只有小红自己知道。这样的话小明给小红写信,寄出来之前,会用小红的公钥加密,然后再通过邮递员叔叔把密文送到小红这里。然后只有有对应私钥的小红,才能看到解密这个密文。 下图从维基百科(Public-key cryptography)摘录,该维基百科也提供了更详细的说明。总之记住:公钥加密,私钥解密,公钥送出去,私钥保管好! 【苹果的 iMessage 流程】 (翻译这篇:http://techcrunch.com/2014/02/27/apple-explains-exactly-how-secure-imessage-really-is/) 1、当小红第一次使用 iMeesage 的时候,小红 iPhone 上的 iMessage 客户端会生成一对公钥私钥,然后把私钥好好保存,公钥发给苹果服务器。 2、当小明要给小红发 iMessage 消息的时候,会问苹果服务器拿到小红之前发的公钥。 3、然后小明写好消息,点发送键的时候,小明的 iPhone 上的 iMessage 客户端会用小红的公钥加密刚刚写好的这条消息,然后再把加密过的密文上传给苹果服务器。 4、当小红登陆,从苹果拿回小明发送的加密的消息之后,小红的 iPhone 的 iMessage 客户端,会拿本地之前生成的私钥解密,然后小红就可以在 iPhone 屏幕上看到小明说了什么。 【总结】 结论一: 苹果这样的架构,确实是非常安全的,就算美国政府把枪架在他脖子上,他也无法看到客户的消息。就算 iMessage 服务器架在中国政府大院里,谁都没法看到消息。 结论二: 苹果是闭源的!刚刚我详细说的 4 个步骤,全都是“苹果声称”的,但谁也不知道他们是不是真的这么做的。毕竟公钥私钥生成和发送,也都是苹果自己写的程序,谁知道他们真的没有把小红的私钥传上来? (更详细的质疑可以看这篇文章:Daring Fireball: iMessage End-to-End Encryption: We Have to Take Apple's Word for It) 结论三 - 最终结论: 所以,如果苹果真的是端对端加密这样的架构,那 iMessage 绝对是无比安全的,在你 iPhone 不越狱的情况下,没有人能够看到你的信息。 如果我是苹果,我也宁愿采用这样的方式,就算美国政府真的问你要了,我也可以推得一干二净:大爷我真看不到,要不数据库全在这了您自己瞅瞅?! 查看知乎原文