簽署 2x128 位密鑰與 1x256
- 使用兩個不同的 128 位密鑰簽署 2 次是否與使用 256 位密鑰簽署一次一樣安全?
- 使用 256 位密鑰簽署 2 次是否會比簽署一次更強?
好的,首先:您的問題實際上涉及兩個主題:
- 用兩個不同的半長密鑰簽名比用一個全長密鑰簽名更好/一樣好嗎?
- 使用兩個半熵密碼作為一個全熵密碼更好/一樣好嗎?
這兩個問題的(理論)答案是明確的否定。但是,細節很重要,這可以將“不”變成“是”。
解決第一個問題:如果“半長”意味著每個密鑰都有一個安全的密鑰長度,那麼是的,這與使用全長密鑰一樣安全,因為每個密鑰都是不可破解的,這意味著我們有“牢不可破”與“甚至更牢不可破”,此時應該考慮其他考慮因素。例如,如果強制使用兩個鍵,可能更容易確保正確使用。使用側通道或惡意軟體提取兩個密鑰比提取一個更難。
但是,如果半長意味著只有全長密鑰具有安全的標準密鑰長度,那麼這將被完全破壞。例如,考慮橢圓曲線密鑰(例如ECDSA在比特幣中使用的密鑰):一個 256 位密鑰現在是牢不可破的,因為您需要 $ 2^{128} $ 破壞它的操作,但是兩個 128 位密鑰非常容易破壞,因為它們需要的少於 $ 2^{64}+2^{64}=2^{65} $ 要破壞的操作(因為您可以重用部分計算)。
現在對於評論中提到的具體實例:
你熟悉比特幣 bip39 錢包的創建嗎?我最初擔心的是,如果由兩個具有 12 個單詞(128 位熵)種子的帳戶創建的多簽名錢包與具有 24 個單詞(256 位熵)種子的正常單簽名帳戶一樣安全嗎?
現在這是問題2)我在上面提到的。雖然是的,但這個密碼只能提供 129 位的安全性,這已經是“牢不可破”的,此時我們將討論“牢不可破”與“牢不可破”。現在沒有人會成功猜出一個 128 位的熵秘密,所以它必須被竊取。竊取兩個秘密(最好在不同的位置)比竊取一個秘密更難,因此在這種情況下使用兩個密鑰實際上是更可取的。
所以實際上最好用 2x 24 字種子帳戶設置這個帳戶,這將產生 257 位
$$ security $$.
是的,從理論上講,它會“更好”。在實際意義上,沒有安全收益,您所獲得的只是通過記住/輸入更多單詞而使自己的生活變得更加艱難。另請參閱此問答,了解為什麼真長密碼並不好。
出於好奇,ed25519 是否支持 256 位的完全安全性?
不,Ed25519 有大約 126 位安全性。連結源談到 Curve25519,但可以同樣應用於 Ed25519,只需最少的轉換。
在某些時候,我聽說比特幣開發人員說它比 Secp256k1 ecdsa 更安全
理論上沒有,實際上是的。secp256k1 提供您期望的“完整”128 位安全性,因此比 Ed25519“更安全”。然而,Ed25519 是一種比 ECDSA 更現代的模式和曲線,具有 secp256k1,這意味著它更容易正確並防止實施錯誤。這(以及速度獎勵)就是為什麼它通常比 ECDSA 更受歡迎。
另外 - 是否有任何具有 256 位安全性的非對稱加密算法,如果有 - 那麼為什麼比特幣或其他加密貨幣不使用它?
是的,如果您將 secp256k1 替換為 P-521 曲線,您將獲得大約 256 位的安全性。然而,這也會慢很多,因為優化可能會更少,並且由於值較大,操作會更複雜。另請參閱此答案以了解有關大於 256 位的曲線大小的一些討論。
最後一點:當我在這裡談論“x-bit 安全性”時,我的意思是 $ 2^x $ 需要進行操作才能成功進行攻擊。實際的密鑰材料可能大於“安全位長度”,後者只是下限。