1、初級階段:信息裸傳算法
2、進階階段:傳輸密文安全
服務端和客戶端先約定好加密算法,加密密鑰。網絡
3、中級階段:服務端爲每一個用戶生成密鑰加密
客戶端和服務端提早約定好加密算法,在傳遞消息前,先協商密鑰內存
4、再進階階段:客戶端肯定密鑰,密鑰再也不傳輸get
使用「具有用戶特性的東西」做爲加密密鑰,例如:用戶密碼的散列值,無需在網絡傳輸。class
5、高級階段:一次一密,密鑰協商進階
特色:每次通訊前,進行密鑰協商,一次一密請求
在客戶端發起安全信道創建請求後:密碼
-
服務端隨機生成公私鑰對(公鑰pk1,私鑰pk2),並將公鑰pk1傳給客戶端
(注意:此時黑客能截獲pk1)
-
客戶端隨機生成公私鑰對(公鑰pk11,私鑰pk22),並將公鑰pk22,經過pk1加密,傳給服務端
(注意:此時黑客能截獲密文,也知道是經過pk1加密的,但因爲黑客不知道私鑰pk2,是沒法解密的)
服務端收到密文,用私鑰pk2解密,獲得pk11
-
服務端隨機生成對稱加密密鑰key=X,用pk11加密,傳給客戶端
(注意:同理,黑客由密文沒法解密出key)
客戶端收到密文,用私鑰pk22解密,可到key=X
至此,安全信道創建完畢,後續通信用key=X加密,以保證信息的安全性
黑客定理一:網絡上傳遞的數據是不安全的,屬於黑客公共場所,能被截取
黑客定理二:客戶端的代碼是不安全的,屬於黑客本地範疇,能被逆向工程,任何客戶端與服務端提早約定好的算法與密鑰都是不安全的
黑客定理三:用戶客戶端內存是安全的,屬於黑客遠端範疇,不能被破解
對於不一樣加密方法明:
-
明文消息傳遞如同裸奔,不安全
-
客戶端和服務端提早約定加密算法和密鑰,不安全(好多公司都是這麼實現的=_=)
-
服務端隨機生成密鑰,發送給客戶端,不安全
-
一人一密,客戶端使用「具有用戶特性的東西」做爲加密密鑰,弱安全
-
一次一密,三次握手創建安全信道,安全
-