Authentication

為什麼這個具有隨機數和樹方的身份驗證協議不安全?

  • April 26, 2018

為什麼以下身份驗證服務不安全?

C⟶S: $ I_C $

S⟶C: $ N $

C⟶S: $ E(K_{C,A}, N) $

S⟶A: $ E(K_{S,A}, {I_C, E(K_{C,A}, N)}) $

A⟶S: $ E(K_{S,A}, N) $

在哪裡:

  • C = 客戶
  • S = 伺服器
  • A = 身份驗證服務
  • $ I_X $ = 實體 X 的標識字元串
  • $ N $ 是隨機數
  • $ E(K, M) $ 是使用密鑰的加密操作 $ K $ 和留言 $ M $
  • $ K_{X,Y} $ = X 和 Y 共享的對稱密鑰

假設客戶端和伺服器曾經通過隨機數連接 $ N $ ,並且對手被竊聽了這些消息。所以他有 $ I_C $ , $ N $ , $ E(K_{C,A}, N) $ , $ E(K_{S,A}, {I_C, E(K_{C,A}, N)}) $ 和 $ E(K_{S,A}, N) $ . 現在在新會話中,攻擊者可以輕鬆冒充伺服器的身份。為此,只需按照以下步驟操作:

C⟶Adversary: $ I_C $

Adversary⟶C: $ N $

C⟶Adversary: $ E(K_{C,A}, N) $

Adversary⟶A: $ E(K_{S,A}, {I_C, E(K_{C,A}, N)}) $

A⟶Adversary: $ E(K_{S,A}, N) $

注意,在這個協議中,伺服器可以使用 $ E(K_{S,A}, N) $ 驗證客戶端身份,但客戶端沒有任何有關伺服器身份的資訊。

**編輯:**此外,對手不能冒充客戶使用 $ E(K_{C,A},N) $ 因為 $ N $ 由有效的伺服器生成,並將在每個會話中更改。因此,對手無法找到有效的 $ E(K_{C,A},N) $ 使用以前竊聽的消息。為了防止這種攻擊,您可以修改協議如下:

C⟶S: $ I_C $

S⟶C: $ N $

C⟶S: $ E(K_{C,A}, N, M) $

S⟶A: $ E(K_{S,A}, {I_C, E(K_{C,A}, N, M)}) $

A⟶S: $ E(K_{S,A}, N, E(K_{C,A}, M)) $

S⟶C: $ E(K_{C,A}, M) $

然而,這只是一個改變,應該調查這個協議對其他攻擊的抵抗力。“加密協議:基於可信新鮮度的安全分析”,作者是 Ling Dong 和 Kefei Chen,是一本關於協議的有價值的書籍,您可以參考以獲取更多資訊。

引用自:https://crypto.stackexchange.com/questions/58672