溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

HTTPS中運(yùn)行流程有哪些

發(fā)布時(shí)間:2021-07-30 15:59:08 來(lái)源:億速云 閱讀:140 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)HTTPS中運(yùn)行流程有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

一、關(guān)于加密的基本概念

明文:HTTP協(xié)議是明文傳輸?shù)?,明文就是未被加密過(guò)的原始數(shù)據(jù)

密鑰:通常一個(gè)字符串或者數(shù)字,進(jìn)行加密/解密算法時(shí)使用。公鑰和私鑰都是密鑰,只不過(guò)公鑰一般是對(duì)外開(kāi)放的

加密時(shí)使用;私鑰時(shí)不公開(kāi)的,解密時(shí)使用;

非對(duì)稱(chēng)加密算法(公鑰加密)

有RSA、DSA/DSS、Elgamal、Rabin、D-H、ECC等,在客戶(hù)端與服務(wù)器端相互進(jìn)行驗(yàn)證的過(guò)程中使用的就是非對(duì)此加密算法

RSA密碼體制就是公鑰密碼體制,RSA的一對(duì)公鑰和私鑰都可以用來(lái)加密和解密。比如公鑰加密后只能用私鑰解密,私鑰加密后只能用公鑰解密,且一方加密的內(nèi)容只能用對(duì)方進(jìn)行解密。

對(duì)稱(chēng)加密算法(私鑰加密)

有AES、DES、3DES、TDES、Blowfish、RC4、RC5、IDEA等,加密使用的密鑰和解密使用的密鑰是同一個(gè)密鑰。用于加密算法是公開(kāi)的,若要保證安全性、密鑰是不能對(duì)外公開(kāi)的,通常用來(lái)加密消息體。

HASH算法

有MD5、SHA1、SHA256,用來(lái)確認(rèn)信息沒(méi)有被篡改。主要用來(lái)生成簽名,簽名是加在信息后面的,可以證明信息是沒(méi)有被修改過(guò)。一般對(duì)信息做hash計(jì)算的帶一個(gè)hash值加密后(這個(gè)加密一般是對(duì)稱(chēng)加密)作為一個(gè)簽名和信息一起發(fā)出去。接受方得到信息后重新計(jì)算信息的hash值,且和信息所附帶的hash值進(jìn)行比較。如果一樣則認(rèn)為信息沒(méi)有被修改。反之認(rèn)為修改了,不做處理。可能有一種情況,黑客修改了信息并把hash值也該了。從而讓他們相匹配,所以hash值一般都是加密后再和信息一起發(fā)送出去,確保hash值不會(huì)被修改;

數(shù)字證書(shū)

主要包含證書(shū)發(fā)布機(jī)構(gòu),證書(shū)的有效期限,公鑰、證書(shū)所有者、簽名使用的算法、指紋以及指紋算法。數(shù)字證書(shū)可以保證里面的公鑰一定是證書(shū)持有者的。

HTTPS中運(yùn)行流程有哪些

數(shù)字簽名原理

將明文通過(guò)Hash算法加密生成摘要,再將消息體摘要用私鑰加密后就是簽名了。當(dāng)下一級(jí)證書(shū)或客戶(hù)端需要時(shí)就返回這個(gè)整體。數(shù)字簽名主要作用就是配合Hash算法保證信息沒(méi)有被篡改。當(dāng)https驗(yàn)證通過(guò)后,一般會(huì)改用對(duì)稱(chēng)加密方式通信,因?yàn)镽SA公鑰體制比較耗性能。所以數(shù)字簽名只存在于驗(yàn)證階段。

證書(shū)鏈
證書(shū)是分級(jí)的,證書(shū)鏈由多個(gè)證書(shū)一級(jí)一級(jí)組成,拿到上級(jí)證書(shū)的公鑰才能解密本級(jí)證書(shū)。只有最底層的證書(shū)是自簽名的,自己頒發(fā)給自己。

二、HTTPS的驗(yàn)證流程

這一部分看的比較多,主要?dú)w納了一下,分5條。

1)客戶(hù)端發(fā)起一個(gè)http請(qǐng)求,連接到服務(wù)器的443端口。

