SSL

出自KMU Wiki

跳轉到: 導航, 搜索

SSL是種由一組訊息與規則所組成的協定,其中這些規則是關於訊息要何時要傳送(或不要傳送)。其中ClientHello訊息揭開通訊雙方之間的SSL通訊。用戶端會發出這個訊息來要求伺服器,使用SSL協定來開始協商所雙方需要的安全服務。

當伺服器收到 ClientHello 訊息時,它會回應一個 ServerHello 訊息給用戶端。ServerHello 訊息的內容與 ClientHello 訊息的內容幾乎相同,但是它們之間還有些微的重要差異。一般而言,用戶端會在 ClientHello 訊息內提出建議或選項給伺服器參考,而伺服器會從 ServerHello 訊息內的清單列表作出最後的決定。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
ServerHello元件:
Version              識別這次通訊要使用的SSL協定版本
RandomNumber 一個32位元的隨機亂數,這亂數用來作為密碼運算的種值。
SessionID          用來識別一個特定的SSL交談通訊。
CipherSuite        這次通訊使用的密碼參數。
CompressionMethod 識別這次通訊可使用的資料壓縮方法。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Version欄位是伺服器針對通訊做出最後決定的第一個實例。ClientHello訊息的Version欄位可以簡單地識別用戶端可支援的SSL版本有哪些;另一方面,ServerHello訊息的Version欄位則決定通訊要使用哪一個SSL版本。然而,伺服器並非完全隨意任選擇任何一版本的SSL協定,它不能挑選高於用戶端可支援的最高版本。如果用戶端不滿意伺服器的選擇,則它可能會中止這個通訊。幾乎所有SSL用戶端與伺服器皆可支援版本3.0的SSL協定。

ServerHello訊息的RandomNumber欄位本質上與ClientHello訊息的RandomNumber欄位相同,但是這個隨機亂數值是由伺服器所決定的。這個隨機亂數與用戶端的隨機亂數一樣,皆為重要密碼運算的種值。伺服器的種值與ClientHello訊息內的種值具有相同的性質。這個32元位組的欄位必須有4個位元組是由時間與日期所組成(避免重複相同的隨機亂數值);其餘位元組的內容應該要由一個達到特定密碼安全水準的隨機亂數產生器產生。