本篇內(nèi)容介紹了“分析計(jì)算機(jī)網(wǎng)絡(luò)HTTPS原理”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、鷹手營(yíng)子網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鷹手營(yíng)子等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
1、HTTP 的最大弊端——不安全
HTTP 之所以被 HTTPS 取代,最大的原因就是不安全,至于為什么不安全,看了下面這張圖就一目了然了。
圖1. HTTP數(shù)據(jù)傳輸過(guò)程
由圖可見(jiàn),HTTP 在傳輸數(shù)據(jù)的過(guò)程中,所有的數(shù)據(jù)都是明文傳輸,自然沒(méi)有安全性可言,特別是一些敏感數(shù)據(jù),比如用戶密碼和信用卡信息等,一旦被第三方獲取,后果不堪設(shè)想。這里可能有人會(huì)說(shuō),我在前端頁(yè)面對(duì)敏感數(shù)據(jù)進(jìn)行加密不就行了,比如 MD5 加鹽加密。這么想就太簡(jiǎn)單了。首先 MD5 并不是加密算法,其全稱是 Message Digest Algorithm MD5,意為信息摘要算法,是一種不可逆的哈希算法,也就是說(shuō)經(jīng)過(guò)前端 MD5 處理過(guò)的數(shù)據(jù)在服務(wù)器端是無(wú)法復(fù)原的。這里以密碼舉例,前端把用戶密碼通過(guò) MD5 進(jìn)行處理,并把得到的哈希值發(fā)送給服務(wù)器,服務(wù)器由于無(wú)法復(fù)原密碼,就會(huì)直接用這個(gè)哈希值處理用戶請(qǐng)求。所以第三方在獲取這個(gè)哈希值后,可以繞過(guò)前端登錄頁(yè)面直接訪問(wèn)服務(wù)器,造成安全問(wèn)題。另外,MD5 算法本身的安全性也存在缺陷,這里就不展開(kāi)談了。
總之 MD5,SHA-1 之類的哈希算法并不能讓 HTTP 變得更安全。要想讓 HTTP 更安全,只能使用真正的加密算法,因?yàn)榧用芩惴梢杂妹荑€加密并還原數(shù)據(jù),只要確保密鑰不被第三方獲取,那就能確保數(shù)據(jù)傳輸?shù)陌踩恕6@正是 HTTPS 的解決方案,那下面就來(lái)了解一下加密算法吧。
2、加密算法
HTTPS 解決數(shù)據(jù)傳輸安全問(wèn)題的方案就是使用加密算法,具體來(lái)說(shuō)是混合加密算法,也就是對(duì)稱加密和非對(duì)稱加密的混合使用,這里有必要先了解一下這兩種加密算法的區(qū)別和優(yōu)缺點(diǎn)。
2.1 對(duì)稱加密
對(duì)稱加密,顧名思義就是加密和解密都是使用同一個(gè)密鑰,常見(jiàn)的對(duì)稱加密算法有 DES、3DES 和 AES 等,其優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):算法公開(kāi)、計(jì)算量小、加密速度快、加密效率高,適合加密比較大的數(shù)據(jù)。
缺點(diǎn):
交易雙方需要使用相同的密鑰,也就無(wú)法避免密鑰的傳輸,而密鑰在傳輸過(guò)程中無(wú)法保證不被截獲,因此對(duì)稱加密的安全性得不到保證。
每對(duì)用戶每次使用對(duì)稱加密算法時(shí),都需要使用其他人不知道的惟一密鑰,這會(huì)使得發(fā)收信雙方所擁有的鑰匙數(shù)量急劇增長(zhǎng),密鑰管理成為雙方的負(fù)擔(dān)。對(duì)稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。
本文不對(duì)具體的加密算法做詳細(xì)介紹,有興趣的同學(xué)可以參考 對(duì)稱加密算法詳解,如果直接將對(duì)稱加密算法用在 HTTP 中,會(huì)是下面的效果:
圖2. 對(duì)稱加密數(shù)據(jù)傳輸過(guò)程
從圖中可以看出,被加密的數(shù)據(jù)在傳輸過(guò)程中是無(wú)規(guī)則的亂碼,即便被第三方截獲,在沒(méi)有密鑰的情況下也無(wú)法解密數(shù)據(jù),也就保證了數(shù)據(jù)的安全。但是有一個(gè)致命的問(wèn)題,那就是既然雙方要使用相同的密鑰,那就必然要在傳輸數(shù)據(jù)之前先由一方把密鑰傳給另一方,那么在此過(guò)程中密鑰就很有可能被截獲,這樣一來(lái)加密的數(shù)據(jù)也會(huì)被輕松解密。那如何確保密鑰在傳輸過(guò)程中的安全呢?這就要用到非對(duì)稱加密了。
2.2 非對(duì)稱加密
非對(duì)稱加密,顧名思義,就是加密和解密需要使用兩個(gè)不同的密鑰:公鑰(public key)和私鑰(private key)。公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密;如果用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公鑰才能解密。非對(duì)稱加密算法實(shí)現(xiàn)機(jī)密信息交換的基本過(guò)程是:甲方生成一對(duì)密鑰并將其中的一把作為公鑰對(duì)外公開(kāi);得到該公鑰的乙方使用公鑰對(duì)機(jī)密信息進(jìn)行加密后再發(fā)送給甲方;甲方再用自己保存的私鑰對(duì)加密后的信息進(jìn)行解密。如果對(duì)公鑰和私鑰不太理解,可以想象成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來(lái)的東西。常用的非對(duì)稱加密算法是 RSA 算法,想詳細(xì)了解的同學(xué)點(diǎn)這里:RSA 算法詳解一、RSA 算法詳解二,其優(yōu)缺點(diǎn)如下:
優(yōu)點(diǎn):算法公開(kāi),加密和解密使用不同的鑰匙,私鑰不用再網(wǎng)絡(luò)中傳輸,安全性很高。
缺點(diǎn):計(jì)算量比較大,加密和解密速度相比對(duì)稱加密慢很多。
由于非對(duì)稱加密的強(qiáng)安全性,可以用它完美解決對(duì)稱加密的密鑰泄露問(wèn)題,效果圖如下:
圖3. 客戶端通過(guò)非對(duì)稱加密把密鑰 KEY 發(fā)送給服務(wù)器
在上述過(guò)程中,客戶端先是通過(guò)非對(duì)稱加密把之后用于對(duì)稱加密的密鑰 KEY 返送給客戶端,然后雙方再使用 KEY 進(jìn)行對(duì)稱加密交互數(shù)據(jù)。在非對(duì)稱加密的數(shù)據(jù)傳輸過(guò)程中,即便第三方獲取了公鑰和加密后的 KEY,在沒(méi)有私鑰的情況下也無(wú)法破解 KEY (私鑰存在服務(wù)器,泄露風(fēng)險(xiǎn)極小),也就保證了接下來(lái)對(duì)稱加密的數(shù)據(jù)安全。而上面這個(gè)流程圖正是 HTTPS 的雛形,HTTPS 正好綜合了這兩種加密算法的優(yōu)點(diǎn),不僅保證了通信安全,還保證了數(shù)據(jù)傳輸效率。
3、HTTPS 原理詳解
先看一下維基百科對(duì) HTTPS 的定義
Hypertext Transfer Protocol Secure (HTTPS) is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security (TLS) or, formerly, its predecessor, Secure Sockets Layer (SSL). The protocol is therefore also often referred to as HTTP over TLS, or HTTP over SSL.
HTTPS (Hypertext Transfer Protocol Secure) 是基于 HTTP 的擴(kuò)展,用于計(jì)算機(jī)網(wǎng)絡(luò)的安全通信,已經(jīng)在互聯(lián)網(wǎng)得到廣泛應(yīng)用。在 HTTPS 中,原有的 HTTP 協(xié)議會(huì)得到 TLS (安全傳輸層協(xié)議) 或其前輩 SSL (安全套接層) 的加密。因此 HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。
可見(jiàn)HTTPS 并非獨(dú)立的通信協(xié)議,而是對(duì) HTTP 的擴(kuò)展,保證了通信安全,二者關(guān)系如下:
圖4. HTTP和HTTPS的關(guān)系
也就是說(shuō) HTTPS = HTTP + SSL / TLS。
接下來(lái)就是最重要的 HTTPS 原理解析了,老規(guī)矩先上圖。
圖5. HTTPS 加密、解密、驗(yàn)證及數(shù)據(jù)傳輸過(guò)程
看上去眼花繚亂,不要怕,且聽(tīng)我細(xì)細(xì)道來(lái)。HTTPS 的整個(gè)通信過(guò)程可以分為兩大階段:證書(shū)驗(yàn)證和數(shù)據(jù)傳輸階段,數(shù)據(jù)傳輸階段又可以分為非對(duì)稱加密和對(duì)稱加密兩個(gè)階段。具體流程按圖中的序號(hào)講解。
1.客戶端請(qǐng)求 HTTPS 網(wǎng)址,然后連接到 server 的 443 端口 (HTTPS 默認(rèn)端口,類似于 HTTP 的80端口)。
2.采用 HTTPS 協(xié)議的服務(wù)器必須要有一套數(shù)字 CA (Certification Authority)證書(shū),證書(shū)是需要申請(qǐng)的,并由專門的數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)(CA)通過(guò)非常嚴(yán)格的審核之后頒發(fā)的電子證書(shū) ( (當(dāng)然了是要錢的,安全級(jí)別越高價(jià)格越貴))。頒發(fā)證書(shū)的同時(shí)會(huì)產(chǎn)生一個(gè)私鑰和公鑰。私鑰由服務(wù)端自己保存,不可泄漏。公鑰則是附帶在證書(shū)的信息中,可以公開(kāi)的。證書(shū)本身也附帶一個(gè)證書(shū)電子簽名,這個(gè)簽名用來(lái)驗(yàn)證證書(shū)的完整性和真實(shí)性,可以防止證書(shū)被篡改。
3.服務(wù)器響應(yīng)客戶端請(qǐng)求,將證書(shū)傳遞給客戶端,證書(shū)包含公鑰和大量其他信息,比如證書(shū)頒發(fā)機(jī)構(gòu)信息,公司信息和證書(shū)有效期等。Chrome 瀏覽器點(diǎn)擊地址欄的鎖標(biāo)志再點(diǎn)擊證書(shū)就可以看到證書(shū)詳細(xì)信息。
圖6. B站 CA 證書(shū)
4.客戶端解析證書(shū)并對(duì)其進(jìn)行驗(yàn)證。如果證書(shū)不是可信機(jī)構(gòu)頒布,或者證書(shū)中的域名與實(shí)際域名不一致,或者證書(shū)已經(jīng)過(guò)期,就會(huì)向訪問(wèn)者顯示一個(gè)警告,由其選擇是否還要繼續(xù)通信。就像下面這樣:
圖7. 瀏覽器安全警告
如果證書(shū)沒(méi)有問(wèn)題,客戶端就會(huì)從服務(wù)器證書(shū)中取出服務(wù)器的公鑰A。然后客戶端還會(huì)生成一個(gè)隨機(jī)碼 KEY,并使用公鑰A將其加密。
5.客戶端把加密后的隨機(jī)碼 KEY 發(fā)送給服務(wù)器,作為后面對(duì)稱加密的密鑰。
6.服務(wù)器在收到隨機(jī)碼 KEY 之后會(huì)使用私鑰B將其解密。經(jīng)過(guò)以上這些步驟,客戶端和服務(wù)器終于建立了安全連接,完美解決了對(duì)稱加密的密鑰泄露問(wèn)題,接下來(lái)就可以用對(duì)稱加密愉快地進(jìn)行通信了。
7.服務(wù)器使用密鑰 (隨機(jī)碼 KEY)對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加密并發(fā)送給客戶端,客戶端使用相同的密鑰 (隨機(jī)碼 KEY)解密數(shù)據(jù)。
8.雙方使用對(duì)稱加密愉快地傳輸所有數(shù)據(jù)。
好了,以上就是 HTTPS 的原理詳解了,如此精美的圖搭配這么詳細(xì)的過(guò)程解析,你再搞不懂就說(shuō)不過(guò)去了吧哈哈。
“分析計(jì)算機(jī)網(wǎng)絡(luò)HTTPS原理”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!