HTTPS安全的原因

HTTPS安全的原因

看了很多博客與文章,我的理解是 HTTPS 之所以安全是因?yàn)槎沤^了 HTTP 中可能的中間人攻擊。
為了實(shí)現(xiàn)上面這點(diǎn),HTTPS 增加了 SSL 層使用數(shù)字證書(shū)來(lái)進(jìn)行驗(yàn)證及分發(fā)需要使用到的公鑰。
下面是參考了很多文章的總結(jié),主要是解讀了一些比較容易模糊的點(diǎn):

  1. HTTP不安全的原因
  2. 數(shù)字證書(shū)的組成
  3. 數(shù)字證書(shū)的頒發(fā)以及驗(yàn)證過(guò)程

這里推薦幾篇文章:

HTTP不安全的原因

  • 通過(guò)非對(duì)稱(chēng)加密獲取對(duì)稱(chēng)加密的公私鑰。后續(xù)主要的數(shù)據(jù)傳輸通過(guò)對(duì)稱(chēng)加密來(lái)實(shí)現(xiàn)。
    在正常的情況下,HTTP協(xié)議的表現(xiàn)如下:


    圖片.png
  • 客戶(hù)端請(qǐng)求服務(wù)器發(fā)起SSL連接

  • 服務(wù)器響應(yīng)公鑰給客戶(hù)端。私鑰只有服務(wù)器持有

  • 客戶(hù)端使用公鑰加密對(duì)稱(chēng)密鑰,發(fā)送給服務(wù)器

  • 后續(xù)的數(shù)據(jù)傳輸都使用對(duì)稱(chēng)密鑰加密

上面的過(guò)程會(huì)出現(xiàn)一個(gè)問(wèn)題。就是中間人偽造的問(wèn)題。

圖片.png
  • 中間人可以截取客戶(hù)端的請(qǐng)求以及服務(wù)器的響應(yīng)。在獲取公鑰及發(fā)送對(duì)稱(chēng)加密密鑰的時(shí)候,都使用自己偽造的公鑰與對(duì)稱(chēng)密鑰進(jìn)行替換,成功截取到用戶(hù)的信息

上面的主要問(wèn)題是 公鑰 每個(gè)人都可以得到, 中間人可以自己偽造公鑰 代替服務(wù)器與中間人進(jìn)行通信。因此主要問(wèn)題是:怎樣明確確認(rèn)了公鑰是自己請(qǐng)求服務(wù)器的。
為了實(shí)現(xiàn)這點(diǎn),引入了第三方公正機(jī)構(gòu),服務(wù)器會(huì)發(fā)送一些信息去證書(shū)頒發(fā)機(jī)構(gòu)申請(qǐng)證書(shū),證書(shū)頒發(fā)機(jī)構(gòu)會(huì)驗(yàn)證申請(qǐng)者的身份并且根據(jù)一些信息生成證書(shū),里面包含了服務(wù)器的公鑰,用的加密算法,hash算法等信息,在響應(yīng)客戶(hù)端的請(qǐng)求會(huì)將證書(shū)發(fā)送給客戶(hù)端。讓客戶(hù)端驗(yàn)證證書(shū)是否是合法的證書(shū)。驗(yàn)證成功就使用證書(shū)中的公鑰進(jìn)行加密,算是建立起了連接。

下面看下數(shù)字證書(shū)的組成

數(shù)字證書(shū)的組成

image
  • 數(shù)字摘要 = 明文 + hash運(yùn)算
  • 數(shù)字簽名 = 數(shù)字摘要 + 非對(duì)稱(chēng)加密的私鑰加密(CA頒發(fā)機(jī)構(gòu)的私鑰)
  • 數(shù)字證書(shū) = 非對(duì)稱(chēng)加密的公鑰(申請(qǐng)公鑰) + 數(shù)字簽名

