Authenticated-Encryption

我可以重複使用隨機數來使用 ChaCha20-Poly1305 重新傳輸相同的數據包嗎?

  • May 26, 2022

我理解使用 ChaCha20-poly1305 重複使用 nonce 的“突然死亡”含義,但我相信如果您傳輸完全相同的數據包,則此規則不適用。

我正在整理一個小型無線電協議,其中可能會失去數據包,如果未收到確認,則重新傳輸數據包。在這種情況下,隨機數被重用,但我看不到攻擊者擁有比初始數據包更有用的資訊。我認為鑰匙仍然是安全的。這是正確的還是我錯過了一些明顯的東西?

編輯:

它是一種自定義協議,基於阻止使用 6LoWPAN 之類的資源要求。

我不打算使用隨機隨機數,而是使用順序隨機數,將 96 位隨機數的前 32 位設置為數據包來自的 32 位節點地址。這樣做的問題是在有限的擦除/寫入周期內可靠地將隨機數儲存在快閃記憶體中。儘管我已經看到實現會保存隨機數塊,而不是每次使用。

我可以通過連接來自無線電的信號強度的多次讀取的最低位來收集熵,但我猜想順序隨機數使用起來更安全,如果我能保證它們是順序的。

我正在考慮使用網路註冊方法,在這種方法中,節點在加電時將具有預共享的 RX 加密密鑰,但沒有 TX 加密密鑰。該節點將請求網路註冊,主節點(伺服器)將發送一個新的加密和認證的 TX 密鑰。如果正確接收到,新節點將使用新的 TX 密鑰,並且 nonce 將從 0 重新開始。這將解決儲存 nonce 的問題,但會以網路註冊的輕微延遲為代價。該網路僅設計為單個站點的本地,所有節點都相互接收。

我理解使用 ChaCha20-poly1305 重複使用 nonce 的“突然死亡”含義,但我相信如果您傳輸完全相同的數據包,則此規則不適用。

這裡有兩個方面需要考慮:(a) 機密性(對手能否發現任何有關明文內容的資訊)和 (b) 真實性(對手能否偽造數據包)。在保密方面,你毫無疑問是對的。被動竊聽者不會通過兩次看到相同的密文來了解有關明文的任何新資訊。

在真實性方面,我認為這更棘手,如果不仔細分析,不應做出任何裁決。可以肯定地說,使用相同的 nonce 對相同的消息進行兩次身份驗證不會讓對手輕鬆偽造任何其他消息,因此您肯定不會違反經過身份驗證的密碼規則。但是您確實需要考慮這如何適應更大的圖景——密碼級別之上的協議級別。例如,我會問自己,在某些情況下,活躍的對手是否可以通過重放他們第二次竊聽的數據包來破壞某些安全屬性,或者抑制數據包的接收,然後將它們無序地提供給接收者.

協議設計很棘手。對單個消息進行身份驗證並不能自動保證一系列**互動式消息會話的真實性。

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