日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

SSL 握手协议详解

發(fā)布時(shí)間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSL 握手协议详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

這里重點(diǎn)介紹一下服務(wù)端的驗(yàn)證和密鑰交換。這個(gè)階段的前面的(a)證書 和(b)服務(wù)器密鑰交換是基于密鑰交換方法的。而在SSL中密鑰交換算法有6種:無(wú)效(沒(méi)有密鑰交換)、RSA、匿名Diffie-Hellman、暫時(shí)Diffie-Hellman、固定Diffie-Hellman、Fortezza。

  在階段1過(guò)程客戶端與服務(wù)端協(xié)商的過(guò)程中已經(jīng)確定使哪種密鑰交換算法。

  如果協(xié)商過(guò)程中確定使用RSA交換密鑰,那么過(guò)程如下圖:

  在開始SSl介紹之前,先給大家介紹幾個(gè)密碼學(xué)的概念和相關(guān)的知識(shí)。

  1、密碼學(xué)的相關(guān)概念

  • 密碼學(xué)(cryptography):目的是通過(guò)將信息編碼使其不可讀,從而達(dá)到安全性。
  • 明文(plain text):發(fā)送人、接受人和任何訪問(wèn)消息的人都能理解的消息。
  • 密文(cipher text):明文消息經(jīng)過(guò)某種編碼后,得到密文消息。
  • 加密(encryption):將明文消息變成密文消息。
  • 解密(decryption):將密文消息變成明文消息。
  • 算法:取一個(gè)輸入文本,產(chǎn)生一個(gè)輸出文本。
  • 加密算法:發(fā)送方進(jìn)行加密的算法。
  • 解密算法:接收方進(jìn)行解密的算法。
  • 密鑰(key):只有發(fā)送方和接收方理解的消息
  • 對(duì)稱密鑰加密(Symmetric Key Cryptography):加密與解密使用相同密鑰。
  • 非對(duì)稱密鑰加密(Asymmetric Key Cryptography):加密與解密使用不同密鑰。

  2、相關(guān)的加密算法介紹

  DES算法即數(shù)據(jù)加密標(biāo)準(zhǔn),也稱為數(shù)據(jù)加密算法。加密過(guò)程如下:

在SSL中會(huì)用到分組DES、三重DES算法等加密算法對(duì)數(shù)據(jù)進(jìn)行加密。當(dāng)然可以選用其他非DES加密算法,視情況而定,后面會(huì)詳細(xì)介紹。

3、密鑰交換算法

  使用對(duì)稱加密算法時(shí),密鑰交換是個(gè)大難題,所以Diffie和Hellman提出了著名的Diffie-Hellman密鑰交換算法。

  Diffie-Hellman密鑰交換算法原理:

(1)Alice與Bob確定兩個(gè)大素?cái)?shù)n和g,這兩個(gè)數(shù)不用保密 (2)Alice選擇另一個(gè)大隨機(jī)數(shù)x,并計(jì)算A如下:A=gx mod n (3)Alice將A發(fā)給Bob (4)Bob選擇另一個(gè)大隨機(jī)數(shù)y,并計(jì)算B如下:B=gy mod n (5)Bob將B發(fā)給Alice (6)計(jì)算秘密密鑰K1如下:K1=Bx mod n (7)計(jì)算秘密密鑰K2如下:K2=Ay mod n K1=K2,因此Alice和Bob可以用其進(jìn)行加解密

  RSA加密算法是基于這樣的數(shù)學(xué)事實(shí):兩個(gè)大素?cái)?shù)相乘容易,而對(duì)得到的乘積求因子則很難。加密過(guò)程如下:

(1)選擇兩個(gè)大素?cái)?shù)P、Q (2)計(jì)算N=P*Q (3)選擇一個(gè)公鑰(加密密鑰)E,使其不是(P-1)與(Q-1)的因子 (4)選擇私鑰(解密密鑰)D,滿足如下條件:(D*E) mod (P-1)(Q-1)=1 (5)加密時(shí),明文PT計(jì)算密文CT如下:CT=PTE mod N (6)解密時(shí),從密文CT計(jì)算明文PT如下:PT=CTDmodN 這也是SSL中會(huì)用一種密鑰交換算法。

