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上传服务器,服务器自然也可以解密
Search…
Page…
Recent Posts…
- 自动化工具: playwright-python 13/01/2021
- Multiple default routes where sdwan rules are not preferred 15/10/2020
- Fusion 12: Now Available! 16/09/2020
- SSL证书格式普及,PEM、CER、JKS、PKCS12 01/09/2020
- 个头小本事大:13 种 20 美元以下的树莓派 Zero 替代品 16/08/2020
- Environment Variables in Mac OS zsh Shell 14/07/2020
- Find Out FortiGate DSL Vendor ID 09/07/2020
- 监控知识体系 01/07/2020
- 从HTTP/0.9到HTTP/2 30/06/2020
- Automation Framework 24/04/2020
- 编写gitlab-runner .gitlab-ci.yml 06/04/2020
- 用Python一键搭建Http服务器 06/04/2020
- VS Code使用Git管理代码 05/04/2020
- Ununtu16.04/18.04搭建GitLab服务器教程 05/04/2020
- Certbot for Nginx on Ubuntu 18.04 LTS 26/03/2020
Archives…
- January 2021 (1)
- October 2020 (1)
- September 2020 (2)
- August 2020 (1)
- July 2020 (3)
- June 2020 (1)
- April 2020 (5)
- March 2020 (5)
- February 2020 (1)
- January 2020 (2)
- December 2019 (1)
- August 2019 (2)
- July 2019 (3)
- June 2019 (1)
- May 2019 (4)
- April 2019 (6)
- March 2019 (5)
- November 2018 (2)
- October 2018 (1)