Hmac
為什麼 RFC 版本的 HKDF-Expand 的計數器從 1 開始?
在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 的時候,雖然沒有名稱和發表的分析)。我對受到向後兼容性的限制不太高興,但當時認為它是採用的一個較少障礙。