3、散列算法:

  主要用于驗(yàn)證數(shù)據(jù)的完整性,即保證時(shí)消息在發(fā)送之后和接收之前沒(méi)有被篡改對(duì)于SSL中使用到的散列算法有MD5、SHA-1。

  4、數(shù)字證書:

  數(shù)字證書其實(shí)就是一個(gè)小的計(jì)算機(jī)文件,其作用類似于我們的身份證、護(hù)照,用于證明身份,在SSL中,使用數(shù)字證書來(lái)證明自己的身份,而不是偽造的。

  5、簡(jiǎn)單的總結(jié):

  在SSL中會(huì)使用密鑰交換算法交換密鑰;使用密鑰對(duì)數(shù)據(jù)進(jìn)行加密;使用散列算法對(duì)數(shù)據(jù)的完整性進(jìn)行驗(yàn)證,使用數(shù)字證書證明自己的身份。好了,下面開始介紹SSL協(xié)議。

  SSL介紹:

  安全套接字(Secure Socket Layer,SSL)協(xié)議是Web瀏覽器與Web服務(wù)器之間安全交換信息的協(xié)議,提供兩個(gè)基本的安全服務(wù):鑒別與保密。

  SSL是Netscape于1994年開發(fā)的,后來(lái)成為了世界上最著名的web安全機(jī)制,所有主要的瀏覽器都支持SSL協(xié)議。

  目前有三個(gè)版本:2、3、3.1,最常用的是第3版,是1995年發(fā)布的。

  SSL協(xié)議的三個(gè)特性

  ① 保密:在握手協(xié)議中定義了會(huì)話密鑰后,所有的消息都被加密。

  ② 鑒別:可選的客戶端認(rèn)證,和強(qiáng)制的服務(wù)器端認(rèn)證。

  ③ 完整性:傳送的消息包括消息完整性檢查(使用MAC)。

  SSL的位置

  SSL介于應(yīng)用層和TCP層之間。應(yīng)用層數(shù)據(jù)不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對(duì)從應(yīng)用層收到的數(shù)據(jù)進(jìn)行加密,并增加自己的SSL頭。

SSL的工作原理

  握手協(xié)議(Handshake protocol)

  記錄協(xié)議(Record protocol)

  警報(bào)協(xié)議(Alert protocol)

  1、握手協(xié)議

  握手協(xié)議是客戶機(jī)和服務(wù)器用SSL連接通信時(shí)使用的第一個(gè)子協(xié)議,握手協(xié)議包括客戶機(jī)與服務(wù)器之間的一系列消息。SSL中最復(fù)雜的協(xié)議就是握手協(xié)議。該協(xié)議允許服務(wù)器和客戶機(jī)相互驗(yàn)證,協(xié)商加密和MAC算法以及保密密鑰,用來(lái)保護(hù)在SSL記錄中發(fā)送的數(shù)據(jù)。握手協(xié)議是在應(yīng)用程序的數(shù)據(jù)傳輸之前使用的。

  每個(gè)握手協(xié)議包含以下3個(gè)字段

  (1)Type:表示10種消息類型之一

  (2)Length:表示消息長(zhǎng)度字節(jié)數(shù)

  (3)Content:與消息相關(guān)的參數(shù)

握手協(xié)議的4個(gè)階段

1.1 建立安全能力

  SSL握手的第一階段啟動(dòng)邏輯連接,建立這個(gè)連接的安全能力。首先客戶機(jī)向服務(wù)器發(fā)出client hello消息并等待服務(wù)器響應(yīng),隨后服務(wù)器向客戶機(jī)返回server hello消息,對(duì)client hello消息中的信息進(jìn)行確認(rèn)。

  Client hello消息包括Version,Random,Session id,Cipher suite,Compression method等信息。

