HTTPS原理和对中间件攻击的预防
一、https/tls原理
HTTPS訪問的三個階段
第一階段 認(rèn)證站點(diǎn)
客戶端向站點(diǎn)發(fā)起HTTPS請求,站點(diǎn)返回數(shù)字證書??蛻舳送ㄟ^數(shù)字證書驗證所訪問的站點(diǎn)是真實(shí)的目標(biāo)站點(diǎn)。
第二階段 協(xié)商密鑰
客戶端與站點(diǎn)服務(wù)器協(xié)商此次會話的對稱加密密鑰,用于下一階段的加密傳輸。
第三階段 加密傳輸
客戶端與站點(diǎn)直接使用已協(xié)商的對稱加密密鑰傳輸數(shù)據(jù)。
以下用一張圖描繪CA、站點(diǎn)服務(wù)器、客戶端之間的交互關(guān)系
二、中間人攻擊
中間人攻擊的幾種形式
?
中間人攻擊的防范
1.防范直接獲取明文
加密傳輸報文
2.防范非法中間加密代理
黑客對客戶端偽裝成服務(wù)器,對服務(wù)器偽裝成客戶端,通過非法代理竊取會話數(shù)據(jù)。上面圖示的第一、第二階段可以防止這種非法代理行為。雖然黑客可以獲取站點(diǎn)的證書,偽裝成站點(diǎn)服務(wù)器接收請求,但黑客沒有站點(diǎn)服務(wù)器私鑰,無法與實(shí)現(xiàn)客戶端實(shí)現(xiàn)密鑰交換,不能竊取明文的會話數(shù)據(jù)。
3.防范解密歷史報文(前向安全性)
防范解密歷史報文,這種安全防護(hù)叫前向安全。早期的HTTPS實(shí)現(xiàn)中,客戶端將會話密鑰通過站點(diǎn)公鑰加密后,發(fā)送給服務(wù)器,服務(wù)器用私鑰解密。此時如果服務(wù)器私鑰保管不善泄露,黑客如果留存了歷史報文,可以解密獲取會話密鑰,從而還原歷史報文數(shù)據(jù)。目前通過DH算法保證前向安全。在第二階段,客戶端與服務(wù)器只交換少量信息,雙方便可獨(dú)立計算出臨時會話密鑰用于加密。即使黑客事后獲取私鑰,也不能計算出會話密鑰,從而實(shí)現(xiàn)前向安全。
三、FAQ
?
1.為什么不直接使用非對稱密鑰加密傳輸報文?
首先非對稱密鑰加解密效率低,不如對稱密鑰,一般使用AES等加密算法。其次前面也提到,只使用非對稱密鑰加解密不能保證前向安全性。
2.瀏覽器怎么知道所訪問的站點(diǎn)不是偽造的?
瀏覽器主要依靠數(shù)字證書來確認(rèn)所訪問的站點(diǎn)不是偽造的。當(dāng)瀏覽器通過https訪問站點(diǎn),站點(diǎn)須返回數(shù)字證書。數(shù)字證書是CA機(jī)構(gòu)“簽發(fā)”的電子文件,其中包含使用者信息、站點(diǎn)公鑰、頒發(fā)者(CA)信息和CA指紋等。假設(shè)數(shù)字證書是完全可信的,且其中的內(nèi)容也是不可篡改的。瀏覽器首先驗證數(shù)字證書中的使用者(站點(diǎn))信息與所訪問的站點(diǎn)域名是否一致,然后用數(shù)字證書中的站點(diǎn)公鑰挑戰(zhàn)站點(diǎn)服務(wù)器,只用擁有私鑰的真實(shí)站點(diǎn)才能通過挑戰(zhàn)。因此可以確保所訪問的站點(diǎn)是真實(shí)的。
注意:如果驗證有問題,瀏覽器會提示風(fēng)險訪問。
3.為什么數(shù)字證書是可信的?
CA機(jī)構(gòu)是可信的,CA本身也包含一個非對稱密鑰對,私鑰用于“簽發(fā)”的數(shù)字證書,公鑰發(fā)布出去用于驗證數(shù)字證書。CA使用非對稱密鑰配合HASH算法保證數(shù)字證書可信且不可篡改。CA將使用者信息、站點(diǎn)公鑰、有效期等關(guān)鍵信息打包做HASH運(yùn)算,再將HASH運(yùn)算結(jié)果用CA私鑰簽名生成指紋。然后將以上全部信息打包成數(shù)字證書。黑客沒有私鑰不可以偽造證書簽名,且證書的內(nèi)容如果被修改,HASH結(jié)果就會改變。因此黑客不可偽造或者篡改證書,有效的數(shù)字證書是可信的。
4.瀏覽器怎么知道CA是可信的?
瀏覽器主要依據(jù)客戶端操作系統(tǒng)保存的根證書列表判斷CA的權(quán)威性。如上圖,在Windows操作系統(tǒng)中,這個列表放在“受信任的根證書頒發(fā)機(jī)構(gòu)存儲區(qū)”中,這個列表實(shí)際上是CA機(jī)構(gòu)的根證書集合,根證書包含CA機(jī)構(gòu)的信息和公鑰。只要是這個列表中的CA簽發(fā)的證書,瀏覽器就認(rèn)為可信。微軟會動態(tài)維護(hù)根證書列表,用戶需要管理員權(quán)限才能向這個列表中加入CA證書。
注:Windows客戶端運(yùn)行在內(nèi)網(wǎng)中時,若無法聯(lián)網(wǎng)更新根證書列表,此時可能會出向訪問https應(yīng)用緩慢。
5.為什么有些軟件如Fiddler可以還原h(huán)ttps報文?
Fiddler是通過中間代理的方式抓取報文,還原h(huán)ttps報文的前提是在客戶端的根證書列表下加入Fiddler生成的CA根證書。這樣Fiddler就成為CA,可以偽造數(shù)字證書,偽裝成服務(wù)器。但是只能用于測試,不能實(shí)現(xiàn)真正意義上的竊取數(shù)據(jù)。
?
?
————————————————
版權(quán)聲明:本文為CSDN博主「shrun」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/oZhuZhiYuan/article/details/106650944
總結(jié)
以上是生活随笔為你收集整理的HTTPS原理和对中间件攻击的预防的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 父亲为女儿囤了一阳台塑料袋 背后原因有被
- 下一篇: 不用再填验证码:iOS 16可自动向网站