SSL
SSL(Secure Sockets Layer安全套接層)及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。
Secure Socket Layer,為Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。只要3.0版本以上之I.E.或Netscape瀏覽器即可支持SSL。
當前版本為3.0。它已被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。
SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。
提供服務
- 認證用戶和服務器,確保數據發送到正確的客戶機和服務器
- 加密數據以防止數據中途被竊取
- 維護數據的完整性,確保數據在傳輸過程中不被改變
工作流程
服務器認證階段:
- 1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接;
- 2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;
- 3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密后傳給服務器;
- 4)服務器回復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:在此之前,服務器已經通過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名后的提問和其公開密鑰,從而向服務器提供認證。
SSL協議提供的安全通道有以下三個特性:
- 機密性:SSL協議使用密鑰加密通信數據。
- 可靠性:服務器和客戶都會被認證,客戶的認證是可選的。
- 完整性:SSL協議會對傳送的數據進行完整性檢查。
從SSL 協議所提供的服務及其工作流程可以看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利於商家而不利於消費者。在電子商務初級階段,由於運作電子商務的企業大多是信譽較高的大公司,因此這問題還沒有充分暴露出來。但隨着電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程中的單一認證問題就越來越突出。雖然在SSL3.0中通過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,但是SSL協議仍存在一些問題,比如,只能提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議並不能協調各方間的安全傳輸和信任關系。在這種情況下,Visa和 MasterCard兩大信用卡公組織制定了SET協議,為網上信用卡支付提供了全球性的標准。
SSL體系結構
SSL的體系結構中包含兩個協議子層,其中底層是SSL紀錄協議層(SSL Record Protocol Layer);高層是SSL握手協議層(SSL HandShake Protocol Layer)。SSL的協議棧如圖所示,其中陰影部分即SSL協議。[2]
SSL紀錄協議層的作用是為高層協議提供基本的安全服務。SSL紀錄協議針對HTTP協議進行了特別的設計,使得超文本的傳輸協議HTTP能夠在SSL運行。紀錄封裝各種高層協議,具體實施壓縮解壓縮、加密解密、計算和校驗MAC等與安全有關的操作。
SSL握手協議層包括SSL握手協議(SSL HandShake Protocol)、SSL密碼參數修改協議(SSL Change Cipher Spec Protocol)、應用數據協議(Application Data Protocol)和SSL告警協議(SSL Alert Protocol)。握手層的這些協議用於SSL管理信息的交換,允許應用協議傳送數據之間相互驗證,協商加密算法和生成密鑰等。SSL握手協議的作用是協調客戶和服務器的狀態,使雙方能夠達到狀態的同步。

SSL記錄協議
SSL紀錄協議(Record Protocol)為SSL連提供兩種服務。[2]
- (1)保密性:利用握手協議所定義的共享密鑰對SSL凈荷(Payload)加密。
- (2)完整性:利用握手協議所定義的共享的MAC密鑰來生成報文的鑒別碼(MAC)。
SSL的工作過程如下。
- (1)發送方的工作過程為:
- 從上次接受要發送的數據(包括各種消息和數據);
- 對信息進行分段,分成若干紀錄;
- 使用指定的壓縮算法進行數據壓縮(可選);
- 使用指定的MAC算法生成MAC;
- 使用指定的加密算法進行數據加密;
- 添加SSL紀錄協議的頭,發送數據。
- (2)接收方的工作過程為:
- 接收數據,從SSL紀錄協議的頭中獲取相關信息;
- 使用指定的解密算法解密數據;
- 使用指定的MAC算法校驗MAC;
- 使用壓縮算法對數據解壓縮(在需要進行);
- 將紀錄進行數據重組;
- 將數據發送給高層。
- SSL紀錄協議處理的最后一個步驟是附加一個SSL紀錄協議的頭,以便構成一個SSL紀錄。SSL紀錄協議頭中包含了SSL紀錄協議的若干控制信息。
SSL的會話狀態
- (1)SSL連接:用於提供某種類型的服務數據的傳輸,是一種點對點的關系。一般來說,連接的維持時間比較短暫,並且每個連接一定與某一個會話相關聯。
- (2)SSL會話:是指客戶和服務器之間的一個關聯關系。會話通過握手協議來創建。它定義了一組安全參數。
- (1)會話標識符:是由服務器選擇的任意字節序列,用於標識活動的會話或可恢復的會話狀態。
- (2)對方的證書:會話對方的X.509v3證書。該參數可為空。
- (3)壓縮算法:在加密之前用來壓縮數據的算法。
- (4)加密規約(Cipher Spec):用於說明對大塊數據進行加密采用的算法,以及計算MAC所采用的散列算法。
- (5)主密值:一個48字節長的秘密值,由客戶和服務器共享。
- (6)可重新開始的標識:用於指示會話是否可以用於初始化新的連接。
- (1)服務器和客戶器的隨機數:是服務器和客戶為每個連接選擇的用於標識連接的字節序列。
- (2)服務器寫MAC密值:服務器發送數據時,生成MAC
- (3)使用的密鑰,長度為128 bit。
- (4)客戶寫MAC密值,服務器發送數據時,用於數據加密的密鑰,長度為128 bit 。
- (5)客戶寫密鑰:客戶發送數據時,用於數據加密的密鑰,長度為128 bit。
- (6)初始化向量:當使用CBC模式的分組密文算法是=時,需要為每個密鑰維護初始化向量。
- (7)序列號:通信的每一端都為每個連接中的發送和接收報文維持着一個序列號。
Https協議介紹
HTTPS(Hypertext Transfer Protocol Secure)安全超文本傳輸協議
它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的完全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作為RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。。
https是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,https的安全基礎是SSL,因此加密的詳細內容請看SSL。
它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通訊方法,它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。
限制
它的安全保護依賴瀏覽器的正確實現以及服務器軟件、實際加密算法的支持.
一種常見的誤解是“銀行用戶在線使用https:就能充分徹底保障他們的銀行卡號不被偷竊。”實際上,與服務器的加密連接中能保護銀行卡號的部分,只有用戶到服務器之間的連接及服務器自身。並不能絕對確保服務器自己是安全的,這點甚至已被攻擊者利用,常見例子是模仿銀行域名的釣魚攻擊。少數罕見攻擊在網站傳輸客戶數據時發生,攻擊者嘗試竊聽數據於傳輸中。
商業網站被人們期望迅速盡早引入新的特殊處理程序到金融網關,僅保留傳輸碼(transaction number)。不過他們常常存儲銀行卡號在同一個數據庫里。那些數據庫和服務器少數情況有可能被未授權用戶攻擊和損害。[4]
