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

為什么如此安全的Https協(xié)議卻仍然可以被抓包呢?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
https協(xié)議是一種非常安全的數(shù)據(jù)傳輸協(xié)議,它在網(wǎng)絡(luò)上傳輸?shù)乃袃?nèi)容都是經(jīng)過加密的。這可能也讓一些小伙伴非常不解,如此安全的https協(xié)議為什么也能被抓包?這樣不就說明這個(gè)協(xié)議也并不安全嗎?

[[404017]]

本文轉(zhuǎn)載自微信公眾號「郭霖」,作者郭霖。轉(zhuǎn)載本文請聯(lián)系郭霖公眾號。

小伙伴們早上好。

上一篇原創(chuàng)寫了一篇關(guān)于抓包的文章,教大家如何在Android手機(jī)上對https協(xié)議的請求進(jìn)行抓包。

https協(xié)議是一種非常安全的數(shù)據(jù)傳輸協(xié)議,它在網(wǎng)絡(luò)上傳輸?shù)乃袃?nèi)容都是經(jīng)過加密的。這可能也讓一些小伙伴非常不解,如此安全的https協(xié)議為什么也能被抓包?這樣不就說明這個(gè)協(xié)議也并不安全嗎?

其實(shí)并不是如此。https協(xié)議確實(shí)是非常安全的,但同時(shí),用https協(xié)議傳輸?shù)臄?shù)據(jù)也確實(shí)是可以被抓包的,它們兩者之間并不沖突。

那么今天,我們就來探究一下,為什么說它們兩者之間并不沖突,以及市場上那些主流的抓包工具,到底是如何實(shí)現(xiàn)對https協(xié)議進(jìn)行抓包的。

注意,本篇文章主要探討的是對https協(xié)議抓包的實(shí)現(xiàn)原理,如果你想學(xué)習(xí)的是抓包工具的使用方法,可以參考上一篇文章 在Android手機(jī)上對https請求進(jìn)行抓包 。

另外,想要理解對https協(xié)議抓包的實(shí)現(xiàn)原理,你還必須非常熟悉https的工作機(jī)制才行,我在 寫一篇最好懂的https講解 這篇文章中對https的工作機(jī)制進(jìn)行了詳細(xì)的介紹,還不熟悉https的朋友可以先去閱讀這篇文章。

好了,閱讀到了這里,說明你對https已經(jīng)非常熟悉了,那么你一定知道,https協(xié)議是結(jié)合了非對稱加密和對稱加密一起工作,從而保證數(shù)據(jù)傳輸?shù)陌踩缘摹?/p>

非對稱加密用于確??蛻舳丝梢园踩孬@取到服務(wù)器的真實(shí)公鑰。對稱加密用于確??蛻舳撕头?wù)器之間的數(shù)據(jù)傳輸不會(huì)被任何人監(jiān)聽和解密,因?yàn)閷ΨQ加密使用的密鑰只有客戶端和服務(wù)器這兩者知道,其他任何人在不知道密鑰的情況下都無法對傳輸數(shù)據(jù)進(jìn)行解密。

那么看似固若金湯的https協(xié)議,抓包工具是如何在這其中找到一個(gè)“破綻”,從而實(shí)現(xiàn)對https請求進(jìn)行抓包的呢?

其實(shí)嚴(yán)格來說,這也算不上是一個(gè)破綻,而是用戶的一個(gè)主動(dòng)行為。還記得我們在上篇文章中講到的,如果想要對https請求進(jìn)行抓包,必須在手機(jī)上安裝一個(gè)由Fiddler提供的證書嗎?這個(gè)證書就是整個(gè)工作原理的核心,如果沒有它,那么https就是不可能被抓包的。而安裝證書需要由用戶主動(dòng)去操作,說明用戶知道自己在干什么,自然也應(yīng)該承擔(dān)相應(yīng)的風(fēng)險(xiǎn)。這也是為什么我一直在說,https是非常安全的,但https也是可以被抓包的,它們兩者之間并不沖突。

接下來,我們就具體研究一下,為什么只需要額外安裝一個(gè)證書,抓包工具就可以實(shí)現(xiàn)對https請求進(jìn)行抓包。

我們將實(shí)現(xiàn)原理分成兩個(gè)部分來解析,第一部分是客戶端如何安全地獲取服務(wù)器的真實(shí)公鑰,第二部分是客戶端如何與服務(wù)器商定用于對稱加密的密鑰。

