自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

網(wǎng)絡(luò)面經(jīng):使用HTTPS就絕對安全了嗎?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
前面學(xué)習(xí)過HTTP協(xié)議的報文格式及交互模式,我們知道HTTP傳輸?shù)膬?nèi)容本質(zhì)上就是文本,HTTP/2采用了二進制字節(jié)的形式傳輸,但依舊可以進行反編譯。

[[421374]]

本文轉(zhuǎn)載自微信公眾號「程序新視界」,作者二師兄 。轉(zhuǎn)載本文請聯(lián)系程序新視界公眾號。

朋友面試阿里,關(guān)于HTTPS被問了三道題,看看你能回到上幾道題。

第一,為什么使用HTTPS之后,通信就安全了?

第二,HTTPS實現(xiàn)通信安全的原理是什么?

第三,使用了HTTPS就絕對安全了嗎?

本篇文章就帶大家一起聊聊HTTPS,順便解答上面三個問題。

關(guān)于HTTPS

前面學(xué)習(xí)過HTTP協(xié)議的報文格式及交互模式,我們知道HTTP傳輸?shù)膬?nèi)容本質(zhì)上就是文本,HTTP/2采用了二進制字節(jié)的形式傳輸,但依舊可以進行反編譯。也就是說,在通信的過程中只要攔截對應(yīng)的請求,就可以獲得通信的報文信息。從這個層面來講,我們說HTTP協(xié)議是不安全的。

而HTTPS是身披SSL外殼的HTTP,利用SSL/TLS建立全信道,加密數(shù)據(jù)包。HTTPS的主要目的是提供對網(wǎng)站服務(wù)器的身份認(rèn)證,同時保護交換數(shù)據(jù)的隱私與完整性。

在HTTPS通信過程中,會涉及到非對稱加密和對稱加密兩種算法,從而滿足了性能和安全的雙重需要。

HTTPS的特點

HTTPS傳輸?shù)氖羌用苤蟮臄?shù)據(jù),即使被攔截也很難獲得明文。HTTPS有以下特點:

  • 內(nèi)容加密:采用混合加密技術(shù)(結(jié)合對稱加密和非對稱加密技術(shù)),中間者無法直接查看明文內(nèi)容;
  • 驗證身份:通過證書認(rèn)證客戶端訪問的是自己的服務(wù)器;
  • 保護數(shù)據(jù)完整性:防止傳輸?shù)膬?nèi)容被中間人冒充或者篡改;

關(guān)于這些特點,我們可以在原理層面進行逐步分析。

HTTPS協(xié)議實現(xiàn)原理

采用HTTPS通信的過程涉及到兩部分:證書驗證和數(shù)據(jù)傳輸。

HTTPS原理

第一階段,證書獲取及驗證過程:

  • 瀏覽器發(fā)起一個HTTPS的請求;
  • 服務(wù)器接收到請求,返回一個HTTPS證書,該證書內(nèi)包含服務(wù)器私鑰對應(yīng)的公鑰信息;
  • 瀏覽器驗證證書是否合法,如果不合法(未經(jīng)過CA認(rèn)證或未添加信任)則進行提示。通常位于瀏覽器中URL地址左側(cè)有的小鎖圖標(biāo)處;

第二階段,加密秘鑰傳輸及加密報文傳輸,可以統(tǒng)稱數(shù)據(jù)傳輸:

  • 證書驗證合法或可信任,則在瀏覽器端生成一個隨機數(shù),該隨機數(shù)用于通信報文的對稱加密;
  • 通過公鑰將隨機數(shù)加密,傳輸給服務(wù)器;
  • 服務(wù)器獲得加密的隨機數(shù),使用私鑰進行解密,并存儲隨機數(shù)。此時,雙方都有了對稱加密的秘鑰(隨機數(shù));
  • 服務(wù)器使用隨機數(shù)對要傳輸?shù)臄?shù)據(jù)進行對稱加密,并將加密信息返回給客戶端;
  • 客戶端獲得加密數(shù)據(jù),使用隨機數(shù)作為秘鑰,基于對稱加密算法對報文進行解密,渲染呈現(xiàn)給用戶;

