今天換來講協定,前面再講網路的時候已經先看到一些有名的協定
而接下來是專門講有關資訊安全的協定,並主要是講有關認證的內容
回顧前面講認證時是「人」與「機器」的認證,在「機器」與「機器」間的認證我們就會需要特殊的安全協定來確保溝通的雙方不是在跟奇怪的第三者溝通
IFF(Identify Friend or Foe)協定是在軍事上一個著名的安全協定,可以用來分辨友軍或敵軍
當雷達偵測到有飛機經過基地時,我們要如何分辨此飛機為敵軍或是友軍呢?
IFF協議的規則如上圖所示:
由於敵機不知道K,無法回傳正確答案,因此本部的基地便可根據加密的回答選擇放行或是射殺
上述的協議看似天衣無縫,但其實存在一個可能的破解方法:
從上面的圖可以看到,當友機飛過敵軍的雷達站時,該敵軍雷達站可立即呼叫敵機飛向友方基地台
友方基地台發送挑戰數字時,敵機立即將該數字轉發至敵方基地台,敵方基地台再發送給誤入敵軍基地範圍的友機
友機在收到挑戰數字時,按照慣例會發射回正確的加密結果返還,如此敵機即可獲得相應的加密結果
當然以上的破解法在現實中難以實現,不過也算是給我們一些不錯的反向思考訓練
這邊介紹前面講的TCP傳輸協定作為常見的認證的範例
回憶TCP的三向交握溝通方式,Alice首先傳送SYN給Bob,Bob收到SYN後會在傳送一個SYN與ACK給Alice,最後Alice會夾帶ACK以及要傳送的資料給Bob
在這邊SEQ指的是由傳輸方隨機生成的數字,如第一步中Alice需傳送a給Bob,Bob在接收到a後必須返還a+1給Alice,順便生成一個數字b也一起傳回去,Alice在最後一步必須也把b+1給算出來傳回去,三向交握才算完成
可以看到若是沒有這些數字的生成,Bob根本不知道自己在跟誰對話,也不知道對話進行到哪裡
算是可以達成一個簡單的認證效果
不過要是Trudy可以攔截中間第二條對話,他便可以知道b是多少,進而假裝是第三階段的Alice將資料傳給Bob
即便Trudy無法攔截第二條對話,就能保證這個協定安全嗎?
這就要回到之前討論的隨機數字問題
Trudy可以這樣冒充Alice對Bob傳送惡意資料
因此即使Trudy無法真的攔截到隨機數字b,他也可以利用隨機數字不是每次生成都隨機的特性來做攻擊
好在這個招數已經老早被大家知道,一些聰明的隨機數字生成有融入進協定的設計中,讓整個破解過程更加困難