偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深入淺出講解HTTPS工作原理

原創(chuàng)
開(kāi)發(fā) 前端
在 HTTP 協(xié)議中有可能存在信息竊聽(tīng)或身份偽裝等安全問(wèn)題。使用 HTTPS 通信機(jī)制可以有效地防止這些問(wèn)題。本文我們就了解一下 HTTPS。

【51CTO.com原創(chuàng)稿件】前言

在 HTTP 協(xié)議中有可能存在信息竊聽(tīng)或身份偽裝等安全問(wèn)題。使用 HTTPS 通信機(jī)制可以有效地防止這些問(wèn)題。本文我們就了解一下 HTTPS。

一、什么是 HTTPS

HTTPS,是以安全為目標(biāo)的 HTTP 通道,簡(jiǎn)單講是 HTTP 的安全版。即 HTTP 下加入 SSL 層,HTTPS 的安全基礎(chǔ)是 SSL,因此加密的詳細(xì)內(nèi)容就需要 SSL。 現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付方面。經(jīng)常會(huì)在 Web 的登錄頁(yè)面和購(gòu)物結(jié)算界面等使用 HTTPS 通信。使用 HTTPS 通信時(shí),不再用http://,而是改用https://。另外,當(dāng)瀏覽器訪問(wèn) HTTPS 通信有效的 Web 網(wǎng)站時(shí),瀏覽器的地址欄內(nèi)會(huì)出現(xiàn)一個(gè)帶鎖的標(biāo)記。對(duì) HTTPS 的顯示方式會(huì)因?yàn)g覽器的不同而有所改變。

二、HTTP 與 HTTPS 的區(qū)別

  • HTTP 是明文傳輸,HTTPS 通過(guò) SSL\TLS 進(jìn)行了加密

  • HTTP 的端口號(hào)是 80,HTTPS 是 443

  • HTTPS 需要到 CA 申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少,需要交費(fèi)

  • HTTPS 的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比 HTTP 協(xié)議安全。

為什么說(shuō) HTTPS 比較安全了,接下我們介紹下 HTTP 存在哪些問(wèn)題?

三、HTTP 通信有什么問(wèn)題?

1.通信使用明文(不加密),內(nèi)容可能被竊聽(tīng)

由于 HTTP 本身不具備加密的功能,所以也無(wú)法做到對(duì)通信整體(使用 HTTP 協(xié)議通信的請(qǐng)求和響應(yīng)的內(nèi)容)進(jìn)行加密。即,HTTP 報(bào)文使用明文(指未經(jīng)過(guò)加密的報(bào)文)方式發(fā)送。

此外互聯(lián)網(wǎng)是由聯(lián)通世界各個(gè)地方的網(wǎng)絡(luò)設(shè)施組成,所有發(fā)送和接收經(jīng)過(guò)某些設(shè)備的數(shù)據(jù)都可能被截獲或窺視。例如大家都熟悉的抓包工具:Wireshark,它可以獲取 HTTP 協(xié)議的請(qǐng)求和響應(yīng)的內(nèi)容,并對(duì)其進(jìn)行解析。即使經(jīng)過(guò)加密處理,就有可能讓人無(wú)法破解報(bào)文信息的含義,但加密處理后的報(bào)文信息本身還是會(huì)被看到的。

2.不驗(yàn)證通信方的身份,因此有可能遭遇偽裝

HTTP 協(xié)議中的請(qǐng)求和響應(yīng)不會(huì)對(duì)通信方進(jìn)行確認(rèn)。在 HTTP 協(xié)議通信時(shí),由于不存在確認(rèn)通信方的處理步驟,任何人都可以發(fā)起請(qǐng)求。另外,服務(wù)器只要接收到請(qǐng)求,不管對(duì)方是誰(shuí)都會(huì)返回一個(gè)響應(yīng)(但也僅限于發(fā)送端的 IP 地址和端口號(hào)沒(méi)有被 Web 服務(wù)器設(shè)定限制訪問(wèn)的前提下)

HTTP 協(xié)議的實(shí)現(xiàn)本身非常簡(jiǎn)單,不論是誰(shuí)發(fā)送過(guò)來(lái)的請(qǐng)求都會(huì)返回響應(yīng),因此不確認(rèn)通信方,會(huì)存在以下各種隱患。比如目標(biāo)的 Web 服務(wù)器有可能是已偽裝的 Web 服務(wù)器。

3.無(wú)法證明報(bào)文的完整性,所以可能遭篡改

所謂完整性是指信息的準(zhǔn)確度。若無(wú)法證明其完整性,通常也就意味著無(wú)法判斷信息是否準(zhǔn)確。由于 HTTP 協(xié)議無(wú)法證明通信的報(bào)文完整性,因此,在請(qǐng)求或響應(yīng)送出之后直到對(duì)方接收之前的這段時(shí)間內(nèi),即使請(qǐng)求或響應(yīng)的內(nèi)容遭到篡改,也沒(méi)有辦法獲悉。

換句話說(shuō),沒(méi)有任何辦法確認(rèn),發(fā)出的請(qǐng)求/響應(yīng)和接收到的請(qǐng)求/響應(yīng)是前后相同的。

