首頁 >運維 >安全 >HTTPS怎麼保證安全? (詳解)

HTTPS怎麼保證安全? (詳解)

青灯夜游
青灯夜游原創
2020-06-17 10:59:282885瀏覽

這篇文章帶大家來了解HTTP存在的問題,介紹HTTPS是怎麼保證安全的。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

HTTPS怎麼保證安全? (詳解)

HTTP存在的問題

#1、竊聽風險:通訊使用明文(不加密),內容可能會被竊聽(第三方可能獲知通訊內容)

2、冒充風險:不驗證通訊方的身份,因此有可能遭遇偽裝

3、竄改風險:無法證明封包的完整性,所以有可能被竄改

HTTPS

HTTPS怎麼保證安全? (詳解)

可以看到HTTPS的網站,在瀏覽器的網址列內會出現一個鎖定的標記。

HTTPS並非是應用層一個新的協議,通常 HTTP 直接和 TCP 通信,HTTPS則先和安全層(SSL/TLS)通信,然後安全層再和 TCP 層通信。

HTTPS怎麼保證安全? (詳解)

SSL/TLS協定就是為了解決上面提到的HTTP存在的問題而生的,下面我們來看看它是怎麼解決的:

1、所有的資訊都是加密傳輸的,第三方無法竊聽

2、配備身分驗證,防止身分被冒充

3、具有校驗機制,一旦被篡改,通訊雙方會立刻發現

#加密

對稱加密

加密和解密同用一個秘鑰的方式稱為共享秘鑰加密,也被稱為對稱秘鑰加密。

HTTPS怎麼保證安全? (詳解)

  • 瀏覽器傳送給服務端client_random 和一系列加密方法

  • 服務端傳送給瀏覽器server_random和加密方法

#現有瀏覽器和伺服器有了三個相同的憑證:client_randomserver_random和加密方法
用加密方法把client_randomserver_random 兩個隨機數字混合起來,產生一個密碼,這個密鑰就是瀏覽器和服務端通訊的暗號。

存在的問題:第三方可以在中間取得到client_randomserver_random和加密方法,由於這個加密方法同時可以解密,所以中間人可以成功對暗號進行解密,拿到數據,很容易就將這種加密方式破解了。

非對稱加密

HTTPS怎麼保證安全? (詳解)

  • #瀏覽器傳送至服務端一系列加密方法

  • #服務端發送給瀏覽器加密方法以及公鑰

之後瀏覽器透過公鑰將資料加密傳輸給服務端,服務端收到數據使用私鑰進行解密。服務端給瀏覽器發送數據,則使用私鑰加密,瀏覽器收到服務端發送過來的數據,使用公鑰進行解密。

存在的問題:

  • 非對稱加密效率太低, 這會嚴重影響加解密的速度,進而影響使用者開啟頁面的速度。

  • 無法保證伺服器傳送給瀏覽器的資料安全性, 伺服器的資料只能用私鑰加密(因為如果它用公鑰那麼瀏覽器也沒法解密啦),中間人一旦拿到公鑰,那麼就可以對服務端傳來的資料進行解密了,就這樣又被破解了。

HTTPS使用對稱加密和非對稱加密結合

傳輸資料階段依然使用對稱加密,但是對稱加密的秘鑰我們採用非對稱加密傳輸。

HTTPS怎麼保證安全? (詳解)

  • 瀏覽器向伺服器傳送client_random和加密方法清單。

  • 伺服器接收到,回傳server_random、加密方法、公鑰。

  • 瀏覽器接收,接著產生另一個隨機數pre_master, 並且用公鑰加密,傳給伺服器。 (重點操作!)

  • 伺服器用私鑰解密這個被加密後的pre_master。

到此為止,伺服器和瀏覽器就有了相同的 client_randomserver_randompre_master, 然後伺服器和瀏覽器會使用這三組隨機數來產生對稱秘鑰。有了對稱秘鑰之後,雙方就可以使用對稱加密的方式來傳輸資料了。

CA (數位憑證)

使用對稱和非對稱混合的方式,實現了資料的加密傳輸。但是這種仍然存在一個問題,伺服器可能是被駭客冒充的。這樣,瀏覽器訪問的就是駭客的伺服器,駭客可以在自己的伺服器上實現公鑰和私鑰,而對瀏覽器來說,它並不完全知道現在訪問的是這個是駭客的網站。

伺服器需要證明自己的身份,需要使用權威機構頒發的證書,這個權威機構就是 CA(Certificate Authority), 頒發的證書就稱為數位證書 (Digital Certificate)。

對瀏覽器來說,數位憑證有兩個作用:

  • 透過數位憑證向瀏覽器證明伺服器的身分

  • 數位憑證裡麵包含了伺服器公鑰

下面我們來看一下含有數位憑證的HTTPS的請求流程

HTTPS怎麼保證安全? (詳解)

相對於不含數位憑證的HTTPS請求流程,主要以下兩點改變

  • #伺服器沒有直接傳回公鑰給瀏覽器,而是傳回了數字證書,而公鑰正是包含數位證書中的;

  • 在瀏覽器端多了一個證書驗證的操作,驗證了證書之後,才繼續後序流程。

參考

推薦教學:web伺服器安全性

#

以上是HTTPS怎麼保證安全? (詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn