HTTPS協(xié)議之通信加密過(guò)程分析

一、準(zhǔn)備知識(shí)

在開(kāi)始介紹前,需要首先了解一下消息摘要、數(shù)字簽名、數(shù)字證書(shū)的知識(shí)

1、消息摘要 - Message Digest

消息摘要(Message Digest) ,又稱(chēng)數(shù)字摘要(Digital Digest)或數(shù)字指紋(Finger Print)。簡(jiǎn)單來(lái)說(shuō),消息摘要就是在消息數(shù)據(jù)上,執(zhí)行一個(gè)單向的Hash函數(shù),生成一個(gè)固定長(zhǎng)度的Hash值,這個(gè)Hash值即是消息摘要,Hash算法有MD5,SHA。它有以下特征:

  • 無(wú)論輸入的消息有多長(zhǎng),計(jì)算出來(lái)的消息摘要的長(zhǎng)度總是固定的。例如應(yīng)用MD5算法摘要的消息有128個(gè)比特位,用SHA-1算法摘要的消息最終有160比特位的輸出,SHA-1的變體可以產(chǎn)生192比特位和256比特位的消息摘要。一般認(rèn)為,摘要的最終輸出越長(zhǎng),該摘要算法就越安全。

  • 消息摘要看起來(lái)是“隨機(jī)的”。這些比特看上去是胡亂的雜湊在一起的。可以用大量的輸入來(lái)檢驗(yàn)其輸出是否相同,一般,不同的輸入會(huì)有不同的輸出,而且輸出的摘要消息可以通過(guò)隨機(jī)性檢驗(yàn)。但是,一個(gè)摘要并不是真正隨機(jī)的,因?yàn)橛孟嗤乃惴▽?duì)相同的消息求兩次摘要,其結(jié)果必然相同;而若是真正隨機(jī)的,則無(wú)論如何都是無(wú)法重現(xiàn)的。因此消息摘要是“偽隨機(jī)的”。

  • 消息摘要函數(shù)是單向函數(shù),即只能進(jìn)行正向的信息摘要,而無(wú)法從摘要中恢復(fù)出任何的消息,甚至根本就找不到任何與原信息相關(guān)的信息。當(dāng)然,可以采用強(qiáng)力攻擊的方法,即嘗試每一個(gè)可能的信息,計(jì)算其摘要,看看是否與已有的摘要相同,如果這樣做,最終肯定會(huì)恢復(fù)出摘要的消息。但實(shí)際上,要得到的信息可能是無(wú)窮個(gè)消息之一,所以這種強(qiáng)力攻擊幾乎是無(wú)效的。好的摘要算法,沒(méi)有人能從中找到“碰撞”,雖然“碰撞”是肯定存在的(由于長(zhǎng)明文生成短摘要的Hash必然會(huì)產(chǎn)生碰撞)。

正是由于以上特點(diǎn),消息摘要算法被廣泛應(yīng)用在“數(shù)字簽名”領(lǐng)域,作為對(duì)明文的摘要算法。著名的消息摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的變體。

2、數(shù)字簽名 - Signature

數(shù)字簽名方案是一種以電子形式存儲(chǔ)消息簽名的方法。一個(gè)完整的數(shù)字簽名方案應(yīng)該由兩部分組成:簽名算法和驗(yàn)證算法。在講數(shù)字簽名之前,我們先簡(jiǎn)單介紹幾個(gè)相關(guān)知識(shí)點(diǎn):“公鑰密碼體制”、“對(duì)稱(chēng)加密算法”、“非對(duì)稱(chēng)加密算法”。

公鑰密碼體制(public-key cryptography):

公鑰密碼體制分為三個(gè)部分,公鑰、私鑰、加密解密算法,它的加密解密過(guò)程如下:

加密:通過(guò)加密算法和公鑰對(duì)內(nèi)容(或者說(shuō)明文)進(jìn)行加密,得到密文。加密過(guò)程需要用到公鑰。

解密:通過(guò)解密算法和私鑰對(duì)密文進(jìn)行解密,得到明文。解密過(guò)程需要用到解密算法和私鑰。注意,由公鑰加密的內(nèi)容,只能由私鑰進(jìn)行解密,也就是說(shuō),由公鑰加密的內(nèi)容,如果不知道私鑰,是無(wú)法解密的。

公鑰密碼體制的公鑰和算法都是公開(kāi)的(這是為什么叫公鑰密碼體制的原因),私鑰是保密的。大家都以使用公鑰進(jìn)行加密,但是只有私鑰的持有者才能解密。在實(shí)際 的使用中,有需要的人會(huì)生成一對(duì)公鑰和私鑰,把公鑰發(fā)布出去給別人使用,自己保留私鑰。目前使用最廣泛的公鑰密碼體制是RSA密碼體制。

對(duì)稱(chēng)加密算法(symmetric key algorithms):

在對(duì)稱(chēng)加密算法中,加密和解密都是使用的同一個(gè)密鑰。因此對(duì)稱(chēng)加密算法要保證安全性的話,密鑰要做好保密,只能讓使用的人知道,不能對(duì)外公開(kāi)。

非對(duì)稱(chēng)加密算法(asymmetric key algorithms):

在非對(duì)稱(chēng)加密算法中,加密使用的密鑰和解密使用的密鑰是不相同的。前面所說(shuō)的公鑰密碼體制就是一種非對(duì)稱(chēng)加密算法,他的公鑰和是私鑰是不能相同的,也就是說(shuō)加密使用的密鑰和解密使用的密鑰不同,因此它是一個(gè)非對(duì)稱(chēng)加密算法。

RSA簡(jiǎn)介:

RSA密碼體制是一種公鑰密碼體制,公鑰公開(kāi),私鑰保密,它的加密解密算法是公開(kāi)的。 由公鑰加密的內(nèi)容可以并且只能由私鑰進(jìn)行解密,而由私鑰加密的內(nèi)容可以并且只能由公鑰進(jìn)行解密。也就是說(shuō),RSA的這一對(duì)公鑰、私鑰都可以用來(lái)加密和解密,并且一方加密的內(nèi)容可以由并且只能由對(duì)方進(jìn)行解密。

加密:公鑰加密,私鑰解密的過(guò)程,稱(chēng)為“加密”。因?yàn)楣€是公開(kāi)的,任何公鑰持有者都可以將想要發(fā)送給私鑰持有者的信息進(jìn)行加密后發(fā)送,而這個(gè)信息只有私鑰持有者才能解密。

簽名: 私鑰加密,公鑰解密的過(guò)程,稱(chēng)為“簽名”。它和加密有什么區(qū)別呢?因?yàn)楣€是公開(kāi)的,所以任何持有公鑰的人都能解密私鑰加密過(guò)的密文,所以這個(gè)過(guò)程并不能 保證消息的安全性,但是它卻能保證消息來(lái)源的準(zhǔn)確性和不可否認(rèn)性,也就是說(shuō),如果使用公鑰能正常解密某一個(gè)密文,那么就能證明這段密文一定是由私鑰持有者 發(fā)布的,而不是其他第三方發(fā)布的,并且私鑰持有者不能否認(rèn)他曾經(jīng)發(fā)布過(guò)該消息。故此將該過(guò)程稱(chēng)為“簽名”。

數(shù)字簽名

事實(shí)上,任何一個(gè)公鑰密碼體制都可以單獨(dú)地作為一種數(shù)字簽名方案使用。如RSA作為數(shù)字簽名方案使用時(shí),可以定義如下:

這種簽名實(shí)際上就是用信源的私鑰加密消息,加密后的消息即成了簽體;而用對(duì)應(yīng)的公鑰進(jìn) 行驗(yàn)證,若公鑰解密后的消息與原來(lái)的消息相同,則消息是完整的,否則消息不完整。它正好和公鑰密碼體制用于消息保密是相反的過(guò)程。因?yàn)橹挥行旁床艙碛凶约旱乃借€,別人無(wú)法重新加密源消息,所以即使有人截獲且更改了源消息,也無(wú)法重新生成簽體,因?yàn)橹挥杏眯旁吹乃借€才能形成正確地簽體。同樣信宿只要驗(yàn)證用信源的公鑰解密的消息是否與明文消息相同,就可以知道消息是否被更改過(guò),而且可以認(rèn)證消息是否是確實(shí)來(lái)自意定的信源,還可以使信源不能否認(rèn)曾經(jīng)發(fā)送的消息。所以 這樣可以完成數(shù)字簽名的功能。

但這種方案過(guò)于單純,它僅可以保證消息的完整性,而無(wú)法確保消息的保密性。而且這種方案要對(duì)所有的消息進(jìn)行加密操作,這在消息的長(zhǎng)度比較大時(shí),效率是非常低的,主要原因在于公鑰體制的加解密過(guò)程的低效性。所以這種方案一般不可取。