四、HTTPS 如何解決上述三個(gè)問(wèn)題?

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,其實(shí)就是身披 SSL 協(xié)議這層外殼的 HTTP。

在采用 SSL 后,HTTP 就擁有了 HTTPS 的加密、證書(shū)和完整性保護(hù)這些功能。也就是說(shuō)HTTP 加上加密處理和認(rèn)證以及完整性保護(hù)后即是 HTTPS。

HTTPS 協(xié)議的主要功能基本都依賴(lài)于 TLS/SSL 協(xié)議,TLS/SSL 的功能實(shí)現(xiàn)主要依賴(lài)于三類(lèi)基本算法:散列函數(shù) 、對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密,其利用非對(duì)稱(chēng)加密實(shí)現(xiàn)身份認(rèn)證和密鑰協(xié)商,對(duì)稱(chēng)加密算法采用協(xié)商的密鑰對(duì)數(shù)據(jù)加密,基于散列函數(shù)驗(yàn)證信息的完整性。

(一)解決內(nèi)容可能被竊聽(tīng)的問(wèn)題——加密

1.對(duì)稱(chēng)加密

這種方式加密和解密同用一個(gè)密鑰。加密和解密都會(huì)用到密鑰。沒(méi)有密鑰就無(wú)法對(duì)密碼解密,反過(guò)來(lái)說(shuō),任何人只要持有密鑰就能解密了。

以對(duì)稱(chēng)加密方式加密時(shí)必須將密鑰也發(fā)給對(duì)方??删烤乖鯓硬拍馨踩剞D(zhuǎn)交?在互聯(lián)網(wǎng)上轉(zhuǎn)發(fā)密鑰時(shí),如果通信被監(jiān)聽(tīng)那么密鑰就可會(huì)落人攻擊者之手,同時(shí)也就失去了加密的意義。另外還得設(shè)法安全地保管接收到的密鑰。

2.非對(duì)稱(chēng)加密

公開(kāi)密鑰加密使用一對(duì)非對(duì)稱(chēng)的密鑰。一把叫做私有密鑰,另一把叫做公開(kāi)密鑰。顧名思義,私有密鑰不能讓其他任何人知道,而公開(kāi)密鑰則可以隨意發(fā)布,任何人都可以獲得。使用公開(kāi)密鑰加密方式,發(fā)送密文的一方使用對(duì)方的公開(kāi)密鑰進(jìn)行加密處理,對(duì)方收到被加密的信息后,再使用自己的私有密鑰進(jìn)行解密。利用這種方式,不需要發(fā)送用來(lái)解密的私有密鑰,也不必?fù)?dān)心密鑰被攻擊者竊聽(tīng)而盜走。

非對(duì)稱(chēng)加密的特點(diǎn)是信息傳輸一對(duì)多,服務(wù)器只需要維持一個(gè)私鑰就能夠和多個(gè)客戶端進(jìn)行加密通信,但服務(wù)器發(fā)出的信息能夠被所有的客戶端解密,且該算法的計(jì)算復(fù)雜,加密速度慢。

3.對(duì)稱(chēng)加密+非對(duì)稱(chēng)加密

盡管非對(duì)稱(chēng)加密設(shè)計(jì)奇妙,但它加解密的效率比對(duì)稱(chēng)加密要慢多了。那我們就將對(duì)稱(chēng)加密與非對(duì)稱(chēng)加密結(jié)合起來(lái),充分利用兩者各自的優(yōu)勢(shì),將多種方法組合起來(lái)用于通信。在交換密鑰環(huán)節(jié)使用非對(duì)稱(chēng)加密方式,之后的建立通信交換報(bào)文階段則使用對(duì)稱(chēng)加密方式。具體做法是:發(fā)送密文的一方使用對(duì)方的公鑰進(jìn)行加密處理“對(duì)稱(chēng)的密鑰”,然后對(duì)方用自己的私鑰解密拿到“對(duì)稱(chēng)的密鑰”,這樣可以確保交換的密鑰是安全的前提下,使用對(duì)稱(chēng)加密方式進(jìn)行通信。所以,HTTPS 采用對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密兩者并用的混合加密機(jī)制。

(二)解決報(bào)文可能遭篡改問(wèn)題——數(shù)字簽名

網(wǎng)絡(luò)傳輸過(guò)程中需要經(jīng)過(guò)很多中間節(jié)點(diǎn),雖然數(shù)據(jù)無(wú)法被解密,但可能被篡改,那如何校驗(yàn)數(shù)據(jù)的完整性呢?----校驗(yàn)數(shù)字簽名。

數(shù)字簽名有兩種功效:

  • 能確定消息確實(shí)是由發(fā)送方簽名并發(fā)出來(lái)的,因?yàn)閯e人假冒不了發(fā)送方的簽名。
  • 數(shù)字簽名能確定消息的完整性,證明數(shù)據(jù)是否未被篡改過(guò)。

校驗(yàn)數(shù)字簽名流程見(jiàn)下圖:

數(shù)字簽名技術(shù)就是對(duì)“非對(duì)稱(chēng)密鑰加解密”和“數(shù)字摘要“兩項(xiàng)技術(shù)的應(yīng)用,它將摘要信息用發(fā)送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發(fā)送者的公鑰才能解密被加密的摘要信息,然后用 HASH 函數(shù)對(duì)收到的原文產(chǎn)生一個(gè)摘要信息,與解密的摘要信息對(duì)比。如果相同,則說(shuō)明收到的信息是完整的,在傳輸過(guò)程中沒(méi)有被修改,否則說(shuō)明信息被修改過(guò),因此數(shù)字簽名能夠驗(yàn)證信息的完整性。

(三)解決通信方身份可能被偽裝的問(wèn)題——認(rèn)證

非對(duì)稱(chēng)加密方式還是存在一些問(wèn)題的。那就是無(wú)法證明公開(kāi)密鑰本身就是貨真價(jià)實(shí)的公開(kāi)密鑰。比如,正準(zhǔn)備和某臺(tái)服務(wù)器建立公開(kāi)密鑰加密方式下的通信時(shí),如何證明收到的公開(kāi)密鑰就是原本預(yù)想的那臺(tái)服務(wù)器發(fā)行的公開(kāi)密鑰。

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

數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)處于客戶端與服務(wù)器雙方都可信賴(lài)的第三方機(jī)構(gòu)的立場(chǎng)上。我們來(lái)介紹一下數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)的業(yè)務(wù)流程。首先,服務(wù)器的運(yùn)營(yíng)人員向數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)提出公開(kāi)密鑰的申請(qǐng)。數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)在判明提出申請(qǐng)者的身份之后,會(huì)對(duì)已申請(qǐng)的公開(kāi)密鑰做數(shù)字簽名,然后分配這個(gè)已簽名的公開(kāi)密鑰,并將該公開(kāi)密鑰放入公鑰證書(shū)后綁定在一起。

服務(wù)器會(huì)將這份由數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書(shū)發(fā)送給客戶端,以進(jìn)行非對(duì)稱(chēng)加密方式通信。公鑰證書(shū)也可叫做數(shù)字證書(shū)或直接稱(chēng)為證書(shū)。

接到證書(shū)的客戶端可使用數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)的公開(kāi)密鑰,對(duì)那張證書(shū)上的數(shù)字簽名進(jìn)行驗(yàn)證,一旦驗(yàn)證通過(guò),客戶端便可明確兩件事:一,認(rèn)證服務(wù)器的公開(kāi)密鑰的是真實(shí)有效的數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)。二,服務(wù)器的公開(kāi)密鑰是值得信賴(lài)的。

五、為什么不一直使用 HTTPS?

既然 HTTPS 那么安全可靠,那為何所有的 Web 網(wǎng)站不一直使用 HTTPS?

其中一個(gè)原因是,因?yàn)榕c純文本通信相比,加密通信會(huì)消耗更多的 CPU 及內(nèi)存資源。如果每次通信都加密,會(huì)消耗相當(dāng)多的資源,平攤到一臺(tái)計(jì)算機(jī)上時(shí),能夠處理的請(qǐng)求數(shù)量必定也會(huì)隨之減少。

因此,如果是非敏感信息則使用 HTTP 通信,只有在包含個(gè)人信息等敏感數(shù)據(jù)時(shí),才利用 HTTPS 加密通信。 特別是每當(dāng)那些訪問(wèn)量較多的 Web 網(wǎng)站在進(jìn)行加密處理時(shí),它們所承擔(dān)著的負(fù)載不容小覷。

除此之外,想要節(jié)約購(gòu)買(mǎi)證書(shū)的開(kāi)銷(xiāo)也是原因之一。要進(jìn)行 HTTPS 通信,證書(shū)是必不可少的。而使用的證書(shū)必須向認(rèn)證機(jī)構(gòu)(CA)購(gòu)買(mǎi)。

參考文章

作者:浪里行舟,慕課網(wǎng)認(rèn)證作者,前端愛(ài)好者,立志往全棧工程師發(fā)展,從事前端一年多,目前技術(shù)棧有vue全家桶、ES6以及l(fā)ess等,樂(lè)于分享,最近一年寫(xiě)了五六十篇原創(chuàng)技術(shù)文章,得到諸多好評(píng)!

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2021-07-20 15:20:02

FlatBuffers阿里云Java

2023-01-06 12:50:46

ChatGPT

2022-02-25 08:54:50

setState異步React

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2024-10-10 08:27:39

2021-07-08 18:10:03

2021-08-10 14:10:02

Nodejs后端開(kāi)發(fā)

2020-11-06 09:24:09

node

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2012-05-21 10:06:26

FrameworkCocoa

2017-07-02 18:04:53

塊加密算法AES算法

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2022-05-06 07:19:11

DOMDiff算法

2019-11-21 09:16:14

OpenStack安全組MAC

2020-12-09 09:59:40

Redis原理實(shí)戰(zhàn)

2017-08-24 15:09:13

GAN神經(jīng)網(wǎng)絡(luò)無(wú)監(jiān)督學(xué)習(xí)

2025-05-08 02:10:00

Vue虛擬DOM

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計(jì)算云系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)