微信电脑版加密协议详细介绍

背景和目标
微信电脑版使用的加密协议为mmtls,这是基于TLS 1.3草案标准进行优化和简化的版本,该协议旨在提高通信的安全性、减少延迟、降低资源消耗,并确保在极端情况下的高可用性和良好的扩展性,由于微信需要进行频繁的网络通信,尤其是对于即时通讯软件,减少延迟尤为重要。
mmtls协议设计
mmtls协议包括三个子协议:Record协议、Handshake协议和Alert协议,这些子协议与TLS类似,但针对微信的需求进行了优化。
1、Record协议:负责数据对称加密传输。

2、Handshake协议:用于完成客户端与服务器之间的握手协商,产生对称加密密钥和其他密码材料。
3、Alert协议:用于通知对端发生错误并希望关闭连接。
Handshake协议详解
Handshake协议的主要目的是安全地协商出对称加密密钥,以便进行后续的加密数据传输,这个过程主要分为以下几个步骤:
1、客户端发出ClientHello消息:该消息包括客户端支持的TLS版本、加密套件列表和一个随机数。

2、服务器响应ServerHello消息:服务器确定使用的TLS版本和加密套件,并生成服务器端的随机数。
3、服务器发送证书消息:此消息包含服务器的公钥证书,用于身份验证。
4、密钥交换消息:服务器发送一个包含服务器公钥的消息,客户端使用这个公钥加密预主秘钥(PreMaster Secret)并发送给服务器。
5、握手完成:双方使用预主秘钥生成主秘钥(Master Secret),再由主秘钥生成会话秘钥(Session Key),至此,握手过程完成,所有后续通信都将使用会话秘钥进行加密。
安全性和性能优化
mmtls协议的设计充分考虑了安全性和性能的平衡,通过使用对称加密密钥进行大量数据的快速加解密,保证了性能;通过非对称密钥交换实现了高安全性的密钥协商,微信还采用了0RTT建立安全连接的方法,进一步减少了通信延迟。
相关问题与解答
1、为什么微信要采用mmtls而不是标准的TLS 1.3?
微信需要频繁的网络通信,尤其是在大量短连接的情况下,标准TLS 1.3的额外RTT会对用户体验造成较大影响,而mmtls基于TLS 1.3草案进行了优化,取消了客户端认证环节,仅保留服务器认证,并实现了0RTT通信,从而大大减少了握手时间和数据传输延迟。
2、mmtls如何保证数据传输的安全性?
mmtls通过多层次的加密措施来保证数据传输的安全性,通过非对称密钥交换实现安全的密钥协商,确保只有通信双方能够获取到对称加密密钥,使用对称加密算法对实际的通信数据进行高效加解密,同时采用防窃听、防篡改、防重放和防伪造等多种手段确保数据在传输过程中的安全。