海鸥聊天

海鸥聊天安全中心

安全中心

网络诈骗专题

行业相关

四项重点安全环节

•通道加密

•内容加密

•服务器数据库安全

•密钥安全

海鸥聊天安全机制说明

通道加密

内容加密详解

服务器数据库安全

密钥安全

传输通道如何完成密钥协商?

基本流程:

1. 客户端与服务器分别生成本次连接所需的随机数

2. 服务器将随机数发送给客户端。

3. 客户端使用 RSA 加密本地随机数后发送至服务器。

4. 服务器使用 RSA 解密客户端随机数,以降低中间人攻击风险。

5. 客户端,服务器用自己的随机数加上对方的随机数生成临时密钥 TempKey 和临时偏移量 TempIV (此时双方均持有相同的 TempKey和TempIV)。

6. 客户端与服务器分别通过 ECDHE 生成临时公私钥对。

7. 客户端使用 TempKey 与 TempIV 加密 ECDHE 公钥,再将密文发送至服务器。

8. 服务器接收并解密客户端发送的 ECDHE 公钥密文。

9. 服务器使用 TempKey, TempIV 对自己的 ECDHE 公钥进行加密,并使用 RSA 对 ECDHE。

10. 服务器使用 ECDHE 算法,使用客户端 ECDHE 公钥明文+服务器 ECDHE 私钥明文生成ShareKey。

11. 客户端收到服务器的 ECDHE 公钥密文和签名,然后进行解密和验证签名,如果没有问题,就使用客户端 ECDHE 私钥明文+服务器ECDHE 公钥明文生成 ShareKey。

12. 服务器初始化各个参数,下发给客户端,参数包含:

• AuthKeyID: 服务器随机生成的客户端临时标识符

• MsgKey: 由 ShareKey, AuthkeyID, MsgID, SessionID, Salt, SeqNo 以及真实的消息内容相加后进行 Sha256 后的值。

本参数用于:

a. 进行防止数据篡改的验证

b. 与 ShareKey 一起使用,生成 Aes256 key, IV,用来对各条消息进行加密。

• MsgID:时间相关的消息 ID,用于防止重放和去重。

• SessionID:每次登录唯一的会话 ID。

• Salt:每次登录唯一的盐值。

• SeqNo:用于防止重放。

13. 后续每条消息均会有不同的 MsgID, SessionID, Salt, SeqNo 和真实的消息内容;这些变化的值会导致 MsgKey 每次都不同。 这个每次都 不同的 MsgKey 加上 ShareKey 可以为每一条消息生成对应的 32 字节密钥和偏移量。

14. ShareKey 设有有效期限,到期后双方将重新完成密钥协商。

公钥与私钥分别是什么?

公开密钥(PubKey:简称公钥)和私有密钥(PriKey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。如上文加密中使用的RSA、ECDHE为非对称加密算法

非对称加密如何工作?

1、A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。

2、A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。

3、A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。

4、A将这个消息发给B(已经用B的公钥加密消息)。

5、B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个数据的人都无法解密,因为只有B才有B的私钥。