目錄
一、HTTPS
1.加密與解密
2.我們?yōu)槭裁匆用埽?/p>
3.常見加密方式
①對稱加密
②非對稱加密
4.數(shù)據摘要
5.數(shù)字簽名
二、HTTPS的加密方案
1.只是用對稱加密?
2.只使用非對稱加密?
3.雙方都使用非對稱加密
4.非對稱加密+對稱加密
中間人攻擊
證書
CA認證
理解數(shù)據簽名
5.非對稱加密+對稱加密+證書認證
完整流程
查看瀏覽器所信任的證書發(fā)布機構
?中間人有沒有可能篡改該證書?
中間人是否可以掉包整個證書呢?
如何成為中間人?
總結:
一、HTTPS
? ? ? ? 上一篇博客,詳細講述了HTTP協(xié)議(超文本傳輸協(xié)議)的一些細節(jié),在最后我們提到,無論如何HTTP 協(xié)議內容都是按照?本的?式明?傳輸?shù)?,這就導致在傳輸過程中出現(xiàn)?些被篡改的情況,所以當今的網站都是用的是HTTPS 協(xié)議,HTTPS 也是?個應?層協(xié)議. 是在 HTTP 協(xié)議的基礎上引?了?個加密層。
1.加密與解密
? ? ? ? 什么是加密?就是將明文轉換為密文。
? ? ? ? 什么是解密?就是將密文轉換為明文。
? ? ? ? 在這兩個過程中,通常要密鑰來輔佐。密鑰是一種參數(shù),它是在明文轉換為密文或將密文轉換為明文的算法中輸入的參數(shù)。
例子:
????????
?????????
? ? ? ? ?通過密鑰我們可以將密文轉換為明文,反之亦然。
2.我們?yōu)槭裁匆用埽?/h3>
? ? ? ? 我們都會經歷過這樣一個現(xiàn)象。明明下載的是我們想要的軟件,卻彈出另一個軟件的下載。
? ? ? ? 這就是臭名昭著的運營商的劫持。關于運營商劫持,我們要到后面才會講到。
? ? ? ? 如圖,我們發(fā)送HTTP請求,運營商接收到這個請求之后,發(fā)現(xiàn)請求為www.baidu.com,運營商就會將HTTP響應替換為新浪的官網。????????
? ? ? ? 因為http的內容是明?傳輸?shù)?,?數(shù)據會經過路由器、wifi熱點、通信服務運營商、代理服務 器等多個物理節(jié)點,如果信息在傳輸過程中被劫持,傳輸?shù)膬热菥屯耆┞读恕=俪终哌€可以篡改傳 輸?shù)男畔⑶也槐浑p?察覺,這就是中間人攻擊 ,所以我們才需要對信息進?加密。
? ? ? ? 所以針對防止中間人攻擊,我們要對數(shù)據進行加密,下文會講述到“道與魔之間的對抗”,我們呢拼盡全力抵抗數(shù)據被截取,中間人總用方法來獲取信息??芍^“道高一丈魔高一尺”。
3.常見加密方式
①對稱加密
????????采?單鑰密碼系統(tǒng)的加密?法,同?個密鑰可以同時?作信息的加密和解密,這種加密?法稱為對稱加密,也稱為單密鑰加密,特征:加密和解密所?的密鑰是相同的。
????????常?對稱加密算法:DES、3DES、AES、TDEA、Blowfish、RC2等?
????????特點:算法公開、計算量?、加密速度快、加密效率?
例如:
②非對稱加密
????????需要兩個密鑰來進?加密和解密,這兩個密鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰 (private key,簡稱私鑰)。
? ? ? ??常?非對稱加密算法(了解):RSA,DSA,ECDSA
????????特點:算法強度復雜、安全性依賴于算法與密鑰但是由于其算法復雜,?使得加密解密速度沒有對 稱加密解密的速度快。
????????非對稱加密要?到兩個密鑰, ?個叫做 "公鑰", ?個叫做 "私鑰". 公鑰和私鑰是配對的. 最?的缺點就是運算速度?常慢,?對稱加密要慢很多.
????????通過公鑰對明?加密, 變成密?? ? ? ????????????????
????????通過私鑰對密?解密, 變成明?
或者
????????通過私鑰對明?加密, 變成密???????????????????????
????????通過公鑰對密?解密, 變成明?
4.數(shù)據摘要
? ? ? ? 數(shù)據摘要(數(shù)據指紋)這是通過利用單向散列函數(shù)(Hash函數(shù))對信息進行運算,生成一段固定長度的數(shù)據摘要。
? ? ? ? 摘要常見算法:有MD5、SHA1、SHA256、SHA512等。
????????摘要特征:和加密算法的區(qū)別是,摘要嚴格意義不是加密,因為沒有解密,只不過從摘要很難反推 原信息,通常?來進?數(shù)據對?。
? ? ? ? 這個摘要就像這個資源的身份證號一樣,相同的幾率微乎其微,我們可以通過數(shù)據摘要來比對判斷不同資源是否相同。因為更改一個標點符號就會導致前后數(shù)據摘要不一樣。
????????例如:當我上傳電影時,會發(fā)現(xiàn)這個資源有時會瞬間就會被告知上傳成功,但是有時需要很長時間幾兆幾兆的上傳。只是因為,上傳的軟件會將電影等資源利用單向散列函數(shù)形成數(shù)據摘要,將數(shù)據摘要與服務器中的資源的數(shù)據摘要進行對比,如若有數(shù)據摘要與當前上傳的文件的數(shù)據摘要相同,就證明服務器中有我們上傳的這份資源,此時就不需要我們上傳了,所以會被告知上傳完畢。
? ? ? ? 注意,不可能通過數(shù)據摘要反向推出資源來,因為是使用單向散列函數(shù)來運算的。
5.數(shù)字簽名
? ? ? ? 數(shù)字摘要通過加密就得到了數(shù)字簽名。
二、HTTPS的加密方案
1.只是用對稱加密
? ? ? ? 哇,這樣不錯誒,黑客(中間人)拿到的只是密文,看不到我的明文內容,這樣多安全。
? ? ? ? 但事情絕沒有這么簡單,服務端同時給很多客戶端提供服務,它們的密鑰之間必是不同的,如果是相同的,就容易擴散,黑客很容易拿到。所以密鑰之間是不同的。所以,需要服務端來維護每個客戶端和服務端之間的密鑰關系,也是一個麻煩的工程。
? ? ? ? 較為理想的情況為,在每次服務端和客戶端建立關系之前就協(xié)商好密鑰是什么。
? ? ? ? 但是,這個密鑰在網絡傳輸(協(xié)商)中是不是也要加密啊,不加密又要被黑客獲取,但是加密又要使用密鑰,這就是“先有雞還是先有蛋”的問題了,所以這個方法行不通。
2.只使用非對稱加密??
? ? ? ? ?這樣很是不錯,因為中間人只能獲得我的公鑰和密文,但是獲得不了私鑰,所以解密不了,但是,這有很大隱患,只能由客戶端發(fā)信息,而不能由服務端發(fā)信息。
? ? ? ? 因為客戶端只有公鑰,所以服務端只能用私鑰加密,發(fā)送信息 ,這時中間人截取信息,通過先前截取的公鑰就可以獲得信息。那如果服務端通過公鑰加密,那客戶端沒有私鑰就不能解密。
? ? ? ? 只使用非對稱加密是行不通的。
3.雙方都使用非對稱加密
? ? ? ? 上個方案只是客戶端有公鑰,服務端有私鑰,保證單方面的保密可行。這一次客戶端和服務端都具有獨有的公鑰與私鑰,然后互換公鑰。
?? ? ? ? ?這種方法可行,但是非對稱加密速度與對稱加密相比慢得多,會產生效率問題,并且還會有安全問題。
4.非對稱加密+對稱加密
????????服務器具有非對稱公鑰1和私鑰1。
? ? ? ? 客戶端發(fā)起Http請求,獲取公鑰1。
? ? ? ? 客戶端形成對稱密鑰2,通過公鑰1,將對稱密鑰2發(fā)給服務端,中間人因為沒有私鑰1,所以獲取之后解密不了,服務端獲取密文通過私鑰1解密之后獲得對稱密鑰2.
? ? ? ? 之后客戶端和服務端都使用對稱密鑰2來加密解密,快捷可靠。
中間人攻擊
? ? ? ? 這幾個方案都逃不過中間人攻擊這個手段。
? ? ? ? 我們以方案四作為底層方案,設想一下,如果在建立http請求的時候中間人,偽裝成客戶端和服務端,與不同的雙方交流都偽裝成對面的一端,這樣方案四就漏洞百出,我們根據圖示理解。
? ? ? ? ?中間人干了這么多事情最主要的是假裝自己對方通信的另一端,最終為了獲取客戶端的對稱密鑰,這樣接下來的客戶端和服務端之間的通信對中間人毫無秘密可言。
證書
CA認證
????????服務端在使?HTTPS前,需要向CA機構申領?份數(shù)字證書,數(shù)字證書?含有證書申請者信息、公鑰信 息等。服務器把證書傳輸給瀏覽器,瀏覽器從證書?獲取公鑰就?了,證書就如?份證,證明服務端 公鑰的權威性。
? ? ? ? 我們下一個方案需要證書的幫助。
理解數(shù)據簽名
? ? ? ? 數(shù)據簽名的目的是防止數(shù)據被篡改。
? ? ? ? 如果中間人拿到數(shù)字簽名的數(shù)據,將其中的數(shù)據做修改,然后通過散列函數(shù)形成散列值,但是中間人沒有簽名者的私鑰,不能將散列值轉換為簽名(即無法將更改之后的數(shù)據轉換為簽名,即使使用自己的私鑰加密之后將簽名更換,之后的還需要有簽名者的公鑰來解密,就會原形畢露),最后再驗證的時候原有的簽名經過簽名者的公鑰得出的散列值和已經被篡改的數(shù)據形成的散列值不一致,這個數(shù)字簽名就沒有用了。
5.非對稱加密+對稱加密+證書認證
????????在客戶端和服務器剛?建?連接的時候, 服務器給客戶端返回?個證書,證書包含了之前服務端的公鑰, 也包含了?站的?份信息。
? ? ? ? 當客戶端獲取證書后,會檢查證書的證偽。
? ? ? ? 判斷證書的有效期是否過期。
? ? ? ? 判斷發(fā)布證書的機構是否受信任。
? ? ? ? 驗證證書是否被篡改。從系統(tǒng)中拿到發(fā)布證書的機構的公鑰,將簽名解密,得到hash1(數(shù)據摘要),再將數(shù)據(證書)通過散列函數(shù)得到hash2,比對hash1與hash2的值,相同則為該證書未被篡改過。
完整流程
查看瀏覽器所信任的證書發(fā)布機構
? ? ? ? 在edge瀏覽器中,此處就可以查看
? ? ? ? 我們點開一個證書查看細節(jié)。
? ? ? ? 我們會發(fā)現(xiàn)他們包含了我們所說的關鍵信息。
?中間人有沒有可能篡改該證書?
? ? ? ? 先前我們說過,這里在簡潔的表述。
? ? ? ? 中間人篡改證書,將原文修改,但是他沒有CA機構的私鑰,無法將更改的數(shù)據經過hash再通過私鑰轉形成簽名。如果強?篡改,客?端收到該證書后會發(fā)現(xiàn)明?和簽名解密后的值不?致,則說明證書已被篡改, 證書不可信,從?終?向服務器傳輸信息,防?信息泄露給中間?。
中間人是否可以掉包整個證書呢?
? ? ? ? 我們要知道,客戶端在認證時都是通過認證機構的公鑰來檢查證書的真?zhèn)蔚?,所以中間人沒有響應的私鑰就是不可行的,轉而去申請真的證書,然后用自己的證書將客戶端接受的證書進行調換。
? ? ? ? 方法是可行的,但是證書明?中包含了域名等服務端認證信息,如果整體掉包,客戶端依舊能夠識別出來。
如何成為中間人?
? ? ? ??ARP欺騙:在局域?中,hacker經過收到ARP Request?播包,能夠偷聽到其它節(jié)點的 (IP, MAC) 地址。例, ?客收到兩個主機A, B的地址,告訴B (受害者) ,??是A,使得B在發(fā)送給A 的數(shù)據包 都被?客截取。
????????ICMP攻擊:由于ICMP協(xié)議中有重定向的報?類型,那么我們就可以偽造?個ICMP信息然后發(fā)送給 局域?中的客?端,并偽裝??是?個更好的路由通路。從?導致?標所有的上?流量都會發(fā)送到 我們指定的接?上,達到和ARP欺騙同樣的效果。
總結:
????????第一組非對稱密鑰,CA機構擁有的私鑰,客戶端擁有公鑰,這兩個密鑰合作起來,來檢查證書的真?zhèn)巍?/strong>
????????第二組非對稱密鑰,客戶端生成對稱密鑰,通過公鑰,將對稱密鑰加密,發(fā)回給服務端,服務端通過私鑰解密,獲得對稱密鑰。
????????第三組對稱密鑰,客戶端和服務器后續(xù)傳輸?shù)臄?shù)據都通過這個對稱密鑰加密解密。
? ?文章來源:http://www.zghlxwxcb.cn/news/detail-784341.html
????????感謝觀看,如有錯誤請指出,我們下次再見。文章來源地址http://www.zghlxwxcb.cn/news/detail-784341.html
到了這里,關于HTTPS協(xié)議原理---詳解六個加密方案的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!