本文由夏冰軟件cc分享,下文進行了排版和內(nèi)容優(yōu)化。
1、引言
本文接上篇《什么是IM系統(tǒng)的消息時序一致性?》,本篇將通俗易懂地講解IM系統(tǒng)中的端到端加密原理,為了降低閱讀門檻,相關(guān)的技術(shù)概念會提及但不深入展開。
IM即時通訊系統(tǒng)的技術(shù)本質(zhì)是“即時消息技術(shù)”,是互聯(lián)網(wǎng)實時互動場景的底層架構(gòu),包括聊天、直播、在線客服等業(yè)務(wù)領(lǐng)域在內(nèi),所有需要實時互動、高實時性的場景,都需要用到IM技術(shù)。而為了讓即時通訊更安全,高安全場景下的IM系統(tǒng)通常會使用端到端加密技術(shù)進行通訊加密。下面我們就來了解一下端到端加密技術(shù)在IM系統(tǒng)中的應(yīng)用。
2、系列文章
- 《零基礎(chǔ)IM開發(fā)入門(一):什么是IM系統(tǒng)?》
- 《零基礎(chǔ)IM開發(fā)入門(二):什么是IM系統(tǒng)的實時性?》
- 《零基礎(chǔ)IM開發(fā)入門(三):什么是IM系統(tǒng)的可靠性?》
- 《零基礎(chǔ)IM開發(fā)入門(四):什么是IM系統(tǒng)的消息時序一致性?》
- 《零基礎(chǔ)IM開發(fā)入門(五):什么是IM系統(tǒng)的端到端加密?(* 本文)》
- 《零基礎(chǔ)IM開發(fā)入門(六):什么是IM系統(tǒng)的的心跳機制? (稍后發(fā)布)》
- 《零基礎(chǔ)IM開發(fā)入門(七):如何理解并實現(xiàn)IM系統(tǒng)消息未讀數(shù)? (稍后發(fā)布)》
- 《零基礎(chǔ)IM開發(fā)入門(八):如何理解并實現(xiàn)IM系統(tǒng)的多端消息漫游? (稍后發(fā)布)》
3、網(wǎng)絡(luò)通訊數(shù)據(jù)加密的3個層次
3.1 概述
一般的數(shù)據(jù)加密可以在通信的3個層次來實現(xiàn):鏈路加密、節(jié)點加密和端到端加密。
3.2 鏈路加密
對于在兩個網(wǎng)絡(luò)節(jié)點間的某一次通信鏈路,鏈路加密能為網(wǎng)上傳輸?shù)臄?shù)據(jù)提供安全保證。對于鏈路加密(又稱在線加密),所有消息在被傳輸之前進行加密,在每一個節(jié)點對接收到的消息進行解密,然后先使用下一個鏈路的密鑰對消息進行加密,再進行傳輸。
在到達目的地之前,一條消息可能要經(jīng)過許多通信鏈路的傳輸。由于在每一個中間傳輸節(jié)點消息均被解密后重新進行加密,因此,包括路由信息在內(nèi)的鏈路上的所有數(shù)據(jù)均以密文形式出現(xiàn),這樣,鏈路加密就掩蓋了被傳輸消息的源點與終點。由于填充技術(shù)的使用以及填充字符在不需要傳輸數(shù)據(jù)的情況下就可以進行加密,這使得消息的頻率和長度特性得以掩蓋,從而可以防止對通信業(yè)務(wù)進行分析。
相關(guān)文章推薦閱讀:《IM聊天系統(tǒng)安全手段之通信連接層加密技術(shù)》。
3.3 節(jié)點加密
盡管節(jié)點加密能給網(wǎng)絡(luò)數(shù)據(jù)提供較高的安全性,但它在操作方式上與鏈路加密是類似的:兩者均在通信鏈路上為傳輸?shù)南⑻峁┌踩?,都在中間節(jié)點先對消息進行解密,然后進行加密。因為要對所有傳輸?shù)臄?shù)據(jù)進行加密,所以加密過程對用戶是透明的。然而,與鏈路加密不同,節(jié)點加密不允許消息在網(wǎng)絡(luò)節(jié)點以明文形式存在,它先把收到的消息進行解密,然后采用另一個不同的密鑰進行加密,這一過程是在節(jié)點上的一個安全模塊中進行。
節(jié)點加密要求報頭和路由信息以明文形式傳輸,以便中間節(jié)點能得到如何處理消息的信息,因此這種方法對于防止攻擊者分析通信業(yè)務(wù)是脆弱的。
3.4 端到端加密
端到端加密允許數(shù)據(jù)在從源點到終點的傳輸過程中始終以密文形式存在。采用端到端加密(又稱脫線加密或包加密),消息在被傳輸時到達終點之前不進行解密,因為消息在整個傳輸過程中均受到保護,所以即使有節(jié)點被損壞也不會使消息泄露。
端到端加密系統(tǒng)的價格便宜些,并且與鏈路加密和節(jié)點加密相比更可靠,更容易設(shè)計、實現(xiàn)和維護。端到端加密還避免了其它加密系統(tǒng)所固有的同步問題,因為每個報文包均是獨立被加密的,所以一個報文包所發(fā)生的傳輸錯誤不會影響后續(xù)的報文包。端到端加密系統(tǒng)通常不允許對消息的目的地址進行加密,這是囚為每一個消息所經(jīng)過的節(jié)點都要用此地址來確定如何傳輸消息。由于這種加密方法不能掩蓋被傳輸消息的源點與終點,因此它對于防止攻擊者分析通信業(yè)務(wù)是脆弱的。
沒有使用端到端加密時的通信原理圖(各個環(huán)節(jié)都存在泄密的可能):
使用端到端加密后的通信原理圖(除了發(fā)送者和接收者,其它環(huán)境都是密文狀態(tài)):
4、IM系統(tǒng)中的端到端加密原理
在IM系統(tǒng)中,當(dāng)用戶A發(fā)送消息給用戶B時,IM系統(tǒng)會生成一對公鑰和私鑰,并將公鑰發(fā)送給用戶B。用戶A使用用戶B的公鑰對消息進行加密,然后將加密后的消息發(fā)送給用戶B。
在用戶B接收到消息后,使用自己的私鑰對消息進行解密,從而獲取明文內(nèi)容。由于私鑰只有用戶B擁有,因此除了用戶B之外,任何人都無法解密消息。
沒有使用端到端加密時的聊天消息存在諸多風(fēng)險:
使用了端到端加密后的聊天就安全多了:
5、IM系統(tǒng)使用端到端加密的好處
數(shù)據(jù)安全性:在IM系統(tǒng)中,端到端加密可以確保消息在傳輸過程中始終保持加密狀態(tài),防止黑客和第三方竊取用戶的通信內(nèi)容。
隱私保護:由于消息內(nèi)容只有通信雙方能夠解密和閱讀,即使是IM系統(tǒng)應(yīng)用自身也無法獲取明文內(nèi)容。這意味著用戶的隱私得到了最大程度的保護。
抗竊聽:IM系統(tǒng)使用端到端加密技術(shù),使得竊聽者無法獲取通信內(nèi)容,從而有效防止了竊聽行為的發(fā)生。
6、IM系統(tǒng)使用端到端加密的意義
由于在數(shù)據(jù)傳輸?shù)椒?wù)器之后,任何有權(quán)訪問此服務(wù)器的人,包括員工、供應(yīng)商及其他有關(guān)人員(甚至是黑客),都有可能讀取到用戶的數(shù)據(jù)。
所以,使用端到端加密技術(shù)主要有以下意義:
1)保護個人隱私:在信息時代,個人隱私面臨著越來越大的威脅。在IM系統(tǒng)中使用端到端加密可以有效保護了用戶的通信內(nèi)容,確保個人隱私不被侵犯。
2)防止數(shù)據(jù)泄露:許多用戶在社交軟件中分享了大量的個人信息和敏感數(shù)據(jù)。而IM系統(tǒng)中的端到端加密就可以確保這些數(shù)據(jù)在傳輸過程中不會被竊取,從而避免了數(shù)據(jù)泄露的風(fēng)險。
3)抵御網(wǎng)絡(luò)攻擊:黑客和網(wǎng)絡(luò)犯罪分子經(jīng)常利用網(wǎng)絡(luò)漏洞和弱點來攻擊用戶的通信。IM系統(tǒng)中的端到端加密可以有效防止這些攻擊,保護用戶的通信安全。
4)維護社交關(guān)系:人們越來越依賴社交應(yīng)用來保持聯(lián)系和交流。IM系統(tǒng)使用端到端加密可以使得用戶能夠放心地分享私密信息,維護社交關(guān)系的同時保護了個人隱私。
7、IM系統(tǒng)使用端到端加密的不足
通訊效率低:由于端對端加密需要對通訊數(shù)據(jù)進行加密和解密,因此可能會導(dǎo)致通信效率較低。
需雙向支持:端對端加密需要發(fā)送方和接收方都需要支持該技術(shù),否則就將無法實現(xiàn)端對端加密通信。
安全性問題:雖然端對端加密可以防止中間人攻擊,但如果黑客能夠獲得了私鑰或公鑰,那么他們也能夠輕易地獲取到通信數(shù)據(jù)。
8、延伸閱讀
本文內(nèi)容主要是面向即時通訊技術(shù)的初學(xué)者以及產(chǎn)品經(jīng)理,所以相關(guān)的技術(shù)概念都沒有深入探討,感光趣的可以繼續(xù)深入閱讀我整理的以下幾篇資料。
- IM聊天系統(tǒng)安全手段之通信連接層加密技術(shù)
- IM聊天系統(tǒng)安全手段之傳輸內(nèi)容端到端加密技術(shù)
- 移動端安全通信的利器——端到端加密(E2EE)技術(shù)詳解
- 簡述實時音視頻聊天中端到端加密(E2EE)的工作原理
9、參考資料
[1] 網(wǎng)絡(luò)編程懶人入門(三):快速理解TCP協(xié)議一篇就夠
[2] 即時通訊初學(xué)者必知必會的20個網(wǎng)絡(luò)編程和通信安全知識點
[3] 為什么要用HTTPS?深入淺出,探密短連接的安全性
[4] 理論聯(lián)系實際:一套典型的IM通信協(xié)議設(shè)計詳解(含安全層設(shè)計)
[5] 微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解
[6] 移動端安全通信的利器——端到端加密(E2EE)技術(shù)詳解
[7] 常用加解密算法與通訊安全講解
[8] 通俗易懂:一篇掌握即時通訊的消息傳輸安全原理
[9] 基于Netty的IM聊天加密技術(shù)學(xué)習(xí):一文理清常見的加密概念、術(shù)語等
[10] 手把手教你為基于Netty的IM生成自簽名SSL/TLS證書
[11] 微信技術(shù)分享:揭秘微信后臺安全特征數(shù)據(jù)倉庫的架構(gòu)設(shè)計
[12] 即時通訊初學(xué)者必知必會的20個網(wǎng)絡(luò)編程和通信安全知識點
(本文已同步發(fā)布于:http://www.52im.net/thread-4792-1-1.html)