這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 面試官:“HTTPS的加密過程你知道麽?” 我:“那肯定知道啊。” 面試官:“那你知道什麼情況下 HTTPS 不安全麽” 我:“這....” 越面覺得自己越菜,繼續努力學習!!! 什麼是中間人攻擊? 中間人攻擊(MITM)在密碼學和電腦 ...
這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助
面試官:“HTTPS的加密過程你知道麽?”
我:“那肯定知道啊。”
面試官:“那你知道什麼情況下 HTTPS 不安全麽”
我:“這....”
越面覺得自己越菜,繼續努力學習!!!
什麼是中間人攻擊?
中間人攻擊(MITM)在密碼學和電腦安全領域中是指攻擊者與通訊的兩端分別創建獨立的聯繫,並交換其所收到的數據,使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話,但事實上整個會話都被攻擊者完全控制[1]。在中間人攻擊中,攻擊者可以攔截通訊雙方的通話並插入新的內容。在許多情況下這是很簡單的(例如,在一個未加密的Wi-Fi 無線接入點的接受範圍內的中間人攻擊者,可以將自己作為一個中間人插入這個網路)。
一個中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會話的終端,並且不被其他終端識破。中間人攻擊是一個(缺乏)相互認證的攻擊。大多數的加密協議都專門加入了一些特殊的認證方法以阻止中間人攻擊。例如,SSL協議可以驗證參與通訊的一方或雙方使用的證書是否是由權威的受信任的數字證書認證機構頒發,並且能執行雙向身份認證。
以上定義來自維基百科,我們來舉一個通俗的例子來理解中間人攻擊:
- A發送給B一條消息,卻被C截獲:
A: “嗨,B,我是A。給我你的公鑰”
- C將這條截獲的消息轉送給B;此時B並無法分辨這條消息是否從真的A那裡發來的:
C: “嗨,B,我是A。給我你的公鑰”
- B回應A的消息,並附上了他的公鑰:
B -> B 的公鑰 -> C
- C用自己的密鑰替換了消息中B的密鑰,並將消息轉發給A,聲稱這是B的公鑰:
C -> C 的公鑰 -> A
- A 用它以為是 B的公鑰,加密了以為只有 B 能看到的消息
A -> xxx -> C
- C 用 B 的密鑰進行修改
C -> zzz -> B
這就是整個中間人攻擊的流程。
中間人攻擊怎麼作用到 HTTPS 中?
首先讓我來回顧一下 HTTPS 的整個流程:
回顧 HTTPS 過程
這是 HTTPS 原本的流程,但是當我們有了 中間人伺服器之後,整個流程就變成了下麵這個樣子。
這個流程建議動手畫個圖,便於理解
- 客戶端向伺服器發送 HTTPS 建立連接請求,被中間人伺服器截獲。
- 中間人伺服器向伺服器發送 HTTPS 建立連接請求
- 伺服器向客戶端發送公鑰證書,被中間人伺服器截獲
- 中間人伺服器驗證證書的合法性,從證書拿到公鑰
- 中間人伺服器向客戶端發送自己的公鑰證書
註意!在這個時候 HTTPS 就可能出現問題了。客戶端會詢問你:“此網站的證書存在問題,你確定要信任這個證書麽。”所以從這個角度來說,其實 HTTPS 的整個流程還是沒有什麼問題,主要問題還是客戶端不夠安全。
- 客戶端驗證證書的合法性,從證書拿到公鑰
- 客戶端生成一個隨機數,用公鑰加密,發送給伺服器,中間人伺服器截獲
- 中間人伺服器用私鑰加密後,得到隨機數,然後用隨機數根據演算法,生成堆成加密密鑰,客戶端和中間人伺服器根據對稱加密密鑰進行加密。
- 中間人伺服器用服務端給的證書公鑰加密,在發送給伺服器時
- 伺服器得到信息,進行解密,然後用隨機數根據演算法,生成對稱加密演算法
如何預防?
剛纔我們說到這裡的問題主要在於客戶端選擇信任了,所以主要是使用者要放亮眼睛,保持警惕