RSA 密鑰對可以用於加密貨幣地址嗎?
比特幣地址是從 ECDSA 密鑰對創建的。通常使用散列版本的公鑰作為共享地址,但最初的比特幣實現也允許直接使用未更改的密鑰。(無論如何,當地址中的硬幣被花費時,它就會顯示出來)這裡的公鑰加密的目的是,所有者可以通過數字簽名證明地址的所有權,這是區塊鏈在接受將硬幣花費在一個地址。
ECDSA 算法不適合加密消息。如果使用 RSA 密鑰對,它將允許貨幣發送方加密並將一些個人資訊傳送給接收方(例如,通過公共消息伺服器),這顯然是一個有用的功能。為什麼 RSA 密鑰對應該或不能用於加密貨幣地址?
理論上你可以,但 ECC 更適合加密貨幣。
RSA 密鑰很大,與比特幣使用的 256 位 ECC 密鑰相比,您至少需要 2048 位模數。區塊鏈真的很關心空間消耗。(有一些技術可以將 RSA 的有效公鑰大小減少到大約 1/3 IIRC,但我還沒有看到它們在任何地方使用過。它仍然比等效的 ECC 大得多)
儘管有點不鼓勵這種密鑰重用,不管它是 ECC 還是 RSA。
您可以這樣做,但假設您使用 2048 位 RSA 模數,則必須在儲存格式中將 32 字節公鑰替換為 256 字節公鑰,並將 64 字節簽名替換為 >=256 字節簽名。有壓縮 RSA 簽名的技術,但我從未聽說過有人實現它們,因此您可能需要自己編寫程式碼,並且它們不會以遠端可比的方式擊敗 32 字節密鑰和 64 字節簽名安全級別。而且,與 ECDSA 不同的是,RSA 密鑰的生成非常緩慢。
或者,您可以使用 Schnorr 風格的簽名方案,例如 Ed25519,其大小和計算成本與比特幣使用的 secp256k1 上的 ECDSA 相當,然後像XEdDSA一樣重用 ECDH/ECIES 的密鑰對。在設計和實施定制的密碼系統時,不乏自爆的方法,但 EC-Schnorr 和 ECDH 與相同密鑰對的組合似乎並不一定會損害安全性本身。
(您是否可以使用 ECDSA 進行此操作,我將其作為練習留給讀者學習。我不知道有關它的文獻;如果您找到任何關於該主題的問題,請回答 fgrieu 的問題!但是您的時間可能會更好只使用 XEd25519 而不是對 ECDSA 大驚小怪。)