在範例身份驗證協議中理解 MITM
假設我們有這樣的協議:
B -> A: R B
A -> B: {R B ,B} K
目標:認證 A 到 B
K:A 和 B 之間的共享密鑰
{} K:由 K 加密
在 B 收到 {R B , B} K後,B 能夠驗證 A。但是如果我們有類似的東西:
A -> C: {R B ,B} K
C -> B: {R B ,B} K
所以在這種情況下,B 將驗證 C 而不是 A,不是嗎?
在問題的範例中,C 充當中間人 (MitM),在接收 {R B ,B} K時就 A 冒充 B(在通信級別) ,並就 B 冒充 A (同樣)發送 {R B ,B} K時。如果沒有未描述的措施,B 將接受 C 發送的消息 {R B ,B} K,就好像它直接來自 A 一樣。
中間人的這種可能性是密碼學和協議設計中的標准假設,因為它在當今使用的絕大多數通信手段中是物理上可能的:電線、光纖、無線電(包括衛星)。
“B 是否會驗證 C 而不是 A”是約定和上下文的問題,並且這些會有所不同。
在沒有其他攻擊¹的情況下,該協議確保 A 參與了交換,我不會說協議的身份驗證屬性僅限於問題²中描述的內容已損壞或無用。例如,如果 A 是設備 B 的遙控器,則在生成 R B和接受 {R B ,B} K之間的時間段內涉及遙控器。如果進一步 B 驗證這個時間段是最 $ t $ ,則 B 有保險 A 在距離之內 $ t,c/2 $ , 在哪裡 $ c $ 是光速。
¹ 攻擊是否可能取決於所用加密的屬性,以及知道密鑰 K(包括 A 和 B)的各方如何使用它,超出了問題中的描述。
² 如果問題以以下方式結束,情況就會完全不同:A 認證完畢後,B 繼續進行通信。
這個問題的主要問題是正確理解身份驗證。
如果 B 想要對 A 進行身份驗證,則意味著 B 必須從 A 那裡收到足夠的消息身份驗證和實體身份驗證證據。
A -> C: {RB,B}K C -> B: {RB,B}K
在這個方案中,一方面,C 就像一根電線,另一方面,B 從 A 那裡接收到足夠的消息認證和實體認證的證據。