2)服務(wù)端把自己的信息以數(shù)字證書(shū)的形式返回給客戶(hù)端(證書(shū)內(nèi)容有密鑰公鑰,網(wǎng)站地址,證書(shū)頒發(fā)機(jī)構(gòu),失效日期等)。證書(shū)中有一個(gè)公鑰來(lái)加密信息,私鑰由服務(wù)器持有。

3)驗(yàn)證證書(shū)的合法性

客戶(hù)端收到服務(wù)器的響應(yīng)后會(huì)先驗(yàn)證證書(shū)的合法性(證書(shū)中包含的地址與正在訪問(wèn)的地址是否一致,證書(shū)是否過(guò)期)。

4)生成隨機(jī)密碼(RSA簽名)

如果驗(yàn)證通過(guò),或用戶(hù)接受了不受信任的證書(shū),瀏覽器就會(huì)生成一串隨機(jī)字符串,讓服務(wù)端用私鑰加密隨機(jī)字符串,返回結(jié)果后客戶(hù)端再用公鑰解密。若與之前的隨機(jī)字符串一致,則說(shuō)明服務(wù)端確實(shí)是私鑰的持有者。

5)生成對(duì)稱(chēng)加密算法

驗(yàn)證完服務(wù)端身份后,客戶(hù)端生成一個(gè)對(duì)稱(chēng)加密的算法和對(duì)應(yīng)密鑰,以公鑰加密之后發(fā)送給服務(wù)端。此時(shí)被黑客截獲也沒(méi)用,因?yàn)橹挥蟹?wù)端的私鑰才可以對(duì)其進(jìn)行解密。之后客戶(hù)端與服務(wù)端可以用這個(gè)對(duì)稱(chēng)加密算法來(lái)加密和解密通信內(nèi)容了。

三、HTTPS運(yùn)行原理

我們可以通過(guò)4個(gè)問(wèn)題徹底理解HTTPS的運(yùn)行原理,首先要從數(shù)字證書(shū)開(kāi)始說(shuō)起。

HTTPS的安全性主要依賴(lài)于對(duì)數(shù)字證書(shū)的驗(yàn)證以及非對(duì)稱(chēng)加密機(jī)制,細(xì)看步驟3),客戶(hù)端具體是如何判斷證書(shū)的合法性的?

先來(lái)看看數(shù)字證書(shū)都有哪些內(nèi)容
Issuer--證書(shū)的發(fā)布機(jī)構(gòu)
發(fā)布證書(shū)的機(jī)構(gòu),指明證書(shū)是哪個(gè)公司創(chuàng)建的(并不是指使用證書(shū)的公司)。出了問(wèn)題具體的頒發(fā)機(jī)構(gòu)是要負(fù)責(zé)的

Valid from,Valid to--證書(shū)的有效期
證書(shū)的使用期限。過(guò)了這個(gè)期限證書(shū)就會(huì)作廢,不能使用。

Public key--公鑰
剛開(kāi)始的時(shí)候介紹過(guò)公鑰的概念,用于對(duì)消息加密的。

Subject--主題
證書(shū)是頒發(fā)給誰(shuí)了,一般是個(gè)人或公司名稱(chēng)或機(jī)構(gòu)名稱(chēng)或公司網(wǎng)站的網(wǎng)址。

Signature algorithm--簽名所使用的算法
數(shù)字證書(shū)的數(shù)字簽名所使用的加密算法,根據(jù)這個(gè)算法可以對(duì)指紋解密。指紋加密的結(jié)果就是數(shù)字簽名。

Thumbprint,Thumbprint algorithm--指紋以及指紋算法(一種HASH算法)
指紋和指紋算法會(huì)使用證書(shū)機(jī)構(gòu)的私鑰加密后和證書(shū)放在一起。主要用來(lái)保證證書(shū)的完整性,確保證書(shū)沒(méi)有修改過(guò)。使用者在打開(kāi)證書(shū)時(shí)根據(jù)指紋算法計(jì)算證書(shū)的hash值,和剛開(kāi)始的值一樣,則表示沒(méi)有被修改過(guò)。

a)

