Jack Jiang

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

          1、前言

          本文深入分析了即時(shí)通信(IM)系統(tǒng)中所面臨的各種安全問(wèn)題,綜合利用對(duì)稱加密算法(DES算法)、公開(kāi)密鑰算法(RSA算法)和Hash算法(MD5)的優(yōu)點(diǎn),探討組合加密算法在即時(shí)通信中的應(yīng)用。

          技術(shù)交流:

          2、IM安全系列文章

          本文是IM通訊安全知識(shí)系列文章中的第2篇,總目錄如下:

          即時(shí)通訊安全篇(一):正確地理解和使用Android端加密算法

          即時(shí)通訊安全篇(二):探討組合加密算法在IM中的應(yīng)用》(本文

          即時(shí)通訊安全篇(三):常用加解密算法與通訊安全講解

          即時(shí)通訊安全篇(四):實(shí)例分析Android中密鑰硬編碼的風(fēng)險(xiǎn)

          即時(shí)通訊安全篇(五):對(duì)稱加密技術(shù)在Android上的應(yīng)用實(shí)踐

          即時(shí)通訊安全篇(六):非對(duì)稱加密技術(shù)的原理與應(yīng)用實(shí)踐

          即時(shí)通訊安全篇(七):用JWT技術(shù)解決IM系統(tǒng)Socket長(zhǎng)連接的身份認(rèn)證痛點(diǎn)

          即時(shí)通訊安全篇(八):如果這樣來(lái)理解HTTPS原理,一篇就夠了

          即時(shí)通訊安全篇(九):你知道,HTTPS用的是對(duì)稱加密還是非對(duì)稱加密?

          即時(shí)通訊安全篇(十):為什么要用HTTPS?深入淺出,探密短連接的安全性

          即時(shí)通訊安全篇(十一):IM聊天系統(tǒng)安全手段之通信連接層加密技術(shù)

          即時(shí)通訊安全篇(十二):IM聊天系統(tǒng)安全手段之傳輸內(nèi)容端到端加密技術(shù)

          即時(shí)通訊安全篇(十三):信創(chuàng)必學(xué),一文讀懂什么是國(guó)密算法

          即時(shí)通訊安全篇(十四):網(wǎng)絡(luò)端口的安全防護(hù)技術(shù)實(shí)踐

          即時(shí)通訊安全篇(十五):詳解硬編碼密碼的泄漏風(fēng)險(xiǎn)及其掃描原理和工具

          3、即時(shí)通信應(yīng)用所面臨的安全問(wèn)題

          即時(shí)通信系統(tǒng)大都采用C/S、B/S、P2P等技術(shù)來(lái)實(shí)現(xiàn)即時(shí)通信的功能,軟件編制沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),使得IM系統(tǒng)本身存有多種安全漏洞,加上用戶缺乏安全意識(shí),導(dǎo)致在使用即時(shí)通信系統(tǒng)時(shí)出現(xiàn)各種安全問(wèn)題。

          3.1 信息竊取問(wèn)題

          目前的IM系統(tǒng)在交換信息或傳輸文件時(shí)僅僅采用了弱加密甚至不加密的方式,攻擊者利用此缺陷監(jiān)聽(tīng)、竊取重要數(shù)據(jù),這種泄密可能性給企業(yè)或個(gè)人造成不可估量的損失,尤其是對(duì)一些特殊行業(yè),如金融和證券等行業(yè),將會(huì)構(gòu)成巨大的商業(yè)安全威脅,這種攻擊的類(lèi)型是對(duì)信息機(jī)密性的攻擊。

          3.2 信息篡改問(wèn)題

          信息篡改又稱中間人攻擊,是攻擊者試圖在IM系統(tǒng)信息交互過(guò)程中,通過(guò)監(jiān)聽(tīng)、竊取正常的信息流,對(duì)信息進(jìn)行修改后再發(fā)往信息接收方。只要信息存在,就可能出現(xiàn)這種攻擊,它還可能攻擊傳輸中的信息,這種攻擊的類(lèi)型是對(duì)信息完整性的攻擊。

          3.3 信息偽造問(wèn)題

          在現(xiàn)有的IM系統(tǒng)中,接收方一般只根據(jù)發(fā)送方的ID或發(fā)送過(guò)來(lái)的簡(jiǎn)單信息進(jìn)行確認(rèn),這樣就給攻擊者提供了機(jī)會(huì)。攻擊者通過(guò)令人誤導(dǎo)的昵稱或者迷惑性的語(yǔ)言,騙取對(duì)方的信任,從而套取信息、詐騙或達(dá)到其他不良目的。這種攻擊的類(lèi)型是對(duì)信息真實(shí)性的攻擊。

          3.4 其他問(wèn)題

          由于IM系統(tǒng)的文件傳輸采取了P2P模式,它可以將文件作為附件通過(guò)點(diǎn)對(duì)點(diǎn)方式傳送,而繞過(guò)網(wǎng)絡(luò)周邊安全防御設(shè)備。由于點(diǎn)對(duì)點(diǎn)隧道直接傳至桌面計(jì)算機(jī),因此受感染的文件借即時(shí)通信系統(tǒng)就能繞過(guò)防病毒網(wǎng)關(guān)的掃描,各種病毒如蠕蟲(chóng)、特洛伊木馬等可以借此輕松地進(jìn)入網(wǎng)絡(luò),很多被病毒感染的文件則可能利用即時(shí)通信系統(tǒng)進(jìn)行傳播。

          攻擊者也可以用緩沖區(qū)溢出、拒絕服務(wù)等攻擊方式,通過(guò)IM系統(tǒng)的安全漏洞對(duì)整個(gè)網(wǎng)絡(luò)系統(tǒng)進(jìn)行攻擊或傳播病毒。

          4、主流的加密算法介紹

          4.1 對(duì)稱加密:DES算法

          DES即數(shù)據(jù)加密標(biāo)準(zhǔn),這種加密算法是由IBM研究提出來(lái)的, 是一種分組密碼,它用于對(duì)64比特的數(shù)據(jù)進(jìn)行加密和解密。DES算法所用的密鑰也是64比特,但由于其中包含了8個(gè)比特的奇偶校驗(yàn)位,因而實(shí)際的密鑰長(zhǎng)度是56比特。DES算法多次組合替代算法和換位算法,利用分散和錯(cuò)亂的相互作用,把明文編制成密碼強(qiáng)度很高的密文。DES算法的加密和解密的流程是完全相同的,區(qū)別僅僅是加密與解密使用子密鑰序列的順序正好相反n1。DES算法屬于對(duì)稱加密算法,即加密和解密共享同一個(gè)密鑰,主要用于解決數(shù)據(jù)機(jī)密性問(wèn)題。

          4.2 公開(kāi)密鑰算法:RSA算法

          RSA算法作為惟一被廣泛接受并實(shí)現(xiàn)的通用公共密鑰加密方法,是眾多闡述非對(duì)稱密碼體制的算法中最具代表性的,幾乎成了公開(kāi)密鑰密碼學(xué)的同義詞。它是麻省理工大學(xué)的Rivest,Shamir和Adleman(RSA算法即為三人名字的縮寫(xiě))于1977年研制并于1978年首次發(fā)表的一種算法。該算法的數(shù)學(xué)基礎(chǔ)是數(shù)論的歐拉定理,它的安全性依賴于大數(shù)的因子分解的困難性,該算法至今仍沒(méi)有發(fā)現(xiàn)嚴(yán)重的安全漏洞。RSA使用兩個(gè)密鑰,一個(gè)是公鑰(PubHc Key),另一個(gè)是私鑰(Private Key)加密時(shí)把明文分戍塊,塊的大小可變,但不超過(guò)密鑰的長(zhǎng)度。RSA把明文塊轉(zhuǎn)化為與密鑰長(zhǎng)度相同的密文。其算法如下:

          首先選擇兩個(gè)相異大質(zhì)數(shù)p、q,計(jì)算n=pq,取小于n的數(shù)e與(p-l)(q-l)互質(zhì)。根據(jù)給定的e,再選擇d滿足ed除以z的模余數(shù)是1(即滿足ed mod (p-l)(q-l)=1),根據(jù)歐幾里得算法(a=bn+c,則a與b的最大公因子就等于b與c的最大公因子),這樣的d-定可以找到。這樣數(shù)對(duì)(n,e)為公鑰,數(shù)對(duì)(n,d)為私鑰在編碼時(shí),假設(shè)資料為A,將其分戍等長(zhǎng)數(shù)據(jù)N塊,每塊為nKn。計(jì)算C=llle mod n,則c就是編碼后的資料。至于解碼,取III=Cd mod n。黑客攻擊時(shí)怨得到e,這樣就必須對(duì)n進(jìn)行因式分解,選擇足夠大的質(zhì)數(shù)p、q便能阻止分解因式。

          對(duì)于p、q的選擇,一般來(lái)說(shuō)是足夠大的素?cái)?shù),對(duì)于大數(shù),并沒(méi)有一個(gè)確定的界限,因?yàn)殡S著計(jì)算機(jī)技術(shù)的發(fā)展,破解能力正在逐步增強(qiáng)(根據(jù)摩爾定理計(jì)算能力18個(gè)月就翻一番)。RSA實(shí)驗(yàn)室的建議是,安全性要求相對(duì)較低時(shí),p和q的乘積達(dá)到768位;安全性要求相對(duì)較高時(shí),乘積達(dá)到1024位以上。

          RSA算法還可以用于“數(shù)字簽名”,即用私鑰進(jìn)行加密,公鑰來(lái)解密。

          4.3 Hash算法:MD5算法

          MD5算法并不是加密算法,但卻能形成信息的數(shù)字“指紋”,主要用途是確保數(shù)據(jù)沒(méi)有被篡改或變化過(guò),以保證數(shù)據(jù)的完整性。MD5算法有三個(gè)特性:

          • 1)能處理任意大小的信息,并生成固定長(zhǎng)度128位的信息摘要;
          • 2)具有不可預(yù)見(jiàn)性,信息摘要的大小與原始信息的大小沒(méi)有任何聯(lián)系,原信息的每一個(gè)微小變化都會(huì)對(duì)信息摘要產(chǎn)生很大的影響;
          • 3)具有不可逆性,沒(méi)有辦法通過(guò)信息摘要直接恢復(fù)原信息。

          5、應(yīng)用探討:組合加密算法實(shí)現(xiàn)即時(shí)通信系統(tǒng)的認(rèn)證模型

          本文綜合利用以上算法的優(yōu)點(diǎn),在IM系統(tǒng)中建立以下消息發(fā)送模型,以解決IM系統(tǒng)所面臨的信息竊取、篡改、偽造等安全問(wèn)題。模型中用戶A和B為IM系統(tǒng)的客戶端,用戶A和B之間彼此擁有對(duì)方的公鑰或數(shù)字證書(shū),A向B發(fā)送消息,其全過(guò)程如圖1所示。

          對(duì)于IM系統(tǒng)中蠕蟲(chóng)病毒感染安全問(wèn)題的處理,通過(guò)以下模型進(jìn)行處理,如圖2所示。

          6、應(yīng)用探討:組合加密算法實(shí)現(xiàn)即時(shí)通信系統(tǒng)的通信模型

          按照以上加密認(rèn)證模型,建立如圖3所示的安全即時(shí)通信系統(tǒng)的實(shí)現(xiàn)模型,該模型包含兩個(gè)層次的認(rèn)證,一是服務(wù)器與客戶機(jī)之間的雙向認(rèn)證,二是客戶機(jī)與客戶機(jī)之間的雙向認(rèn)證,即在兩端連接發(fā)送數(shù)據(jù)之前,必須協(xié)商并交換密鑰信息。服務(wù)器作為自簽署證書(shū)的CA認(rèn)證中心,認(rèn)證的所采用的密碼技術(shù)極為公開(kāi)密密鑰技術(shù)。

          模型中的公開(kāi)密鑰技術(shù)充當(dāng)了加密共享密鑰和數(shù)字簽名的作用,以解決服務(wù)器與客戶機(jī)、客戶機(jī)與客戶機(jī)之間的身份鑒別和客戶機(jī)之間進(jìn)行數(shù)據(jù)通信的密鑰傳輸問(wèn)題。在Java密碼術(shù)體系結(jié)構(gòu)中,密鑰生成和操作可以使用keytool程序來(lái)執(zhí)行。

          7、應(yīng)用探討:組合加密算法應(yīng)用模型的安全性及效率分析

          在以上模型中,利用對(duì)稱加密算法處理消息、文件的加密,以解決信息、文件傳送的機(jī)密性問(wèn)題,具有加密速度快的特點(diǎn);用公開(kāi)密鑰算法的加密技術(shù)解決了對(duì)稱密鑰在網(wǎng)絡(luò)中明文傳輸問(wèn)題;用Hash算法計(jì)算出摘要,再通過(guò)公開(kāi)密鑰算法的數(shù)字簽名技術(shù)對(duì)摘要進(jìn)行簽名,既提高了效率,又保證了信息文件傳輸?shù)蔫b別和不可否認(rèn)性;在文件處理過(guò)程中,通過(guò)病毒掃面和組合加密雙重處理,減少了網(wǎng)絡(luò)中文件傳輸病毒蠕蟲(chóng)感染的幾率。

          更多有關(guān)IM安全和架構(gòu)資料

          [1] 傳輸層安全協(xié)議SSL/TLS的Java平臺(tái)實(shí)現(xiàn)簡(jiǎn)介和Demo演示

          [2] 理論聯(lián)系實(shí)際:一套典型的IM通信協(xié)議設(shè)計(jì)詳解(含安全層設(shè)計(jì))

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

          [4] 來(lái)自阿里OpenIM:打造安全可靠即時(shí)通訊服務(wù)的技術(shù)實(shí)踐分享

          [5] 簡(jiǎn)述實(shí)時(shí)音視頻聊天中端到端加密(E2EE)的工作原理

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

          [7] Web端即時(shí)通訊安全:跨站點(diǎn)WebSocket劫持漏洞詳解(含示例代碼)

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

          [9] IM開(kāi)發(fā)基礎(chǔ)知識(shí)補(bǔ)課(四):正確理解HTTP短連接中的Cookie、Session和Token

          [10] 快速讀懂量子通信、量子加密技術(shù)

          [11] 即時(shí)通訊安全篇(七):如果這樣來(lái)理解HTTPS原理,一篇就夠了

          [12] 一分鐘理解 HTTPS 到底解決了什么問(wèn)題

          [13] 一篇讀懂HTTPS:加密原理、安全邏輯、數(shù)字證書(shū)等

          [14] 基于Netty的IM聊天加密技術(shù)學(xué)習(xí):一文理清常見(jiàn)的加密概念、術(shù)語(yǔ)等

          [15] 手把手教你為基于Netty的IM生成自簽名SSL/TLS證書(shū)

          [16] 微信技術(shù)分享:揭秘微信后臺(tái)安全特征數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)設(shè)計(jì)

          [17] 零基礎(chǔ)IM開(kāi)發(fā)入門(mén)(二):什么是IM系統(tǒng)的實(shí)時(shí)性?

          [18] 零基礎(chǔ)IM開(kāi)發(fā)入門(mén)(三):什么是IM系統(tǒng)的可靠性?

          [19] 零基礎(chǔ)IM開(kāi)發(fā)入門(mén)(四):什么是IM系統(tǒng)的消息時(shí)序一致性?

          [20] 新手入門(mén)一篇就夠:從零開(kāi)發(fā)移動(dòng)端IM

          [21] 轉(zhuǎn)轉(zhuǎn)平臺(tái)IM系統(tǒng)架構(gòu)設(shè)計(jì)與實(shí)踐(一):整體架構(gòu)設(shè)計(jì)

          [22] 基于實(shí)踐:一套百萬(wàn)消息量小規(guī)模IM系統(tǒng)技術(shù)要點(diǎn)總結(jié)

          [23] 一套億級(jí)用戶的IM架構(gòu)技術(shù)干貨(上篇):整體架構(gòu)、服務(wù)拆分等

          [24] 一套億級(jí)用戶的IM架構(gòu)技術(shù)干貨(下篇):可靠性、有序性、弱網(wǎng)優(yōu)化等

          [25] 一套海量在線用戶的移動(dòng)端IM架構(gòu)設(shè)計(jì)實(shí)踐分享(含詳細(xì)圖文)

          [26] 一套原創(chuàng)分布式即時(shí)通訊(IM)系統(tǒng)理論架構(gòu)方案

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



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


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          Jack Jiang的 Mail: jb2011@163.com, 聯(lián)系QQ: 413980957, 微信: hellojackjiang
          主站蜘蛛池模板: 新竹市| 高密市| 秦皇岛市| 阳城县| 闽侯县| 长岭县| 金阳县| 牡丹江市| 株洲市| 东乡族自治县| 稻城县| 自治县| 西林县| 日土县| 南开区| 彰化县| 庄浪县| 舒兰市| 松溪县| 涿州市| 前郭尔| 焉耆| 安泽县| 碌曲县| 灵宝市| 图们市| 子洲县| 修水县| 同仁县| 桑植县| 藁城市| 罗甸县| 夏邑县| 措勤县| 左权县| 青阳县| 荥阳市| 岳西县| 南汇区| 莲花县| 广德县|