Https應用和麪試層面的理解

Http是不安全的協議,主要體現在如下三點

(1)數據是明文傳輸的

(2)不進行身份驗證

(3)不會驗證報文的完整性(完整性是包含一致性的)

Https的出現就是解決上面三個問題的

加密(Encryption), HTTPS 通過對數據加密來使其免受竊聽者對數據的監聽,這就意味着當用戶在瀏覽網站時,沒有人能夠監聽他和網站之間的信息交換,或者跟蹤用戶的活動,訪問記錄等,從而竊取用戶信息。

數據一致性(Data integrity),數據在傳輸的過程中不會被竊聽者所修改,用戶發送的數據會完整的傳輸到服務端,保證用戶發的是什麼,服務器接收的就是什麼。

身份認證(Authentication),是指確認對方的真實身份,也就是證明你是你(可以比作人臉識別),它可以防止中間人攻擊並建立用戶信任。
 

我們詳細展開:

Https是Http+TLS,TLS(transport layer security)是傳輸層安全協議,Https的安全性就是靠TLS保證的,具體分爲三個部分:加密、數據一致性和身份認證。

加密採用混合加密,就是非對稱加密和對稱加密都會用到,這是因爲效率問題和安全平衡的選擇。對稱加密比非對稱加密快很多,但是對稱加密有個問題,如果別人非法拿到了密鑰,就可以對信息加密和解密了,就沒有安全性可言了,非對稱加密,只能公鑰加密私鑰解密,反之也行。所以加密過程是這樣的,client先拿到server的公鑰,然後把client生成的對稱密鑰用公鑰加密,傳給server,server拿密鑰把對稱加密的密鑰解密出來,這樣client和server都有了對稱密鑰,而且是安全的(我理解爲了保證安全,每次通信這個對稱密鑰都是動態生成的,如果不是,client固定的密鑰被破解,還是存在不安全的風險),這樣以後的數據就可以通過對稱密鑰加密了。

非對稱加密保證了對稱密鑰的安全性,對稱密鑰保證數據的安全性,同時加解密效率高

數據一致性,是採用摘要算法保證的,最簡單的摘要算法是MD5,這塊比較簡單,不展開。

雖然,有了加密和數據一致性的保證,能夠保證數據的安全,可是沒有解決通信雙方信任的問題。也就是說你和騙子之間的交易不論多麼安全和有始有終,他終究是騙子,所以,我們得先驗證對方是不是騙子。這就需要用到身份認證了,身份認證需要第三方的背書,這個背書的機構就是CA(certificate Authority)證書管理結構。

具體操作就是server在生成公私鑰的時候同時會生成簽名請求(CSR)。CSR是一個編碼的文本文件,其中包含公鑰和其他將包含在證書中的信息(例如域名,組織,電子郵件地址等),CSR是包括公鑰的,server把CSR發給CA,CA會對CSR中的信息進行驗證(我理解,公司是需要在CA提前中報備信息的,一般來說是需要花錢的),驗證通過後,CA對CSR進行摘要,然後用CA自己的私鑰加密,生成的就叫數字簽名,把這個數字簽名發給server。在server中,CSR+數字簽名就構成了證書。

這就像所有做生意的人,都得到工商局登記報備一樣,工商局給發一個經營許可證。

上面只是說了證書怎麼來的,還沒說證書怎麼用,使用證書的過程就是身份認證的過程。具體過程如下

第一步:

網站向客戶端發送證書。(這裏的網站指的就是server,向client發送證書,這個不理解,我理解是Https請求的時候,從server拿到的證書)

第二步(校驗):

客戶端用CA公鑰解密數字簽名得到服務器生成的數字摘要1。(CA的公鑰是提前安裝的嗎?或者手機電腦都提前安裝了CA的公鑰)

然後客戶端也同樣計算md5(證書描述信息)獲得一個數據摘要2。

對比數字摘要1和數字摘要2, 過關相等,則驗證通過。

驗證通過後,便可以取出網站公鑰進行後面的操作。

 

Charles抓包Https其實就是採用了Https的原理進行了,charles在client和server中間做了一層,對client來說,charles是server,對server來說,charles是client。Charles同時也是一個CA機構,這點很重要,要不然理解不清楚。

Charles抓包https

有一點概念需要說一些,一般說的安裝證書這個說法不對,其實安裝的是CA機構的公鑰,真正的證書是用來驗證的。

 

 

有幾點疑問:

(1)證書肯定是server發給client的,證書是client通過CA公鑰驗證server身份的,是不是驗證過一次就可以了呢?所以纔有了證書安裝的概念?因爲按照理論證書是驗證的,這個目前不清楚。

(2)一般情況,只要client驗證server的身份就可以了,不過有些應用場景server也需要驗證client的身份,比如在銀行的交易過程中。

 

看完這篇 HTTPS,和麪試官扯皮就沒問題了

Https中CA的作用

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章