1. HTTPS的概念
HTTPS也是一個應(yīng)用層協(xié)議,在HTTP協(xié)議基礎(chǔ)上引入加密層
由于HTTP協(xié)議內(nèi)容都是按照文本形式 明文傳輸?shù)?,就?dǎo)致在傳輸過程中出現(xiàn)一些篡改的情況
報文在傳送時,有效載荷是明文傳送的,容易泄露
在應(yīng)用層和傳輸層之間 添加 軟件層 ,一般稱為 SSL /TLS
SSL/TLS 本質(zhì)就是 HTTP的握手協(xié)商、加密解密

所以此時的數(shù)據(jù)交給 傳輸層的都是經(jīng)過加密的

遠(yuǎn)端主機(jī)也是要進(jìn)行通信的
轉(zhuǎn)而將數(shù)據(jù)交給遠(yuǎn)端的HTTP
通過加一層軟件層,就可以在協(xié)議棧中添加 加密 解密 功能
網(wǎng)絡(luò)中的實際報文 一定是被加密的

HTTP 加上 SSL/TLS 稱之為 HTTPS
2. 加密

加密就是把明文 進(jìn)行一系列轉(zhuǎn)換 生成為密文
解密 就是把 密文再進(jìn)行一系列變換,還原成明文
在這個加密和解密的過程中,需要一個或者多個中間的數(shù)據(jù),輔助進(jìn)行這個過程,這樣的數(shù)據(jù)稱為密鑰
常見的加密方式
對稱加密
采用 單鑰 密碼系統(tǒng)的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密
也稱為 單秘鑰加密,特征:加密和解密所用的密鑰是相同的
特點(diǎn):算法公開、計算量小、加密速度快、加密效率高
非對稱加密
用兩個密鑰來進(jìn)行加密和解密,這兩個密鑰是公開密鑰和私有密鑰
公鑰:可以向全網(wǎng)公開
私鑰:只能自己擁有
用公鑰加密,只能用私鑰解密
用私鑰加密,只能用公鑰解密
因為公鑰是公開的,所以所有人都可以使用公鑰來進(jìn)行 加密和解密
特點(diǎn):算法強(qiáng)度復(fù)雜 ,安全性依賴于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒有對稱加密解密的速度快
3. HTTPS的工作過程的探究
方案1 —— 只使用對稱加密
若通信雙方都各自持有同一個密鑰,并且沒有別人知道,這兩方的通信安全當(dāng)然是可以保證的
(除非密鑰被破解)

即使黑客將數(shù)據(jù)截獲,但是由于黑客并不知道密鑰是啥,所以就沒辦法解密,也就不知道請求中的內(nèi)容
如何保證客戶端和服務(wù)端雙方用同一個密鑰?
若內(nèi)置,則內(nèi)置到windows操作系統(tǒng)還是瀏覽器中,無論是哪一個,則黑客都有一定渠道獲取到
若剛開始時將密鑰傳給服務(wù)器,服務(wù)器就知道了對應(yīng)的密鑰了,雙方再用密鑰做加密
但 將密鑰 經(jīng)過客戶端發(fā)送給服務(wù)器 ,無法保證密鑰本身的安全
所以該方案是不安全的
方案2 —— 只使用 非對稱加密
當(dāng)使用公鑰 加密, 使用私鑰解密時,就算讓黑客將數(shù)據(jù)截獲,也沒有關(guān)系,因為只有私鑰才能解密
似乎看起來是安全的
(私鑰加密 ,公鑰解密)
若服務(wù)器用它的私鑰數(shù)據(jù) 加密 傳給瀏覽器,瀏覽器就可以用公鑰解密它,公鑰被全網(wǎng)公開
若這個公鑰 被人劫持了,則他也能用該公鑰 解密 服務(wù)器傳來的消息
所以該方案也是不安全的
方案3 —— 雙方都是用非對稱加密

服務(wù)器擁有公鑰S和私鑰S1,客戶端擁有公鑰C和公鑰C1
客戶端和服務(wù)器在通信之前,交換下自己的公鑰
客戶端把自己的公鑰 直接發(fā)給服務(wù)器,服務(wù)器就知道了客戶端的公鑰C
服務(wù)器再把自己的公鑰 直接發(fā)給客戶端,客戶端就知道了服務(wù)器的公鑰S

若客戶端給服務(wù)器發(fā)消息,用公鑰S加密,只有服務(wù)器能解密

若服務(wù)器給客戶端發(fā)消息,則用公鑰C進(jìn)行加密
這種做法看似是安全的,但是存在效率低下的問題(非對稱加密速度比較慢,而且雙方都使用非對稱加密就更慢了)
但依舊有安全的問題
方案4 —— 非對稱加密+對稱加密

服務(wù)器采用非對加密解密,客戶端采用對稱加密解密
服務(wù)器擁有公鑰S和私鑰S1
客戶端發(fā)起HTTP請求,服務(wù)器 在響應(yīng)
請求和響應(yīng)都是明文的
服務(wù)器響應(yīng)時,給客戶端推送服務(wù)器端的公鑰S

假設(shè)客戶端形成對稱秘鑰C
通過 對稱秘鑰C和 推送公鑰S 形成 一段密文
將加密后的數(shù)據(jù)推送給服務(wù)器端

服務(wù)器端再用自己的私鑰S1 進(jìn)行解密,形成對稱密鑰C
通過對稱秘鑰C來完成對稱加密,保證雙方數(shù)據(jù)的數(shù)據(jù)安全
但依舊有安全問題
中間人攻擊
以方案四為例
簡稱 MITM 攻擊

