本帖最后由 Qter 于 2020-2-20 20:37 编辑
https://www.detechn.com/post/1030.html 本文描述了MTProto协议2.0版(云聊天、服务器客户端加密)的基本层。与版本1.0的主要区别如下: 用sha-256代替sha-1;
在计算msg_key时涉及填充字节;
msg_key不仅依赖于要加密的消息,还依赖于auth_key的一部分;
在1.0中使用12..1024个填充字节,而不是0..15个填充字节。 协议描述 在使用传输协议通过网络传输消息(或多部分消息)之前,将以某种方式对其进行加密,并在消息顶部添加一个外部头,该头由64位密钥标识符auth_key_id(唯一标识服务器和用户的授权密钥)和128位消息组成键消息键。 授权密钥auth_key与消息密钥msg_key组合定义了一个实际的256位密钥aes_key和一个256位初始化向量aes_iv,用于在无限长扩展(ige)模式下使用aes-256加密对消息进行加密。注意,要加密的消息的初始部分包含明显影响消息密钥(以及aes密钥和iv)的变量数据(会话、消息id、序列号、服务器salt)。在mtproto 2.0中,消息密钥被定义为消息体sha-256的128个中间位(包括会话、消息id、填充等),前面加上从授权密钥中取出的32个字节。在较旧的mtproto 1.0中,消息密钥被计算为消息体sha-1的较低128位,不包括填充字节。 多部分消息作为单个消息加密。
|