Encryption

在 AES-CBC + HMAC 架構中,將消息中的第二個 IV 發送到無法產生令人滿意的隨機數的設備是否安全?

  • November 18, 2017

這裡有很多執行緒解釋了 AES-CBC 需要隨機且不可預測的 IV。

我正在為一個學校項目建構一個具有安全性的家庭自動化系統,其中 Raspberry Pi 創建了一個單獨的 WPA2 網路,以通過 HTTP 請求與許多 ESP8266 Wi-fi 模組進行通信。來自中央節點的每條新消息都使用密鑰和新生成的(使用“/dev/urandom”)IV 加密。

消息有效負載結構為:

plain-text IV || cipher-text || HMAC-SHA256

但是,GET 請求的答案也需要加密。根據我的閱讀,使用收到的請求中的相同 IV 加密答案可能並不理想。

那麼中央節點是否可以發送另一個 IV,esp8266 將使用它來加密答案?

發送此 IV 的最佳方式是什麼?

  1. 在加密的消息(密碼)內,或
  2. 作為明文,製作有效載荷:
IV2 || IV1 || cipher || HMAC(hash of IV2 || IV1 || cipher)

發送此 IV 的最佳方式是什麼?

CBC IV 需要讓攻擊者無法預測。如果您只是將它們與您的其他 IV 一起發送,它們就不再是不可預測的,因此加密它們也是可行的方法,並且應該提供合理的安全性。

plain-text IV || cipher-text || HMAC-SHA256

您在這裡所做的是臭名昭著的 Mac-Then-Encrypt with CBC。這是一個非常糟糕的主意。一個非常非常非常糟糕的主意。這是對 TLS 的許多攻擊的根源。請從過去使用 TLS 的錯誤中吸取教訓,並使用預先製作的經過身份驗證的加密模式,例如EAXCCM,或者至少 Encrypt-Then-Mac with CTR

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