關(guān)于HTTPS的實現(xiàn)原理總結(jié)一下就三步:

  • 客戶端向服務(wù)器端索要并驗證公鑰;
  • 雙方協(xié)商生成"對話密鑰";
  • 雙方采用"對話密鑰"進行加密通信;

其中前兩步又稱作"握手階段"(handshake)。

上述流程看似簡單,但會延伸出來幾個問題,我們來逐個看看。

如何保證公鑰不被篡改?

解決方法:將公鑰放在數(shù)字證書中。只要證書是可信的,公鑰就是可信的。這也是為什么服務(wù)器返回的是證書,而不是單純的公鑰。

如何減少公鑰加密耗時問題?

解決方法:每一次對話(session),客戶端和服務(wù)器端都生成一個"對話密鑰"(session key),用它來加密信息。由于"對話密鑰"是對稱加密,所以運算速度非???,而服務(wù)器公鑰只用于加密"對話密鑰"本身,這樣就減少了加密運算的消耗時間。

這也是為什么在HTTPS通信過程中會生成一個隨機數(shù)的原因,它就是“對話密鑰”,用來數(shù)據(jù)通信的對稱加密,提升算法性能。

另外,一對公私鑰只能實現(xiàn)單向的加解密,所以HTTPS中內(nèi)容傳輸加密采取的是對稱加密,而不是非對稱加密。

分析完整個HTTPS交互的流程,看似已經(jīng)完美的方案中其實還有一個漏洞:數(shù)據(jù)在網(wǎng)絡(luò)傳輸中如果被“中間人”掉包了怎么辦?

“中間人”攻擊

我們先來看一下,在基于HTTPS交互的過程中,在通信的過程中公鑰被掉包了會發(fā)生什么情況。

中間人攻擊

在上圖中,基本原理就是中間人通過網(wǎng)絡(luò)劫持等,將通信過程中的公鑰替換成自己的,然后假裝自己是服務(wù)器與客戶端進行通信。從而對信息進行竊取或篡改。

我們知道,公私鑰及證書都是可以自己進行生成的,雖然發(fā)起了HTTPS的請求,但如果證書和公私鑰無法保證是否被替換,傳輸?shù)陌踩跃蜔o法保證。此時,就需要拿出終極武器:SSL證書申購。也稱作CA證書申購。

CA證書

CA是證書的簽發(fā)機構(gòu),它是公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)的核心。CA是負(fù)責(zé)簽發(fā)證書、認(rèn)證證書、管理已頒發(fā)證書的機關(guān)。有這樣一個權(quán)威機構(gòu)來簽發(fā)證書,就確保了證書的可信性(合法性)。

瀏覽器會對服務(wù)器返回SSL證書進行驗證:

  • 驗證域名、有效期等信息是否正確;
  • 判斷證書來源是否合法:每份簽發(fā)證書都可以根據(jù)驗證鏈查找到對應(yīng)的根證書,操作系統(tǒng)、瀏覽器會在本地存儲權(quán)威機構(gòu)的根證書,利用本地根證書可以對對應(yīng)機構(gòu)簽發(fā)證書完成來源驗證;
  • 判斷證書是否被篡改:需要與CA服務(wù)器進行校驗;
  • 判斷證書是否已吊銷,可用于第3步中,以減少與CA服務(wù)器的交互,提高驗證效率。

上述條件完全滿足時,才說明該證書合法。

此時,再回到“中間人”攻擊的問題,會發(fā)現(xiàn),當(dāng)瀏覽器獲取到假公鑰時,通過比對驗證就會發(fā)現(xiàn)不合法,進而在瀏覽器層面對用戶進行風(fēng)險提示。但瀏覽器只會進行風(fēng)險提示,用戶仍然可以授權(quán)信任證書繼續(xù)操作。

使用了HTTPS就絕對安全了嗎?

通過上面的學(xué)習(xí)我們已經(jīng)知道HTTPS通信是加密的,常規(guī)抓包手段是無法獲取報文內(nèi)容的。但像上面所說的“中間人”攻擊的情況,不顧瀏覽器的安全提醒,繼續(xù)進行后續(xù)網(wǎng)頁的訪問,則會出現(xiàn)安全問題。

