whatsapp协议简单分析之-端对端加密
whatsapp主要使用了libsignal这个端对端加密算法。
一、基础概念
PreKey
该协议使用称为“ PreKeys”的概念。PreKey是由服务器存储在一起的ECPublicKey和关联的唯一ID。PreKeys也可以签名。
在安装时,客户端会生成单个已签名的PreKey以及大量未签名的PreKey,并将它们全部传输到服务器。
Sessions
信号协议是面向会话的。客户端建立一个“会话”,然后将其用于所有后续的加密/解密操作。建立会话后,无需拆除会话。
通过以下三种方式之一建立会话:
PreKeyBundles。希望向收件人发送消息的客户端可以通过从服务器检索该收件人的PreKeyBundle来建立会话。
PreKeySignalMessages。客户端可以从收件人接收PreKeySignalMessage并使用它来建立会话。
KeyExchangeMessages。两个客户端可以交换KeyExchange消息以建立会话。
State
建立的会话封装了两个客户端之间的许多状态。该状态保存在持久记录中,在会话的整个生命周期中都需要保留这些记录。
状态保存在以下位置:
身份状态。客户端将需要维护自己的身份密钥对以及从其他客户端收到的身份密钥的状态。
密钥前状态。客户将需要维护其生成的PreKey的状态。
已签名的PreKey状态。客户将需要维护其签名的PreKey的状态。
会话状态。客户将需要保持他们建立的会话的状态。
二、数据记录
identities:终端的身份凭证
prekeys:随机加密密钥对
signed_prekeys:已签名对密钥对
sessions:会话记录
三、密钥交互过程
1、注册时记录生产终端身份,已签名对密钥对,然后上报给服务器
2、登录时批量生产加密密钥
3、消息发送时,获取对方对加密密钥,加密发送对文本
4、消息接收时,使用本地对密钥,解密接收到对文本。
四、加密例子
原始文本
【8】5572206e616d653f
已加密对文本
【162】330a210536c05d2b0e37ae0c7e7ad9f6999491fadb361f724ace8a97c7c46044bb931954100018002270c043e1d7ccd2dde22f6
fe5157990bd28c6713eb57bc54de89356b7f2b23f3b6a326e52afd40f579a6e25b2cedb16aacfe62fba325ae3340d4b54284989b
7a42169058e0aa0991c4454b71fdeb22cb81c56695f6a1260deb554ebc1c80c805f261c5264326916326f87f90859086a90e863d
71ef0f9b63963
————————————————
版权声明:本文为CSDN博主「沃涂工具」的原创文章
原文链接:https://blog.csdn.net/bestfor115/article/details/105250991
感兴趣的小伙伴,可以点击关注闪电WhatsApp云控TG客户群/点击联系客服进行咨询哦