糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 响水县| 双江| 基隆市| 宜章县| 湖北省| 红安县| 台中县| 深泽县| 吉安县| 揭东县| 六枝特区| 邢台市| 额尔古纳市| 石门县| 永德县| 兴文县| 绥德县| 政和县| 壶关县| 四会市| 武夷山市| 乌鲁木齐市| 胶南市| 水城县| 乐清市| 清镇市| 西城区| 南平市| 当雄县| 邯郸市| 阜新市| 莱州市| 柘城县| 陆河县| 蒙自县| 沂南县| 师宗县| 阳山县| 山西省| 葵青区| 大英县|