在客戶端授權(quán)的情況下,可以組建中間人網(wǎng)絡(luò),而抓包工具便是作為中間人的代理。通常,HTTPS抓包工具會生成一個證書(類比的假證書),用戶安裝在客戶端或添加信任。此時,客戶端先與抓包工具通信,抓包工具再將請求轉(zhuǎn)發(fā)到服務(wù)器,服務(wù)器返回的信息,抓包工具可進行處理或輸出,然后再返回給客戶端。

因此,HTTPS的安全性更多的體現(xiàn)在用戶不知情的情況下進行的訪問,如果用戶已知情或主動授信,表明用戶已經(jīng)明確了風(fēng)險,此時如果出現(xiàn)中間人攻擊的問題,HTTPS還是不安全的。

本地隨機數(shù)的安全

最后,還有一方面的安全需要我們留意,那就是本地隨機數(shù)的安全。在HTTPS內(nèi)容傳輸時采用的是對稱加密,因此秘鑰在客戶端和服務(wù)器端均存儲的有。針對本地存儲是隨機數(shù),HTTPS并不能保證它的安全,HTTPS重點關(guān)注的是傳輸過程中的安全。

也就是說,本地的安全屬于另一安全范疇,應(yīng)對的措施有安裝殺毒軟件、反木馬、瀏覽器升級修復(fù)漏洞等。

小結(jié)

最后,再來看看那三個問題:

第一,為什么使用HTTPS之后,通信就安全了?

HTTPS利用SSL/TLS建立全信道,加密數(shù)據(jù)包,保證了傳輸安全,防止傳輸過程被監(jiān)聽、防止數(shù)據(jù)被竊取,可以確認(rèn)網(wǎng)站的真實性。

第二,HTTPS實現(xiàn)通信安全的原理是什么?

HTTPS實現(xiàn)安全通信主要通過多種加密方式和身份驗證實現(xiàn),主要分三步:(1)客戶端向服務(wù)器端索要證書并驗證公鑰;(2)雙方協(xié)商生成"對話密鑰";(3)雙方采用"對話密鑰"進行加密通信;

其中,證書保證了公鑰的可信與安全,公鑰保證了“對話秘鑰”傳輸?shù)陌踩?ldquo;對話秘鑰”保證了通信報文的安全。

第三,使用了HTTPS就絕對安全了嗎?

HTTPS重點關(guān)注傳輸過程中的安全,在用戶不知情的情況下進行網(wǎng)站訪問,瀏覽器會給出安全提示。但如果用戶繼續(xù)訪問或設(shè)置授信,則會發(fā)生“中間人”攻擊的可能性。在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。中間人攻擊常發(fā)生在公共WIF或路由上。

在本地隨機數(shù)(秘鑰)安全方面,HTTPS也無能為力,只能借助殺毒軟件、漏洞升級等來防護。同時,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面,HTTPS幾乎起不到作用。

 

責(zé)任編輯:武曉燕 來源: 程序新視界
相關(guān)推薦

2010-11-03 10:49:04

面試

2015-11-05 12:02:10

2020-07-22 14:30:29

JavaHTTPS加密

2012-04-19 09:29:48

2010-08-26 10:47:05

2021-08-26 06:58:14

CookieSession應(yīng)用

2019-08-20 13:45:01

阿里巴巴面試Java

2024-05-11 07:48:46

騰訊抽象耦合度

2019-08-05 15:05:35

2011-05-13 12:37:30

2022-08-18 17:44:25

HTTPS協(xié)議漏洞

2009-11-26 10:25:09

招聘外企

2015-10-16 11:38:40

2013-04-12 11:16:28

2022-09-22 12:03:14

網(wǎng)絡(luò)安全事件

2021-07-23 07:54:06

網(wǎng)絡(luò)安全熊貓燒香

2018-09-03 15:11:45

2023-11-14 14:38:53

2009-08-14 14:58:12

2022-03-22 09:16:24

HTTPS數(shù)據(jù)安全網(wǎng)絡(luò)協(xié)議
點贊
收藏

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