借助那些可信賴的CA機(jī)構(gòu),客戶端是可以安全地獲取到服務(wù)器的真實(shí)公鑰的。

CA機(jī)構(gòu)專門用于給各個(gè)服務(wù)器簽發(fā)數(shù)字證書,從而保證客戶端可以安全地獲得服務(wù)器的公鑰。

服務(wù)器的管理員可以向CA機(jī)構(gòu)進(jìn)行申請,將自己的公鑰提交給CA機(jī)構(gòu)。CA機(jī)構(gòu)則會(huì)幫忙制作證書,并使用自己的私鑰對其加密,然后將加密后的信息返回給服務(wù)器。

這樣,當(dāng)客戶端想要去獲取某個(gè)服務(wù)器的公鑰時(shí),服務(wù)器會(huì)將CA機(jī)構(gòu)簽發(fā)的那段加密信息返回。那么客戶端要如何解密這段信息呢?放心,主流CA機(jī)構(gòu)的公鑰都是被內(nèi)置到操作系統(tǒng)當(dāng)中的,所以只要是服務(wù)器的數(shù)字證書是由正規(guī)CA機(jī)構(gòu)簽發(fā)的,那么就一定可以被解密成功,從而客戶端也就能安全地獲取到服務(wù)器的公鑰了。示意圖如下:

而抓包工具在這個(gè)過程中可以做什么事情呢?我們還是以Fiddler舉例。Fiddler的工作是介于客戶端和服務(wù)器中間的,它會(huì)先于客戶端接收到服務(wù)器返回的加密數(shù)據(jù),然后它也可以使用操作系統(tǒng)內(nèi)置的CA公鑰對這段數(shù)據(jù)解密,從而得到服務(wù)器的公鑰,并先將這個(gè)公鑰保存起來。

接下來,F(xiàn)iddler會(huì)將解密出來的數(shù)據(jù)進(jìn)行調(diào)包,將其中服務(wù)器返回的公鑰替換成自己的一個(gè)公鑰,然后使用自己的非對稱加密私鑰對數(shù)據(jù)重新加密,并將這段重新加密后的數(shù)據(jù)返回給客戶端。示意圖如下:

但是我們知道,用Fiddler自己的私鑰加密后的數(shù)據(jù),客戶端肯定解密不出來呀,因?yàn)镕iddler的公鑰并沒有內(nèi)置到操作系統(tǒng)當(dāng)中,這個(gè)時(shí)候就會(huì)出現(xiàn)我們在上篇文章看到的錯(cuò)誤。

那么接下來要怎么辦你應(yīng)該很清楚了吧?這也是為什么我們一定要在手機(jī)上安裝一個(gè)Fiddler提供的證書才行,只是為了讓客戶端能夠解密出Fiddler調(diào)包之后的數(shù)據(jù)。如下圖所示:

這樣客戶端仍然獲得了一個(gè)公鑰,并且還以為這個(gè)公鑰是服務(wù)器返回的,實(shí)際上這是一個(gè)被Fiddler調(diào)包之后的公鑰。而服務(wù)器返回的真實(shí)公鑰則被Fiddler保存了起來。

到這里為止,獲取服務(wù)器公鑰的流程就結(jié)束了,目前各部分的狀態(tài)如下:

接下來是客戶端與服務(wù)器商定對稱加密密鑰的過程。

由于使用什么對稱加密密鑰是由客戶端這邊來決定的,客戶端可以利用隨機(jī)算法在本地生成一個(gè)對稱加密密鑰,并用服務(wù)器返回的公鑰進(jìn)行加密,然后發(fā)送給服務(wù)器。由于公鑰加密的數(shù)據(jù)只能用私鑰解密,因此沒有任何人能破解出客戶端生成的對稱加密密鑰到底是什么。

然后服務(wù)器這邊使用自己的私鑰將客戶端發(fā)來的數(shù)據(jù)進(jìn)行解密,這樣客戶端和服務(wù)器就都知道對稱加密的密鑰是什么了,并且絕對沒有第三個(gè)人能知道,這樣雙方之后都使用對稱加密來進(jìn)行通訊即可,從而保證了數(shù)據(jù)傳輸?shù)陌踩J疽鈭D如下:

然而現(xiàn)在有了Fiddler,一切就都不一樣了。

