1.6 安全的TCP連結: SSL

SSL(安全線上編碼協定) Secure Socket Layer

 SSL是一項由網景公司所發展出來的網路安全傳輸協定。由於網景公司所發展的瀏覽器與伺服器十分風行,SSL已成為最為廣泛使用的網路安全協定。在網路輸協定層級中,SSL層屬於TCP與應用程式層中間的一個層級,它提供網路傳遞資料的安全保護,避免資料在傳輸過程中被截取或竄改,其在網路協定層級中的位置較為低階。

由於SSL是位於傳輸層之下的通訊協定,高層網路應用程式都屬於SSL 的範圍,可透過SSL達到下列的安全機能:

  • 私密性
  • 完整性
  • 身份認證性

SSL的基本運作方式如下:當使用者使用Netscape或IE瀏覽器存取資料時,瀏覽器利用HTTP協定與Wed Server 溝通。

1. SSL(Secure Socket Layer)/TLS(Transport Layer Security)

安全套接層(Secure Sockets Layer,SSL)及其繼任者傳輸層安全(Transport Layer Security,TLS)是在網際網路上提供安全保密的通訊協議,為諸如網站、電子郵件、網上傳真等等數據傳輸進行保密。

2. SSL Handshake

以下簡要介紹SSL協議的工作方式。客戶端要收發幾個握手信號:

發送一個ClientHello消息,說明它支持的密碼演算法列表、壓縮方法及最高協議版本,也發送稍後將被使用的隨機數。
然後收到一個ServerHello消息,包含伺服器選擇的連接參數,源自客戶端初期所提供的ClientHello。
當雙方知道了連接參數,客戶端與伺服器交換證書(依靠被選擇的公鑰系統)。這些證書通常基於X.509,不過已有草案支持以OpenPGP為基礎的證書。
伺服器請求客戶端公鑰。客戶端有證書即雙向身份認證,沒證書時隨機生成公鑰。

為SSL協商處理協定,用來協商伺服器和用戶端之間資料加密的演算法和身份識別的模式,主要的目的是讓通訊雙方進行交談協商,決定採用何種資料加密演算法與辨識通訊對方身份的模式,目前SSL有三種身份辨識模式如下:

  • 全匿名式
  • 經認證的伺服主機與未經認證的使用者
  • 通訊雙方均獲身份認證

SSL Handshake協定是執行SSL加密機制的前置步驟,其過程猶如初見面的兩人會互相打招呼,自我介紹一番後再進行對話協商一樣。 

3. SSL Key Derivation

客戶端與伺服器通過公鑰保密協商共同的主私鑰(雙方隨機協商),這通過精心謹慎設計的偽隨機數功能實現。結果可能使用Diffie-Hellman交換,或簡化的公鑰加密,雙方各自用私鑰解密。所有其他關鍵數據的加密均使用這個「主密鑰」。

4. SSL Data Transfer

透過TCP連線,SSL即時進行資料加密,然後再把加密後的資料轉交TCP。
而完整性檢查的MAC,SSL會將資料串流切割為記錄(record),然後將MAC附加在每一筆記錄上進行檢查,再將秘密紀錄+MAC。

5. SSL Record

數據傳輸中記錄層(Record layer)用於封裝更高層的HTTP等協議。記錄層數據可以被隨意壓縮、加密,與消息驗證碼壓縮在一起。每個記錄層包都有一個Content-Type段用以記錄更上層用的協議。

用來定義SSL內部資料的格式,並對資料進行解加密的服務。
由於SSL協定是介於應用層與網路層之間,因此它會接受來自上層應用層的訊息加以包裝成為一定的格式的記錄,再交由下層的網路層來傳送。
一個SSL記錄格式主要分為表頭與資料兩部份:

  • 表頭:包含了訊息的種類。訊息的時間與記錄的長度對資訊。
  • 資料:為傳送的資料,又包含了三部分:訊息驗認碼、實際傳輸資料、附加資料

6. Connection Closure