即時(shí)通訊加密方案探討

即時(shí)通訊加密方案探討

1.背景:

因?yàn)榛ヂ?lián)網(wǎng)是開(kāi)發(fā)透明的,任何人都可能對(duì)你的產(chǎn)品進(jìn)行破解研究,因此,在軟件的有良好的安全意識(shí)是十分必要的。

2.安全問(wèn)題分析:

2.1 客戶端方面:

  1. 客戶端被反編譯源碼,常見(jiàn)如: android apk被反編譯,獲取加密算法與密鑰,從而進(jìn)行破解,類(lèi)似的還要使用JavaScript技術(shù)跨平臺(tái)的移動(dòng)開(kāi)發(fā)框架等,若開(kāi)發(fā)者不注意,很容易被逆向破解。

2.2 網(wǎng)絡(luò)傳輸方面:

一般而言,API在網(wǎng)絡(luò)中經(jīng)http/https協(xié)議傳輸,有可能被黑客截取,修改數(shù)據(jù)包內(nèi)容,偽造通訊數(shù)據(jù)獲取重要信息。如手機(jī)連接到非法免費(fèi)的wifi上,有可能安裝了嗅包軟件,并進(jìn)行中間人攻擊。以下是https中間人攻擊的一個(gè)例子


image.png

3. 應(yīng)對(duì)方法

3.1 客戶端方面:

有些客戶端使用的框架避免反編譯是不可能的,常見(jiàn)anroid, 和使用javascript技術(shù)跨平臺(tái)開(kāi)發(fā)的框架如:reactnative, uniapp等。對(duì)于這種方案,最好把加/解密算法,密鑰放置在native程序或動(dòng)態(tài)庫(kù)中,并增加混淆,增加破解難度。

3.2 網(wǎng)絡(luò)傳輸方面:

  1. 不要使用http等明文通訊手段,使用https;
  2. 根據(jù)自己的業(yè)務(wù)場(chǎng)景使用合適的加密手段,常見(jiàn)有對(duì)稱(chēng)加密(3DES)與非對(duì)稱(chēng)加密(RSA)

3.2.1 對(duì)稱(chēng)加密(簡(jiǎn)單易用):

假設(shè)客戶端無(wú)法被破解,使用對(duì)稱(chēng)加密已能被避免中間人攻擊,該手段已用于各中大小廠商產(chǎn)品:

# 例子
客戶端對(duì)稱(chēng)加密(3DES)-->路由器(密文傳輸)--> 服務(wù)器(3DES解密)

3.2.2 非對(duì)稱(chēng)加密RSA+數(shù)字簽名:

image.png

參考某支付平臺(tái)(有改動(dòng)),使用上可以在通訊中可使用RSA非對(duì)稱(chēng)加密傳輸,并使用MD5(傳輸參數(shù)+鹽)對(duì)傳輸參數(shù)加密,防中間人篡改。可能某支付平臺(tái)考慮到調(diào)試的方便,就沒(méi)有對(duì)報(bào)文進(jìn)行加密了。

3.總結(jié):

采用加密會(huì)一定程度上加大研發(fā)投入與維護(hù)成本,具體需不需要就看業(yè)務(wù)需求了。E聊SDK提供了即時(shí)通訊加密方案的設(shè)計(jì),有興趣來(lái)探討。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容