繞了一大圈,問(wèn)題回來(lái)了,客戶(hù)端如何檢測(cè)數(shù)字證書(shū)是合法的并是所要請(qǐng)求的公司的?

首先應(yīng)用程序讀取證書(shū)中的Issuer(發(fā)布機(jī)構(gòu)),然后會(huì)在操作系統(tǒng)或?yàn)g覽器內(nèi)置的受信任的發(fā)布機(jī)構(gòu)中去找該機(jī)構(gòu)的證書(shū)(為什么操作系統(tǒng)會(huì)有受信任機(jī)構(gòu)的證書(shū)?先看完這個(gè)流程再來(lái)回答)。如果找不到就說(shuō)明證書(shū)是水貨,證書(shū)有問(wèn)題,程序給錯(cuò)誤信息。如果找到了,或用戶(hù)確認(rèn)使用該證書(shū)。就會(huì)拿上級(jí)證書(shū)的公鑰,解密本級(jí)證書(shū),得到數(shù)字指紋。然后對(duì)本級(jí)證書(shū)的公鑰進(jìn)行數(shù)字摘要算法(證書(shū)中提供的指紋加密算法)計(jì)算結(jié)果,與解密得到的指紋對(duì)比。如果一樣,說(shuō)明證書(shū)沒(méi)有被修改過(guò)。公鑰可以放心使用,可以開(kāi)始握手通信了。

b)

接下來(lái)解答操作系統(tǒng)為什么會(huì)有證書(shū)發(fā)布機(jī)構(gòu)的證書(shū)?

其實(shí)證書(shū)發(fā)布機(jī)構(gòu)除了給別人發(fā)布證書(shū)外,自己也有自己的證書(shū)。在操作系統(tǒng)安裝好時(shí),受信任的證書(shū)發(fā)布機(jī)構(gòu)的數(shù)字證書(shū)就已經(jīng)被微軟安裝在操作系統(tǒng)中了,根據(jù)一些權(quán)威安全機(jī)構(gòu)的評(píng)估,選取一些信譽(yù)很好并且通過(guò)一定安全認(rèn)證的證書(shū)發(fā)布機(jī)構(gòu),把這些證書(shū)默認(rèn)安裝在操作系統(tǒng)中并設(shè)為信任的數(shù)字證書(shū)。發(fā)布機(jī)構(gòu)持有與自己數(shù)字證書(shū)對(duì)應(yīng)的私鑰,會(huì)用這個(gè)私鑰加密所有他發(fā)布的證書(shū)及指紋整體作為數(shù)字簽名。

c)

步驟4)中客戶(hù)端生成隨機(jī)數(shù)并用公鑰加密,讓服務(wù)端用私鑰解密來(lái)確保對(duì)方是否真的持有私鑰。但是,黑客也可以發(fā)送字符串讓服務(wù)器用私鑰加密,并得到加密后的信息,從而找到規(guī)律,導(dǎo)致私鑰的安全性下降。如何解決?

服務(wù)端并不是真的加密這個(gè)字符串,而是把字符串進(jìn)行hash計(jì)算后再進(jìn)行加密后發(fā)送給客戶(hù)端。客戶(hù)端收到后再解密這個(gè)hash值與原來(lái)字符串的hash值對(duì)比,從而確定對(duì)方是否持有私鑰。

d)

在通信的過(guò)程中,黑客可以截獲加密內(nèi)容,雖不能理解具體內(nèi)容,但可以搗亂,修改內(nèi)容或重復(fù)發(fā)送該內(nèi)容,如何解決?

給通信的內(nèi)容加版本號(hào)或隨機(jī)值,如果接收版本號(hào)或隨機(jī)值相同的信息,雙方立刻停止通信。若一直搗亂就無(wú)法正常通信,因?yàn)橛腥丝刂屏四愕穆酚善?,可以針?duì)你。所以一些對(duì)于安全性較強(qiáng)的部門(mén)來(lái)說(shuō)就不使用公網(wǎng),而是內(nèi)部網(wǎng)絡(luò),一般不會(huì)被破環(huán)通信。

以上就是HTTPS中運(yùn)行流程有哪些,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI