Bitcoin-Core
hmac_sha256、hkdf_sha256 和 hmac_sha_512 有什麼區別?
據我所知,在開源(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_256
即hmac_sha_256
用於hkdf_sha256
.hmac_sha_256
也用於httprpc.cpp和torcontrol.cpp。但是有什麼
hkdf_sha256
用呢?它似乎沒有在任何地方使用。