Mac

無線感測器網路的完整性保護

  • January 12, 2015

我做了一個關於無線感測器節點的實驗室,並第一次接觸到加密。我的工作表上有一些問題,特別是關於完整性保護(攻擊者想要篡改我們的數據),我想問這些問題。我讀了一些東西,但感覺不太舒服: 1)為什麼簡單的校驗和或 MD5 和不足?

我猜是因為它們不再安全了。2004 年,一些研究人員發現,有 2 種不同的消息具有相同的 MD5 值,而一種可以創建更多。校驗和也是如此(?)

2)CBCMAC是實現完整性保護的好方法嗎?

如果我正確理解了維基百科文章,它對於固定長度的消息是安全的,對於任意長的消息,它就不再安全了。

  1. 分組密碼通常快速且容易獲得。在比較 HMAC 和 CMAC 時,您認為哪個在 WSN 場景中會更好地工作?它們之間有什麼區別?

區別非常關鍵:HMAC 使用散列函式進行加密,使用 CMAC 分組密碼。但我不知道哪一個更適合 WSN。由於我們的資源非常有限,也許應該選擇在能源方面“成本”較低的資源?

  1. 對加密和 MAC 功能使用相同的密鑰是個好主意嗎?

不,不是,在 CBC-MAC 文章中,如果您使用相同的密鑰,維基百科會顯示一個大問題。

5)有沒有辦法將加密和完整性保護結合起來?至少舉出兩個例子。在這些情況下,單個密鑰是否足夠?不同的方法在性能特徵方面是否有所不同?這種方法通常會更快、更慢或等於將加密和 MAC 計算作為單獨的步驟進行嗎?

我想這個問題是關於經過身份驗證的加密。維基百科文章(http://en.wikipedia.org/wiki/Authenticated_encryption)很短,我找不到很多關於這些問題的資訊……

我很感謝任何幫助

有很多問題,我會嘗試按順序回答。

  1. 單獨的散列或消息摘要並不安全,因為任何人都可以計算並因此替換散列值。如果您(正確地)將密鑰添加到混合中,那麼您將獲得一個可以使用的 HMAC。
  2. 如今,通常使用 HMAC 或經過身份驗證的身份驗證模式,例如 GCM、CCM(用於數據包加密)或 EAX。如果要使用基於分組密碼的 MAC,可以使用 AES-CMAC。不過,您需要一個 128 位的分組密碼。
  3. 是的,您應該檢查散列或加密是否在您的平台上最有效。您還可以查看哪個最不容易受到側通道(時間/能量使用)攻擊。如果您只是第一次看到加密,您想嘗試找到可用的最佳加密庫。
  4. 你已經回答過了。儘管在 HMAC 中不太擔心,但對於 AES-CBC-MAC 甚至 AES-CMAC,使用單獨的密鑰來加密和計算身份驗證標籤被認為是最佳實踐。通常派生一個額外的密鑰並不是一個性能問題。請注意,強烈建議也為每個方向使用一個鍵,並確保您的 IV 是唯一的(並且 - 對於 CBC - 不可預測)。您的 MAC 應該包括 IV,而不僅僅是密文。
  5. 我想我剛剛在答案 2 中命名了 3 個經過身份驗證的密碼,它們都只使用一個密鑰(無論如何,在外部)並在身份驗證中自動包含 IV。GCM 和 CCM 是 NIST 標準化的,EAX 是 NIST 建議的模式,但是 - 因為它只是在內部使用 AES-CMAC - 它很可能是安全的。

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