1. 程式人生 > >《圖解Http》 HTTPS 安全協議

《圖解Http》 HTTPS 安全協議

ack 交換 增加 組成 加密算法 客戶 圖解 博客 請求

相關博客:https://www.cnblogs.com/chentianwei/p/9374341.html (講的更明白,有圖)

HTTPS


7.1http的缺點

  1. 使用明文,內容會被竊聽。
  2. 不驗證通信方的身份,遭遇偽裝。
  3. 無法證明報文完整性,可能被篡改。

7.11 通信被竊聽

互聯網上任何角落都存在被竊聽的風險。

Packet Capture, Sniffer抓包和嗅探器,如廣泛使用的Wireshark工具。

  • 通信加密: HTTP over SSL就是HTTPS。 增加了Secure Socket Layer安全套接層SSL
  • 內容加密:報文主體進行算法加密(非整個通信線路的加密,有被破解的風險)

7.12 不驗證,遭遇偽裝

http協議由於不對身份驗證,任何人都可以發送請求,所以留下各種隱患:

  • 偽裝的服務器。無法確定請求是否發送到真正的目標服務器,可能請求被攔截,然後使用偽裝的服務器返回響應。
  • 同樣,客戶端也有可能是偽裝的。
  • 無法判定請求來自何方,(沒有證書)
  • 服務器對無意義的請求也會接收,無法阻止海量的DoS攻擊,(拒絕服務攻擊:通過大量請求信息沾滿服務器資源,導致真正的請求無法處理)

通過證書機構頒發的證書來驗證身份是一種安全保障:

技術分享圖片

7.13 無法證明報文的完整性, 中間人攻擊

Man-in-the-Middle attach中間人攻擊: 攻擊人會篡改請求和響應,讓服務器和客戶端之間的通信看起來仍是正常的,但實際已經被控制。

如何防止篡改:

常用的MD5和SHA-1等hash值校驗的方法,和用來確認文件的數字簽名方法,仍不能完全保障安全。

(見博客:6.66 Content-MD5首部)

MD5是單向函數生成的散列值。本身仍可能被篡改。因此必須使用HTTPS。

SSL提供了認證和加密處理, 摘要功能


7.2 HTTP + 加密 + 認證 + 完整性保護 = HTTPS

技術分享圖片

7.23 Public-key cryptography 公開密匙 密碼算法

加密算法公開,但密匙是保密的。只有通過密匙,才能對密碼解密。

雙方使用這個算法對通信的內容進行加密和解密,以保障信息的安全。但是,

如何安全的把密匙傳給對方?

這是對稱加密算法的困境。(Common key crypto system 共享密匙加密系統)

答案:使用公開密匙加密算法。又叫做非對稱密匙加密算法

公開密匙由,一把private key和 任意多的公key組成。接收密文的一方持有private key,發送密文的一方持有公key。通過公key加密的報文,只有private key可以解開。

因此,服務器只需要把公key提供給客戶端。

HTTPS的混合加密機制:

  1. 密匙交換環節:客戶端獲得公開密匙,通過非對稱加密算法加密傳輸‘對稱密匙’給服務器
  2. 通信交換報文環節:雙方使用對稱密匙加密方式,交換報文。

7.24證明公開密匙正確性的證書

客戶端獲得的公開密匙有可能被黑客調包了,客戶得到的是假的公開密匙,怎麽辦?

答案:使用數字證書認證機構頒發的公開密匙證書。

服務器運營者申請數字證書的業務流程:

  申請->確認身份->對申請的公開密匙做數字簽名->分配這個簽名的公開密匙,並將密匙和證書綁定。

  1. 服務器把公鑰和證書發給客戶端。
  2. 客戶端用數字證書認證機構的公開密匙對證書上的數字簽名進行驗證。
  3. 一旦驗證通過,客戶端即可安全的使用服務器的公開密匙了。

??: 多數瀏覽器內部會有常用認證機構的公開密匙。

技術分享圖片

客戶端也可以使用數字證書。在安全性極高的領域:如網上銀行的網銀登陸就使用了客戶端證書。

擴展:認證機構的信譽第一,認證機構有被黑客入侵的事件發生。

7.25 HTTPS的安全通信機制

技術分享圖片

技術分享圖片

HTTPS的成本導致網站不會一直使用

  1. 加密消耗更多的cpu, cache
  2. 購買證書也是開銷,一個證書600元/年。

SSL導致通信慢,和處理速度慢。比http慢2-100倍。

針對這一問題有專門的服務器來改善問題,不過這又是成本。

《圖解Http》 HTTPS 安全協議