Jack Jiang

          我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
          posts - 502, comments - 13, trackbacks - 0, articles - 1

          導航

          公告


            ① 即時通訊開發社區
            地址: 52im.net
            專業的資料、社區

            ② 關注我的公眾號:

            讓技術不再封閉

            ③ 我的Github
            地址: 點此進入
            好代碼,與大家分享
          <2025年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(288)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          60天內閱讀排行

          本文由夏冰軟件cc分享,下文進行了排版和內容優化。

          1、引言

          本文接上篇《什么是IM系統的消息時序一致性?》,本篇將通俗易懂地講解IM系統中的端到端加密原理,為了降低閱讀門檻,相關的技術概念會提及但不深入展開

          IM即時通訊系統的技術本質是“即時消息技術”,是互聯網實時互動場景的底層架構,包括聊天、直播、在線客服等業務領域在內,所有需要實時互動、高實時性的場景,都需要用到IM技術。而為了讓即時通訊更安全,高安全場景下的IM系統通常會使用端到端加密技術進行通訊加密。下面我們就來了解一下端到端加密技術在IM系統中的應用。

          2、系列文章

          1. 零基礎IM開發入門(一):什么是IM系統?
          2. 零基礎IM開發入門(二):什么是IM系統的實時性?
          3. 零基礎IM開發入門(三):什么是IM系統的可靠性?
          4. 零基礎IM開發入門(四):什么是IM系統的消息時序一致性?
          5. 零基礎IM開發入門(五):什么是IM系統的端到端加密?* 本文)》
          6. 《零基礎IM開發入門(六):什么是IM系統的的心跳機制? (稍后發布)》
          7. 《零基礎IM開發入門(七):如何理解并實現IM系統消息未讀數? (稍后發布)》
          8. 《零基礎IM開發入門(八):如何理解并實現IM系統的多端消息漫游? (稍后發布)》

          3、網絡通訊數據加密的3個層次

          3.1 概述

          一般的數據加密可以在通信的3個層次來實現:鏈路加密、節點加密和端到端加密。

          3.2 鏈路加密

          對于在兩個網絡節點間的某一次通信鏈路,鏈路加密能為網上傳輸的數據提供安全保證。對于鏈路加密(又稱在線加密),所有消息在被傳輸之前進行加密,在每一個節點對接收到的消息進行解密,然后先使用下一個鏈路的密鑰對消息進行加密,再進行傳輸。

          在到達目的地之前,一條消息可能要經過許多通信鏈路的傳輸。由于在每一個中間傳輸節點消息均被解密后重新進行加密,因此,包括路由信息在內的鏈路上的所有數據均以密文形式出現,這樣,鏈路加密就掩蓋了被傳輸消息的源點與終點。由于填充技術的使用以及填充字符在不需要傳輸數據的情況下就可以進行加密,這使得消息的頻率和長度特性得以掩蓋,從而可以防止對通信業務進行分析。

          相關文章推薦閱讀:IM聊天系統安全手段之通信連接層加密技術》

          3.3 節點加密

          盡管節點加密能給網絡數據提供較高的安全性,但它在操作方式上與鏈路加密是類似的:兩者均在通信鏈路上為傳輸的消息提供安全性,都在中間節點先對消息進行解密,然后進行加密。因為要對所有傳輸的數據進行加密,所以加密過程對用戶是透明的。然而,與鏈路加密不同,節點加密不允許消息在網絡節點以明文形式存在,它先把收到的消息進行解密,然后采用另一個不同的密鑰進行加密,這一過程是在節點上的一個安全模塊中進行。

          節點加密要求報頭和路由信息以明文形式傳輸,以便中間節點能得到如何處理消息的信息,因此這種方法對于防止攻擊者分析通信業務是脆弱的。

          3.4 端到端加密

          端到端加密允許數據在從源點到終點的傳輸過程中始終以密文形式存在。采用端到端加密(又稱脫線加密或包加密),消息在被傳輸時到達終點之前不進行解密,因為消息在整個傳輸過程中均受到保護,所以即使有節點被損壞也不會使消息泄露。

          端到端加密系統的價格便宜些,并且與鏈路加密和節點加密相比更可靠,更容易設計、實現和維護。端到端加密還避免了其它加密系統所固有的同步問題,因為每個報文包均是獨立被加密的,所以一個報文包所發生的傳輸錯誤不會影響后續的報文包。端到端加密系統通常不允許對消息的目的地址進行加密,這是囚為每一個消息所經過的節點都要用此地址來確定如何傳輸消息。由于這種加密方法不能掩蓋被傳輸消息的源點與終點,因此它對于防止攻擊者分析通信業務是脆弱的。

          沒有使用端到端加密時的通信原理圖(各個環節都存在泄密的可能):

          使用端到端加密后的通信原理圖(除了發送者和接收者,其它環境都是密文狀態):

          4、IM系統中的端到端加密原理

          在IM系統中,當用戶A發送消息給用戶B時,IM系統會生成一對公鑰和私鑰,并將公鑰發送給用戶B。用戶A使用用戶B的公鑰對消息進行加密,然后將加密后的消息發送給用戶B。

          在用戶B接收到消息后,使用自己的私鑰對消息進行解密,從而獲取明文內容。由于私鑰只有用戶B擁有,因此除了用戶B之外,任何人都無法解密消息。

          沒有使用端到端加密時的聊天消息存在諸多風險:

          使用了端到端加密后的聊天就安全多了:

          5、IM系統使用端到端加密的好處

          數據安全性:在IM系統中,端到端加密可以確保消息在傳輸過程中始終保持加密狀態,防止黑客和第三方竊取用戶的通信內容。

          隱私保護:由于消息內容只有通信雙方能夠解密和閱讀,即使是IM系統應用自身也無法獲取明文內容。這意味著用戶的隱私得到了最大程度的保護。

          抗竊聽:IM系統使用端到端加密技術,使得竊聽者無法獲取通信內容,從而有效防止了竊聽行為的發生。

          6、IM系統使用端到端加密的意義

          由于在數據傳輸到服務器之后,任何有權訪問此服務器的人,包括員工、供應商及其他有關人員(甚至是黑客),都有可能讀取到用戶的數據。

          所以,使用端到端加密技術主要有以下意義:

          1)保護個人隱私:在信息時代,個人隱私面臨著越來越大的威脅。在IM系統中使用端到端加密可以有效保護了用戶的通信內容,確保個人隱私不被侵犯。

          2)防止數據泄露:許多用戶在社交軟件中分享了大量的個人信息和敏感數據。而IM系統中的端到端加密就可以確保這些數據在傳輸過程中不會被竊取,從而避免了數據泄露的風險。

          3)抵御網絡攻擊:黑客和網絡犯罪分子經常利用網絡漏洞和弱點來攻擊用戶的通信。IM系統中的端到端加密可以有效防止這些攻擊,保護用戶的通信安全。

          4)維護社交關系:人們越來越依賴社交應用來保持聯系和交流。IM系統使用端到端加密可以使得用戶能夠放心地分享私密信息,維護社交關系的同時保護了個人隱私。

          7、IM系統使用端到端加密的不足

          通訊效率低:由于端對端加密需要對通訊數據進行加密和解密,因此可能會導致通信效率較低。

          需雙向支持:端對端加密需要發送方和接收方都需要支持該技術,否則就將無法實現端對端加密通信。

          安全性問題:雖然端對端加密可以防止中間人攻擊,但如果黑客能夠獲得了私鑰或公鑰,那么他們也能夠輕易地獲取到通信數據。

          8、延伸閱讀

          本文內容主要是面向即時通訊技術的初學者以及產品經理,所以相關的技術概念都沒有深入探討,感光趣的可以繼續深入閱讀我整理的以下幾篇資料。

          1. IM聊天系統安全手段之通信連接層加密技術
          2. IM聊天系統安全手段之傳輸內容端到端加密技術
          3. 移動端安全通信的利器——端到端加密(E2EE)技術詳解
          4. 簡述實時音視頻聊天中端到端加密(E2EE)的工作原理

          9、參考資料

          [1] 網絡編程懶人入門(三):快速理解TCP協議一篇就夠

          [2] 即時通訊初學者必知必會的20個網絡編程和通信安全知識點

          [3] 為什么要用HTTPS?深入淺出,探密短連接的安全性

          [4] 理論聯系實際:一套典型的IM通信協議設計詳解(含安全層設計)

          [5] 微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解

          [6] 移動端安全通信的利器——端到端加密(E2EE)技術詳解

          [7] 常用加解密算法與通訊安全講解

          [8] 通俗易懂:一篇掌握即時通訊的消息傳輸安全原理

          [9] 基于Netty的IM聊天加密技術學習:一文理清常見的加密概念、術語等

          [10] 手把手教你為基于Netty的IM生成自簽名SSL/TLS證書

          [11] 微信技術分享:揭秘微信后臺安全特征數據倉庫的架構設計

          [12] 即時通訊初學者必知必會的20個網絡編程和通信安全知識點

          (本文已同步發布于:http://www.52im.net/thread-4792-1-1.html)



          作者:Jack Jiang (點擊作者姓名進入Github)
          出處:http://www.52im.net/space-uid-1.html
          交流:歡迎加入即時通訊開發交流群 215891622
          討論:http://www.52im.net/
          Jack Jiang同時是【原創Java Swing外觀工程BeautyEye】【輕量級移動端即時通訊框架MobileIMSDK】的作者,可前往下載交流。
          本博文 歡迎轉載,轉載請注明出處(也可前往 我的52im.net 找到我)。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          Jack Jiang的 Mail: jb2011@163.com, 聯系QQ: 413980957, 微信: hellojackjiang
          主站蜘蛛池模板: 安岳县| 开江县| 浦江县| 邹城市| 新兴县| 克山县| 柳州市| 伊春市| 南平市| 梁河县| 石屏县| 多伦县| 鄂托克前旗| 灵武市| 吐鲁番市| 大田县| 曲阜市| 嘉善县| 林州市| 巩义市| 西平县| 沙洋县| 调兵山市| 天峻县| 宁德市| 永宁县| 玉环县| 田东县| 大庆市| 龙州县| 皋兰县| 龙川县| 彭阳县| 星座| 东阳市| 洞头县| 黑河市| 鄂托克前旗| 新郑市| 玉环县| 胶州市|