菜鳥學網路——HTTPS是怎麼實現的?

Rymn發表於2018-05-18

參考文章:

目錄

菜鳥學網路——HTTPS是怎麼實現的?

1. Https 簡介

1.1 Https產生的背景

簡單來說:就是不夠安全,資訊容易被黑客截獲,造成資訊洩露。

1.2 Https是什麼?

Https是Http的安全版,它的核心是SSL/TLS(Https後面的's'就是指SSL)。

Https的原理就是:在傳輸層和應用層之間加了一層SSL/TLS。如下圖所示:

菜鳥學網路——HTTPS是怎麼實現的?

1.3 SSL/TLS是什麼?

SSL/TLS是一種介於傳輸層和應用層的協議,它是Https的精髓所在。

菜鳥學網路——HTTPS是怎麼實現的?

1.3.1 SSL(Secure Socket Layer,安全套接字層)

SSL協議是 NetScape 公司於 1994 年提出的一個關注網際網路資訊保安的資訊加密傳輸協議,其目的是為客戶端(瀏覽器) 到伺服器端之間的資訊傳輸構建一個加密通道,此協議是與作業系統和 Web 伺服器無關。

SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等(它的作用!)。

1.3.2 TLS (Transport Layer Security,傳輸層安全協議)

用於兩個應用程式之間提供保密性和資料完整性。 TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本,可以理解為SSL 3.1,它是寫入了 RFC 的。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位於某個可靠的傳輸協議(例如 TCP)上面。

1.3.3 SSL/TLS的關係

SSL是由網景公司發明的,後來由於應用廣發,IETF就把SSL進行標準化,並把標準化後的SSL改名為TLS。所以,TLS可以說是SSL的加強版,兩者是同一個東西的不同階段。

1.3.4 白話SSL/TLS的作用

建議收看:HTTPS and SSL tutorial(谷歌大佬的教程,還不支援下?哦,對了,請自備扶梯)

總結來說:

沒有加入SSL/TLS的請求,相當於你跟伺服器在兩個房間內彼此大喊,此時,全世界都知道了。

而加入了SSL/TLS的請求,相當於你跟伺服器在用火星語交流,就算有人路過聽到了,也不知道是什麼意思。

菜鳥學網路——HTTPS是怎麼實現的?

1.4 Https涉及概念

1.4.1 公鑰和私鑰

公鑰

公鑰(Public Key)與私鑰(Private Key)是通過一種演算法得到的一個金鑰對(即一個公鑰和一個私鑰),公鑰是金鑰對中公開的部分,私鑰則是非公開的部分。

1.4.2 對稱加密演算法和非對稱加密演算法

對稱加密:

對稱金鑰加密(英語:Symmetric-key algorithm)又稱為對稱加密、私鑰加密、共享金鑰加密,是密碼學中的一類加密演算法。這類演算法在加密和解密時使用相同的金鑰,或是使用兩個可以簡單地相互推算的金鑰。

常見的對稱加密演算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

菜鳥學網路——HTTPS是怎麼實現的?

對稱加密其實就是說: 比如我用'a'作為金鑰對內容加了密,你必須也得用'a'作為金鑰對加密後的內容進行解密。

非對稱加密:

非對稱加密(asymmetric cryptography),一種密碼學演算法型別,在這種密碼學方法中,需要一對金鑰,一個是私人金鑰,另一個則是公開金鑰。這兩個金鑰是數學相關,用某使用者金鑰加密後所得的資訊,只能用該使用者的解密金鑰才能解密。

菜鳥學網路——HTTPS是怎麼實現的?

比如說: 我有一對金鑰,一個是公鑰(假設是'a'),一個是私鑰(假設是'b'),現在我用'a'對一個內容加了密,那麼,此時,,你只有用私鑰'b'對它進行解密才能看到正確內容。同理,如果我用私鑰'b'加了密,你只有用公鑰'a'解密才能看到內容。

2.Https 的實現原理

廢話一下:其實我也不知道自己理解的是不是對的,我覺得網上很多講Https原理的文章其實本質上講的都是SSL/TLS的原理。在我看來,Https指的是Http協議+ SSL/TLS協議,也就是說,Http協議本來定義了資料的包裝方式(要包含請求頭,請求方式等),現在在這個基礎上,還要求行對資料進行加密,對通訊雙方身份進行驗證(如何加密,如何驗證由SSL決定)。 我也不知道我理解的對不對?求高人賜教。

菜鳥學網路——HTTPS是怎麼實現的?

下面上圖:

SSL/TLS

菜鳥學網路——HTTPS是怎麼實現的?

這裡的Https的實現原理指的是單向的,Https還有雙向的。區別在於:單向是就是隻檢驗服務端的身份,至於客戶端是誰訪問,不重要。雙向就是客戶端和服務端都有指定,這種一般用於金融,也就是說,不是伺服器認同的客戶端,服務端不會進行傳送資料。

3.SSL/TLS 的實現原理

菜鳥學網路——HTTPS是怎麼實現的?

相關文章