Stream-Cipher

使用 Unix 紀元作為 nonce

  • July 22, 2016

由於 nonce 必須是唯一的,並且時間只會向前發展,因此將 Unix 紀元用作 nonce 是否安全?

我的案例是帶有 GCM 的 AES,它建議隨機數長度為 12B。目前的 Unix 時間可以用 4B 表示,這樣就可以為未來的時間戳留出高 8B 的空間(足夠的空間)。

一種可能的安全隱患是偽造 NTP 回复,這將導致客戶端使用過去的 Unix 時間戳(即破壞流密碼)。安全通道應該可以防止這種情況發生,但是一個糟糕的操作員總是可以強製做出錯誤的 NTP 回复。

使用 Unix 時間戳作為 nonce 的唯一來源會讓我感到緊張。

除了偽造 NTP 回复(合法運營商出於某種原因故意重置時鐘,我不確定閏秒是否會帶來風險),您還需要擔心“如果我在同一時間發送兩條消息怎麼辦第二”

另一方面,您可以使用 12 個字節;如果您使用四個字節來保存 Unix 時間戳,並使用另外四個作為計數器(每次發送消息時遞增),而另外四個作為其他內容,那將是一個更多的系統對隨機數重複有彈性。

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