幾乎所有的數(shù)字簽名方案都要和快速高效的摘要算法(Hash函數(shù))一起使用,當(dāng)公鑰算法與摘要算法結(jié)合起來(lái)使用時(shí),便構(gòu)成了一種有效地?cái)?shù)字簽名方案。

這個(gè)過(guò)程是:

  1. 用摘要算法對(duì)消息進(jìn)行摘要。

  2. 再把摘要值用信源的私鑰加密。

通過(guò)以上兩步得到的消息就是所謂的原始信息的數(shù)字簽名,發(fā)送者需要將原始信息和數(shù)字簽名一同發(fā)送給接收者。而接收者在接收到原始信息和數(shù)字簽名后,通過(guò)以下3步驗(yàn)證消息的真?zhèn)危?/p>

  1. 先把接收到的原始消息用同樣的摘要算法摘要,形成“準(zhǔn)簽體”。

  2. 對(duì)附加上的那段數(shù)字簽名,使用預(yù)先得到的公鑰解密。

  3. 比較前兩步所得到的兩段消息是否一致。如果一致,則表明消息確實(shí)是期望的發(fā)送者發(fā)的,且內(nèi)容沒(méi)有被篡改過(guò);相反,如果不一致,則表明傳送的過(guò)程中一定出了問(wèn)題,消息不可信。

這種方法使公鑰加密只對(duì)消息摘要進(jìn)行操作,因?yàn)橐环N摘要算法的摘要消息長(zhǎng)度是固定的,而且都比較“短”(相對(duì)于消息而言),正好符合公鑰加密的要求。這樣效率得到了提高,而其安全性也并未因?yàn)槭褂谜惴ǘ鴾p弱。

綜上所述,數(shù)字簽名是非對(duì)稱(chēng)加密技術(shù) + 消息摘要技術(shù)的結(jié)合。

3、數(shù)字證書(shū) - Certificate

通過(guò)數(shù)字簽名技術(shù),確實(shí)可以解決可靠通信的問(wèn)題。一旦驗(yàn)簽通過(guò),接收者就能確信該消息是期望的發(fā)送者發(fā)送的,而發(fā)送者也不能否認(rèn)曾經(jīng)發(fā)送過(guò)該消息。大家有沒(méi)有注意到,前面講的數(shù)字簽名方法,有一個(gè)前提,就是消息的接收者必須事先得到正確的公鑰。如果一開(kāi)始公鑰就被別人篡改了,那壞人就會(huì)被你當(dāng)成好人,而真正的消息發(fā)送者給你發(fā)的消息會(huì)被你視作無(wú)效的。而且,很多時(shí)候根本就不具備事先溝通公鑰的信息通道。那么如何保證公鑰的安全可信呢?這就要靠數(shù)字證書(shū)來(lái)解決了。

數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)(Certificate Authentication)中心數(shù)字簽名的包含公鑰擁有者信息以及公鑰的文件。數(shù)字證書(shū)的格式普遍采用的是X.509V3國(guó)際標(biāo)準(zhǔn),一個(gè)標(biāo)準(zhǔn)的X.509數(shù)字證書(shū)通常包含以下內(nèi)容:

  • 證書(shū)的發(fā)布機(jī)構(gòu)(Issuer)
    - 該證書(shū)是由哪個(gè)機(jī)構(gòu)(CA中心)頒發(fā)的。

  • 證書(shū)的有效期(Validity)
    - 證書(shū)的有效期,或者說(shuō)使用期限。過(guò)了該日期,證書(shū)就失效了。

  • 證書(shū)所有人的公鑰(Public-Key)
    - 該證書(shū)所有人想要公布出去的公鑰。

  • 證書(shū)所有人的名稱(chēng)(Subject)
    - 這個(gè)證書(shū)是發(fā)給誰(shuí)的,或者說(shuō)證書(shū)的所有者,一般是某個(gè)人或者某個(gè)公司名稱(chēng)、機(jī)構(gòu)的名稱(chēng)、公司網(wǎng)站的網(wǎng)址等。

  • 證書(shū)所使用的簽名算法(Signature algorithm)
    - 這個(gè)數(shù)字證書(shū)的數(shù)字簽名所使用的加密算法,這樣就可以使用證書(shū)發(fā)布機(jī)構(gòu)的證書(shū)里面的公鑰,根據(jù)這個(gè)算法對(duì)指紋進(jìn)行解密。

  • 證書(shū)發(fā)行者對(duì)證書(shū)的數(shù)字簽名(Thumbprint)
    - 也就是該數(shù)字證書(shū)的指紋,用于保證數(shù)字證書(shū)的完整性,確保證書(shū)沒(méi)有被修改過(guò)。其原理就是在發(fā)布證書(shū)時(shí),CA機(jī)構(gòu)會(huì)根據(jù)簽名算法(Signature algorithm)對(duì)整個(gè)證書(shū)計(jì)算其hash值(指紋)并和證書(shū)放在一起,使用者打開(kāi)證書(shū)時(shí),自己也根據(jù)簽名算法計(jì)算一下證書(shū)的hash值(指紋),如 果和證書(shū)中記錄的指紋對(duì)的上,就說(shuō)明證書(shū)沒(méi)有被修改過(guò)。

