HTTPS介紹及加密的過程

http協(xié)議可能存在信息竊聽或身份偽造等安全問題,使用https通信機(jī)制可以有效的防止這些問題。

1、HTTP的缺點(diǎn)

凡事皆有兩面性,http作為應(yīng)用廣泛的通信協(xié)議,自然是十分優(yōu)秀的,但其也存在不足之處:

(1)通信使用明文,可能會(huì)被竊聽。

為了保證http傳輸?shù)母咝?,http本身不具備加密功能,所以無法對(duì)通信整體進(jìn)行加密。為了解決這個(gè)問題,可以對(duì)通信或者內(nèi)容進(jìn)行加密。

通信加密:可以通過SSL(Secure Socket Layer,安全套接層)或TLS(Transport Layer Security,安全層傳輸協(xié)議)的組合使用,加密HTTP的通信內(nèi)容。

用SSL建立安全通信線路之后,就可以在這條線路上進(jìn)行HTTP通信了。與SSL組合使用的HTTP就是HTTPS(HTTP Secure,超文本傳輸安全協(xié)議)。

image-20211120221525493.png

內(nèi)容加密:由于 HTTP 協(xié)議中沒有加密機(jī)制,那么就對(duì) HTTP 協(xié)議傳輸?shù)膬?nèi)容本身加密。即把HTTP 報(bào)文里所含的內(nèi)容進(jìn)行加密處理。 在這種情況下,客戶端需要對(duì) HTTP 報(bào)文進(jìn)行加密處理后再發(fā)送請(qǐng)求。

image-20211120221646679.png

為了做到有效的內(nèi)容加密,前提是要求客戶端和服務(wù)器同時(shí)具備加密和解密機(jī)制。主要應(yīng)用在 Web 服務(wù)中。有一點(diǎn)必須引起注意,由于該方式不同于 SSL或 TLS 將整個(gè)通信線路加密處理,所以內(nèi)容仍有被篡改的風(fēng)險(xiǎn)。

(2)通信時(shí)不會(huì)驗(yàn)證雙方的身份,可能遭遇偽裝。

在這種情況下, 任何客戶端都可以發(fā)送請(qǐng)求,而服務(wù)器只要接收到請(qǐng)求,不管對(duì)方是誰都會(huì)返回一個(gè)響應(yīng)。在這種機(jī)制下就可能存在很多問題。

為了解決這一問題,也可以使用SSL協(xié)議。SSL協(xié)議不僅能進(jìn)行加密處理,而且還使用了證書可以用于確定對(duì)方的身份。證書由值得信任的第三方機(jī)構(gòu)頒發(fā),用以證明服務(wù)器和客戶端是實(shí)際存在的。另外,偽造證書從技術(shù)角度來說是異常困難的一件事。所以只要能夠確認(rèn)通信方(服務(wù)器或客戶端)持有的證書,即可判斷通信方的真實(shí)意圖。

image-20211120222141915.png

(3)無法證明報(bào)文的完整性,可能遭遇篡改。

所謂完整性是指信息的準(zhǔn)確度。若無法證明其完整性,通常也就意味著無法判斷信息是否準(zhǔn)確。

由于HTTP無法驗(yàn)證報(bào)文的準(zhǔn)確性,因此在請(qǐng)求或者響應(yīng)時(shí)發(fā)送的報(bào)文數(shù)據(jù),在接收到之前有可能會(huì)被篡改,但HTTP無法知悉。

比如,從某個(gè) Web 網(wǎng)站上下載內(nèi)容,是無法確定客戶端下載的文件和服務(wù)器上存放的文件是否前后一致的。文件內(nèi)容在傳輸途中可能已經(jīng)被篡改為其他的內(nèi)容。即使內(nèi)容真的已改變,作為接收方的客戶端也是覺察不到的。

像這樣,請(qǐng)求或響應(yīng)在傳輸途中,遭攻擊者攔截并篡改內(nèi)容的攻擊稱為中間人攻擊(Man-in-the-Middle attack,MITM)。

image-20211120222638637.png

雖然有HTTP協(xié)議確定報(bào)文完整性的方法,但事實(shí)上并不便捷可靠。其中常用的是MD5和SHA-1等散列值校驗(yàn)方法,以此用來確認(rèn)文件的數(shù)字簽名方法。