ClientHello 客戶發(fā)送CilentHello信息,包含如下內(nèi)容:

  (1)客戶端可以支持的SSL最高版本號(hào)

  (2)一個(gè)用于生成主秘密的32字節(jié)的隨機(jī)數(shù)。(等會(huì)介紹主秘密是什么)

  (3)一個(gè)確定會(huì)話的會(huì)話ID。

  (4)一個(gè)客戶端可以支持的密碼套件列表。

  密碼套件格式:每個(gè)套件都以“SSL”開頭,緊跟著的是密鑰交換算法。用“With”這個(gè)詞把密鑰交換算法、加密算法、散列算法分開,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA, 表示把DHE_RSA(帶有RSA數(shù)字簽名的暫時(shí)Diffie-HellMan)定義為密鑰交換算法;把DES_CBC定義為加密算法;把SHA定義為散列算法。

  (5)一個(gè)客戶端可以支持的壓縮算法列表。

   ServerHello服務(wù)器用ServerHello信息應(yīng)答客戶,包括下列內(nèi)容

  (1)一個(gè)SSL版本號(hào)。取客戶端支持的最高版本號(hào)和服務(wù)端支持的最高版本號(hào)中的較低者。

  (2)一個(gè)用于生成主秘密的32字節(jié)的隨機(jī)數(shù)。(客戶端一個(gè)、服務(wù)端一個(gè))

  (3)會(huì)話ID

  (4)從客戶端的密碼套件列表中選擇的一個(gè)密碼套件

  (5)從客戶端的壓縮方法的列表中選擇的壓縮方法

  這個(gè)階段之后,客戶端服務(wù)端知道了下列內(nèi)容:

  (1)SSL版本

  (2)密鑰交換、信息驗(yàn)證和加密算法

  (3)壓縮方法

  (4)有關(guān)密鑰生成的兩個(gè)隨機(jī)數(shù)。

  1.2 服務(wù)器鑒別與密鑰交換

  服務(wù)器啟動(dòng)SSL握手第2階段,是本階段所有消息的唯一發(fā)送方,客戶機(jī)是所有消息的唯一接收方。該階段分為4步:

  (a)證書:服務(wù)器將數(shù)字證書和到根CA整個(gè)鏈發(fā)給客戶端,使客戶端能用服務(wù)器證書中的服務(wù)器公鑰認(rèn)證服務(wù)器。

  (b)服務(wù)器密鑰交換(可選):這里視密鑰交換算法而定

  (c)證書請(qǐng)求:服務(wù)端可能會(huì)要求客戶自身進(jìn)行驗(yàn)證。

  (d)服務(wù)器握手完成:第二階段的結(jié)束,第三階段開始的信號(hào)

?

