Https的理解

weixin_33866037發表於2017-10-11

Https的理解

http 協議的缺點

  • 通訊使用明文,內容可能會被竊聽

    • TCP/IP是可能被竊聽的網路。
  • 不驗證對方的身份,隱藏有可能遭遇偽裝

  • 無法驗證報文的完整性,所以有可能已經被修改

通訊上的加密

  • 一種方式就是通訊加密。HTTP協議中沒有加密機制。但是可以通過和SSL(Secure Socket Layer)安全套接層或者TLS(安全傳輸層協議)的組合使用,加密HTTP的通訊內容。 用SSL建立安全通訊線路後,就可以在這條線路上進行HTTP通訊了。與SSL組合使用的HTTP被稱作HTTPS。 就是先在伺服器和客戶端之間建立安全的通訊線路之後開始通訊。
  • 對內容進行加密。對報文主題的內容進行加密。為了做到有效的內容加密,前提是要求客戶端和服務端同事具備加密和解密機制。改方式不同於SSL和TLS將整個通訊線路加密處理。所以內容仍有被篡改的風險。

不驗證通訊方身份就可能遭遇到偽裝。任何人都可以發起請求。不確認對方的身份,因此存在各種隱患

  • 無法確定請求傳送至目標的Web伺服器是否是真實意圖的Web伺服器,可能是偽裝的Web伺服器
  • 無法確定相應返回的客戶端是否是按照真實意圖接收相應的那個客戶端。有可能是偽裝的客戶端。
  • 無法確定正在通訊的對方是否具備訪問許可權。因為某些Web伺服器上儲存著某些重要的資訊。只想傳送給某些使用者通訊的許可權
  • 無意義的請求也會照單全收,無法阻止海量請求下的DoS攻擊
  • 無法判斷請求出自何手

無法驗證報文的完整性,可能遭到篡改

由於HTTP協議無法證明通訊的報文完整性,因此請求和相應發出之後知道對方接收的這段時間,即使請求或者響應遭到篡改,我們也無法獲知。

Http+加密(防止內容被竊聽)+ 認證(防止偽裝)+完整性保護(防止被中間人篡改)

Https並非是應用層的一種新協議。只是Http通訊介面部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議替代而已。通常Http直接和TCP通訊。當使用SSL時,變成先和SSL通訊,再有SSL和TCP通訊。所謂HTTPS ,無非是身披SSL協議外殼的HTTP,採用了SSL之後,HTTP就擁有了HTTPS的加密、證書、完整性保護這些功能。SSL是獨立於HTTP的協議,所以不光HTTP協議,其他執行在應用層的SMTP和Telnet等協議均可配合SSL協議使用。可以說SSL是世界上應用最廣泛的網路安全語言。

共享金鑰加密的困境。加密和解密同用一個金鑰叫做共享金鑰加密。也稱為對稱金鑰加密。

相互交換金鑰的公開金鑰加密技術。公開金鑰加密方式很好解決了共享金鑰的困難。使用公開金鑰加密的方式,傳送密文的一方使用對方的公開金鑰進行加密,對方收到加密資訊之後,再使用自己的私有金鑰進行解密。利用這種方式不需要來傳送來解密的私有金鑰,也不用擔心金鑰被攻擊者竊聽而盜走。

SSL採用一種公開金鑰加密的加密處理方式。近代加密方法中的加密演算法是公開的。而金鑰是保密的。通過這種方法可以保持加密方法的安全性。

使用兩把金鑰的公開金鑰加密

公開金鑰加密的方式很好解決了共享金鑰加密的困境。通過公開金鑰加密。通過私有金鑰解密。HTTPS採用了共享金鑰加密和公開金鑰加密兩者共用的混合加密機制。如果金鑰能夠安全交換,就有可能實現共享金鑰加密的手段。

數字證書下發的完整過程。

  • 伺服器把自己的公開金鑰登入到數字證書認證機構。
  • 數字證書認證機構驗證申請者身份後,會對申請的公開金鑰做數字簽名,然後分配這個已簽名的公開金鑰,並將公開金鑰放入到公鑰證書繫結子一起。
  • 服務端把公鑰傳送給客戶端。客戶端拿到服務端傳送過來的公鑰證書後,使用數字證書驗證機構公開金鑰,向數字認證結構驗證公鑰證書上的數字簽名,以保證服務端公開金鑰的真實性。
  • 使用公開金鑰對報文加密後傳送
  • 伺服器對私有金鑰進行解密。

SSL速度慢嗎

由於HTTPS還需要做伺服器、客戶端雙方加密及解密處理。因此會消耗較多的CPU和記憶體等硬體資源。 和HTTP通訊部分相比,SSL通訊部分消耗網路資源。而SSL通訊部分。又因為要對通訊進行處理,所以時間延長了。

為什麼不用HTTPS

  • 因為和純文字相比,加密通訊會消耗更多的CPU及記憶體資源,如果每次請求都要進行加密。會消耗更多的資源。
  • 成本考慮。 申請攜帶公鑰的加密證書需要收費

相關文章