SSL工作原理 |
SL工作原理 SSL 是一個安全協議,它提供使用 TCP/IP 的通信應用程式間的隱私與完整性。網際網路的 超文本傳輸協定 (HTTP)使用 SSL 來實現安全的通信。 在用戶端與伺服器間傳輸的資料是通過使用對稱演算法(如 DES 或 RC4)進行加密的。公用密鑰演算法(通常為 RSA)是用來獲得加密密鑰交換和數位簽署的,此演算法使用伺服器的SSL數位憑證中的公用密鑰。有了伺服器的SSL數位憑證,用戶端也可以驗證伺服器的身份。SSL 協定的版本 1 和 2 只提供伺服器認證。版本 3 添加了用戶端認證,此認證同時需要用戶端和伺服器的數位憑證。 SSL 握手 SSL 連接總是由用戶端啟動的。在SSL 會話開始時執行 SSL 握手。此握手產生會話的密碼參數。關於如何處理 SSL 握手的簡單概述,如下圖所示。此示例假設已在 Web 流覽器 和 Web 伺服器間建立了 SSL 連接。 SSL的用戶端與伺服器端的認證握手原理圖示 SSL 與伺服器認證的握手 (1) 用戶端發送列出用戶端密碼能力的用戶端“您好”消息(以用戶端首選項順序排序),如 SSL 的版本、用戶端支援的密碼對和用戶端支援的資料壓縮方法。消息也包含 28 位元組的亂數。 (2) 伺服器以伺服器“您好”消息回應,此消息包含密碼方法(密碼對)和由伺服器選擇的資料壓縮方法,以及會話標識和另一個亂數。 注意:用戶端和伺服器至少必須支援一個公共密碼對,否則握手失敗。伺服器一般選擇最大的公共密碼對。 (3) 伺服器發送其SSL數字憑證。(伺服器使用帶有 SSL 的 X.509 V3 數字憑證。) 如果伺服器使用 SSL V3,而伺服器應用程式(如 Web 伺服器)需要數位憑證進行用戶端認證,則用戶端會發出“數位憑證請求”消息。在 “數位憑證請求”消息中,伺服器發出支援的用戶端數字憑證類型的列表和可接受的CA的名稱。 (4) 伺服器發出伺服器“您好完成”消息並等待用戶端回應。 (5) 一接到伺服器“您好完成”消息,用戶端( Web 流覽器)將驗證伺服器的SSL數字憑證的有效性並檢查伺服器的“你好”消息參數是否可以接受。 如果伺服器請求用戶端數字憑證,用戶端將發送其數字憑證;或者,如果沒有合適的數字憑證是可用的,用戶端將發送“沒有數字憑證”警告。此警告僅僅是警告而已,但如果用戶端數字憑證認證是強制性的話,伺服器應用程式將會使會話失敗。 (6) 用戶端發送“用戶端密鑰交換”消息。此消息包含 pre-master secret (一個用在對稱加密密鑰生成中的 46 位元組的亂數字),和 消息認證代碼 ( MAC )密鑰(用伺服器的公用密鑰加密的)。 如果用戶端發送用戶端數字憑證給伺服器,用戶端將發出簽有用戶端的專用密鑰的“數位憑證驗證”消息。通過驗證此消息的簽名,伺服器可以顯示驗證用戶端數位憑證的所有權。 注意: 如果伺服器沒有屬於數字憑證的專用密鑰,它將無法解密 pre-master 密碼,也無法創建對稱加密演算法的正確密鑰,且握手將失敗。 (7) 用戶端使用一系列加密運算將 pre-master secret 轉化為 master secret ,其中將派生出所有用於加密和消息認證的密鑰。然後,用戶端發出“更改密碼規範” 消息將伺服器轉換為新協商的密碼對。用戶端發出的下一個消息(“未完成”的消息)為用此密碼方法和密鑰加密的第一條消息。 (8) 伺服器以自己的“更改密碼規範”和“已完成”消息回應。 (9) SSL 握手結束,且可以發送加密的應用程式資料。 |