IM加密聊天方案解析

时间:2024-04-14 20:26:07

探讨一下IM加密聊天的实现方案

在此之前引入“对称加密”和“非对称加密的概念”

【对称加密】,简单来讲 只需要一个秘钥就可以对数据进行加密,对称加密相对非对称加密的速度非常快。

若userA给userB发送一断数据,若用对称加密方案,即为

IM加密聊天方案解析

 

即实现了简单的对称加密,

但是若在传输过程中收到了攻击,且**了key那么跟明文传输就没有什么区别了。

那怎么办呢?我们先看下非对称加密

【非对称加密】需要一堆公私钥,由公钥加密,私钥解密,私钥加签,公钥验签。但是加密效率远远低于对称加密,所以并不适合连续的且对数据量大信息进行加密。

所以一般采用非对称加密结合对称加密的形式

IM加密聊天方案解析

大致流程

1、userA 得到userB的公钥 b_pub,随机对称秘钥key

2、用b_pub加密key + key加密原文,作为密文传输给userB

3、userB将密文截取,用b_pri对对应密文进行解密,得到userA随机生成的key

4、用key解密出对应密文得到原文

但是,若一个攻击者C,劫持了A与B之间的通信,且有B_pub,就可以把自己伪装了一个A,给B发送数据。

因为是用B_pub加密的,所以B不知道是谁发来的。所以还是有风险的。

那么怎么办呢?非对称加密还有一个加签验证签功能

IM加密聊天方案解析

我们在发送的过程中,用userA的a_pri对整体数据进行加签。证明是userA发送的。B收到的时候用a_pub进行验签。若验签通过,则说明是A发送的。在非对称加密过程中 私钥是永远不会对外开放的,只是本地拥有。

届此,我们做了一个比较安全的加密传输方案。有兴趣的可了解https的加密策略,与之有类似。