可以看出,數(shù)字證書(shū)本身也用到了數(shù)字簽名技術(shù),只不過(guò)簽名的內(nèi)容是 整個(gè)證書(shū)(里面包含了證書(shū)所有者的公鑰以及其他一些內(nèi)容)。與普通數(shù)字簽名不同的是,數(shù)字證書(shū)的簽名者不是隨隨便便一個(gè)普通機(jī)構(gòu),而是CA機(jī)構(gòu)。這就好像 你的大學(xué)畢業(yè)證書(shū)上簽名的一般都是德高望重的校長(zhǎng)一樣。一般來(lái)說(shuō),這些CA機(jī)構(gòu)的根證書(shū)已經(jīng)在設(shè)備出廠前預(yù)先安裝到了你的設(shè)備上了。所以,數(shù)字證書(shū)可以保 證證書(shū)里的公鑰確實(shí)是這個(gè)證書(shū)所有者的,或者證書(shū)可以用來(lái)確認(rèn)對(duì)方的身份。可見(jiàn),數(shù)字證書(shū)主要是用來(lái)解決公鑰的安全發(fā)放問(wèn)題。

HTTPS加密過(guò)程

建議可以在電腦上安裝一下Woreshark,這個(gè)軟件方便直觀的觀察加密流程。

https:在http(超文本傳輸協(xié)議)基礎(chǔ)上提出的一種安全的http協(xié)議,因此可以稱(chēng)為安全的超文本傳輸協(xié)議。http協(xié)議直接放置在TCP協(xié)議之上,而https提出在http和TCP中間加上一層加密層。從發(fā)送端看,這一層負(fù)責(zé)把http的內(nèi)容加密后送到下層的TCP,從接收方看,這一層負(fù)責(zé)將TCP送來(lái)的數(shù)據(jù)解密還原成http的內(nèi)容。

SSL(Secure Socket Layer):是Netscape公司設(shè)計(jì)的主要用于WEB的安全傳輸協(xié)議。從名字就可以看出它在https協(xié)議棧中負(fù)責(zé)實(shí)現(xiàn)上面提到的加密層。因此,一個(gè)https協(xié)議棧大致是這樣的:
image

密鑰交換/協(xié)商機(jī)制的幾種類(lèi)型

  • 依靠非對(duì)稱(chēng)加密算法
    原理:拿到公鑰的一方先生成隨機(jī)的會(huì)話密鑰,然后利用公鑰加密它;再把加密結(jié)果發(fā)給對(duì)方,對(duì)方用私鑰解密;于是雙方都得到了會(huì)話密鑰。
    舉例:RSA

  • 依靠專(zhuān)門(mén)的密鑰交換算法
    原理:這個(gè)比較復(fù)雜,一兩句話說(shuō)不清楚,待會(huì)兒聊到 DH 的那個(gè)章節(jié)會(huì)詳談。
    舉例:DH(Diffie–Hellman的簡(jiǎn)寫(xiě)),ECDH(DH 的變種)

基于RSA的秘鑰交換

這大概是 SSL 最古老的密鑰協(xié)商方式(我更傾向稱(chēng)之為秘鑰交換)——早期的 SSLv2 只支持一種密鑰協(xié)商機(jī)制,就是它。交換過(guò)程如下:

image.png

現(xiàn)在,假設(shè)A與B通信,A是SSL客戶(hù)端(上圖左側(cè)),B是SSL服務(wù)器端(上圖右側(cè)):

A(客戶(hù)端):我想和你(服務(wù)端)安全的通話,我支持的加密算法組合有這些,并生成了一隨機(jī)數(shù)Client Random(把消息封裝成Client Hello發(fā)送給B)。

