HTTPS實現原理

2022-07-03 18:24:08 字數 4185 閱讀 9797

目錄中間人攻擊

分析ca

https=非對稱加密+對稱加密+hash+ca=http+ssl

https連線過程

burp抓https包過程

演算法f,加解密keyk

加密:f(k,data)=x

解密:f(k,x)=data

過程:c f(k,data)=x ==x>>s f(k,x)=datac通過k加密data得到x並傳輸給s,s通過k解密x得到data

s f(k,data)=x ==x>>c f(k,x)=datas通過k加密data得到x並傳輸給c,c通過k解密x得到data

只用對稱加密,只用乙個公有的key[如果每個c乙個,對於s儲存壓力太大]:

因為hacker也有這個k,所以hacker也能解密c與s之間的加密資訊

演算法f,加解密key 公鑰pk私鑰sk,私鑰sk只有s有

加密:f(pk,data)=y

解密:f(sk,y)=data

加密:f(sk,data)=y2

解密:f(pk,y2)=data

過程:c==>>s s==pk>>cc向s索要公鑰pk

c f(pk,data)=y ==y>>s f(sk,y)=datac通過pk加密data得到y並傳輸給s,s通過sk解密y得到data

s f(sk,data)=y2 ==y2>>c f(pk,y2)=datas通過sk加密data得到y2並傳輸給c,c通過pk解密y2得到data

c to s時,c用pk加密的y只有s能解密,因為只有s有sk

但,s to c時,因為hacker也有pk,所以sk加密的y2,c和hacker都能解密

非對稱加密的缺點:ctos安全,但stoc因為hacker也有pk,所以不安全

結合以上優缺點,似乎非對稱+對稱有戲

過程:非對稱加密通訊確定臨時key

c==>>s s==pk>>cc向s索要公鑰pk

c f(pk,key)=y ==y>>s f(sk,y)=keyc通過pk加密key得到y並傳輸給s,s通過sk解密y得到key,這個key就是臨時key,因為只有s有sk,所以此時,只有c和s知道這個key

臨時key作公鑰進行對稱加密通訊

c f(key,data)=x ==x>>s f(key,x)=datac通過key加密data得到x並傳輸給s,s通過key解密x得到data

s f(key,data)=x ==x>>c f(key,x)=datas通過key加密data得到x並傳輸給c,c通過key解密x得到data

先用非對稱加密,在ctos時,雙方確定乙個臨時的key作為公鑰進行後續的對稱加密通訊,每個c得出的key都是不同的

對於hacker來說,因為沒有非對稱加密中的sk,他得不到這個臨時的key,也就無法解密後續的對稱加密通訊

非對稱+對稱看起來無懈可擊,但當hacker直接在第一步ctos時就介入,將自己偽裝成s,他就能獲取ctos的通訊,再將自己偽裝成c與s溝通,就能獲取stoc的通訊

過程:非對稱加密通訊確定臨時key

1.c==>>s(h) s(h)==pkh>>cc得到的是hacker的pkh

c(h)==>>s s==pk>>c(h)hacker得到了s的pk

2.c f(pkh,key)=y ==y>>s(h) f(skh,y)=keyhacker得到了c發的key

c(h) f(pk,keyh)=y ==y>>s f(sk,y)=keyhs得到了hacker發的keyh

此時,hacker有c的臨時key,s的臨時keyh,hacker使用相應的臨時key和臨時keyh作公鑰分別與c和s作對稱加密通訊,通訊內容相同,左右手互換

3.c f(key,data)=x ==x>>s(h) f(key,x)=datac通過key加密data得到x並傳輸給hacker,hacker通過key解密x得到data

c(h) f(keyh,data)=x ==x>>s f(keyh,x)=datahacker通過keyh加密data得到x並傳輸給s,s通過keyh解密x得到data

4.s(h) f(key,data)=x ==x>>c f(key,x)=datahacker通過key加密data得到x並傳輸給c,c通過key解密x得到data

s f(keyh,data)=x ==x>>c(h) f(keyh,x)=datas通過keyh加密data得到x並傳輸給hacker,hacker通過keyh解密x得到data

至此,hacker做到了同時欺騙c和s,hacker知道c和s之間的所有通訊資訊

hacker從第一步c請求公鑰的時候就介入了,導致c一直以為和他通訊的是s,其實是hacker,也就是說,c不知道拿到手的公鑰pk是好是壞

引入ca(證書頒發機構),理解為乙個權威可信的機構

只有ca認證的公鑰才是可信的公鑰

過程:ca把s的pk作為data,把自己的csk作為key,加密pk得到license==>>c(csk,pk)=license

ca將license賣給s【對,s要給錢的】,s將license傳送給c,c的作業系統內建了大量的ca的cpk,c使用cpk對license進行解密就能拿到真正的pk==>>c(cpk,license)=pk

c保證了手上的pk是真實的,就能按部就班與s進行對稱加密通訊

csk只有ca有,cpk大家都有

hacker要想讓c認為手上的pkh是真的,必須c(cpk,licenseh)=pkh=>c(csk,pkh)=licenseh,也就是hacker必須有csk才能有對應的可被cpk解密的licenseh

這也並非絕對安全,最直接的,萬一hacker通過攻擊ca拿到csk怎麼辦?

c->s c向s索要公鑰

cc->ca c向ca確定公鑰真實可信

c->s c生成隨機數,用公鑰加密後傳送給s

cc使用隨機數作為公鑰解密收到的資料

詳細點:

https請求

c向s傳送https請求

生成公鑰1和私鑰

s收到請求後,生成公鑰1和私鑰

返回公鑰1

s將公鑰1返回給c,公鑰1包含資訊:證書頒發機構,過期時間等等

客戶端傳送公鑰2

c用s的公鑰1加密公鑰2後傳送給s

服務端獲取公鑰2,用公鑰2加密後續的通訊內容

s收到公鑰1加密的公鑰2,用私鑰解密得到公鑰2,在後續與c的通訊中用公鑰2對內容進行對稱加密

加密傳輸

s將經過公鑰2加密的內容傳輸給c

獲取加密內容,解密

c獲取公鑰2加密的內容,用先前生成的隨機數,也就是公鑰2對其解密,獲取明文內容

burp抓https包,要先把burp的證書匯入成證書頒發機構,讓burp證書變為根證書

在https過程的第一步建立握手前,burp抓取c發給s的https請求

burp作為中間人,與伺服器建立握手,獲取到伺服器的經過ca加密的license,用根證書也就是burp證書解密license得到s的公鑰1。然後burp偽造自己的license,傳送給c

c由於根證書[burp證書]的驗證,會將burp偽造的license當成s的license,解密得出burp的公鑰2,後續流程就是https的過程。burp作為c與s通訊和burp作為s與c通訊

HTTPS實現原理

ssl建立連線過程 client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給server加密演算法的子集。...

HTTPS實現原理

https 協議 就是 http 協議 和 ssl tls 協議 的組合。http over ssl 或 http over tls 對http協 議的文字資料進行加密處理後,成為二進位制形式傳輸 https結構 https工作簡化過程 1.客戶端發起https請求 使用者在瀏覽器裡輸入乙個http...

關於HTTPS實現原理詳解

https實現原理 ssl建立連線過程 client向server傳送請求然後連線到server的443埠,傳送的資訊主要是隨機值1和客戶端支援的加密演算法。2.server接收到資訊之後給予client響應握手資訊,包括隨機值2和匹配好的協商加密演算法,這個加密演算法一定是client傳送給ser...