KDF1 和 KDF2 的正式描述
到目前為止,我已經看到了很多關於 KDF1 和 KDF2 的描述,但大多數文件只是簡單地指出了付費牆後面的規範。這些標準不是特定於 KDF 的;他們只是將這些 KDF 用作算法描述(密鑰協議)的子部分。有人對符合標準的兩個 KDF 有正式的描述嗎?
描述應該包括額外的資訊來導出一個鍵,例如
OtherInfo
欄位或標籤,或者表明它們不存在。不用說,完整算法也需要其他輸入參數和內部計數器的使用。這些標準可在 IEEE Std 1363-2000、ANSI X9.42 (KDF1) 和 ISO 18033-2 (KDF2) 中找到。最後一個標準為他們定義了 OID,KDF1 是
1.0.18033.2.5.1
,KDF2 是1.0.18033.2.5.2
(指向 oid-info.com 的不受保護的連結)。
FCD 18033-2 加密算法 - 第 2 部分:非對稱密碼- ISO/IEC 18033 的最終委員會草案 (FCD) - Victor Shoup 可從他的網站公開獲得,並指定(在第 6.2 節中)KDF1 是
對於八位字節串 $ x $ 和一個非負整數 $ l $ , $ \operatorname{KDF1(x,l)} $ 被定義為第一個 $ l $ 八位字節
$$ \operatorname{Hash.eval}(x || \operatorname{I2OSP}(0, 4)) || ··· || \operatorname{Hash.eval}(x || \operatorname{I2OSP}(k − 1, 4)), $$
在哪裡$$ k = \lceil l/\text{Hash.len} \rceil $$
二進制計數器表示應轉換為大端的 4 個字節。
KDF2 是相同的,但從 1 而不是 0 開始計數。