Randomness

增加隨機數與正常隨機數?

  • October 14, 2021

我最近一直在研究物聯網設備的lorawan 協議

LoraWAN 握手,然後就可以通信了。消息被加密和 MAC’ed。進行加密和 MAC 時,混合的值FCntUp和用於上行鏈路消息,而用於下行鏈路消息。FCntDown``FCntUp``FCntDown

這兩個值都從 0 開始,隨著每條消息遞增,然後每隔一段時間重置一次。

所以,我的問題是關於這些遞增值的使用。因此,我猜想使用這種遞增計數器方法的一種替代方法是,對您可以隨消息發送的每條消息使用正常的隨機隨機數。

但是使用正常隨機隨機數與遞增隨機數的優缺點是什麼。它們分別為我們提供了哪些安全功能?我的猜測是隨機隨機數更安全,因為對手可以預測未來隨機數會是什麼。

我將列出兩者的缺點

對於隨機數:

  • 隨機隨機數顯然需要一個種子良好的隨機數生成器;
  • 由於生日限制,碰撞的可能性更大;
  • 因此,順序隨機數通常需要隨機數的所有字節(計數器最初可以由單個字節編碼);
  • 隨機隨機數需要與消息的任何其他部分分開發送 - 跟踪消息的數量或使用消息標識符是行不通的。

對於順序隨機數:

  • 順序隨機數是有狀態的,即你需要保持狀態,否則你很容易重複它們;
  • 如果鍵值碰撞,就有可能發生碰撞(這有點不公平,我們一般沒有碰撞鍵,但可能還有另一個弱點可以觸發相同的鍵值);
  • 順序隨機數可能會洩露協議的詳細資訊,因為如果隨消息一起發送它們很容易被檢測到;
  • 需要為隨機隨機數指定字節順序(例如在 WinZip 中,CTR 模式使用了一個小字節序計數器,這並不常見);
  • 您不能使用隨機 nonce,然後切換到需要不可預測的 IV 而不僅僅是 nonce 的 CBC 模式(無需額外計算;例如,可以加密 IV 並使用該值)。
  • 如果隨機數選擇得太小,那麼攻擊者確切地知道他們何時開始“溢出”並重複。

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