網路協議基於分層架構構建了七層模型,是iso建立的用於計算機或者通訊系統之間的互聯的標準體系。下圖展示了其中的五層:
http被稱為超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,建立在應用層當中。主要用於從www伺服器傳輸超文字到本地瀏覽器,更加得高效。
由於http協議是明文傳輸,也不要求驗證主體,所以在傳輸過程很容易被獲取資料內容,這對於網際網路資料來說是很不安全的,因此,https就應運而生。
在了解https之前,需要對一些加密演算法有乙個概念:
我們使用金鑰a去加密一段資料內容,再使用金鑰b去解密這段資料內容,如果加密的金鑰a和解密的金鑰b是一樣的,那麼這就是對稱加密。如:aes、des加密演算法
非對稱加密則加密的金鑰a和解密的金鑰b不一樣,所以非對稱加密需要兩個金鑰,它們是成對存在的。通常稱用於加密和傳輸的金鑰為公鑰,用於解密的金鑰為私鑰,私鑰不在網路中傳輸。被公鑰加密的資料,必須使用對應的私鑰才能解密。如:數字簽名
hash演算法是一種簡單的單向演算法,通過hash演算法可以針對資料內容生成一段特定長度、唯一的hash值,但是hash值是不可逆的,經常用於不需要資料還原的完整性校驗上。如:md5、sha演算法
在上文中,我們了解了http是不安全的明文傳輸,那https是怎麼做到安全傳輸的呢?
其實https並不是應用層上的乙個新的通訊協議,它只是在http的基礎上加入了一層ssl或tls,如圖:
下面我們通過乙個思考過程來了解https是如何工作的:
既然http是不安全的協議,那麼我如果希望傳輸的資料是安全的要怎麼辦呢?我們能想到的最簡單的辦法就是對被傳輸的資料進行加密處理,當傳到伺服器以後進行資料解密。如圖:
這樣存在什麼問題呢?很顯然,如何有人在傳輸過程截獲了data和key,那麼他便可以進行解密,所以這樣簡單的解密過程並不能保證通訊安全。
我們看到,簡單的對稱加密是不能保證通訊安全的。並且,我們發現不安全的主要原因是在於key是可以被截獲並用來解密資料的。
根據這個問題點,我們考慮一下非對稱加密。非對稱加密中私鑰用來解密,公鑰用來加密和傳輸。那麼用來解密的私鑰就不會被截獲,或者截獲了公鑰卻並不能解密。這麼一看,似乎非對稱加密已經能夠解決通訊安全方面的問題了,如圖:
通過傳輸公鑰來加密,以及通過私鑰來解密達到了傳輸過程解決安全問題。但是非對稱加密演算法的效率是遠不及對稱演算法的,如果存在大量的資料傳輸,那麼非對稱加密為了安全性就需要付出很大的低效成本,這對於當前網際網路環境來說是不可接受的,那麼如何解決效率問題呢?
我們可以這麼思考,既然對稱加密高效,非對稱加密安全,那麼我們能否設計乙個流程同時利用這兩個特性呢?
基於這個想法,我們想資料data通過對稱加密,而需要用來解密資料的key通過非對稱加密。到服務端以後,先解密key,然後再通過key對稱解密大量資料的data,這樣既解決了安全性問題,又解決了大量資料傳輸效率的問題。如圖:
在上面這個思考過程中,我們從對稱加密的不安全到解決非對稱加密的效率,了解了https是如何實現安全通訊的。
上面的過程中,我們使用公鑰私鑰等來加密解密,但是這裡面存在乙個問題。客戶端或者服務端如何知道對方是否是偽造的呢?
從現實生活中模擬,如果你需要購買一顆鑽石,但你怎麼知道這顆鑽石是否是真鑽呢,為此你需要檢視這顆鑽石是否配有相應的證書。金鑰也一樣,金鑰需要證書來證明它是可以被信任的。
這裡的模擬你可能會存在以下兩個疑惑:
其實瀏覽器之類的客戶端內建了很多根證書,所以乙個需要被驗證的金鑰會根據這些內建的根證書進行驗證。如:android已經將150+個ca證書內建在手機當中,這些證書被全世界所信賴。
在這裡要先提及乙個證書鏈的概念,如:
證書a是可信任的,證書a信任證書b,證書b信任證書c,根據這樣的依託關係,那麼證書b、c也是可信任的,這個即證書鏈。
所以當我們要驗證證書是否有效的時候,只需要去驗證證書是否在可信任的證書鏈當中即可。如:阿里雲給你頒發了證書,那麼它會在阿里雲的證書鏈上去驗證證書的有效性。所以如果是乙個偽造的證書是無法進入證書鏈的,也就是無效的不被信任的證書。
https如何工作
網路協議基於分層架構構建了七層模型,是iso建立的用於計算機或者通訊系統之間的互聯的標準體系。下圖展示了其中的五層 http被稱為超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,建立在應用層當中。主要用於從www伺服器傳輸超文字到本地瀏覽器,更加得高效。由於http協議是明文傳輸,也不要求驗...
HTTPS工作原理
https其實是有兩部分組成 http ssl tls,也就是在http上又加了一層處理加密資訊的模組。服務端和客戶端的資訊傳輸都會通過tls進行加密,所以傳輸的資料都是加密後的資料。客戶端發起https請求 這個沒什麼好說的,就是使用者在瀏覽器裡輸入乙個https 然後連線到server的443埠...
https工作原理
https協議一句話總結 要使客戶端與服務端的通訊過程得到安全保證,必須使用對稱加密演算法,但是協商對稱加密演算法的過程,需要使用非對稱加密演算法來保證安全,然而直接使用非對稱加密的過程本身也不安全,會有中間人篡改公鑰的可能性,所以客戶端與服務端不直接使用公鑰,而是使用數字證書頒發機構頒發的證書來保...