Encryption
在 AES-CBC + HMAC 架構中,將消息中的第二個 IV 發送到無法產生令人滿意的隨機數的設備是否安全?
這裡有很多執行緒解釋了 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 的最佳方式是什麼?
- 在加密的消息(密碼)內,或
- 作為明文,製作有效載荷:
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 的錯誤中吸取教訓,並使用預先製作的經過身份驗證的加密模式,例如EAX或CCM,或者至少 Encrypt-Then-Mac with CTR。