圖解HTTP之確保Web安全的HTTPS(七)
在 HTTP 協議中有可能存在資訊竊聽或身份偽裝等安全問題。使用HTTPS 通訊機制可以有效地防止這些問題。
HTTP 的缺點:
缺點一:通訊使用明文(不加密),內容可能會被竊聽
由於 HTTP 本身不具備加密的功能,所以也無法做到對通訊整體(使用 HTTP 協議通訊的請求和響應的內容)進行加密。即,HTTP 報文使用明文(指未經過加密的報文)方式傳送。
TCP/IP 是可能被竊聽的網路 網際網路上的任何角落都存在通訊內容被竊聽的風險
加密處理防止被竊聽
通訊的加密 SSL(Secure Socket Layer,安全套接層)TLS(Transport Layer Security,安全層傳輸協議)用 SSL 建立安全通訊線路之後,就可以在這條線路上進行 HTTP通訊了。與 SSL 組合使用的 HTTP 被稱為 HTTPS(HTTP Secure,超文字傳輸安全協議)或 HTTP over SSL。
內容的加密 把HTTP 報文裡所含的內容進行加密處理。
缺點二:不驗證通訊方的身份,因此有可能遭遇偽裝
任何人都可發起請求
-
無法確定請求傳送至目標的 Web 伺服器是否是按真實意圖返回響應的那臺伺服器。有可能是已偽裝的 Web 伺服器。
-
無法確定響應返回到的客戶端是否是按真實意圖接收響應的那個客戶端。有可能是已偽裝的客戶端。
-
無法確定正在通訊的對方是否具備訪問許可權。因為某些Web 伺服器上儲存著重要的資訊,只想發給特定使用者通訊的許可權。
-
無法判定請求是來自何方、出自誰手。
-
即使是無意義的請求也會照單全收。無法阻止海量請求下的 DoS 攻擊(Denial of Service,拒絕服務攻擊)。
查明對手的證書
缺點三:無法證明報文的完整性,所以有可能已遭篡改
所謂完整性是指資訊的準確度。若無法證明其完整性,通常也就意味著無法判斷資訊是否準確。
接收到的內容可能有誤 中間人攻擊(Man-in-the-Middle attack,MITM)
如何防止篡改 MD5和SHA-1
HTTP + 加密 + 認證 + 完整性保護 = HTTPS
1、HTTP 加上加密處理和認證以及完整性保護後即是HTTPS
2、HTTPS 是身披 SSL 外殼的 HTTP
3、相互交換金鑰的公開金鑰加密技術
共享金鑰加密的困境:解密和加密用同一個金鑰 對稱金鑰加密
使用兩把金鑰的公開金鑰加密:公開金鑰加密 私有金鑰解密
HTTPS採用混合加密機制:採用共享金鑰加密和公開金鑰加密兩者並用的混合加密機制。
4、證明公開金鑰正確性的證書
數字證書認證機構CA 威瑞信VeriSign
-
可證明組織真實性的EV SSL證書
-
用以確認客戶端的客戶端證書
-
認證機構信譽第一
-
由自認證機構頒發的證書稱為自簽名證書
5、HTTPS 的安全通訊機制
1)、客戶端通過傳送Client Hello報文開始SSL通訊
2)、伺服器可進行SSL通訊時,會以Server Hello報文作為應答
3)、伺服器傳送Certificate報文,公開金鑰證書
4)、伺服器傳送Server Hello Done報文到客戶端,最初SSL握手結束
5)、客戶端以Client Key Exchange報文(被第三步中公開金鑰加密)作為迴應 Pre-master secret
6)、客戶端傳送Change Cipher Spec報文後,以後的報文用Pre-master secret金鑰加密
7)、客戶端傳送Finished報文 連線至今全部報文驗證正確性
8)、伺服器傳送Change Cipher Spec報文
9)、伺服器傳送Finished報文
10)、務器和客戶端的 Finished 報文交換完畢之後,SSL連線建立完成。從此處開始進行應用層協議的通訊,即傳送 HTTP 請求
11)、應用層協議通訊,即傳送 HTTP 響應
12)、最後由客戶端斷開連線。斷開連線時,傳送 close_notify 報文。
在以上流程中,應用層傳送資料時會附加一種叫做 MAC(Message Authentication Code)的報文摘要。MAC 能夠查知報文是否遭到篡改,從而保護報文的完整性。
HTTPS 使用 SSL(Secure Socket Layer) 和 TLS(Transport Layer Security)這兩個協議。
SSL 的慢分兩種。一種是指通訊慢。另一種是指由於大量消耗CPU 及記憶體等資源,導致處理速度變慢。
為什麼不一直使用 HTTPS?
其中一個原因是,因為與純文字通訊相比,加密通訊會消耗更多的CPU 及記憶體資源。如果每次通訊都加密,會消耗相當多的資源,平攤到一臺計算機上時,能夠處理的請求數量必定也會隨之減少。
因此,如果是非敏感資訊則使用 HTTP 通訊,只有在包含個人資訊等敏感資料時,才利用 HTTPS 加密通訊。
想要節約購買證書的開銷也是原因之一。
要進行 HTTPS 通訊,證書是必不可少的。而使用的證書必須向認證機構(CA)購買。證書價格可能會根據不同的認證機構略有不同。通常,一年的授權需要數萬日元(現在一萬日元大約摺合 600人民幣)。
那些購買證書並不合算的服務以及一些個人網站,可能只會選擇採用 HTTP 的通訊方式。