Encryption

如何設計一個安全的挑戰響應認證協議?

  • February 27, 2020

我正在實現一個自定義質詢-響應協議來向伺服器驗證客戶端。不需要相互身份驗證,即伺服器不需要向客戶端進行身份驗證。

該協議通過 TCP 工作。客戶端和伺服器位於 LAN 中(而不是通過 Internet)。只有一台伺服器和一台客戶端。認證設計如下:

$ S \rightarrow C : N $

$ C \rightarrow S : {N}_K $

伺服器在哪裡 $ S $ 創建一個 128 位隨機數並將其作為 nonce 發送 $ N $ 給客戶 $ C $ . 客戶端使用預共享密鑰使用 AES-192 加密隨機數 $ K $ 並將其作為響應發送到伺服器。然後伺服器解密消息並檢查隨機數。

問題:

  • 這個協議設計安全嗎?
  • 使用 HMAC(或任何其他 MAC)而不是 AES 加密有什麼好處?
  • 我錯過了什麼?

這個協議設計安全嗎?

見下文。

使用 HMAC(或任何其他 MAC)而不是 AES 加密有什麼好處?

HMAC 最初是作為一種構造提出的,它將基於從塊密碼建構的壓縮函式的 Merkle-Damgaard 雜湊函式轉換為消息身份驗證程式碼。儘管 HMAC 中沒有解密,但您實際上可以通過比較 HMAC 簽名標籤輕鬆替換基於 AES 解密的身份驗證。

我錯過了什麼?

您所做的本質上是經過身份驗證的安全傳輸,沒有機密性。

您缺少的是在初始身份驗證之後您沒有​​對交換進行身份驗證 - 這允許連接劫持、任意注入數據包等等。

因此,您應該使用 HMAC+

$$ hash $$或 CMAC+$$ block cipher $$驗證您交換的所有消息,並保持計數器作為檢測重複數據包和消息重放攻擊的狀態。

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