SSL 協(xié)議的握手和通訊
為了便于更好的認(rèn)識(shí)和理解 SSL 協(xié)議,這里著重介紹 SSL 協(xié)議的握手協(xié)議。SSL 協(xié)議既用到了公鑰加密技術(shù)又用到了對(duì)稱加密技術(shù),對(duì)稱加密技術(shù)雖然比公鑰加密技術(shù)的速度快,可是公鑰加密技術(shù)提供了更好的身份認(rèn)證技術(shù)。SSL 的握手協(xié)議非常有效的讓客戶和服務(wù)器之間完成相互之間的身份認(rèn)證,其主要過(guò)程如下:
① 客戶端的瀏覽器向服務(wù)器傳送客戶端 SSL 協(xié)議的版本號(hào),加密算法的種類,產(chǎn)生的隨機(jī)數(shù),以及其他服務(wù)器和客戶端之間通訊所需要的各種信息。
② 服務(wù)器向客戶端傳送 SSL 協(xié)議的版本號(hào),加密算法的種類,隨機(jī)數(shù)以及其他相關(guān)信息,同時(shí)服務(wù)器還將向客戶端傳送自己的證書。
③ 客戶利用服務(wù)器傳過(guò)來(lái)的信息驗(yàn)證服務(wù)器的合法性,服務(wù)器的合法性包括:證書是否過(guò)期,發(fā)行服務(wù)器證書的 CA 是否可靠,發(fā)行者證書的公鑰能否正確解開服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配。如果合法性驗(yàn)證沒(méi)有通過(guò),通訊將斷開;如果合法性驗(yàn)證通過(guò),將繼續(xù)進(jìn)行第四步。
④ 用戶端隨機(jī)產(chǎn)生一個(gè)用于后面通訊的“對(duì)稱密碼”,然后用服務(wù)器的公鑰(服務(wù)器的公鑰從步驟②中的服務(wù)器的證書中獲得)對(duì)其加密,然后將加密后的“預(yù)主密碼”傳給服務(wù)器。
⑤ 如果服務(wù)器要求客戶的身份認(rèn)證(在握手過(guò)程中為可選),用戶可以建立一個(gè)隨機(jī)數(shù)然后對(duì)其進(jìn)行數(shù)據(jù)簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶自己的證書以及加密過(guò)的“預(yù)主密碼”一起傳給服務(wù)器。
⑥ 如果服務(wù)器要求客戶的身份認(rèn)證,服務(wù)器必須檢驗(yàn)客戶證書和簽名隨機(jī)數(shù)的合法性,具體的合法性驗(yàn)證過(guò)程包括:客戶的證書使用日期是否有效,為客戶提供證書的 CA 是否可靠,發(fā)行 CA 的公鑰能否正確解開客戶證書的發(fā)行 CA 的數(shù)字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗(yàn)如果沒(méi)有通過(guò),通訊立刻中斷;如果驗(yàn)證通過(guò),服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來(lái)產(chǎn)生主通訊密碼(客戶端也將通過(guò)同樣的方法產(chǎn)生相同的主通訊密碼)。
⑦ 服務(wù)器和客戶端用相同的主密碼即“通話密碼”,一個(gè)對(duì)稱密鑰用于 SSL 協(xié)議的安全數(shù)據(jù)通訊的加解密通訊。同時(shí)在 SSL 通訊過(guò)程中還要完成數(shù)據(jù)通訊的完整性,防止數(shù)據(jù)通訊中的任何變化。
⑧ 客戶端向服務(wù)器端發(fā)出信息,指明后面的數(shù)據(jù)通訊將使用的步驟⑦中的主密碼為對(duì)稱密鑰,同時(shí)通知服務(wù)器客戶端的握手過(guò)程結(jié)束。
⑨ 服務(wù)器向客戶端發(fā)出信息,指明后面的數(shù)據(jù)通訊將使用的步驟⑦中的主密碼為對(duì)稱密鑰,同時(shí)通知客戶端服務(wù)器端的握手過(guò)程結(jié)束。
⑩ SSL 的握手部分結(jié)束,SSL 安全通道的數(shù)據(jù)通訊開始,客戶和服務(wù)器開始使用相同的對(duì)稱密鑰進(jìn)行數(shù)據(jù)通訊,同時(shí)進(jìn)行通訊完整性的檢驗(yàn)。
雙向認(rèn)證 SSL 協(xié)議的具體過(guò)程
① 瀏覽器發(fā)送一個(gè)連接請(qǐng)求給安全服務(wù)器。
② 服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。
③ 客戶瀏覽器檢查服務(wù)器送過(guò)來(lái)的證書是否是由自己信賴的 CA 中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一個(gè)警告消息:警告客戶這個(gè)證書不是可以信賴的,詢問(wèn)客戶是否需要繼續(xù)。
④ 接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個(gè)服務(wù)器的合法身份。
⑤ 服務(wù)器要求客戶發(fā)送客戶自己的證書。收到后,服務(wù)器驗(yàn)證客戶的證書,如果沒(méi)有通過(guò)驗(yàn)證,拒絕連接;如果通過(guò)驗(yàn)證,服務(wù)器獲得用戶的公鑰。
⑥ 客戶瀏覽器告訴服務(wù)器自己所能夠支持的通訊對(duì)稱密碼方案。
⑦ 服務(wù)器從客戶發(fā)送過(guò)來(lái)的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過(guò)密后通知瀏覽器。
⑧ 瀏覽器針對(duì)這個(gè)密碼方案,選擇一個(gè)通話密鑰,接著用服務(wù)器的公鑰加過(guò)密后發(fā)送給服務(wù)器。
⑨ 服務(wù)器接收到瀏覽器送過(guò)來(lái)的消息,用自己的私鑰解密,獲得通話密鑰。
⑩ 服務(wù)器、瀏覽器接下來(lái)的通訊都是用對(duì)稱密碼方案,對(duì)稱密鑰是加過(guò)密的。
上面所述的是雙向認(rèn)證 SSL 協(xié)議的具體通訊過(guò)程,這種情況要求服務(wù)器和用戶雙方都有證書。單向認(rèn)證 SSL 協(xié)議不需要客戶擁有 CA 證書,具體的過(guò)程相對(duì)于上面的步驟,只需將服務(wù)器端驗(yàn)證客戶證書的過(guò)程去掉,以及在協(xié)商對(duì)稱密碼方案,對(duì)稱通話密鑰時(shí),服務(wù)器發(fā)送給客戶的是沒(méi)有加過(guò)密的(這并不影響 SSL 過(guò)程的安全性)密碼方案。 這樣,雙方具體的通訊內(nèi)容,就是加過(guò)密的數(shù)據(jù),如果有第三方攻擊,獲得的只是加密的數(shù)據(jù),第三方要獲得有用的信息,就需要對(duì)加密的數(shù)據(jù)進(jìn)行解密,這時(shí)候的安全就依賴于密碼方案的安全。而幸運(yùn)的是,目前所用的密碼方案,只要通訊密鑰長(zhǎng)度足夠的長(zhǎng),就足夠的安全。這也是我們強(qiáng)調(diào)要求使用 128 位加密通訊的原因。
證 書 各 部 分 的 含 義
Version 證書版本號(hào),不同版本的證書格式不同
Serial Number 序列號(hào),同一身份驗(yàn)證機(jī)構(gòu)簽發(fā)的證書序列號(hào)唯一
Algorithm Identifier 簽名算法,包括必要的參數(shù) Issuer 身份驗(yàn)證機(jī)構(gòu)的標(biāo)識(shí)信息
Period of Validity 有效期
Subject 證書持有人的標(biāo)識(shí)信息
Subject’s Public Key 證書持有人的公鑰
Signature 身份驗(yàn)證機(jī)構(gòu)對(duì)證書的簽名
證書的格式 認(rèn)證中心所發(fā)放的證書均遵循 X.509 V3 標(biāo)準(zhǔn),其基本格式如下:
證書版本號(hào)(Certificate Format Version) 含義:用來(lái)指定證書格式采用的 X.509 版本號(hào)。
證書序列號(hào)(Certificate Serial Number) 含義:用來(lái)指定證書的唯一序列號(hào),以標(biāo)識(shí) CA 發(fā)出的所有公鑰證書。
簽名(Signature) 算法標(biāo)識(shí)(Algorithm Identifier) 含義:用來(lái)指定 CA 簽發(fā)證書所用的簽名算法。
簽發(fā)此證書的 CA 名稱(Issuer ) 含義:用來(lái)指定簽發(fā)證書的 CA 的 X.500 唯一名稱(DN, Distinguished Name)。
證書有效期(Validity Period) 起始日期(notBefore) 終止日期(notAfter) 含義:用來(lái)指定證書起始日期和終止日期。
用戶名稱(Subject) 含義:用來(lái)指定證書用戶的 X.500 唯一名稱(DN,Distinguished Name)。
用戶公鑰信息(Subject Public Key Information) 算法(algorithm) 算法標(biāo)識(shí)(Algorithm Identifier) 用戶公鑰(subject Public Key) 含義:用來(lái)標(biāo)識(shí)公鑰使用的算法,并包含公鑰本身。
證書擴(kuò)充部分(擴(kuò)展域)(Extensions) 含義:用來(lái)指定額外信息。
X.509 V3 證書的擴(kuò)充部分(擴(kuò)展域)及實(shí)現(xiàn)方法如下: CA 的公鑰標(biāo)識(shí)(Authority Key Identifier) 公鑰標(biāo)識(shí)(SET 未使用)(Key Identifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(Certificate Issuer) 簽發(fā)證書者證書的序列號(hào)(Certificate Serial Number)
X.509 V3 證書的擴(kuò)充部分(擴(kuò)展域)及實(shí)現(xiàn)CA 的公鑰標(biāo)識(shí)(Authority Key Identifier) 公鑰標(biāo)識(shí)(SET 未使用)(Key Identifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(Certificat簽發(fā)證書者證書的序列號(hào)(Certificate Serial N含義:CA 簽名證書所用的密鑰對(duì)的唯一標(biāo)識(shí)用戶的公鑰標(biāo)識(shí)(Subject Key Identifier) 含義:用來(lái)標(biāo)識(shí)與證書中公鑰相關(guān)的特定密鑰進(jìn)行解密。 證書中的公鑰用途(Key Usage) 含義:用來(lái)指定公鑰用途。
用戶的私鑰有效期(Private Key Usage Period) 起始日期(Note Before) 終止日期(Note After) 含義:用來(lái)指定用戶簽名私鑰的起始日期和終止日期。 CA 承認(rèn)的證書政策列表(Certificate Policies) 含義:用來(lái)指定用戶證書所適用的政策,證書政策可由對(duì)象標(biāo)識(shí)符表示。 用戶的代用名(Substitutional Name) 含義:用來(lái)指定用戶的代用名。 CA 的代用名(Issuer Alt Name) 含義:用來(lái)指定 CA 的代用名。 基本制約(Basic Constraints) 含義:用來(lái)表明證書用戶是最終用戶還是 CA。 在 SET 系統(tǒng)中有一些私有擴(kuò)充部分(擴(kuò)展域)Hashed Root Key 含義:只在根證書中使用,用于證書更新時(shí)進(jìn)行回溯。 證書類型(Certificate Type) 含義:用來(lái)區(qū)別不同的實(shí)體。該項(xiàng)是必選的。 商戶數(shù)據(jù)(Merchant Data) 含義:包含支付網(wǎng)關(guān)需要的所有商戶信息。 持卡人證書需求(Card Cert Required) 含義:顯示支付網(wǎng)關(guān)是否支持與沒(méi)有證書的持卡人進(jìn)行交易。 SET 擴(kuò)展(SETExtensions) 含義:列出支付網(wǎng)關(guān)支持的支付命令的 SET 信息擴(kuò)展。 CRL 數(shù)據(jù)定義版本(Version) 含義:顯示 CRL 的版本號(hào)。
CRL 的簽發(fā)者(Issuer) 含義:指明簽發(fā) CRL 的 CA 的甄別名。 CRL 發(fā)布時(shí)間(this Update) 預(yù)計(jì)下一個(gè) CRL 更新時(shí)間(Next Update) 撤銷證書信息目錄(Revoked Certificates) CRL 擴(kuò)展(CRL Extension) CA 的公鑰標(biāo)識(shí)(Authority Key Identifier) CRL 號(hào)(CRL Number)
|