💓 博客主頁:從零開始的-CodeNinja之路
? 收錄文章:【計算機網絡】深度學習HTTPS協議
🎉歡迎大家點贊👍評論📝收藏?文章
目錄
- 一:HTTPS是什么
- 二:HTTPS的工作過程
- 三:對稱加密
- 四:非對稱加密
- 五:中間人攻擊
- 1.證書
- 2.數據簽名
- 3.通過證書解決中間人攻擊
- 4.中間人有沒有可能篡改該證書?
- 六:完整流程
一:HTTPS是什么
HTTPS也是?個應用層協議.是在HTTP協議的基礎上引入了?個加密層.
HTTP協議內容都是按照文本的方式明文傳輸的.這就導致在傳輸過程中出現?些被篡改的情況.
在互聯網上,明文傳輸是比較危險的事情!!!
HTTPS就是在HTTP的基礎上進行了加密,進?步的來保證用戶的信息安全~
"加密"是什么
加密就是把明文(要傳輸的信息)進行?系列變換,生成密文
解密就是把密文再進行?系列變換,還原成明文
在這個加密和解密的過程中,往往需要?個或者多個中間的數據,輔助進行這個過程,這樣的數據稱為密
鑰
二:HTTPS的工作過程
既然要保證數據安全,就需要進行"加密".
網絡傳輸中不再直接傳輸明文了,而是加密之后的"密文".
加密的方式有很多,但是整體可以分成兩大類:對稱加密和非對稱加密
三:對稱加密
對稱加密其實就是通過同?個"密鑰",把明文加密成密文,并且也能把密文解密成明文.
就是能在客戶端和服務器建立連接的時候,雙方協商確定這次的密鑰是啥~
如果直接把密鑰明文傳輸,那么黑客也就能獲得密鑰了~~此時后續的加密操作就形同虛設了.
因此密鑰的傳輸也必須加密傳輸!
但是要想對密鑰進行對稱加密,就仍然需要先協商確定?個"密鑰的密鑰".此時密鑰的傳輸再用對稱加密就行不通了.
就需要引入非對稱加密.
四:非對稱加密
非對稱加密要用到兩個密鑰,?個叫做"公鑰",?個叫"私鑰".
公鑰和私鑰是配對的.最大的缺點就是運算速度非常慢,比對稱加密要慢很多.
- 通過公鑰對明文加密,變成密文
- 通過私鑰對密文解密,變成明文
也可以反著用
- 通過私鑰對明文加密,變成密文
- 通過公鑰對密文解密,變成明文
- 客戶端在本地生成對稱密鑰,通過公鑰加密,發送給服務器.
- 由于中間的網絡設備沒有私鑰,即使截獲了數據,也無法還原出內部的原文,也就無法獲取到對稱密 鑰
- 服務器通過私鑰解密,還原出客戶端發送的對稱密鑰.并且使?這個對稱密鑰加密給客戶端返回的響 應數據.
- 后續客戶端和服務器的通信都只用對稱加密即可.由于該密鑰只有客戶端和服務器兩個主機知道,其 他主機/設備不知道密鑰即使截獲數據也沒有意義.
由于對稱加密的效率比非對稱加密高很多,因此只是在開始階段協商密鑰的時候使用非對稱加密,后續
的傳輸仍然使用對稱加密.
那么接下來問題又來了:
- 客戶端如何獲取到公鑰?
- 客戶端如何確定這個公鑰不是黑客偽造的?
五:中間人攻擊
?客可以使用中間人攻擊,獲取到對稱密鑰.
- 服務器具有非對稱加密算法的公鑰S,私鑰S’
- 中間人具有非對稱加密算法的公鑰M,私鑰M’
- 客戶端向服務器發起請求,服務器明文傳送公鑰S給客戶端
- 中間?劫持數據報文,提取公鑰S并保存好,然后將被劫持報文中的公鑰S替換成為自己的公鑰M,
并將偽造報文發給客戶端 - 客戶端收到報文,提取公鑰M(自己當然不知道公鑰被更換過了),自己形成對稱秘鑰X,用公鑰M加
密X,形成報文發送給服務器 - 中間人劫持后,直接用自己的私鑰M’進行解密,得到通信秘鑰X,再用曾經保存的服務端公鑰S加
密后,將報文推送給服務器 - 服務器拿到報文,用自己的私鑰S’解密,得到通信秘鑰X
- 雙方開始采用X進行對稱加密,進行通信。但是?切都在中間人的掌握中,劫持數據,進行竊聽甚
?修改,都是可以的
?客可以使用中間人攻擊,獲取到對稱密鑰.
1.證書
服務端在使用HTTPS前,需要向CA機構申領?份數字證書,數字證書里含有證書申請者信息、公鑰信
息等。服務器把證書傳輸給瀏覽器,瀏覽器從證書里獲取公鑰就行了,證書就如?份證,證明服務端
公鑰的權威性
這個證書可以理解成是?個結構化的字符串,里面包含了以下信息:
- 證書發布機構
- 證書有效期
- 公鑰
- 證書所有者
- 簽名
需要注意的是:申請證書的時候,需要在特定平臺生成查,會同時生成?對兒密鑰對兒,即公鑰和私
鑰。這對密鑰對兒就是用來在網絡通信中進行明文加密以及數字簽名的。
2.數據簽名
簽名的形成是基于非對稱加密算法的,注意,目前暫時和https沒有關系,不要和https中的公鑰私鑰搞
混了
當服務端申請CA證書的時候,CA機構會對該服務端進行審核,并專門為該網站形成數字簽名,過程如
下:
- CA機構擁有非對稱加密的私鑰A和公鑰A’
- CA機構對服務端申請的證書明文數據進行hash,形成數據摘要
- 然后對數據摘要用CA私鑰A’加密,得到數字簽名S
服務端申請的證書明文和數字簽名S共同組成了數字證書,這樣?份數字證書就可以頒發給服務端了
3.通過證書解決中間人攻擊
在客戶端和服務器剛?建立連接的時候,服務器給客戶端返回?個證書.
這個證書包含了剛才的公鑰,也包含了網站的?份信息.
當客戶端獲取到這個證書之后,會對證書進行校驗(防止證書是偽造的).
- 判定證書的有效期是否過期
- 判定證書的發布機構是否受信任(操作系統中已內置的受信任的證書發布機構).
- 驗證證書是否被篡改:從系統中拿到該證書發布機構的公鑰,對簽名解密,得到?個hash值(稱為數
據摘要),設為hash1.然后計算整個證書的hash值,設為hash2.對比hash1和hash2是否相等.如
果相等,則說明證書是沒有被篡改過的.
4.中間人有沒有可能篡改該證書?
- 中間人篡改了證書的明文
- 由于他沒有CA機構的私鑰,所以?法hash之后用私鑰加密形成簽名,那么也就沒法辦法對篡改后 的證書形成匹配的簽名
- 如果強行篡改,客戶端收到該證書后會發現明文和簽名解密后的值不?致,則說明證書已被篡改,
證書不可信,從而終止向服務器傳輸信息,防止信息泄露給中間人
中間人整個掉包證書?
- 因為中間人沒有CA私鑰,所以無法制作假的證書(為什么?)
- 所以中間人只能向CA申請真證書,然后用自己申請的證書進行掉包
- 這個確實能做到證書的整體掉包,但是別忘記,證書明文中包含了域名等服務端認證信息,如果整 體掉包,客戶端依舊能夠識別出來。
- 永遠記住:中間人沒有CA私鑰,所以對任何證書都無法進行合法修改,包括自己的
六:完整流程
左側都是客戶端做的事情,右側都是服務器做的事情
總結
HTTPS工作過程中涉及到的密鑰有三組.
- 第一組(非對稱加密):用于校驗證書是否被篡改.服務器持有私鑰(私鑰在注冊證書時獲得),客戶端持有
公鑰(操作系統包含了可信任的CA認證機構有哪些,同時持有對應的公鑰).服務器使用這個私鑰對證書
的簽名進行加密.客戶端通過這個公鑰解密獲取到證書的簽名,從而校驗證書內容是否是篡改過. - 第二組(非對稱加密):用于協商生成對稱加密的密鑰.服務器生成這組私鑰-公鑰對,然后通過證書把公 鑰傳遞給客戶端.然后客戶端用這個公鑰給生成的對稱加密的密鑰加密,傳輸給服務器,服務器通過私鑰 解密獲取到對稱加密密鑰.
- 第三組(對稱加密):客戶端和服務器后續傳輸的數據都通過這個對稱密鑰加密解密. 其實?切的關鍵都是圍繞這個對稱加密的密鑰.其他的機制都是輔助這個密鑰工作的. 第?組非對稱加密的密鑰是為了讓客戶端把這個對稱密鑰傳給服務器. 第?組非對稱加密的密鑰是為了讓客戶端拿到第?組非對稱加密的公鑰.
如果覺得文章不錯,期待你的一鍵三連哦,你個鼓勵是我創作的動力之源,讓我們一起加油,頂峰相見!!!💓 💓 💓