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