比特幣協議有多安全?
是否有任何證據(除了到目前為止沒有被破解)表明比特幣協議是安全的?“有多安全”?
(我意識到這可能不是一個有意義的問題——如果你可以改進它,請隨時編輯。另外,如果你喜歡這個問題,你可能會喜歡比特幣提案。)
協議中有多種加密算法的用途。
賬戶/交易
要將資金從一個帳戶轉移到另一個帳戶,您需要收集一些數據(之前為您獲得資金的交易、目標帳戶、您要轉移的金額)並使用屬於你的帳戶。
對於此簽名,比特幣使用 ECDSA 算法。
如果我可以偽造你的簽名,我也可以偷你的錢。
帳戶的(公共)地址為
address = version || hash || checksum
、其中version = 0
(一個字節)hash = RIPEMD-160(SHA-256(public-key))
和checksum = first 4 bytes of SHA-256(SHA-256(version || hash))
。(校驗和主要防止傳輸錯誤。)如果我能以某種方式生成一個私鑰,其對應的公鑰與您的公鑰具有相同的 SHA-256 雜湊,那麼它將具有相同的地址,我可以竊取您的錢。如果我可以為您的公鑰創建一個合適的私鑰,這也是可能的。
目前,ECDSA 算法沒有已知的攻擊(我認為即使在 SHA-2 上進行第二次原像攻擊以找到具有相同雜湊的第二個公鑰,您也需要在 ECDSA 上進行攻擊才能獲得有用的私鑰) .
現在使用木馬等來竊取所有者的實際私鑰要容易得多。(但這在這裡是題外話。)
區塊鏈
為了使交易被視為有效,它必須包含在區塊鏈中,例如包含在組成該鏈的區塊之一中。
為了創建這個塊,礦工使用雜湊的 Merkle 樹,它引用了包含在這個塊中的單個交易、前一個塊和一些其他數據。這棵樹也使用 SHA-256。
如果標頭的雜湊值小於某個數字(“目標”),則認為一個塊是有效的(例如,其他對等方將接受它,並在其上建構自己的塊)。這可以通過操縱塊的一部分、nonce值、計算雜湊值並重複進行,直到幸運地擊中正確的 nonce 以使該塊有效。
如果有幾個有效的區塊在執行(它們不是彼此的後代),“好”礦工通常會建立在具有最長鏈的區塊上。
那麼,我們怎麼能在這裡作弊呢?
如果我們能夠破解 SHA-2,例如通過找到一種比嘗試許多方法更快的方法來獲得正確的隨機數,我們就可以比其他人更快地生成塊。這意味著我們將首先獲得所有開采的硬幣。有了單極子,我們還可以有效地決定哪些交易包括哪些不包括(這可能是對想要轉移資金的競爭對手的拒絕服務)。
我不確定我們是否真的可以以這種方式(或通過其他 SHA-2 中斷方式)在我們的 Merkle 樹中包含虛假交易——我認為一個塊的接收者仍然應該檢查它的交易是否真的有一個有效的簽名。
目前,尚不知道 SHA-2 的此類中斷。