Bitcoin-Core

hmac_sha256、hkdf_sha256 和 hmac_sha_512 有什麼區別?

  • November 2, 2022

據我所知,在開源(https://github.com/bitcoin/bitcoin/tree/master/src/crypto)中,這些算法與生成新密鑰和主密鑰有關。因此,我試圖了解每種算法的具體作用以及它們在比特幣核心中的關係。

他們實現了 3 種不同的加密方案:

  • HMAC-SHA256是基於 SHA-256 的 MAC(消息驗證碼,或鍵控散列函式)。它在 RFC6979 隨機數生成函式中用於確定性 ECDSA 簽名。
  • HMAC-SHA512是基於 SHA-512 的 MAC。它用於 BIP32 密鑰派生邏輯。
  • HKDF-SHA256是基於 HMAC-256 的(對稱)密鑰派生函式 (KDF)。它目前未使用,但在預期用於 BIP324(v2 P2P 傳輸層)實現時被添加。

名稱中的 HMAC 代表“基於H ash 的消息驗證程式碼” , hmac_sha_512用於在分層確定性 BIP-0032 錢包中生成密鑰,並種子片語 (BIP-0039)生成主密鑰,例如這裡

名稱中的HKDF代表“基於H ash 的密鑰導出函式” ,程式碼中有一段註釋對其進行了描述:

具有 HMAC_SHA256 和 32 字節(L=32)的固定密鑰輸出長度的 rfc5869 HKDF 實現

如果您查看rfc5869 規範,它在密鑰派生方案中使用一些 HMAC 作為原語,並且在hkdf_sha256原語中,hmac_sha_256hmac_sha_256用於hkdf_sha256. hmac_sha_256用於httprpc.cpp和torcontrol.cpp

但是有什麼hkdf_sha256用呢?它似乎沒有在任何地方使用

引用自:https://bitcoin.stackexchange.com/questions/115813