HTTPS協議入門

HTTPS協議入門

1. HTTPS出現的背景

雖然HTPP協議很優秀而且方便,可是不得不正視HTTP協議存在的一些問題:算法

  • 通訊使用明文(不加密),內容可能會被竊聽;
  • 不驗證通訊雙方的身份,所以有可能遭遇假裝;
  • 沒法證實報文的完整性,因此有可能已遭篡改;

這些問題不只在HTTP協議上出現,其餘未加密的協議中也會存在這類問題。安全

因爲這些問題的存在,HTTPS協議就應運而生,HTTPS,超文本傳輸安全協議,是和SSL(Secure Socket Layer,安全套接層)或者TLS(Transport Layer Security,安全傳輸層協議)組合使用的,一般HTTP直接和TCP通訊,當使用SSL時,則演變成先和SSL通訊,再由SSL和TCP通訊了。服務器

2. HTTPS的三大功能

上面提到了HTPP協議的不足,下面說一下HTTPS是如何解決這三個問題的。網絡

2.1 通訊使用明文(不加密),內容可能會被竊聽

在網絡上傳輸信息,自己就是能夠被他人截獲的,好比經過抓包工具,第三者就能夠在同局域網的一臺主機,或者路由器或者互聯網的任何地方均可能被截獲數據。HTPP使用明文傳輸,至關於你傳輸的數據徹底暴露在了網絡上。併發

HTTPS傳輸數據的時候會對通訊進行加密,使用SSL創建安全線路以後,就能夠在這條線路上進行HTTP通訊了。至關於單獨創建了一條安全信道。工具

2.2 不驗證通訊雙方的身份,所以有可能遭遇假裝

HTTP協議中的請求和響應不會對通訊雙方進行確認,也就是說存在「服務器是否就是發送請求中URI真正的主機,返回的響應是不是真的返回到實際提出請求的客戶端」等相似問題。而且,因爲不存在通訊雙方的處理步驟,任何人均可以發起請求。可能會出現DOS攻擊等問題。加密

HTTPS中SSL就能夠確認確認通訊方,它提供了一種被稱爲證書的手段,證書由值得信賴的第三方機構頒發,用以證實服務器和客戶端是實際存在的,另外僞造證書從技術角度說是異常困難的一件事,因此只要能確認通訊方持有的證書就能夠判斷通訊方的真實意圖。md5

2.3 沒法證實報文的完整性,因此有可能已遭篡改

HTTP協議沒法確認客戶端發出的請求和服務端接收到的請求是相同的,一樣,也沒法確認服務端發送的響應和客戶端接收的響應是相同的。很容易出現中間人攻擊。路由

雖然HTTP協議可使用md5等信息摘要算法保證數據完整性,可是MD5自己均可能被篡改,也就沒法保證其安全性。SSL提供了摘要功能。能夠保證數據的完整性。it

從HTTPS的功能來看,能夠總結爲:HTTP+加密+認證+完整性保護=HTTPS。

3. HTTPS的混合加密機制

首先先來談談兩種加密方法:

  • 共享密鑰加密:加密和解密使用相同的密鑰,可是在通訊的時候須要把密鑰也一併發送,這樣有可能被別人截獲;
  • 公開密鑰加密:加密和解密使用不一樣的密鑰,服務器提供公開密鑰,客戶端使用公開密鑰對數據進行加密,而後服務器使用私有密鑰對密文進行解密,這樣就保證密文不會被破解。

可是使用公開密鑰加密方式傳輸數據比較慢,因此HTTPS結合了二者的優勢,使用混合加密機制,首先在交換密鑰的時候使用公開密鑰加密方式,確認鏈接後,傳輸數據使用共享密鑰加密方式。

4. HTTPS使用場景

當使用HTTPS時,通訊會變慢,致使通訊變慢的緣由有兩個,一是網絡負載,當使用HTTPS進行通訊時,網絡負載比HTTP要高2-100倍。而是因爲HTTPS每次通訊都要加解密,對CPU的消耗也很大。因此通常只有在傳輸機密信息時使用HTTPS,好比用戶密碼,銀行信息等。

再有就是使用HTTPS須要支付購買證書的費用,一些機構考慮到這點也可能優先選擇HTTP協議。

參考:

《圖解HTTP》

相關文章
相關標籤/搜索