2021-02-02 分類: 網(wǎng)站建設(shè)
HTTPS:初識(shí)ssl
一、ssl簡(jiǎn)介
ssl中文名為安全套接字層(Secure Sockets Layer),現(xiàn)如今是應(yīng)用最廣泛的數(shù)據(jù)加密協(xié)議,該協(xié)議是由網(wǎng)景公司在90年代設(shè)計(jì)的主要用于Web的安全傳輸協(xié)議。該協(xié)議歷經(jīng)了三個(gè)版本,分別是ssl1.0、ssl2.0、ssl3.0。直到IETF將ssl進(jìn)行了標(biāo)準(zhǔn)化,并將其稱為TLS(Transport Layer Security)傳輸層安全。嚴(yán)格來(lái)說(shuō)TLS(傳輸層安全)是更為安全的升級(jí)版 ssl,而現(xiàn)在用的也基本是TLS協(xié)議。但是由于ssl這一術(shù)語(yǔ)更為常用,因此我們?nèi)匀粚⑽覀兊陌踩C書(shū)稱作 ssl或者ssl/TLS。到現(xiàn)在TLS也已經(jīng)經(jīng)歷了四個(gè)版本,分別是TLS1.0,TLS1.1(2006),TLS1.2(2008),TLS1.3(2018)。
1.1 非對(duì)稱加密算法
所謂的“非對(duì)稱加密技術(shù)”,意思就是說(shuō):“加密”和“解密”使用不同的密鑰 即每個(gè)用戶都有兩把鑰匙,一把公鑰一把私鑰。公鑰是對(duì)外發(fā)布的,所有人都看的到所有人的公鑰,私鑰是自己保存,每個(gè)人都只知道自己的私鑰而不知道別人的。用該用戶的公鑰加密后只能該用戶的私鑰才能解密。這種情況下,公鑰是用來(lái)加密信息的,確保只有特定的人(用誰(shuí)的公鑰就是誰(shuí))才能解密該信息。1.2 對(duì)稱加密算法
所謂的“對(duì)稱加密技術(shù)”比較簡(jiǎn)單,意思就是說(shuō):“加密”和“解密”使用相同的密鑰。就好比你用 7zip 或 WinRAR 創(chuàng)建一個(gè)帶密碼(口令)的加密壓縮包。當(dāng)你下次要把這個(gè)壓縮文件解開(kāi)的時(shí)候,你需要輸入同樣的密碼。在這個(gè)例子中,密碼/口令就如同剛才說(shuō)的“密鑰”。
1.3 特點(diǎn)
? ssl可對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,防止第三方竊取數(shù)據(jù)
? ssl協(xié)議具有防篡改機(jī)制,如果傳輸?shù)臄?shù)據(jù)在傳輸過(guò)程中被人篡改,通信雙方就會(huì)立刻發(fā)現(xiàn)
? ssl也具有身份驗(yàn)證機(jī)制,防止身份被人冒充
1.4 ssl在TCP/IP模型中的位置
二、. 基本運(yùn)行過(guò)程
ssl/TLS協(xié)議基本思路是采用的非對(duì)稱加密算法,客戶端先向服務(wù)器請(qǐng)求公鑰,然后再用公鑰進(jìn)行數(shù)據(jù)加密,服務(wù)器接收到密文之后,再用自己的私鑰解密。
? 1.客戶端向服務(wù)器端索要并驗(yàn)證公鑰
? 2.雙方協(xié)商生成“對(duì)話密鑰”
? 3.雙方采用“對(duì)話密鑰”進(jìn)行加密通信
從上面的簡(jiǎn)要過(guò)程可以看出,我們還使用了對(duì)稱加密算法,這是因?yàn)椋绻蛻舳伺c服務(wù)器的每一次會(huì)話都使用公鑰進(jìn)行加密運(yùn)算,由于公鑰加密的計(jì)算量是非常大的,因此為了減少這個(gè)加密計(jì)算消耗的時(shí)間,我們對(duì)交互數(shù)據(jù)使用對(duì)稱加密算法(時(shí)間消耗相比于非對(duì)稱算法少很多),我們只需要使用在最開(kāi)始的公鑰加密算法獲取服務(wù)器給的對(duì)稱加密算法的對(duì)話密鑰,接下來(lái)的數(shù)據(jù)交互使用對(duì)話密鑰進(jìn)行加解密就行了。
而上面的1和2我們又將其稱之為"握手階段" 握手階段客戶端與服務(wù)器之間存在四次通信,且通信的數(shù)據(jù)都是明文傳輸?shù)?/strong>。
2.1客戶端請(qǐng)求
客戶端向服務(wù)器發(fā)出需要加密通信的請(qǐng)求,這一步叫做ClientHello請(qǐng)求 客戶端提供的信息如下
信息
客戶端支持的TLS協(xié)議版本
客戶端生成一個(gè)隨機(jī)數(shù),用于后續(xù)生成“對(duì)話密鑰”
客戶端支持的加密方法,比如DHE-RSA非對(duì)稱加密算法
支持的壓縮算法
2.2 服務(wù)器回應(yīng)
信息
確認(rèn)需要使用的TLS協(xié)議版本
服務(wù)器也會(huì)生成一個(gè)隨機(jī)數(shù),用于后續(xù)生成“對(duì)話密鑰”
確認(rèn)使用的加密算法,比如DHE-RSA非對(duì)稱加密算法
服務(wù)器的證書(shū)
如果服務(wù)器需要確認(rèn)客戶端的身份,就會(huì)包含一個(gè)證書(shū)請(qǐng)求,要求客戶端提供客戶端證書(shū)確認(rèn)身份
2.3客戶端再回應(yīng)
客戶端得到響應(yīng)之后,先驗(yàn)證服務(wù)器的證書(shū),如果有問(wèn)題,就會(huì)向用戶提示警告是否繼續(xù)訪問(wèn),如果沒(méi)有問(wèn)題,客戶端就取出證書(shū)中的公鑰,然后向服務(wù)器發(fā)送以下數(shù)據(jù)
信息
發(fā)送一個(gè)用公鑰加密的隨機(jī)數(shù)數(shù)據(jù),這個(gè)隨機(jī)數(shù)也被稱為pre-master key
編碼更改通知,告訴服務(wù)器以后的數(shù)據(jù)都將采用已商定的加密方法和密鑰發(fā)送
客戶端握手結(jié)束通知,這一項(xiàng)同時(shí)也是前面發(fā)送的所有內(nèi)容的hash值,用來(lái)提供給服務(wù)器做防篡改驗(yàn)證
到這里,我們可能會(huì)有疑問(wèn),為什么一定要用三個(gè)隨機(jī)數(shù)來(lái)生成會(huì)話密鑰,原因如下:
不管是客戶端還是服務(wù)器,都需要隨機(jī)數(shù),這樣生成的密鑰才不會(huì)每次都一樣。由于ssl協(xié)議中證書(shū)是靜態(tài)的,因此十分有必要引入一種隨機(jī)因素來(lái)保證協(xié)商出來(lái)的密鑰的隨機(jī)性。
對(duì)于RSA密鑰交換算法來(lái)說(shuō),pre-master-key本身就是一個(gè)隨機(jī)數(shù),再加上hello消息中的隨機(jī),三個(gè)隨機(jī)數(shù)通過(guò)**一個(gè)密鑰導(dǎo)出器最終導(dǎo)出一個(gè)對(duì)稱密鑰**。
pre master的存在在于
ssl協(xié)議不信任每個(gè)主機(jī)都能產(chǎn)生完全隨機(jī)的隨機(jī)數(shù),如果隨機(jī)數(shù)不隨機(jī),那么pre master secret就有可能被猜出來(lái),那么僅適用pre master secret作為密鑰就不合適了,因此必須引入新的隨機(jī)因素,那么客戶端和服務(wù)器加上pre master secret三個(gè)隨機(jī)數(shù)一同生成的密鑰就不容易被猜出了,一個(gè)偽隨機(jī)可能完全不隨機(jī),可是是三個(gè)偽隨機(jī)就十分接近隨機(jī)了,每增加一個(gè)自由度,隨機(jī)性增加的可不是一。"2.4服務(wù)器最后的回應(yīng)
服務(wù)器收到客戶端的第三個(gè)隨機(jī)數(shù)pre-master key之后,計(jì)算生成本次會(huì)話所用的"會(huì)話密鑰"。
信息
編碼更改通知,告訴服務(wù)器以后的數(shù)據(jù)都將采用已商定的加密方法和密鑰發(fā)送
服務(wù)器握手結(jié)束通知,這一項(xiàng)同時(shí)也是前面發(fā)送的所有內(nèi)容的hash值,用來(lái)提供給客戶端做數(shù)據(jù)防篡改驗(yàn)證
到這里,整個(gè)握手階段全部結(jié)束,之后,客戶端就可以與服務(wù)器進(jìn)行加密通信了,對(duì)數(shù)據(jù)使用“會(huì)話密鑰”做對(duì)稱加密。
當(dāng)前題目:HTTPS:初識(shí)SSL
網(wǎng)頁(yè)地址:http://www.rwnh.cn/news/98739.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、建站公司、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容