http和https

Http和Https的區別

1.什麼是Http

Http中文叫做超文本傳輸協議, 它完成客戶端到服務端等一系列運作流程

1.1 與http關係密切的協議: IP, TCP和DNS

負責傳輸的IP協議

IP協議數據網絡層, IP協議的作用是把各類數據包傳送給對方. 而要確保確實傳送到對方那裏, 則需要滿足各類條件. 其中兩個重要的條件是IP地址和MAC地址.

IP地址指明瞭節點被分配到的地址, MAC地址是指網卡所指的固定地址. IP地址和MAC地址進行配對, IP地址可以變換, 但是MAC地址基本不會更改.

確保可靠性的TCP協議

TCP位於傳輸層, 提供可靠的字節流服務

字節流服務: 爲了方便傳輸, 將大塊數據分割成以報文段爲單位的數據包進行管理.

爲了確保無誤將數據送達目標處, TCP協議採用了三次握手策略.當然除了三次握手策略, 還有很多其他的手段保證通訊的可靠性

負責域名解析的DNS服務

DNS服務是和HTTP協議一樣位於應用層的協議. 他提供域名與IP地址之間的解析服務.

因爲記住一組純數字太難了, 而字母加數字纔是人類習慣的方式,爲了解決這個問題, DNS服務營運而生.

2. HTTP的缺點

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

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

HTTPS並非是應用層的一種新協議. 只是HTTP通信接口部分用SLL(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是當今世界上應用最廣泛的網絡安全技術.

4.SSL是如何加密的

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

近代的加密方法中, 加密算法是公開的, 而祕鑰是保密的, 通過這種方式得以保持加密方法的安全性.

共享密鑰加密的困境

加密和解密同用一個密鑰的方式稱爲共享密鑰加密, 也被叫做對稱密鑰加密.

共享加密方式加密時必須將密鑰也發給對方. 在互聯網上轉發密鑰時, 如果通信被監聽那麼密鑰就會落入攻擊者之手, 同事也就失去了加密的意義,

怎麼才能安全的轉交?

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

公開密鑰加密方式很好地解決了共享密鑰加密的困難

公開密鑰加密使用一對非對稱的密鑰. 一把叫做私有密鑰, 另一把叫做公開密鑰

使用公開密鑰加密方式, 發送密文的一方使用對方的公開密鑰進行加密處理, 對方收到被加密的信息後, 在使用自己的私有密鑰進行解密. 利用這種方式, 不需要發送用來解密的私有密鑰, 也不用擔心密鑰被攻擊者竊聽而盜走.

另外, 要想根據密文和公開密鑰, 恢復到信息原文是異常困難的, 因爲解密過程就是在對離散對數進行求值, 這並非輕而易舉就能辦到的. 退一步講, 如果能對一個非常大的整數做到快速地因式分解, 那麼密碼還是在存在希望的, 但就目前的技術來看是不太現實的.

HTTPS採用混合加密機制

HTTPS採用共享祕鑰加密 和 公開祕鑰加密兩者並用的混合加密機制. 若密鑰能夠實現安全交換, 那麼有可能會考慮僅適用公開密鑰加密來通信. 但是公開密鑰加密和共享密鑰加密相比, 其處理速度要慢.

所以應充分利用兩者各自優勢, 將多種方法組合起來用於通信. 在交換密鑰環節適用公開密鑰加密方式, 之後的建立通信交換報文階段則使用共享密鑰加密方式.

5.證明公開密鑰的正確性的證書

遺憾的是, 公開密鑰加密方式還是存在一些問題的, 那就是無法證明公開密鑰本身就是貨真價實的公開密鑰. 比如, 正準備和某臺服務器建立公開密鑰加密方式下的通信時, 如何證明收到的公開密鑰就是原本預想的那臺服務器發行的公開密鑰. 或許在公開密鑰傳輸途中, 真正的公開密鑰已經被攻擊者替換了.

爲了解決上述問題, 可以使用有數字證書認證機構其他相關機關頒發的公開密鑰證書

基本流程爲:

  • 1.服務器把自己的公開密鑰登錄至數字證書認證機構
  • 2.數字證書認證機構用自己的私有密鑰向服務器的公開密鑰署數字簽名並頒發公鑰證書
  • 3.客戶端拿到服務器的公鑰證書後, 使用數字證書認證機構的公開密鑰, 向數字證書認證機構驗證公鑰證書上的數字簽名, 以確認服務器的公開密鑰的真實性
  • 4.使用服務器的公開密鑰對報文加密後發送
  • 5.服務器用私有密鑰對報文解密

6.SSL速度慢嗎?

由於HTTPS還需要做服務器,客戶端雙方加密及解密處理, 因此會消耗CPU和內存等硬件資源, 和HTTP通信相比, SSL通信部分消耗網絡資源. 而SSL通信部分, 有因爲要對通信進行處理, 所有時間上又延長了.

針對速度慢這樣一個問題, 並沒有根本性的解決方案, 我們會使用SSL加速器這種(專用服務器)硬件來改善該問題. 相對軟件來講, 能夠提高數倍SSL計算速度.

7.爲什麼不一直使用HTTPS

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

其中的一個原因是, 因爲與純文本通信相比, 加密通信會消耗更多的CPU資源以及內存資源, 如果每次通信都加密, 會消耗相當多的資源, 平攤到一臺計算機上時, 能夠處理的請求數量必定會隨之減少.

因此, 如果是非敏感信息則使用HTTP通信, 只有在包括個人信息等敏感數據時, 才利用HTTPS加密通信, 以節省資源. 除此之外, 想要節約購買證書的開銷也原因之一.

PS: <圖解HTTP>

發佈了60 篇原創文章 · 獲贊 71 · 訪問量 57萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章