隱私安全一直是大家關注的熱點,特別是在互聯(lián)網(wǎng)上,那么多大廠的數(shù)據(jù)安全是如何處理的呢?
本文將通過通俗易懂的文字,引導你一步步理解為何一個應用需要加密技術,以及需要何種方式的加密技術等,希望能為您的IM數(shù)據(jù)、或消息推送服務的設計提供一些參考
一: 信息裸傳
顧名思義:不做任何處理,直接明文傳遞,如下圖所示

信息裸傳
安全評估: 網(wǎng)絡上傳遞的數(shù)據(jù)是不安全的,屬于網(wǎng)絡黑客公共場所,能被截?。?br>
風險后果: 傳遞明文無異于不穿衣服裸奔;
改進方案: 先加密,再在網(wǎng)絡上傳輸。
二: 傳輸密文-對稱加密

約定秘鑰加解密
安全特點流程 :
1.服務端和客戶端先約定好加密算法,加密密鑰
2.客戶端,傳輸前用約定好的密鑰加密;
3.傳輸密文;
4.服務端,收到消息后用約定好的密鑰解密。
通信安全性總結如下:
1.安全評估:
客戶端的代碼是不安全的,屬于黑客本地范疇,能被逆向工程,任何客戶端與服務端提前約定好的算法
與密鑰都是不安全的;
2.導致后果:
任何客戶端的代碼混淆,二進制化都只能提高黑客的破解門檻,本質(zhì)是不安全的;
3.改進方案:
不能固定密鑰。
三: 中級通信安全:一人一密

一人一秘,服務器生成
從上圖可知
1. 客戶端和服務器協(xié)商好加密算法和加密秘鑰
2. 客戶端請求秘鑰
3. 服務器返回秘鑰
4. 用協(xié)商好的加密和秘鑰加密,傳遞消息
風險評估
1. 網(wǎng)絡傳遞秘鑰不安全,被截取了,白費了
2. 加密算法也很容易破解
3. 最終破解
改進方案: 協(xié)商的秘鑰不能在網(wǎng)上傳遞
四: 高級安全通信-客戶端生成秘鑰

一人一密.客戶端生成
分析一波:
1.使用特定加密參數(shù)作為key
2.每個人的秘鑰都不同
3.然后密鑰加密消息,傳輸密文;
4.服務端從db里獲取這個“key”,解密
安全分析
1.秘鑰存于客戶端內(nèi)存中.非常安全
2.特性的參數(shù)作為key,也是安全的,而且一人一密,及時破解,也無法破解其他人的
3.如果該特性的key泄漏了,這個就不安全了,現(xiàn)在誰也不能保證不會泄漏,所以還是具有一定的不安全性
不行,咱們還得改進改進
五: 究極安全通信: 一次一密、密鑰協(xié)商

一人一密
過程分析
1.服務端隨機生成公私鑰對(公鑰pk1,私鑰pk2),并將公鑰pk1傳給客戶端:
(注意:此時黑客能截獲pk1);
2.客戶端隨機生成公私鑰對(公鑰pk11,私鑰pk22),并將公鑰pk11,通過pk1加密,傳給服務端:
(注意:此時黑客能截獲密文,也知道是通過pk1加密的,但由于黑客不知道私鑰pk2,是無法解密的);
3.服務端收到密文,用私鑰pk2解密,得到pk11;
服務端隨機生成對稱加密密鑰key=X,用pk11加密,傳給客戶端:
(注意:同理,黑客由密文無法解密出key);
客戶端收到密文,用私鑰pk22解密,可到key=X。
最后加密是非常安全的了! 不足之處,希望各位大佬指點
本文小結:
零級安全:明文消息傳遞如同裸奔,不安全;
初始安全:客戶端和服務端提前約定加密算法和密鑰,不安全(好多公司都是這么實現(xiàn)的=_=);
中級安全:服務端隨機生成密鑰,發(fā)送給客戶端,不安全;
高級安全:一人一密,客戶端使用“具備用戶特性的東西”作為加密密鑰,弱安全;
終級安全:一次一密,三次握手建立安全信道,安全。
好文章需要傳遞,原文鏈接