HTTPS如何保證數(shù)據(jù)安全?講得很細(xì)!
雖然現(xiàn)在許多網(wǎng)站都會(huì)用到HTTP傳輸協(xié)議和HTTPS協(xié)議,但是大家極力倡導(dǎo)使用的卻是更為安全的HTTPS,今天我們就來了解一下HTTPS是如何保證數(shù)據(jù)傳輸?shù)陌踩缘摹?/span>前文 HTTPS如何保證數(shù)據(jù)安全性(一)中詳細(xì)的介紹了HTTP的缺點(diǎn)、HTTPS如何保證數(shù)據(jù)安全性、HTTPS對(duì)稱加密和非對(duì)稱加密等詳細(xì)信息。本文接著上文詳細(xì)講解了HTTPS的請(qǐng)求過程、如何防止數(shù)字證書被篡改、單雙向認(rèn)證等詳細(xì)的通信過程。
一、HTTPS的請(qǐng)求過程
在上面我們簡(jiǎn)單介紹了一下HTTPS和數(shù)字證書,但是它們是如何來解決HTTP中存在的數(shù)據(jù)竊聽、數(shù)據(jù)篡改、身份偽造問題的呢?
上圖是HTTPS簡(jiǎn)單的請(qǐng)求模型,使用這個(gè)模型可以完美的解決上面提到的三個(gè)問題點(diǎn)。
在第一次請(qǐng)求時(shí),客戶端先去請(qǐng)求服務(wù)端的數(shù)字證書,并且生成一個(gè)隨機(jī)數(shù)R1,將隨機(jī)數(shù)和自己支持的加密算法告訴服務(wù)端。
服務(wù)端收到客戶端的請(qǐng)求后,選擇雙方共同支持的加密算法,并且生成新的隨機(jī)數(shù)R2,將服務(wù)器的數(shù)字證書及加密算法、隨機(jī)數(shù)一并返回給客戶端。
客戶端收到服務(wù)端的數(shù)字證書,然后使用瀏覽器內(nèi)置的CA證書進(jìn)行解密獲取到證書中的服務(wù)端的公鑰及服務(wù)端的認(rèn)證信息,從而確保證書沒有被人篡改過。然后生成新的隨機(jī)數(shù)R3,使用服務(wù)端的公鑰對(duì)隨機(jī)數(shù)R3進(jìn)行加密后返回給服務(wù)端并將隨機(jī)數(shù)R1、R2、R3組合成一串密鑰用作對(duì)稱加密用。
服務(wù)端收到客戶端加密后的隨機(jī)數(shù)R3,使用自己的私鑰對(duì)密文進(jìn)行解密獲取到隨機(jī)數(shù)R3,組合R1、R2、R3獲取到一串密鑰(和客戶端一致);然后開始使用對(duì)稱加密進(jìn)行通信。
上述就是HTTPS對(duì)密鑰協(xié)商的過程,由于非對(duì)稱加密一方密匙加密后只能使用另一方密匙解密,所以在前兩次數(shù)據(jù)傳輸中即使被竊聽也不怕,因?yàn)樵诘谌蝹鬟f隨機(jī)數(shù)R3時(shí)是使用公鑰加密的,只有服務(wù)端的私鑰才能解密,從而確保密鑰的安全性。
二、如何防止數(shù)字證書被篡改
在上面的請(qǐng)求模型中,如何防止客戶端返回的數(shù)字證書被篡改呢?
我們?cè)谏暾?qǐng)數(shù)字證書時(shí),會(huì)提供我們的基本信息以及企業(yè)域名信息等,證書頒發(fā)機(jī)構(gòu)CA會(huì)根據(jù)證書中的這些信息以及所提供的簽名算法對(duì)內(nèi)容進(jìn)行摘要,得到一個(gè)消息摘要(散列hash串),即使用Hash算法獲取到的一個(gè)唯一標(biāo)識(shí),然后CA機(jī)構(gòu)會(huì)使用自己的私鑰對(duì)摘要進(jìn)行加密,獲取到一個(gè)密文,即數(shù)字簽名,也叫做指紋;表示其唯一性。然后證書頒發(fā)機(jī)構(gòu)對(duì)整個(gè)明文數(shù)字證書使用證書頒發(fā)機(jī)構(gòu)CA自己的私鑰進(jìn)行加密,得到數(shù)字證書。
當(dāng)數(shù)字證書中的內(nèi)容被篡改時(shí),使用Hash算法對(duì)內(nèi)容進(jìn)行計(jì)算獲取到新的摘要,只需要對(duì)比一下兩個(gè)摘要是否相同即可知道證書中的數(shù)據(jù)知否有被篡改。
當(dāng)客戶端請(qǐng)求數(shù)據(jù)從瀏覽器端獲取到數(shù)字證書后,通過瀏覽器內(nèi)置的CA證書中的公鑰對(duì)數(shù)字證書進(jìn)行解密,獲取到明文數(shù)字證書(包含企業(yè)基本信息及服務(wù)端公鑰以及數(shù)字簽名),通過如上圖所示方式來判斷證書是否有被篡改。
三、單雙向認(rèn)證
在上面的例子中,客戶端請(qǐng)求服務(wù)端獲取證書信息進(jìn)行認(rèn)證,這個(gè)就是單向認(rèn)證,只是客戶端認(rèn)證服務(wù)端,但是服務(wù)端并沒有認(rèn)證客戶端的請(qǐng)求。HTTPS支持單向認(rèn)證,也支持雙向認(rèn)證。
雙向認(rèn)證的情況通常比較少見,常見于銀行等領(lǐng)域,就像我們以前使用銀行的U盾,這就是一種雙向認(rèn)證案例,還有就是在電腦上安裝支付寶的證書等;雙向認(rèn)證比單向認(rèn)證更加安全,但是需要對(duì)每一個(gè)客戶端都進(jìn)行分配證書。
查看技術(shù)文章和免費(fèi)咨詢技術(shù)問題可以訪問成都億佰特電子科技有限公司官網(wǎng)及各官方平臺(tái):
微信號(hào):cdebyte
今日頭條:億佰特
新浪微博:成都億佰特
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國(guó)銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)-3