1、前言
本文深入分析了即時通信(IM)系統中所面臨的各種安全問題,綜合利用對稱加密算法(DES算法)、公開密鑰算法(RSA算法)和Hash算法(MD5)的優點,探討組合加密算法在即時通信中的應用。
技術交流:
2、IM安全系列文章
本文是IM通訊安全知識系列文章中的第2篇,總目錄如下:
《即時通訊安全篇(一):正確地理解和使用Android端加密算法》
《即時通訊安全篇(二):探討組合加密算法在IM中的應用》(本文)
《即時通訊安全篇(三):常用加解密算法與通訊安全講解》
《即時通訊安全篇(四):實例分析Android中密鑰硬編碼的風險》
《即時通訊安全篇(五):對稱加密技術在Android上的應用實踐》
《即時通訊安全篇(六):非對稱加密技術的原理與應用實踐》
《即時通訊安全篇(七):用JWT技術解決IM系統Socket長連接的身份認證痛點》
《即時通訊安全篇(八):如果這樣來理解HTTPS原理,一篇就夠了》
《即時通訊安全篇(九):你知道,HTTPS用的是對稱加密還是非對稱加密?》
《即時通訊安全篇(十):為什么要用HTTPS?深入淺出,探密短連接的安全性》
《即時通訊安全篇(十一):IM聊天系統安全手段之通信連接層加密技術》
《即時通訊安全篇(十二):IM聊天系統安全手段之傳輸內容端到端加密技術》
《即時通訊安全篇(十三):信創必學,一文讀懂什么是國密算法》
《即時通訊安全篇(十四):網絡端口的安全防護技術實踐》
《即時通訊安全篇(十五):詳解硬編碼密碼的泄漏風險及其掃描原理和工具》
3、即時通信應用所面臨的安全問題
即時通信系統大都采用C/S、B/S、P2P等技術來實現即時通信的功能,軟件編制沒有統一的標準,使得IM系統本身存有多種安全漏洞,加上用戶缺乏安全意識,導致在使用即時通信系統時出現各種安全問題。
3.1 信息竊取問題
目前的IM系統在交換信息或傳輸文件時僅僅采用了弱加密甚至不加密的方式,攻擊者利用此缺陷監聽、竊取重要數據,這種泄密可能性給企業或個人造成不可估量的損失,尤其是對一些特殊行業,如金融和證券等行業,將會構成巨大的商業安全威脅,這種攻擊的類型是對信息機密性的攻擊。
3.2 信息篡改問題
信息篡改又稱中間人攻擊,是攻擊者試圖在IM系統信息交互過程中,通過監聽、竊取正常的信息流,對信息進行修改后再發往信息接收方。只要信息存在,就可能出現這種攻擊,它還可能攻擊傳輸中的信息,這種攻擊的類型是對信息完整性的攻擊。
3.3 信息偽造問題
在現有的IM系統中,接收方一般只根據發送方的ID或發送過來的簡單信息進行確認,這樣就給攻擊者提供了機會。攻擊者通過令人誤導的昵稱或者迷惑性的語言,騙取對方的信任,從而套取信息、詐騙或達到其他不良目的。這種攻擊的類型是對信息真實性的攻擊。
3.4 其他問題
由于IM系統的文件傳輸采取了P2P模式,它可以將文件作為附件通過點對點方式傳送,而繞過網絡周邊安全防御設備。由于點對點隧道直接傳至桌面計算機,因此受感染的文件借即時通信系統就能繞過防病毒網關的掃描,各種病毒如蠕蟲、特洛伊木馬等可以借此輕松地進入網絡,很多被病毒感染的文件則可能利用即時通信系統進行傳播。
攻擊者也可以用緩沖區溢出、拒絕服務等攻擊方式,通過IM系統的安全漏洞對整個網絡系統進行攻擊或傳播病毒。
4、主流的加密算法介紹
4.1 對稱加密:DES算法
DES即數據加密標準,這種加密算法是由IBM研究提出來的, 是一種分組密碼,它用于對64比特的數據進行加密和解密。DES算法所用的密鑰也是64比特,但由于其中包含了8個比特的奇偶校驗位,因而實際的密鑰長度是56比特。DES算法多次組合替代算法和換位算法,利用分散和錯亂的相互作用,把明文編制成密碼強度很高的密文。DES算法的加密和解密的流程是完全相同的,區別僅僅是加密與解密使用子密鑰序列的順序正好相反n1。DES算法屬于對稱加密算法,即加密和解密共享同一個密鑰,主要用于解決數據機密性問題。
4.2 公開密鑰算法:RSA算法
RSA算法作為惟一被廣泛接受并實現的通用公共密鑰加密方法,是眾多闡述非對稱密碼體制的算法中最具代表性的,幾乎成了公開密鑰密碼學的同義詞。它是麻省理工大學的Rivest,Shamir和Adleman(RSA算法即為三人名字的縮寫)于1977年研制并于1978年首次發表的一種算法。該算法的數學基礎是數論的歐拉定理,它的安全性依賴于大數的因子分解的困難性,該算法至今仍沒有發現嚴重的安全漏洞。RSA使用兩個密鑰,一個是公鑰(PubHc Key),另一個是私鑰(Private Key)加密時把明文分戍塊,塊的大小可變,但不超過密鑰的長度。RSA把明文塊轉化為與密鑰長度相同的密文。其算法如下:
首先選擇兩個相異大質數p、q,計算n=pq,取小于n的數e與(p-l)(q-l)互質。根據給定的e,再選擇d滿足ed除以z的模余數是1(即滿足ed mod (p-l)(q-l)=1),根據歐幾里得算法(a=bn+c,則a與b的最大公因子就等于b與c的最大公因子),這樣的d-定可以找到。這樣數對(n,e)為公鑰,數對(n,d)為私鑰在編碼時,假設資料為A,將其分戍等長數據N塊,每塊為nKn。計算C=llle mod n,則c就是編碼后的資料。至于解碼,取III=Cd mod n。黑客攻擊時怨得到e,這樣就必須對n進行因式分解,選擇足夠大的質數p、q便能阻止分解因式。
對于p、q的選擇,一般來說是足夠大的素數,對于大數,并沒有一個確定的界限,因為隨著計算機技術的發展,破解能力正在逐步增強(根據摩爾定理計算能力18個月就翻一番)。RSA實驗室的建議是,安全性要求相對較低時,p和q的乘積達到768位;安全性要求相對較高時,乘積達到1024位以上。
RSA算法還可以用于“數字簽名”,即用私鑰進行加密,公鑰來解密。
4.3 Hash算法:MD5算法
MD5算法并不是加密算法,但卻能形成信息的數字“指紋”,主要用途是確保數據沒有被篡改或變化過,以保證數據的完整性。MD5算法有三個特性:
- 1)能處理任意大小的信息,并生成固定長度128位的信息摘要;
- 2)具有不可預見性,信息摘要的大小與原始信息的大小沒有任何聯系,原信息的每一個微小變化都會對信息摘要產生很大的影響;
- 3)具有不可逆性,沒有辦法通過信息摘要直接恢復原信息。
5、應用探討:組合加密算法實現即時通信系統的認證模型
本文綜合利用以上算法的優點,在IM系統中建立以下消息發送模型,以解決IM系統所面臨的信息竊取、篡改、偽造等安全問題。模型中用戶A和B為IM系統的客戶端,用戶A和B之間彼此擁有對方的公鑰或數字證書,A向B發送消息,其全過程如圖1所示。

