天天看點

HTTPS

http為什麼過時了?

http明文協定的缺陷,是導緻資料洩露、資料篡改、流量劫持、釣魚攻擊等安全問題的重要原因。http協定無法加密資料,為謀取商業利益網頁篡改及劫持無處不在,即使是技術強悍的知名網際網路企業,在每天數十億次的資料請求中,都不可避免地會有小部分流量遭到劫持或篡改,更不要提其它的小微網站了。 wifi熱點的普及和移動網絡的加入,放大了資料被劫持、篡改的風險。http協定無法驗證通信方身份,任何人都可以僞造虛假伺服器欺騙使用者,實作“釣魚欺詐”,使用者根本無法察覺。

什麼是https?

https就是為了解決安全問題而誕生的,極大的降低上述安全風險。

https是http over ssl,簡單來說就是http的安全版本,在http的基礎上通過加密傳輸和身份認證保證了傳輸過程中的安全性。我們通常通路的網站大部分都是http的,最簡單的辨識方法可以看看網址是以http://開頭還是https://開頭。

https協定的目标主要有三個:

1、資料保密性

非對稱加密

資料的保密性主要是通過加密完成的。加密算法一般分為兩種,一種是非對稱加密(也叫公鑰加密),另外一種是對稱加密(也叫密鑰加密)。所謂非對稱加密就是指加密和解密使用的密鑰不一樣,如下圖:

https使用非對稱加解密主要有兩個作用,一個是密鑰協商,另外可以用來做數字簽名。所謂密鑰協商簡單說就是根據雙方各自的資訊計算得出雙方傳輸内容時對稱加解密需要使用的密鑰。

對稱加密

對稱加密就是加密和解密都使用的是同一個密鑰。如下圖:

采用非對稱密碼算法的密鑰協商過程結束之後就已經得出了本次會話需要使用的對稱密鑰。

2、資料完整性

這部分内容相對比較簡單,openssl現在使用的完整性校驗算法有兩種:md5或者sha。

3、身份校驗

這裡主要介紹的就是pki和數字證書。數字證書有兩個作用:

 身份驗證。確定用戶端通路的網站是經過ca驗證的可信任的網站。

 分發公鑰。每個數字證書都包含了注冊者生成的公鑰。在ssl握手時會通過certificate消息傳輸給用戶端。

https的缺陷

既然https非常安全,數字證書費用也不高,那為什麼網際網路公司不全部使用https呢?原因主要有兩點:

1.https對速度的影響非常明顯。每個https連接配接一般會增加1-3個rtt,加上加解密對性能的消耗,延時還有可能再增加幾十毫秒。

2.https對cpu計算能力的消耗很嚴重,完全握手時,web server的處理能力會降低至http的10%甚至以下。