大家都知道,在瀏覽器裏輸入一個web網址,瀏覽器會發送一個http請求,請求遠方服務器上的資源。瀏覽器發送的http包信息會經過多個路由器或者交換機才能到達遠方服務器。在網絡傳輸的過程中,如果有黑客入侵到路由器或者交換機(比如家裏的路由器被黑),估計經過這些路由器的網絡數據,很容易就被網絡抓包(特別是抓出http 頭部的信息裏的cookie信息,然後把cookie信息在寫入自己的瀏覽器冒充受害者,後果就不說了……)
關於怎樣用java進行加解密,推薦學習樑棟的《Java加密與解密的藝術》
https,可以理解爲socket+SSL+http(https是在SSL上的http,底層用了SSL,應用層協議還是http。SSL底層用的是socket,對socket傳輸的數據進行加解密)
SSL主要提供了以下幾個功能
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器
2)加密數據以防止數據中途被竊取
3)維護數據的完整性,確保數據在傳輸過程中不被改變。
在SSL中,主要是用非對稱算法交換對稱密鑰,後續的通信過程都是用對稱密鑰和對稱算法進行加解密(對稱算法的加解碼耗時,比非對稱算法低很多;但是非對稱算法的破解可能性比對稱算法低很多。)
非對稱算法有以下幾個特性:
公鑰加密,只能用私鑰解密;私鑰加密,只能用公鑰解密
SSL通信大概過程(很簡陋的單向驗證)
首先客戶端發送自己的SSL版本號,支持的算法,隨機數等發給服務端
服務端收到請求後,發送自己的證書(帶有公鑰),支持的算法等信息給客戶端
客戶端驗證服務端發過來的證書(比如證書的合法性,或者到第三方驗證機構驗證其合法性,證書裏的域名是否和訪問的域名相同,是否過期等)
客戶端生成一個“對稱密鑰”,然後用服務端證書裏的公鑰對其加密(注意公鑰加密只能私鑰解密,而私鑰在服務端),並把加密算法等信息也發給服務端
服務端收到客戶端用公鑰加密的“對稱密鑰”進行解密
客戶端和服務端通信將使用協商的“對稱密鑰”和對稱算法進行加解密。
發表評論
- 瀏覽: 8830 次
- 性別:
- 來自: 成都
參考知識庫