為了有效防止這些弊端,有必要使用 HTTPS。SSL提供認(rèn)證和加密處理及摘要功能。僅靠 HTTP 確保完整性是非常困難的,因此通過和其他協(xié)議組合使用來實(shí)現(xiàn)這個(gè)目標(biāo)。

2、HTTPS

2.1 HTTPS是什么

HTTPS = HTTP + 加密 + 認(rèn)證 + 完整性保護(hù)。HTTP加上加密處理和認(rèn)證以及完整性保護(hù)后即是HTTPS。

如果在HTTP協(xié)議通信過程中使用了未經(jīng)加密的明文,比如在web頁面中輸入信用卡號(hào),如果這條通信線路遭到竊聽,那么信用卡號(hào)就暴露了。

另外對(duì)于HTTP來說,不管是客戶端還是服務(wù)端,都沒有辦法確認(rèn)通信雙方。因?yàn)楹苡锌赡懿⒉皇呛驮绢A(yù)想的通信方在實(shí)際通信。并且還需要考慮到接收到的報(bào)文在通信途中已經(jīng)遭到篡改這一可能性。

為了統(tǒng)一解決上述這些問題,需要在 HTTP 上再加入加密處理和認(rèn)證等機(jī)制。我們把添加了加密及認(rèn)證機(jī)制的 HTTP 稱為 HTTPS(HTTP Secure)。

image-20211120223843726.png

HTTPS并非是應(yīng)用層的新協(xié)議,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協(xié)議代替。

通常,HTTP直接和TCP通信。當(dāng)使用SSL時(shí),則演變成先和SSL通信,再由SSL和TCP通信。簡(jiǎn)而言之,HTTPS就是身披SSL協(xié)議的HTTP。

image-20211120224401434.png

采用SSL后,HTTP就擁有了HTTPS的加密、證書和完整性保護(hù)的功能。

SSL是獨(dú)立于 HTTP 的協(xié)議,所以不光是 HTTP 協(xié)議,其他運(yùn)行在應(yīng)用層的 SMTP 和 Telnet 等協(xié)議均可配合 SSL協(xié)議使用??梢哉f SSL是當(dāng)今世界上應(yīng)用最為廣泛的網(wǎng)絡(luò)安全技術(shù)。

2.2 加密技術(shù)

加密技術(shù)可以分為兩類:對(duì)稱加密和非對(duì)稱加密。

(1)對(duì)稱加密:密鑰只有一個(gè),加密解密為同?個(gè)密碼,且加解密速度快,典型的對(duì)稱加密算法有DES、AES等;

利用這種加密方式加密時(shí)必須要把密鑰也發(fā)送給對(duì)方,密鑰在傳輸過程中如果被截獲,那么也就失去了加密的意義。

(2)非對(duì)稱加密::密鑰成對(duì)出現(xiàn)(且根據(jù)公鑰?法推知私鑰,根據(jù)私鑰也?法推知公鑰),加密解密使?不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對(duì)對(duì)稱加密速度慢,典型的?對(duì)稱加密算法有RSA、DSA等。

非對(duì)稱加密很好的解決了對(duì)稱加密的不足之處。非對(duì)稱加密使用一對(duì)非對(duì)稱的密鑰。一把叫做私有密鑰(private key),另一把叫做公開密鑰(public key)。顧名思義,私有密鑰不能讓其他任何人知道,而公開密鑰則可以隨意發(fā)布,任何人都可以獲得。

使用非對(duì)稱加密方式,發(fā)送密文的一方使用對(duì)方的公開密鑰進(jìn)行加密處理,對(duì)方收到被加密的信息后,再使用自己的私有密鑰進(jìn)行解密。利用這種方式,不需要發(fā)送用來解密的私有密鑰,也不必?fù)?dān)心密鑰被攻擊者竊聽而盜走。

另外,要想根據(jù)密文和公開密鑰,恢復(fù)到信息原文是異常困難的,因?yàn)榻饷苓^程就是在對(duì)離散對(duì)數(shù)進(jìn)行求值,這并非輕而易舉就能辦到。退一步講,如果能對(duì)一個(gè)非常大的整數(shù)做到快速地因式分解,那么密碼破解還是存在希望的。但就目前的技術(shù)來看是不太現(xiàn)實(shí)的。

2.3 HTTPS的加密方式

HTTPS采用混合加密的方式,即同時(shí)采用了對(duì)稱加密和非對(duì)稱加密。

