Hash

散列一個秘密/種子是否會使其安全性降低 2 倍?

  • June 19, 2022

在許多加密貨幣項目中,我注意到 32 字節的種子/秘密經過雜湊處理以得到新的 32 字節密鑰。

原因是因為您可以通過添加索引,使用相同的種子在一個種子/秘密下生成多個密鑰對/地址/錢包。

例如:

seed1 = hash(seed,0); // abc..
seed2 = hash(seed,1); // def..
seed3 = hash(seed,2); // ghi..

這是不好的做法嗎?

每個密鑰對的唯一安全 32 字節隨機種子是否更好並且值得額外計算?

或者通過將 32 字節的值散列到新的 32 字節的值,你會不會完全失去熵(?)?

(假設上述所有雜湊函式和密鑰對函式是安全的)

這是不好的做法嗎?

不一定,但它使用雜湊函式作為窮人的密鑰推導函式。對於常見的散列函式,這不會引入任何可利用的漏洞,但使用現代 KDF(如 HKDF)會是更好的設計。

每個密鑰對的唯一安全 32 字節隨機種子是否更好並且值得額外計算?

通常,秘密/種子源自一個主秘密/種子這一事實被認為是基本特徵。當談到算法的強度時,這個答案可能會給出一些強度的指示。

如果您只想擁有一個隨機秘密,那麼可以,使用經過測試/安全的 CSPRNG 可以為您提供更好的安全性——但這當然取決於兩種算法的比較。

當該算法用作 KDF(另一方能夠執行相同的計算)時,HKDF 在使用時具有更好的安全模型。

或者通過將 32 字節的值散列到新的 32 字節的值,你會不會完全失去熵(?)?

這個問題已經在這裡回答了。結論是熵(256 位或更小)大部分保留用於 SHA-256(或類似的 256 位雜湊)。

引用自:https://crypto.stackexchange.com/questions/100673