對于IM系統中蠕蟲病毒感染安全問題的處理,通過以下模型進行處理,如圖2所示。
6、應用探討:組合加密算法實現即時通信系統的通信模型
按照以上加密認證模型,建立如圖3所示的安全即時通信系統的實現模型,該模型包含兩個層次的認證,一是服務器與客戶機之間的雙向認證,二是客戶機與客戶機之間的雙向認證,即在兩端連接發送數據之前,必須協商并交換密鑰信息。服務器作為自簽署證書的CA認證中心,認證的所采用的密碼技術極為公開密密鑰技術。
模型中的公開密鑰技術充當了加密共享密鑰和數字簽名的作用,以解決服務器與客戶機、客戶機與客戶機之間的身份鑒別和客戶機之間進行數據通信的密鑰傳輸問題。在Java密碼術體系結構中,密鑰生成和操作可以使用keytool程序來執行。
7、應用探討:組合加密算法應用模型的安全性及效率分析
在以上模型中,利用對稱加密算法處理消息、文件的加密,以解決信息、文件傳送的機密性問題,具有加密速度快的特點;用公開密鑰算法的加密技術解決了對稱密鑰在網絡中明文傳輸問題;用Hash算法計算出摘要,再通過公開密鑰算法的數字簽名技術對摘要進行簽名,既提高了效率,又保證了信息文件傳輸的鑒別和不可否認性;在文件處理過程中,通過病毒掃面和組合加密雙重處理,減少了網絡中文件傳輸病毒蠕蟲感染的幾率。
更多有關IM安全和架構資料
[1] 傳輸層安全協議SSL/TLS的Java平臺實現簡介和Demo演示》
[2] 理論聯系實際:一套典型的IM通信協議設計詳解(含安全層設計)》
[3] 微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解》
[4] 來自阿里OpenIM:打造安全可靠即時通訊服務的技術實踐分享》
[5] 簡述實時音視頻聊天中端到端加密(E2EE)的工作原理》
[6] 移動端安全通信的利器——端到端加密(E2EE)技術詳解》
[7] Web端即時通訊安全:跨站點WebSocket劫持漏洞詳解(含示例代碼)》
[8] 通俗易懂:一篇掌握即時通訊的消息傳輸安全原理》
[9] IM開發基礎知識補課(四):正確理解HTTP短連接中的Cookie、Session和Token》
[10] 快速讀懂量子通信、量子加密技術》
[11] 即時通訊安全篇(七):如果這樣來理解HTTPS原理,一篇就夠了》
[12] 一分鐘理解 HTTPS 到底解決了什么問題》
[13] 一篇讀懂HTTPS:加密原理、安全邏輯、數字證書等》
[14] 基于Netty的IM聊天加密技術學習:一文理清常見的加密概念、術語等
[15] 手把手教你為基于Netty的IM生成自簽名SSL/TLS證書
[16] 微信技術分享:揭秘微信后臺安全特征數據倉庫的架構設計
[17] 零基礎IM開發入門(二):什么是IM系統的實時性?
[18] 零基礎IM開發入門(三):什么是IM系統的可靠性?
[19] 零基礎IM開發入門(四):什么是IM系統的消息時序一致性?
[20] 新手入門一篇就夠:從零開發移動端IM
[21] 轉轉平臺IM系統架構設計與實踐(一):整體架構設計
[22] 基于實踐:一套百萬消息量小規模IM系統技術要點總結
[23] 一套億級用戶的IM架構技術干貨(上篇):整體架構、服務拆分等
[24] 一套億級用戶的IM架構技術干貨(下篇):可靠性、有序性、弱網優化等
[25] 一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)
[26] 一套原創分布式即時通訊(IM)系統理論架構方案
(本文已同步發布于:http://www.52im.net/thread-217-1-1.html)