1. 程式人生 > >圖解HTTP總結(7)——確保Web安全的HTTPS

圖解HTTP總結(7)——確保Web安全的HTTPS

HTTP 主要有這些不足, 例舉如下。
       通訊使用明文( 不加密) , 內容可能會被竊聽。
       不驗證通訊方的身份, 因此有可能遭遇偽裝。

       無法證明報文的完整性, 所以有可能已遭篡改。

我們把添加了加密及認證機制的 HTTP 稱為 HTTPSHTTP Secure



HTTPS 是身披 SSL 外殼的 HTTP

     HTTPS 並非是應用層的一種新協議。 只是 HTTP 通訊介面部分用

SSLSecure Socket Layer)和TLSTransport Layer Security) 協議代替而已。

     通常HTTP直接和TCP通訊。當使用SSL時,則演變成先和SSL通訊,再由SSL和TCP通訊了。

 

     在採用 SSL後, HTTP 就擁有了 HTTPS 的加密、 證書和完整性保護這些功能。
      SSL是獨立於 HTTP 的協議, 所以不光是 HTTP 協議, 其他執行在應用層的 SMTP Telnet 等協議均可配合 SSL協議使用。 可以說
SSL是當今世界上應用最為廣泛的網路安全技術。

      SSL採用一種叫做公開金鑰加密(Public-key cryptography)的加密處理方式。

      近代的加密方法中加密演算法是公開的, 而金鑰卻是保密的。 通過這種方式得以保持加密方法的安全性。
      加密和解密都會用到金鑰。 沒有金鑰就無法對密碼解密, 反過來說,任何人只要持有金鑰就能解密了。 如果金鑰被攻擊者獲得, 那加密也就失去了意義。


共享祕鑰加密的困境

      加密和解密同用一個金鑰的方式稱為共享金鑰加密(

Common key crypto system) , 也被叫做對稱金鑰加密。


      以共享金鑰方式加密時必須將金鑰也發給對方。 可究竟怎樣才能安全地轉交? 在網際網路上轉發金鑰時, 如果通訊被監聽那麼金鑰就可會落入攻擊者之手, 同時也就失去了加密的意義。 另外還得設法安全地保管接收到的金鑰。


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

      公開金鑰加密方式很好地解決了共享金鑰加密的困難。公開金鑰加密使用一對非對稱的金鑰。一把叫做私有金鑰(private key),另一把叫做公開金鑰(public key)。顧名思義,私有金鑰不能讓其他任何人知道, 而公開金鑰則可以隨意釋出, 任何人都可以獲得。

      使用公開金鑰加密方式, 傳送密文的一方使用對方的公開金鑰進行加密處理, 對方收到被加密的資訊後, 再使用自己的私有密鑰進行解密。 利用這種方式, 不需要傳送用來解密的私有金鑰, 也不必擔心金鑰被攻擊者竊聽而盜走。

HTTPS 採用混合加密機制
      HTTPS 採用共享金鑰加密和公開金鑰加密兩者並用的混合加密機制。 若金鑰能夠實現安全交換, 那麼有可能會考慮僅使用公開金鑰加密來通訊。 但是公開金鑰加密與共享金鑰加密相比, 其處理速度要慢。 在交換金鑰環節使用公開金鑰加密方式, 之後的建立通訊交換報文階段則使用共享金鑰加密方式。


為什麼不一直使用 HTTPS
      既然 HTTPS 那麼安全可靠, 那為何所有的 Web 網站不一直使用HTTPS

      其中一個原因是, 因為與純文字通訊相比, 加密通訊會消耗更多的CPU 及記憶體資源。 如果每次通訊都加密, 會消耗相當多的資源, 平攤到一臺計算機上時, 能夠處理的請求數量必定也會隨之減少。

      因此, 如果是非敏感資訊則使用 HTTP 通訊, 只有在包含個人資訊等敏感資料時, 才利用 HTTPS 加密通訊。