Https加密
介紹
Http直接通過明文在瀏覽器和服務器之間傳遞消息,容易被監聽抓取到通信內容。
Https采用對稱加密和非對稱加密結合的方式來進行通信。
Https不是應用層的新協議,而是Http通信接口用SSL和TLS來加強加密和認證機制。
加密方式
對稱加密:加密和解密都是同一個密匙。
非對稱加密:密鑰成對出現,分為公鑰和私鑰,公鑰加密需要私鑰解密,私鑰加密需要公鑰解密。
兩者區別
對稱加密速度快,非對稱加密速度慢。
對稱加密要將密鑰暴露,和明文傳輸沒區別。
非對稱加密將公鑰暴露,供客戶端加密,服務端使用私鑰解密。
Https加密的選擇
對稱加密弊端
對稱加密速度快,適合Https加密算法,但是服務器和瀏覽器之間傳遞密鑰的過程被人監聽,相當明文傳輸。
非對稱加密弊端
服務端只將公鑰暴露,瀏覽器使用公鑰對消息進行非對稱加密,服務端用私鑰解密。但是服務端向瀏覽器回復的時候,只能用私鑰進行加密,瀏覽器只能用公鑰解密。但是:公鑰是所有人都知道的,所有人都可以讀取服務端回復的消息來進行解密,所以解決不了服務端向瀏覽器傳遞消息。
Https加密
對稱加密和非對稱加密結合方式
瀏覽器使用Https的URL訪問服務器,建立SSL鏈接。
服務器收到SSL鏈接,發送非對稱加密的公鑰A返回給瀏覽器
瀏覽器生成隨機數,作為對稱加密的密鑰B
瀏覽器使用公鑰A,對自己生成的密鑰B進行加密,得到密鑰C
瀏覽器將密鑰C,發送給服務器。
服務器用私鑰D對接受的密鑰C進行解密,得到對稱加密鑰B。
瀏覽器和服務器之間可以用密鑰B作為對稱加密密鑰進行通信。
總結
這樣瀏覽器和服務器就共享一個對稱加密密鑰B,重要的是不會被攔截到。只在傳輸密鑰B的時候進行了一次非對稱加密,之后就用對稱加密進行傳送數據。