帶你通俗理解https

2021-09-23 05:58:11 字數 2134 閱讀 8701

前言

個人原因最近要離開杭州了,接下來也不知道去哪,其實挺想去深圳發展,但是不知道**怎麼樣,有沒有深圳的老哥們,介紹一波,哈哈~

從乙個例子說起

背景假如你穿越回高中,你和你女朋友在教室遙遠的對角落,只能通過傳紙條來進行交流(不能直接說話,不然會被抓到早戀,hh),但是又不想紙條的內容內中間傳遞人給看到,那怎麼樣才能達到這樣的效果呢?

step one

這裡我們假設男女物件是a和b,中間傳遞紙條的人為c

這個時候第一想法就是,使用對稱加密的方式,a使用秘鑰對訊息進行對稱加密,然後b也通過同乙份秘鑰進行解密,這樣就算c看到訊息,也是密文,但是有個問題 ,之前也說了a和b是不能直接說話的,那麼這個秘鑰a怎麼告訴b呢,有人說再加密。。那就回到了雞生蛋蛋孵雞的問題了

step two

為了解決上面的問題,我們引出了非對稱加密的概念,特點是私鑰加密後的密文,只要是公鑰,都可以解密,但是公鑰加密後的密文,只有私鑰可以解密。私鑰只有乙個人有,而公鑰可以發給所有的人

那假如b持有公鑰,自身生成step1中約定加密的私鑰(一般使用隨機數),然後用公鑰將此私鑰進行加密,然後a使用非對稱加密的私鑰進行解密拿到b生成的私鑰,然後再用step1中的方法進行加解密訊息。這樣就是c攔截到訊息,由於只有a有非對稱加密的私鑰,也無法解密出協商的私鑰

有朋友可能就有疑問了,既然非對稱加密可以達到這樣的效果,為啥還要用非對稱加密來協商出乙個私鑰,再用對稱加密進行訊息加密互動,直接用非對稱加密加密訊息不就行了,這裡就涉及到了乙個速度以及消耗效能的問題,對稱加密會比非對稱加密的速度更快,計算量小等優點,詳細的老哥們可以深入了解下

step three

所以現在問題又來了,這個b的非對稱加密公鑰怎麼得到呢?首先第一想到的方案由a給b傳送過去,那麼不禁就會有疑問,如果c拿到了這個公鑰,會不會產生問題呢,不仔細思考的可能覺得沒啥問題,畢竟私鑰只有乙份在a那裡,只要b是使用公鑰進行加密了,只有a才能解密,c也沒啥辦法。

但是會出現乙個問題,這裡假設a那邊的公私鑰稱為x/y,a將公鑰x傳送給b,c攔截到訊息,但c自己也有一套公私鑰,這裡稱為j/k,c拿到公鑰x後,把自己的公鑰j傳送給了b,這個時候b是不知情的,將資料用c給的公鑰j加密後返回,這個時候c又可以通過私鑰k進行解密,得到了b的資料,假設c將資料修改後,再通過之前的x公鑰進行加密,然後再傳遞給a,a也可以通過y進行解密

引用一張圖方便幫助大家理解下

公鑰被掉包的問題,其實也就是身份驗證的問題,b無法驗證這個公鑰到底是a給的還是c掉包之後給的。

所以怎麼解決這個問題,再進行加密解密,感覺又要進入到雞生蛋蛋孵雞的問題了,所以,a不能夠直接將公鑰傳遞給b,通過乙個信任的第三方(假如兄弟閨蜜啥的,hh)用私鑰將公鑰進行加密後,再傳遞給b,b通過公鑰解密出最終a要傳遞的公鑰,如果最終能夠解密出來,說明這個公鑰是沒有經過c給掉包的,假如step 3的情況,c使用自己的私鑰加密後,b是無法使用第三方的公鑰解密的。

那麼現在問題也就回到一點,b是怎麼獲得到第三者的公鑰的呢,其實答案是b自己內建了這些第三者的公鑰的,可以理解為b是信任這些第三方的,內部會維護乙個信任的第三方公鑰列表,只要是通過這些信任列表中的加密之後的東西,b是可以通過公鑰解密出來的

這裡的第三方對映到https的話,也就是ca機構了,客戶端(瀏覽器)的"證書管理器",有"受信任的根證書頒發機構"列表。客戶端會根據這張列表,檢視解開數字證書的公鑰是否在列表之內

總結這裡再將上面的例子替換成https,總結下大概流程

總結來說https是通過對稱加密演算法+非對稱加密演算法+第三方ca機構實現的,使用ca結構拿到正確的非對稱加密的公鑰,使用公鑰加密對稱加密演算法的私鑰,最終使用對稱加密演算法進行訊息加解密。

更多資料分享歡迎android工程師朋友們加入安卓開發技術高階互助:856328774免費提供安卓開發架構的資料(包括fultter、高階ui、效能優化、架構師課程、 ndk、kotlin、混合式開發(reactnative+weex)和一線網際網路公司關於android面試的題目彙總。

帶你通俗理解https

個人原因最近要離開杭州了,接下來也不知道去哪,其實挺想去深圳發展,但是不知道 怎麼樣,有沒有深圳的老哥們,介紹一波,哈哈 背景假如你穿越回高中,你和你女朋友在教室遙遠的對角落,只能通過傳紙條來進行交流 不能直接說話,不然會被抓到早戀,hh 但是又不想紙條的內容內中間傳遞人給看到,那怎麼樣才能達到這樣...

https通俗解釋

client跟server取得乙個明文pubkey 此pubkey只能用於加密,解密privkey在server手裡 client用pubkey加密乙個aeskey,然後發給server server用privkey解密 之後都的通訊雙方都使用aeskey加 解密 另有解釋 二 服務端與客戶端之間往...

帶你通俗的理解雲計算和大資料

遠端管理和使用伺服器資源,需要多少資源 硬體或軟體 就配置多少資源,按需使用 按需付費。雲計算是一種服務 一種模式 一種技術。1 一種服務 雲計算按照不同使用者的需要提供了基礎實施服務 定製軟體服務 軟體使用服務三個大的方面,也就是通常所說的iaas paas和saas。2 一種模式 雲計算改變了使...