Hash
散列一個秘密/種子是否會使其安全性降低 2 倍?
在許多加密貨幣項目中,我注意到 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 位雜湊)。