各種型號的比特幣客戶端有多安全?
由於在對此答案的評論中對各種型號的比特幣客戶端的安全性存在一些分歧,我想解決這個問題。
各種型號的比特幣客戶端有多安全?這些將包括標準客戶端、“輕量級客戶端”(僅保留舊區塊的區塊頭)、電子錢包、客戶端-伺服器客戶端(依賴於一台伺服器獲取所有資訊,但將錢包分開)和提議的 Stratum 客戶端(依靠許多伺服器獲取資訊)。
此外,這種模型的安全性如何依賴於開發它的人(核心比特幣團隊、著名的比特幣愛好者、社區中不知名的人)?
例如,“Stratum 客戶端提供安全功能 X。如果伺服器是由受信任方創建的,則安全問題是 Y,如果伺服器是由惡意人員創建的,則安全問題是 Z”。
查看安全性的一種方法是辨識風險。對於比特幣客戶,至少有:
1. 私鑰被盜
減輕:
1.1 密鑰應加密。
1.2 密鑰不應該對伺服器可用。
1.3 密鑰生成應安全完成。
2. 私鑰失去
2.1 您應該能夠備份您的錢包或私鑰。
3. 客戶端軟體出現故障或不可信
3.1 軟體應該是開源的,以便您可以自己建構並檢查程式碼。
3.2 軟體下載應使用作者私鑰簽名,以防止“貌似”惡意軟體。
3.3 作者應該花時間建立自己的聲譽(即使是假名)。
3.4 客戶端執行的軟體環境應能抵抗攻擊。
MultiBit 的記分卡
對於 MultiBit(我是其首席開發人員),“安全記分卡”目前是:
1.1 目前沒有,計劃發布 0.3.0。
1.2 沒有伺服器 - 純粹是本地的。
1.3 密鑰在本地生成。
2.1 您可以備份您的錢包。密鑰導出和導入計劃用於 0.3.0 版本。
3.1 程式碼是具有行業標準 (Maven) 建構的開原始碼。
3.2 目前沒有。
3.3 作者是一個真正的公眾人物——Jim Burton。
3.4 MultiBit 使用 Java 虛擬機 - 它的安全性取決於桌面電腦沒有被 root。
我將回答“Stratum 模型”——對於任何實際目的,它都有可能非常安全。
考慮以下事實:
- 客戶端和伺服器實現都將是開源的。
- 願景是擁有多個獨立的伺服器,由各種實體(包括大型“半可信”實體,如主要交易所和礦池)執行。
- 伺服器永遠不會獲得客戶端的私鑰。伺服器僅充當比特幣網路的中繼——它回答諸如“列出地址 X 的所有交易”之類的查詢,並將客戶端私下生成的“離線交易”推送到網路的其餘部分。
所以,如果伺服器從來沒有客戶的私鑰,它就不能花費一個人的比特幣。我可以想到兩種可能的攻擊媒介:
- 伺服器可以在響應查詢時撒謊 - 當您要求“所有交易到地址 X”時,它可以添加虛構的交易,或刪除一些交易。
- 伺服器可以謊稱它轉發了離線事務,但實際上將其丟棄。
這兩種攻擊都可以通過與多個半可信伺服器對話來緩解。假設有很多獨立的伺服器,由各種交易所、礦池和其他半信任方執行。Stratum 客戶端協議將來會向多個伺服器發送查詢:
- 查詢被發送到 N 個發送的伺服器,如果至少有 M 個伺服器同意,則客戶端認為是真實的。一個很好的價值
M
可能是N/2+1
。- 離線事務類似地被推送到 N 個伺服器。其中一個是誠實的就足夠了,並將交易傳輸到比特幣網路以規避任何潛在的問題。
鑑於上述分析,只有超過一半的 Stratum 伺服器運營商聯盟才有可能破壞協議。由於我們只考慮半可信伺服器,而不是在任何隨機的 Stratum 伺服器上指出客戶端(以減輕攻擊者啟動 1000 台邪惡伺服器的風險),因此所有這些可信伺服器運營商如果作弊比客戶端損失更大確實。我不會將 Stratum 用於 100,000 BTC 的交易,但我認為即使在高達 1000 BTC 或更多的情況下也是安全的(任意數量,實際數量將取決於部署的 Stratum 伺服器的數量和性質)。
以上所有內容在很大程度上取決於 Startum 客戶端本身。由於它確實知道您的私鑰,因此如果它是由惡意方編寫的,它可能會洩露您的密鑰 - 但您電腦上執行的任何程序也可能洩露!它是開源的,安全考慮與標準比特幣客戶端相同。每個 Stratum 客戶都應根據其作者的聲譽以及其原始碼收到的審查程度進行評估。