非對(duì)稱加密雖然比對(duì)稱加密更安全,但其不足之處就是加解密需要耗費(fèi)更長(zhǎng)的時(shí)間。所以HTTPS綜合了兩者的優(yōu)勢(shì),在交換密鑰環(huán)節(jié)使用了非對(duì)稱加密方式,之后建立通信交換報(bào)文階段則使用了對(duì)稱加密方式。

image-20211122205547812.png

在上述過程,客戶端和服務(wù)器先使用非對(duì)稱加密,服務(wù)器將公鑰返回給客戶端,客戶端在拿到服務(wù)端的公鑰后,通過公鑰對(duì)key進(jìn)行加密后發(fā)送給服務(wù)器,服務(wù)器再使用它的私鑰進(jìn)行解密后得到key。這個(gè)key只有服務(wù)器才能拿到。隨后客戶端和服務(wù)端建立連接進(jìn)行通信,為了提高通信效率,使用對(duì)稱加密進(jìn)行,密鑰就是之前拿到的key。

HTTPS 正好綜合了這兩種加密算法的優(yōu)點(diǎn),不僅保證了通信安全,還保證了數(shù)據(jù)傳輸效率。

2.4 CA證書

遺憾的是,非對(duì)稱加密方式還是存在一些問題的。那就是無法證明公開密鑰本身就是貨真價(jià)實(shí)的公開密鑰。比如,正準(zhǔn)備和某臺(tái)服務(wù)器建立非對(duì)稱加密方式下的通信時(shí),如何證明收到的公開密鑰就是原本預(yù)想的那臺(tái)服務(wù)器發(fā)行的公開密鑰?;蛟S在公開密鑰傳輸途中,真正的公開密鑰已經(jīng)被攻擊者替換掉了。

為了解決上述問題,可以使用由數(shù)字證書認(rèn)證機(jī)構(gòu)(CA,Certificate Authority)和其相關(guān)機(jī)關(guān)頒發(fā)的公開密鑰證書。

首先,服務(wù)器的運(yùn)營人員向數(shù)字證書認(rèn)證機(jī)構(gòu)提出公開密鑰的申請(qǐng)。數(shù)字證書認(rèn)證機(jī)構(gòu)在判明提出申請(qǐng)者的身份之后,會(huì)對(duì)已申請(qǐng)的公開密鑰做數(shù)字簽名,然后分配這個(gè)已簽名的公開密鑰,并將該公開密鑰放入公鑰證書后綁定在一起。

服務(wù)器會(huì)將這份由數(shù)字證書認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書發(fā)送給客戶端,以進(jìn)行公開密鑰加密方式通信。公鑰證書也可叫做數(shù)字證書或直接稱為證書。 接到證書的客戶端可使用數(shù)字證書認(rèn)證機(jī)構(gòu)的公開密鑰,對(duì)那張證書上的數(shù)字簽名進(jìn)行驗(yàn)證,一旦驗(yàn)證通過,客戶端便可明確兩件事: 一,認(rèn)證服務(wù)器的公開密鑰的是真實(shí)有效的數(shù)字證書認(rèn)證機(jī)構(gòu)。二,服務(wù)器的公開密鑰是值得信賴的。

此處認(rèn)證機(jī)關(guān)的公開密鑰必須安全地轉(zhuǎn)交給客戶端。使用通信方式時(shí),如何安全轉(zhuǎn)交是一件很困難的事,因此,多數(shù)瀏覽器開發(fā)商發(fā)布版本時(shí),會(huì)事先在內(nèi)部植入常用認(rèn)證機(jī)關(guān)的公開密鑰。

image-20211120231531425.png
2.5 HTTPS的通信過程
image-20211122205640388.png

大致分為三個(gè)過程:證書驗(yàn)證、建立連接、數(shù)據(jù)傳輸。

(1)客戶端發(fā)送請(qǐng)求給服務(wù)器。

(2)服務(wù)器保存有CA證書,該證書中包含有非對(duì)稱加密的公鑰以及其他公司信息等。

(3)服務(wù)器響應(yīng)請(qǐng)求,并且攜帶數(shù)字證書發(fā)送給客戶端