客戶端這邊拿到的其實(shí)根本就不是服務(wù)器的公鑰,而是由Fiddler調(diào)包后的公鑰。所以,客戶端這邊生成一個(gè)對稱加密密鑰后,使用的也是Fiddler調(diào)包后的公鑰來進(jìn)行加密的,這樣這段加密后的數(shù)據(jù)只有用Fiddler自己的私鑰才能解開。

那么很顯然,F(xiàn)iddler當(dāng)然是有自己的私鑰的,因此它能夠解密出這段數(shù)據(jù),這樣Fiddler就知道客戶端生成的對稱加密密鑰是什么了。

接下來不要忘記,F(xiàn)iddler還在之前就保存了服務(wù)器返回的真實(shí)公鑰,那么現(xiàn)在Fiddler可以用真實(shí)的服務(wù)器公鑰再次加密這段數(shù)據(jù),然后將加密后的數(shù)據(jù)發(fā)送給服務(wù)器。

對于服務(wù)器而言,它并不知道客戶端這邊發(fā)生了什么事,也不知道Fiddler的存在。它只知道,用自己的私鑰是可以解密出客戶端發(fā)來的數(shù)據(jù),并能從中獲得對稱加密的密鑰。示意圖如下:

到這里,對稱加密密鑰的商定過程也就結(jié)束了,目前各部分的狀態(tài)如下:

你會(huì)發(fā)現(xiàn),現(xiàn)在客戶端、服務(wù)器、Fiddler,這三者都知道對稱加密的密鑰是什么。

之后客戶端與服務(wù)器之間的所有通訊都會(huì)使用這個(gè)密鑰加密后再進(jìn)行傳輸,不知道密鑰的人自然是無法解密出傳輸?shù)膬?nèi)容的,但是Fiddler卻知道密鑰是什么,因此它可以完美監(jiān)聽客戶端與服務(wù)器之間的通訊內(nèi)容,也就實(shí)現(xiàn)了對https協(xié)議抓包的功能。

以上就是https協(xié)議抓包的實(shí)現(xiàn)原理,雖然從最后的結(jié)果看上去,F(xiàn)iddler在其中各種調(diào)包替換數(shù)據(jù),干了很多不安全的操作。但Fiddler之所以有權(quán)限這么干,還是因?yàn)槲覀冊谝婚_始的時(shí)候手動(dòng)安裝了Fiddler的證書,否則后面的流程都是走不通的。

因此,https仍然是一個(gè)非??煽壳野踩臄?shù)據(jù)傳輸協(xié)議。另外也提醒大家,除非你確實(shí)有非常明確的需求,否則千萬不要在自己的手機(jī)或電腦上安裝來路不明的證書,不然你的數(shù)據(jù)安全性可能就會(huì)面臨非常大的威脅。

 

好了,今天的文章就到這里,希望對大家都能有所幫助。如果你覺得這篇文章讀起來有點(diǎn)吃力,可能是因?yàn)槟銓ttps協(xié)議、對稱加密、非對稱加密還不是那么了解。我仍然建議一定要先去閱讀 寫一篇最好懂的https講解 這篇文章,然后再來閱讀本文收獲會(huì)更大。

 

責(zé)任編輯:武曉燕 來源: 郭霖
相關(guān)推薦

2022-12-22 21:01:11

2021-05-12 08:15:53

HTTPSHTTP安全

2015-06-26 11:15:34

2013-03-06 16:56:47

2022-06-01 23:27:38

區(qū)塊鏈加密貨幣數(shù)字資產(chǎn)

2020-07-22 14:30:29

JavaHTTPS加密

2013-08-12 17:41:42

Angular.jsAngularJS

2021-06-29 06:54:56

約會(huì)軟件算法應(yīng)用程序

2023-04-10 15:41:35

2018-04-24 15:53:52

2021-09-30 10:19:29

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2015-11-12 18:20:43

微服務(wù) Docker

2011-05-25 14:46:16

程序員

2019-04-24 08:00:00

HTTPSHTTP前端

2021-02-19 10:02:57

HTTPSJava安全

2014-07-16 09:45:36

DOS

2021-09-07 13:25:31

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2021-08-30 17:14:22

物聯(lián)網(wǎng)IOT

2020-10-13 16:02:03

HTTPS淺析與抓包分

2017-08-08 16:38:50

IT敏捷devops
點(diǎn)贊
收藏

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