IM加密聊天方案解析

探討一下IM加密聊天的實現方案

在此之前引入“對稱加密”和“非對稱加密的概念”

【對稱加密】,簡單來講 只需要一個祕鑰就可以對數據進行加密,對稱加密相對非對稱加密的速度非常快。

若userA給userB發送一斷數據,若用對稱加密方案,即爲

 

即實現了簡單的對稱加密,

但是若在傳輸過程中收到了攻擊,且破解了key那麼跟明文傳輸就沒有什麼區別了。

那怎麼辦呢?我們先看下非對稱加密

【非對稱加密】需要一堆公私鑰,由公鑰加密,私鑰解密,私鑰加簽,公鑰驗籤。但是加密效率遠遠低於對稱加密,所以並不適合連續的且對數據量大信息進行加密。

所以一般採用非對稱加密結合對稱加密的形式

大致流程

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不知道是誰發來的。所以還是有風險的。

那麼怎麼辦呢?非對稱加密還有一個加簽驗證籤功能

我們在發送的過程中,用userA的a_pri對整體數據進行加簽。證明是userA發送的。B收到的時候用a_pub進行驗籤。若驗籤通過,則說明是A發送的。在非對稱加密過程中 私鑰是永遠不會對外開放的,只是本地擁有。

屆此,我們做了一個比較安全的加密傳輸方案。有興趣的可瞭解https的加密策略,與之有類似。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章