數(shù)字簽名的作用:

  1. 數(shù)字簽名技術(shù)就是對(duì)“非對(duì)稱(chēng)密鑰加解密”和“數(shù)字摘要“兩項(xiàng)技術(shù)的應(yīng)用,它將摘要信息用發(fā)送者的私鑰加密,與原文一起傳送給接收者。
  2. 接收者只有用發(fā)送者的公鑰才能解密被加密的摘要信息,然后用HASH函數(shù)對(duì)收到的原文產(chǎn)生一個(gè)摘要信息,與解密的摘要信息對(duì)比。
  3. 如果相同,則說(shuō)明收到的信息是完整的,在傳輸過(guò)程中沒(méi)有被修改,否則說(shuō)明信息被修改過(guò),因此數(shù)字簽名能夠驗(yàn)證信息的完整性。

數(shù)字簽名的過(guò)程如下:
明文 --> hash運(yùn)算 --> 摘要 --> 私鑰加密 --> 數(shù)字簽名

如:某寶自己的認(rèn)證中心簡(jiǎn)稱(chēng)CA(Certificate Authority),CA給某寶頒發(fā)了一個(gè)證書(shū),這個(gè)證書(shū)有:

  • 簽發(fā)者
  • 證書(shū)用途
  • 某寶的公鑰
  • 某寶的加密算法
  • 某寶用的HASH算法
  • 證書(shū)的到期時(shí)間等

上面在證書(shū)中存在的明文,會(huì) HASH運(yùn)算生成 消息摘要,為了防止被篡改,會(huì)使用 CA機(jī)構(gòu)的私鑰加密,生成數(shù)字簽名

證書(shū)的作用

證書(shū)的頒發(fā)過(guò)程:
  1. 證書(shū)申請(qǐng)者首先產(chǎn)生非對(duì)稱(chēng)加密的公私鑰, 將公鑰與一些身份信息傳遞給證書(shū)認(rèn)證機(jī)構(gòu)。
  2. 證書(shū)在接受到請(qǐng)求后,會(huì)執(zhí)行一些操作對(duì)于用戶(hù)身份認(rèn)證的一些操作。
  3. 驗(yàn)證完成后,證書(shū)認(rèn)證機(jī)構(gòu)對(duì)于整個(gè)內(nèi)容使用私鑰加密生成數(shù)字證書(shū)返回給申請(qǐng)者
證書(shū)包含的內(nèi)容:
  • 證書(shū)頒發(fā)機(jī)構(gòu)的名稱(chēng)
  • 證書(shū)本身的數(shù)字簽名(使用CA機(jī)構(gòu)自己的私鑰加密)
  • 證書(shū)持有者公鑰(申請(qǐng)者的公鑰)
  • 證書(shū)簽名用到的Hash算法

驗(yàn)證證書(shū)的有效性

  1. 證書(shū)頒發(fā)的機(jī)構(gòu)是偽造的,瀏覽器不認(rèn)識(shí),直接認(rèn)為是危險(xiǎn)證書(shū)
  2. 證書(shū)頒發(fā)的機(jī)構(gòu)是存在的,在瀏覽器中找到該機(jī)構(gòu)的根證書(shū)。使用根證書(shū)中的公鑰對(duì)于數(shù)字簽名進(jìn)行解密:解密不成功,直接認(rèn)為是危險(xiǎn)證書(shū)
  3. 解密如果成功,會(huì)由數(shù)字簽名中得到信息摘要 A,然后根據(jù)證書(shū)中的 Hash 算法,對(duì)于證書(shū)重新進(jìn)行Hash運(yùn)算,得到信息摘要 B。如果 A 與 B相同,證明證書(shū)是正確的,否則證明信息被篡改
  4. 證書(shū)可在其過(guò)期前被吊銷(xiāo),通常情況是該證書(shū)的私鑰已經(jīng)失密。較新的瀏覽器如Chrome、Firefox、Opera和Internet Explorer都實(shí)現(xiàn)了在線(xiàn)證書(shū)狀態(tài)協(xié)議(OCSP)以排除這種情形:瀏覽器將網(wǎng)站提供的證書(shū)的序列號(hào)通過(guò)OCSP發(fā)送給證書(shū)頒發(fā)機(jī)構(gòu),后者會(huì)告訴瀏覽器證書(shū)是否還是有效的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容