B(服務(wù)端):我們用ECDHE-RSA-SHA這對(duì)組合好了,我也生成一個(gè)隨機(jī)值Server Random(把消息封裝成Server Hello發(fā)送給A)。

B(服務(wù)端):這是我的證書(shū),里面有我的信息和公鑰,你拿去驗(yàn)證一下我的身份吧(把證書(shū)Certificate發(fā)給A)。

A(客戶(hù)端):(收到B發(fā)來(lái)的加密方式和證書(shū)Certificate,驗(yàn)證B的證書(shū)的真實(shí)性,如果其中一項(xiàng)有誤,發(fā)出警告并斷開(kāi)連接,這一步保證了B的公鑰的真實(shí)性,至于如何驗(yàn)證下面詳細(xì)講)
確認(rèn)數(shù)字證書(shū)有效,然后生成一個(gè)新的隨機(jī)數(shù)(Premaster secret),并使用數(shù)字證書(shū)中的公鑰加密了這個(gè)隨機(jī)數(shù),發(fā)給服務(wù)器B。

接著,A和B分別根據(jù)約定的加密方法,使用前面的三個(gè)隨機(jī)數(shù)(Client Random,Server Random,Premaster secret),生成"對(duì)話密鑰"(session key),用來(lái)加密接下來(lái)的整個(gè)對(duì)話過(guò)程。

握手階段有三點(diǎn)需要注意:

(1)生成對(duì)話密鑰一共需要三個(gè)隨機(jī)數(shù)。

(2)握手之后的對(duì)話使用"對(duì)話密鑰"加密(對(duì)稱(chēng)加密),服務(wù)器的公鑰和私鑰只用于加密和解密"對(duì)話密鑰"(非對(duì)稱(chēng)加密),無(wú)其他作用。

(3)服務(wù)器公鑰放在服務(wù)器的數(shù)字證書(shū)之中。

通過(guò)上面的分析,可以看到整個(gè)握手階段都不加密(也沒(méi)法加密),都是明文的。因此,如果有人竊聽(tīng)通信,他可以知道雙方選擇的加密方法,以及三個(gè)隨機(jī)數(shù)中的兩個(gè)。整個(gè)通話的安全,只取決于第三個(gè)隨機(jī)數(shù)(Premaster secret)能不能被破解。

雖然理論上,只要服務(wù)器的公鑰足夠長(zhǎng)(比如2048位),那么Premaster secret可以保證不被破解。但是為了足夠安全,我們可以考慮把握手階段的算法從默認(rèn)的RSA算法,改為 Diffie-Hellman算法(簡(jiǎn)稱(chēng)DH算法)。

基于DH(ECDH,ECDHE)算法的秘鑰協(xié)商

DH 算法又稱(chēng)“Diffie–Hellman 算法”。這是兩位數(shù)學(xué)牛人的名稱(chēng),他們創(chuàng)立了這個(gè)算法。該算法用來(lái)實(shí)現(xiàn)【安全的】“密鑰交換”。它可以做到——“通訊雙方在完全沒(méi)有對(duì)方任何預(yù)先信息的條件下通過(guò)不安全信道創(chuàng)建起一個(gè)密鑰”。這句話比較繞口。
先看看DH的具體算法:

通訊雙方(張三、李四)需要先約定好算法參數(shù)(algorithm parameters):一個(gè)素?cái)?shù) p 作為模數(shù),一個(gè)素?cái)?shù) g 作為基數(shù)(g 也稱(chēng)為“生成元”)。這兩個(gè)算法參數(shù)是可以對(duì)外公開(kāi)滴。
  對(duì)于張三而言,需要先想好一個(gè)秘密的自然數(shù) a 作為私鑰(不能公開(kāi)),然后計(jì)算 A = g^a mod p 作為自己的公鑰(可以公開(kāi))。
  對(duì)李四而言也類(lèi)似,先想好一個(gè)秘密的自然數(shù) b 作為私鑰(不能公開(kāi)),然后計(jì)算 B = g^b mod p 作為自己的公鑰(可以公開(kāi))。
  張三和李四互相交換各自的公鑰。
  然后張三計(jì)算出 k = Ba mod p,李四計(jì)算出 k = Ab mod p

該算法至少確保了如下幾點(diǎn):

  1. 張三和李四分別計(jì)算出來(lái)的 k 必定是一致的
  2. 張三和李四都無(wú)法根據(jù)已知的數(shù)來(lái)推算出對(duì)方的私鑰(張三無(wú)法推算出 b,李四無(wú)法推算出 a)
  3. 對(duì)于一個(gè)旁觀者(偷窺者),雖然能看到 p,g,A,B,但是無(wú)法推算出 a 和 b(就是說(shuō),旁觀者無(wú)法推算出雙方的私鑰),自然也無(wú)法推算出 k