這里重點(diǎn)介紹一下服務(wù)端的驗(yàn)證和密鑰交換。這個(gè)階段的前面的(a)證書 和(b)服務(wù)器密鑰交換是基于密鑰交換方法的。而在SSL中密鑰交換算法有6種:無(wú)效(沒(méi)有密鑰交換)、RSA、匿名Diffie-Hellman、暫時(shí)Diffie-Hellman、固定Diffie-Hellman、Fortezza。

  在階段1過(guò)程客戶端與服務(wù)端協(xié)商的過(guò)程中已經(jīng)確定使哪種密鑰交換算法。

  如果協(xié)商過(guò)程中確定使用RSA交換密鑰,那么過(guò)程如下圖:

  這個(gè)方法中,服務(wù)器在它的第一個(gè)信息中,發(fā)送了RSA加密/解密公鑰證書。不過(guò),因?yàn)轭A(yù)備主秘密是由客戶端在下一個(gè)階段生成并發(fā)送的,所以第二個(gè)信息是空的。注意,公鑰證書會(huì)進(jìn)行從服務(wù)器到客戶端的驗(yàn)證。當(dāng)服務(wù)器收到預(yù)備主秘密時(shí),它使用私鑰進(jìn)行解密。服務(wù)端擁有私鑰是一個(gè)證據(jù),可以證明服務(wù)器是一個(gè)它在第一個(gè)信息發(fā)送的公鑰證書中要求的實(shí)體。

  其他的幾種密鑰交換算法這里就不介紹了。可以參考Behrouz A.Forouzan著的《密碼學(xué)與網(wǎng)絡(luò)安全》。

  1.3 客戶機(jī)鑒別與密鑰交換:

  客戶機(jī)啟動(dòng)SSL握手第3階段,是本階段所有消息的唯一發(fā)送方,服務(wù)器是所有消息的唯一接收方。該階段分為3步:

  (a)證書(可選):為了對(duì)服務(wù)器證明自身,客戶要發(fā)送一個(gè)證書信息,這是可選的,在IIS中可以配置強(qiáng)制客戶端證書認(rèn)證。

  (b)客戶機(jī)密鑰交換(Pre-master-secret):這里客戶端將預(yù)備主密鑰發(fā)送給服務(wù)端,注意這里會(huì)使用服務(wù)端的公鑰進(jìn)行加密。

  (c)證書驗(yàn)證(可選),對(duì)預(yù)備秘密和隨機(jī)數(shù)進(jìn)行簽名,證明擁有(a)證書的公鑰。

  下面也重點(diǎn)介紹一下RSA方式的客戶端驗(yàn)證和密鑰交換。

  這種情況,除非服務(wù)器在階段II明確請(qǐng)求,否則沒(méi)有證書信息。客戶端密鑰交換方法包括階段II收到的由RSA公鑰加密的預(yù)備主密鑰。

  階段III之后,客戶要有服務(wù)器進(jìn)行驗(yàn)證,客戶和服務(wù)器都知道預(yù)備主密鑰。

  1.4 完成

  客戶機(jī)啟動(dòng)SSL握手第4階段,使服務(wù)器結(jié)束。該階段分為4步,前2個(gè)消息來(lái)自客戶機(jī),后2個(gè)消息來(lái)自服務(wù)器。

  1.5 密鑰生成的過(guò)程

  這樣握手協(xié)議完成,下面看下什么是預(yù)備主密鑰,主密鑰是怎么生成的。為了保證信息的完整性和機(jī)密性,SSL需要有六個(gè)加密秘密:四個(gè)密鑰和兩個(gè)IV。為了信息的可信性,客戶端需要一個(gè)密鑰(HMAC),為了加密要有一個(gè)密鑰,為了分組加密要一個(gè)IV,服務(wù)也是如此。SSL需要的密鑰是單向的,不同于那些在其他方向的密鑰。如果在一個(gè)方向上有攻擊,這種攻擊在其他方向是沒(méi)影響的。生成過(guò)程如下:

  2、記錄協(xié)議

  記錄協(xié)議在客戶機(jī)和服務(wù)器握手成功后使用,即客戶機(jī)和服務(wù)器鑒別對(duì)方和確定安全信息交換使用的算法后,進(jìn)入SSL記錄協(xié)議,記錄協(xié)議向SSL連接提供兩個(gè)服務(wù):

  (1)保密性:使用握手協(xié)議定義的秘密密鑰實(shí)現(xiàn)

  (2)完整性:握手協(xié)議定義了MAC,用于保證消息完整性

  記錄協(xié)議的過(guò)程:

  3、警報(bào)協(xié)議

  客戶機(jī)和服務(wù)器發(fā)現(xiàn)錯(cuò)誤時(shí),向?qū)Ψ桨l(fā)送一個(gè)警報(bào)消息。如果是致命錯(cuò)誤,則算法立即關(guān)閉SSL連接,雙方還會(huì)先刪除相關(guān)的會(huì)話號(hào),秘密和密鑰。每個(gè)警報(bào)消息共2個(gè)字節(jié),第1個(gè)字節(jié)表示錯(cuò)誤類型,如果是警報(bào),則值為1,如果是致命錯(cuò)誤,則值為2;第2個(gè)字節(jié)制定實(shí)際錯(cuò)誤類型。

  總結(jié)

  SSL中,使用握手協(xié)議協(xié)商加密和MAC算法以及保密密鑰 ,使用握手協(xié)議對(duì)交換的數(shù)據(jù)進(jìn)行加密和簽名,使用警報(bào)協(xié)議定義數(shù)據(jù)傳輸過(guò)程中,出現(xiàn)問(wèn)題如何去解決。

  整個(gè)過(guò)程比較復(fù)雜,如果大家有不理解和我敘述不周的地方,歡迎大家指正出來(lái)!

轉(zhuǎn)載于:https://www.cnblogs.com/sunfb/p/3443221.html

總結(jié)

以上是生活随笔為你收集整理的SSL 握手协议详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。