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