(4)客戶端接收到數(shù)字證書后,會(huì)進(jìn)行解析,如果證書不是可信機(jī)構(gòu)頒布,或者證書中的域名與實(shí)際域名不一致,或者證書已經(jīng)過期,就會(huì)向訪問者顯示一個(gè)警告,由其選擇是否還要繼續(xù)通信。

如果證書沒有問題,客戶端就會(huì)從服務(wù)器證書中取出服務(wù)器的公鑰A。然后客戶端還會(huì)生成一個(gè)隨機(jī)碼 KEY,并使用公鑰A將其加密。

(5)客戶端把加密后的key發(fā)送給服務(wù)器。

(6)服務(wù)器會(huì)使用它獨(dú)有的私鑰B對(duì)加密后的key進(jìn)行解密得到key。此時(shí)客戶端和服務(wù)器建立連接,保證了key只有雙方才知道,為后面通信時(shí)數(shù)據(jù)傳輸做準(zhǔn)備。

(7)服務(wù)器使用密鑰 (隨機(jī)碼 KEY)對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加密并發(fā)送給客戶端,客戶端使用相同的密鑰 (隨機(jī)碼 KEY)解密數(shù)據(jù)。

(8)雙方使用對(duì)稱加密愉快地傳輸所有數(shù)據(jù)。

3、總結(jié)

HTTP和HTTPS的區(qū)別

  • 最重要的區(qū)別就是安全性,HTTP 明文傳輸,不對(duì)數(shù)據(jù)進(jìn)行加密安全性較差。HTTPS (HTTP + SSL / TLS)的數(shù)據(jù)傳輸過程是加密的,安全性較好。
  • 使用 HTTPS 協(xié)議需要申請(qǐng) CA 證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。證書頒發(fā)機(jī)構(gòu)如:Symantec、Comodo、DigiCert 和 GlobalSign 等。
  • HTTP 頁面響應(yīng)速度比 HTTPS 快,這個(gè)很好理解,由于加了一層安全層,建立連接的過程更復(fù)雜,也要交換更多的數(shù)據(jù),難免影響速度。
  • 由于 HTTPS 是建構(gòu)在 SSL / TLS 之上的 HTTP 協(xié)議,所以,要比 HTTP 更耗費(fèi)服務(wù)器資源。
  • HTTPS 和 HTTP 使用的是完全不同的連接方式,用的端口也不一樣,前者是 443,后者是 80。

HTTPS 缺點(diǎn)

  • 在相同網(wǎng)絡(luò)環(huán)境中,HTTPS 相比 HTTP 無論是響應(yīng)時(shí)間還是耗電量都有大幅度上升。
  • HTTPS 的安全是有范圍的,在黑客攻擊、服務(wù)器劫持等情況下幾乎起不到作用。
  • 在現(xiàn)有的證書機(jī)制下,中間人攻擊依然有可能發(fā)生。
  • HTTPS 需要更多的服務(wù)器資源,也會(huì)導(dǎo)致成本的升高。

參考:
(1)書籍《圖解HTTP》
(2)https://segmentfault.com/a/1190000021494676

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、HTTPS HTTPS即加密的HTTP,HTTPS并不是一個(gè)新協(xié)議,而是HTTP+SSL(TLS)。原本HTT...
    愛情小傻蛋閱讀 736評(píng)論 0 0
  • 引言 HTTP是不安全的,只需要設(shè)定相應(yīng)的DNS,做一個(gè)中間人攻擊,再將修改后的數(shù)據(jù)返回,就可以達(dá)到篡改數(shù)據(jù)的目的...
    Marshall3572閱讀 1,999評(píng)論 2 12
  • HTTPS HTTPS即加密的HTTP,HTTPS并不是一個(gè)新協(xié)議,而是HTTP+SSL(TLS)。原本HTTP先...
    指尖跳動(dòng)閱讀 4,759評(píng)論 0 1
  • 參考HTTPS的加密流程|一篇文章讀懂HTTPS及其背后的加密原理|HTTPS協(xié)議詳解|Https加密過程|Htt...
    Artifacts閱讀 78,557評(píng)論 5 59
  • 我不是生產(chǎn)者,我只是個(gè)搬運(yùn)工。(o)/~ 1.HTTP和HTTPS的區(qū)別與聯(lián)系: 二者都是網(wǎng)絡(luò)傳輸協(xié)議,https...
    小本YuDL閱讀 4,985評(píng)論 10 108

友情鏈接更多精彩內(nèi)容