天天看點

Java網絡程式設計——網絡通信安全與加密    網絡通信安全與加密

    網絡通信安全與加密

       在網絡資料傳輸時,傳輸雙方的資料可能會被第三方非法監聽擷取。是以,在真實網絡環境中,通常會使用一些加密技術對網絡資料進行保護。加密技術一般使用SSL加密和TLS加密。這兩種加密是基于TCP/IP協定的,IP協定在網絡層,TCP協定在傳輸層,SSL和TLS在安全套接字層,應用層是一些HTTP、Telnet、FTP之類的面向使用者的協定。

       SSL除了對資料進行加密外,還采用了身份認證機制,也就是安全證書認證。安全證書可以從權威機構購買,也可以自己建立自我簽名證書。不過,自己建立的自我簽名證書隻有自己通過認證,不具有權威性。        SSL通過握手來确認如何對網絡資料進行加密和解密。SSL通過公鑰/私鑰來加解密資料,公鑰加密的資料隻能用私鑰來解密,私鑰加密的資料也隻能用公鑰來解密。首先A方會把公鑰發給B方,B方把資料用公鑰加密,再發給A方, 這時,A方就可以用密鑰來解密了,在資料傳輸過程中,就算資料被意外截取了,不法分子也無法得知加密資料的原資料,因為隻有A方的私鑰可以解密,這樣就保證了資料在網絡傳輸過程中的安全。SSL握手主要是為了确認加密參數、協商使用的加密套件,确定使用的算法等資訊。      首先用戶端會将自己的SSL版本号、加密參數與會話相關資料等發送給伺服器,伺服器也把一些相關參數發送給用戶端,如果伺服器還需要其他安全認證的話,伺服器還會向用戶端提出安全認證請求。用戶端驗證伺服器的證書,如果驗證失敗,則SSL握手失敗,如果成功,則生成 本次會話的預備主密碼,并用伺服器提供的公鑰進行加密發送給伺服器。伺服器通過某些算法用預備主密碼生成本次本次會話的主密碼,用戶端與伺服器均使用此主密碼生成本次會話的會話密鑰,這個會話密鑰是對稱的,用戶端通知伺服器此後發送消息都使用這個會話密鑰程序加密 ,告知伺服器SSL握手未完成,伺服器也通知用戶端此後發送消息都使用這個會話密鑰進行加密,并告知用戶端SSL握手完成。

繼續閱讀