
SSL由兩個層次協議組成:SSL數據包協議和SSL握手協議。
(1)SSL握手協議
SSL握手協議在SSL記錄層協議的上面。服務器與客戶端使用SSL握手協議相互鑑別對方身份、協商加密算法與MAC算法,及在SSL記錄層協議中加密數據的加密密鑰與初始向量。這些過程在握手協議中進行。握手協議是建立SSL連接,先應進行的協議,須在傳輸所有數據前完成。
根據功能特點,握手過程基本上可分為4個階段。
第一階段是建立安全能力。主要工作是建立一條邏輯連接,及和此連接相關的安全能力。建立安全能力指客戶端與服務器協商將在通信中用的加密、簽名、密鑰交換、MAC等算法,及其他一些記錄協議需用的必要參數等。此階段是2個參數同樣的報文構成,一個為Client_hello報文;另一個是Server_hello報文,協議的發起顺利获得客戶端送出一個Client_hello消息進行開啟,此階段結束後,就實現了安全能力的建立。
第二個階段是服務器鑑別和密鑰交換。若服務器需被鑑別,此階段將用服務器給客戶端發送自己的證書開始執行,服務器向客戶端發的信息包含證書或證書鏈報文,不過有時候可能僅需發送其中的一個或兩個報文就能實現握手第一二個階段。
第二階段是客戶端驗證與密鑰交換。收到服務器證書結束報文後,客戶端先驗證服務器有沒有給出合法的證書,檢測服務器的參數是否可接受,若這些都滿足條件,客戶端就給服務器發客戶證書報文、密鑰交換報文與證書驗證報文。除客戶密鑰交換報文,其餘2個報文某狀況下不必需。
第四階段是完成握手階段。此階段實現安全連接的建立,第一步是客戶端修改密文協議發改變算法定義報文,把掛起的算法族定義複製至此前的算法族定義。之後客戶端隨即發在新的算法、密鑰與密碼下的完成報文,服務器向這2個報文的響應為發送改變算法定義報文,把掛起狀態複製至此前狀態,還要發完成報文。
至此握手協議結束,客戶端與服務器有了安全連接,應用層協議可以使用SSL連接進行安全的數據通信了。
(2)SSL數據包協議
SSL數據包協議的內容有數據壓縮/解壓、加密/解密、改變加密約定協議、警報協議、出錯處理等。所做的主要工作是用商定的加密和報文鑑別算法保護髮送數據包。
只要握手協議完成,客戶端與服務器商定主密鑰、加密和簽名算法,加密簽名函數把數據轉換成保密文本格式,即SSL數據包。解密函數則逆向執行這一過程,把數據還原。
