1.X3DH密钥交换协议
无    2019-05-14 09:03:37    1413    0    0
xianglijiaxing


signal protocol采用的是X3DH协议。X3DH协议基于DH 协议,但是引入更多的公钥参数以提高安全性。

在X3DH协议下,有3个角色:

1)  会话发起者,本例我们假设是Alice;

2) 会话接收者,本例我们假设是Bob;

3) 服务器: 用于存储所有用户的各种公钥。

在X3DH协议里,也许是为了提高安全性,每个人都要创建3种密钥对,分别如下:

1) 身份密钥对(Identity Key Pair) —— 一个长期的符合DH协议的密钥对,用户注册时创建,与用户身份绑定

2) 已签名的预共享密钥(Signed Pre Key) ——一个中期的符合DH协议的密钥对,用户注册时创建,由身份密钥签名,并定期进行轮换,此密钥可能是为了保护身份密钥不被泄露;

3) 一次性预共享密钥(One-Time Pre Keys) —— 一次性使用的 Curve25519 密钥对队列,安装时生成,不足时补充。



所有人都要将这3种密钥对的公钥上传到服务器上,以便其他人发起会话时使用


计算对称密钥:
注:
注:“||”代表连接符

这个初始密钥进行一次KDF计算(KDF是密钥衍生算法的一种,可以看成加强版的hash),以衍生出固定长度的消息密钥,结果即为最终解密的消息密钥;

发送消息时,使用消息密钥S对消息进行加密,连同自己的身份公钥IPK-A和临时公钥EPK-A一同发给Bob



org.whispersystems.libsignal.SessionCipher​




符合DH 协议的密钥对




上一篇: 2.棘轮算法

下一篇: 笔记

1413 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航