客戶端獲取到公鑰S后, 客戶端形成對稱秘鑰C 用服務(wù)器端給客戶端的公鑰S加密
中間人即使 竊取數(shù)據(jù),中間人確實 無法解出 客戶端形成的密匙C

M表示中間人
服務(wù)器端 具有 非對稱加密的公鑰S和私鑰S1
中間人 具有 公鑰M和私鑰M1
客戶端先請求,然后服務(wù)器響應(yīng),服務(wù)器向客戶端發(fā)送公鑰S

當(dāng)服務(wù)器把自己的公鑰推送給客戶端時,中間人截獲
將 S從報文中 拿出來保存好,并將中間人自己的公鑰M填進(jìn)去
將新的報文轉(zhuǎn)發(fā)給客戶端,因為客戶端請求的服務(wù)器端,所以就默認(rèn)是服務(wù)器端發(fā)送的報文
客戶端得到公鑰M,客戶端并不知道公鑰被更換過

客戶端就正常運(yùn)行,公鑰M與客戶端形成的對稱秘鑰X 結(jié)合成 加密報文
并將加密報文推送給中間人,此時就可使中間人對應(yīng)的私鑰M1 對加密報文解密
使中間人獲得客戶端的對稱秘鑰X

獲取到客戶端的對稱秘鑰X后,在與服務(wù)器的公鑰S結(jié)合,重新形成 新的加密報文
再將新的加密報文 推送給服務(wù)器
服務(wù)器 只覺得給 客戶端 推送公鑰S,就應(yīng)該返回 帶有公鑰S的加密報文
服務(wù)器依然進(jìn)行解密,也獲得了客戶端的 對稱秘鑰 X
總結(jié):
中間人攻擊,核心原因是什么?
客戶端無法驗證公鑰的合法性
引入證書
給別人提供網(wǎng)絡(luò)服務(wù)的服務(wù)端,本身是否為合法的,并不由它自己說了算,
要引入一張權(quán)威的、第三方的機(jī)構(gòu)來對服務(wù)端做認(rèn)證
如:你是一個餐廳的老板,餐廳做的菜是否符合食品安全,你是不知道,就算你說好的,別人憑什么相信你
所以必須去政府的相關(guān)單位,獲得經(jīng)營許可證,獲得了該證,食品安全就有了一點(diǎn)保證
所以此時別人相信該餐廳的食品安全,是因為相信給這個餐廳認(rèn)證的食品安全部門
CA認(rèn)證
CA機(jī)構(gòu)是 互聯(lián)網(wǎng)標(biāo)準(zhǔn)化組織,以及整個網(wǎng)絡(luò)標(biāo)準(zhǔn)化組織 共同籌建的 機(jī)構(gòu)
對全國范圍內(nèi)所有對應(yīng)的 服務(wù)器進(jìn)行認(rèn)證,頒發(fā)一個電子證書后,服務(wù)器才能被信任
要想使用 HTTPS,就必須在CA機(jī)構(gòu)中認(rèn)證,以獲取到CA證書
若不認(rèn)證,則 瀏覽器會彈窗,鏈接是不安全的,導(dǎo)致客戶不相信該網(wǎng)站

數(shù)字證書本質(zhì)就是數(shù)據(jù)
理解數(shù)據(jù)簽名
對大文本進(jìn)行摘要,再對摘要的信息進(jìn)行加密 即 數(shù)據(jù)簽名

將文本經(jīng)過哈希散列,形成散列值
用 特定CA證書 的私鑰 對 散列值進(jìn)行加密 形成 簽名
將原始的文本和簽名 結(jié)合,形成簽名的數(shù)據(jù)
這個過程稱為 頒發(fā)一個證書

對比兩者的散列值 是否相等
若相等,則說明簽名數(shù)據(jù)沒有被篡改過
若不相等,則 明文數(shù)據(jù)和簽名數(shù)據(jù)至少有一個被篡改過
方案5 —— 非對稱加密 + 對稱加密 + 證書認(rèn)證

客戶端先請求,然后服務(wù)器響應(yīng),給客戶端證書
1. 驗證證書的合法性
客戶端先認(rèn)證,證書的合法性
通過驗證,將內(nèi)容和簽名 分開,用相同的hash算法,形成對應(yīng)的散列值
先將數(shù)據(jù) 使用 hash算法,形成對應(yīng)的散列值
使用瀏覽器內(nèi)置公鑰,對簽名做解密,形成散列值
若兩者的散列值 不同,有可能 數(shù)據(jù)被篡改了,所以直接丟棄
若兩者的散列值相同,說明內(nèi)容沒有被篡改以及證書是合法的
2. 客戶端在證書中提取公鑰
若證書是合法的,則提取證書中的公鑰

客戶端在形成對稱秘鑰X,與提取出的公鑰 結(jié)合,形成加密報文
將加密報文推送給 服務(wù)器,服務(wù)器通過對應(yīng)的證書私鑰解密
就形成了 客戶端的對稱秘鑰X文章來源:http://www.zghlxwxcb.cn/news/detail-704352.html
證書存在的意義是 保證內(nèi)容沒有被篡改,在驗證 證書合法性的同時 也驗證了公鑰的合法性文章來源地址http://www.zghlxwxcb.cn/news/detail-704352.html
到了這里,關(guān)于【計算機(jī)網(wǎng)絡(luò)】HTTPS的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!