采用DH算法后,Premaster secret不需要傳遞,雙方只要交換各自的參數(shù),就可以算出這個(gè)隨機(jī)數(shù)。

ECDH是DH算法一個(gè)變種,它是ECC算法和DH的結(jié)合。ECC是建立在基于橢圓曲線的離散對(duì)數(shù)問(wèn)題上的密碼體制,給定橢圓曲線上的一個(gè)點(diǎn)P,一個(gè)整數(shù)k,求解Q=kP很容易;給定一個(gè)點(diǎn)P、Q,知道Q=kP,求整數(shù)k確是一個(gè)難題。所以看得出DH 依賴(lài)的是——求解“離散對(duì)數(shù)問(wèn)題”的困難,而ECDH 依賴(lài)的就是——求解“橢圓曲線離散對(duì)數(shù)問(wèn)題”的困難。DHECDH的主要的作用就是在通信雙方發(fā)送一些公有參數(shù),保留私有參數(shù),而后通過(guò)一系列計(jì)算雙方都能夠得到一個(gè)一致的結(jié)果。而這個(gè)運(yùn)算的逆運(yùn)算復(fù)雜度過(guò)高,在有限時(shí)間內(nèi)不可解(至少量子計(jì)算機(jī)問(wèn)世以前不可解),以保證密鑰安全性。在實(shí)際使用過(guò)程中我們可能更多的會(huì)看到ECDHE這個(gè)詞,這個(gè)多出來(lái)的E的意思是指每次公鑰都隨機(jī)生成,可以說(shuō)是對(duì)ECDH的一個(gè)升級(jí)版,算法是一樣的。

讓我們領(lǐng)略一下ECDH算法的大概思路:

假設(shè)密鑰交換雙方為Alice、Bob,其有共享曲線參數(shù)(橢圓曲線E、階N、基點(diǎn)G)。

  1. Alice生成隨機(jī)整數(shù)a,計(jì)算A=a*G。 A作為Alice公鑰

  2. Bob生成隨機(jī)整數(shù)b,計(jì)算B=b*G。 B作為Bob公鑰

  3. Alice將自己的公鑰A傳遞給Bob。A的傳遞可以公開(kāi),即攻擊者可以獲取A。

    (由于橢圓曲線的離散對(duì)數(shù)問(wèn)題是難題,所以攻擊者不可以通過(guò)A、G計(jì)算出a。)

  4. Bob將B傳遞給Alice。同理,B的傳遞可以公開(kāi)。

  5. Bob收到Alice傳遞的A,計(jì)算Q =b*A #Bob通過(guò)自己的私鑰和Alice的公鑰得到對(duì)稱(chēng)密鑰Q

  6. Alice收到Bob傳遞的B,計(jì)算Q`=a*B #Alice通過(guò)自己的私鑰和Bob的公鑰得到對(duì)稱(chēng)密鑰Q'

Alice、Bob雙方即得Q=bA=b(aG)=(ba)G=(ab)G=a(bG)=aB=Q' (交換律和結(jié)合律),即雙方得到一致的密鑰Q。

在了解了ECDH秘鑰協(xié)商算法后,開(kāi)始分析基于ECDH的TLS握手過(guò)程:
1244495-20171108204533294-1339745312.png
現(xiàn)在來(lái)說(shuō)一下客戶(hù)端是如何驗(yàn)證服務(wù)端發(fā)來(lái)的證書(shū)Certificate的:

客戶(hù)端接到服務(wù)器傳來(lái)的證書(shū),從本機(jī)得到CA的公鑰值,這樣就可以解密數(shù)字證書(shū)末尾的數(shù)字簽名了,解密簽名得到原始的證書(shū)摘要HASHs,然后自己也按照證書(shū)中的HASH算法,自己也對(duì)證書(shū)計(jì)算一個(gè)摘要HASHc,如果HASHs == HASHc,則認(rèn)證通過(guò),否則認(rèn)證失敗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評(píng)論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,034評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,413評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,449評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,165評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,559評(píng)論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,781評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,327評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,084評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,278評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,495評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,927評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,172評(píng)論 1 291
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,010評(píng)論 3 396
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,241評(píng)論 2 375

推薦閱讀更多精彩內(nèi)容