破解比特幣私鑰
假設我的私鑰已正確生成。我的公鑰是眾所周知的。我不在乎隱私。
在有人從我的所有交易數據中獲得足夠的資訊來破解我的私鑰之前,我可以重複使用我的比特幣地址多少次?
假設我是一名銷售 USDT 的 eBay 賣家(零損失購買,任何人以後都可以以相同的價格轉售),對手可以自由地與我交易以獲取交易數據、簽名等。
這個案例/事項的術語是什麼?是“選擇密文攻擊”,“明文攻擊”等。
在有人從我的所有交易數據中獲得足夠的資訊來破解我的私鑰之前,我可以重複使用我的比特幣地址多少次?
任意次數。
假設 secp256k1 的離散對數問題很困難(比特幣數字簽名的基本安全假設),那麼攻擊者看到多少簽名並不重要。他將無法找到私鑰,也無法偽造簽名。
不重複使用密鑰的建議出現在兩種情況下:
- 隱私。重複使用地址會增加交易的可連結性,從而降低您的隱私以及您通過該地址與之互動的其他所有人。
- 後量子安全。一旦您花費了一次分配給給定地址的輸出,它的公鑰就會成為公共知識。在此之前,擁有可以從公鑰計算私鑰的假設機器的人甚至無法開始搜尋。我個人認為這不是不重用地址的特別強烈的理由(不重用地址的真正原因是隱私);請參閱如果我們使用原始公鑰作為地址,可能會對 ECDSA 進行哪些潛在攻擊?為什麼。
這個案例/事項的術語是什麼?是“選擇密文攻擊”,“明文攻擊”等。
這個加密 SE 答案是相關的:https ://crypto.stackexchange.com/a/32715/72983
您真正想要的是防止存在偽造(攻擊者能夠簽署他從未見過簽名的消息)。這比您所說的安全概念更強(因為偽造不需要攻擊者實際學習您的私鑰)。
有一種情況會洩露私鑰:Nonce 重用。對於相同的私鑰,如果兩個不同的消息使用相同的 nonce 簽名,您的私鑰將變為“公共”。
Secp256k1 簽名使用 256 位隨機數。如果你簽署了大約 2^256 筆交易,我保證你的私鑰會被洩露。(但理論上!雖然你需要一台超級超級超級電腦來掃描重複項。複雜度 O(n^2) 對於 2^256,這比暴力破解私鑰更不可行)
預設情況下,在大多數實現中,隨機數是按照 RFC6979 中的定義生成的。隨機數被定義為一些簽名數據以某種順序的散列。
如果你要簽署 2^128 筆交易,一個隨機數被重用的機率約為 39%。因此,使用櫃檯簽署大量交易更安全。
請注意,即使是 2^128 筆交易也不現實。