Key-Derivation
密鑰推導:連續使用 KDF 和 PRF 有意義嗎?
我在一個項目中,其中密鑰協議算法(使用 ECC)的輸出用作 KDF 的輸入,而 KDF(X9.63 KDF)的輸出連續用作 PRF(CMAC)的輸入計算 AES 會話密鑰。
摘要:ECC-PAKE->KDF->PRF->AES_keys。
我的問題:同時使用 KDF 和 PRF 有什麼主要優勢嗎?在這種情況下,KDF 還不夠好嗎?
假設 KDF 實際上是安全的,除了域分離之外沒有明顯的優勢,當然還有一些嚴重的缺點(程式碼複雜性和大小)。
如果您有能力進行更改,我只需呼叫一次HKDF -SHA256 或 HKDF-SHA512 即可獲得所需的所有字節。SHA-256 在某些平台上是硬體加速的,因此您可能更喜歡它。
許多加密庫都有 HKDF,如果沒有可用的 HMAC 原語,正確實現是微不足道的。
更新:我現在看到最新的ANSI X9.63 仍然指定 SHA-1 作為其散列原語。SHA-1 在抗碰撞性方面被打破了。雖然這不會立即影響 KDF(依賴於原像抗性),但這確實意味著您應該盡快用更強大的東西替換它。SHA2-256、SHA2-512、SHA-3、BLAKE2都是合理的選擇。