苹果公司可以读到 iMessage 传输的内容吗,这样端到端的加密可能被破解吗?

Apple能不能读到,取决于Apple想不想看,这是态度问题而不是能力问题! Apple设计的iMessage大体工作过程是这样的,以一个小故事为例。 Alice与Bob的故事 Alice的iPhone向Apple服务器注册时,动态生成一对自己的RSA公钥/私钥,并将RSA公钥上传服务器。Bob也是如此这般操作。至此,Apple服务器拥有Alice、Bob的RSA公钥。 Alice与Apple服务器建立TLS安全加密连接。Alice告诉服务器,自己想给Bob发消息。服务器将Bob的RSA公钥告诉Alice。 Alice写一句话:“I miss you!”,敲回车,消息就发出去了,这句话是通过TLS加密连接发出去的吗? 是的。 但是在使用TLS传输之前,需要预先对消息做加密处理,否则消息会被Apple服务器读出“I miss you!”。 怎么加密预处理呢? Alice的iPhone临时生成一个密钥P,用P对消息做加密处理,这是一个对称加密,通常为AES加密。 什么是对称加密? 所谓对称加密,加密的一方与解密的一方,使用的密钥是相同的。 Bob如果要解密Alice的消息,自然需要知道P。如何才能将密钥P告诉Bob呢? 聪明的同学已经猜到了,使用Bob的RSA公钥将P加密,并随同使用密钥P加密的消息一起发给服务器,使用TLS安全连接。 预处理之后的消息 = Bob RSA公钥【P】 + P 【I miss you!】 【】表示加密 服务器将Alice的消息存储在服务器上,通知Bob前来取走,同时告知Bob具体的存放位置URI。这个沟通的过程也是使用TLS安全加密连接。 Bob立马前往URI处,将消息下载到本地。Bob使用RSA私钥解密“Bob RSA公钥【P】”,得到密钥P,然后使用P解密“P 【I miss you!】”,得到Alice的原始消息:“I miss you!”。 如果Apple公司没有设计后门,很显然Alice发出的消息,只有Bob可以解密。这就是端到端(End to End )加密的真实含义,Alice是其中的一端,Bob是另外的一端,Apple服务器就如同快递公司一样,仅仅充当一个二传手的角色。 但是,如果Apple想看原始消息,易如反掌。有很多种方法,本文只讨论其中的两种方法: 方法一:Apple服务器告诉Alice的公钥不是Bob的,而是服务器的公钥 很显然服务器可以解密得到P,并进而解密原始消息。 方法二:Alice的手机偷偷将密钥P上传服务器,服务器自然也可以解密

read more