Hmac

為什麼 RFC 版本的 HKDF-Expand 的計數器從 1 開始?

  • June 2, 2022

RFC 5869中,HKDF-Expand 的定義如下,終止計數器值範圍從 1 到(大概)255:

The output OKM is calculated as follows:

  N = ceil(L/HashLen)
  T = T(1) | T(2) | T(3) | ... | T(N)
  OKM = first L octets of T

  where:
  T(0) = empty string (zero length)
  T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)
  T(2) = HMAC-Hash(PRK, T(1) | info | 0x02)
  T(3) = HMAC-Hash(PRK, T(2) | info | 0x03)
  ...

然而,在HKDF 論文的第 4.2 節中,相同的函式被定義為從 0 開始的計數器值。是否有一些微妙的原因可以避免在這個終端計數器字節中使用 0 值?

Hugo Krawczyk在 CFRG 郵件列表中回答說RFC 版本已調整為與IKE兼容, IKE計數器從 1 開始:

好問題。我相信(我檢查了我與 Pasi 的一些舊電子郵件)這樣做是為了與 IKE 中的 HKDF 定義兼容(這是我最初設計 HKDF 的時候,雖然沒有名稱和發表的分析)。我對受到向後兼容性的限制不太高興,但當時認為它是採用的一個較少障礙。

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