51%攻擊有哪些不同的型別?
51%攻擊有不同的型別,雖然它們能達到相同的攻擊效果,但對網路參與者來說存在根本上的不同。從網路參與者的角度來看,存在一種51%攻擊(內部算力攻擊),它與網路總體算力無關,網路只能依靠縮短出塊時間的來減少被攻擊的風險。
工作量證明
工作量證明是為網路帶來安全的基石,其主要原理是網路參與者通過大量消耗能源獨立驗證交易。根據網路的平均能源消耗量(雜湊率),網路參與者決定他們將等待多少個區塊以確信交易獲得保護——例如,如果參與者決定等待K個區塊並且這K個區塊消耗的平均算力是X,那麼他相信該交易將會在花費K * X的算力後保留在鏈上。在K次的交易確認之後,網路參與者確信惡意行為者產生K * X的算力以欺騙網路參與者的概率非常低並且得出結論,交易是不可篡改的。
我們可以想象一個算力球,確保我們不必相互信任。算力球可以有不同的顏色(網路使用不同的雜湊函式),並且如果算力球具有相同的顏色,則算力球只能與另一個算力球競爭。算力球越大,網路越安全。這個想法非常棒,效果很好。
外部算力攻擊
51%攻擊的一個典型案例就是,惡意行為者購買了大量硬體裝置並開始祕密挖礦。更簡單的方法是通過NiceHash這樣的服務商租用算力。在這兩種情況下,我們都有一個大小為E的算力球,它可以保護網路,外部攻擊者需要為K個區塊(逆轉交易所需的區塊數量)生成一個大於E的新算力球。
作為網路的參與者,保護自己免受這些攻擊的影響是相對容易的。只需要等待足夠多的交易確認。值得注意的是,更容易受到此類攻擊的網路是總體算力較小的網路,攻擊者可以通過算力租賃服務獲得超過總網路算力的51%。另一種情況是,如果另一個網路算力球有著相同的顏色(即相同的雜湊函式),並且網路算力球更大(比如比特幣和比特幣現金)。 為了防止來自另一個已知算力球的攻擊,可以設定警報系統來檢查這些算力球是否在變小——消失的算力可以用來攻擊其他網路。
內部算力攻擊
保護我們網路的算力球可以分成多個較小的算力球,它們會相互競爭。舉個例子,如果我們有一個網路,其中65%的算力球僅來自4個不同的來源(例如礦池)。如果使用網路的內部算力來攻擊它,那麼從參與者的角度來看,我們有一個完全不同的情況。
使用內部算力進行的51%攻擊
上圖中的算力攻擊看起來與外部算力攻擊是一樣的,但不同之處在於交易確認的概率不再是算力球提供的安全性的函式,而僅僅是時間的函式。為了更清楚地說明這一點,讓我們想象一個由大型算力球(它佔地球上總算力的90%)保護的網路。在這種情況下進行外部攻擊是不可能的。然而對於內部算力攻擊,這種情況與算力球佔總算力0.0001%的情況沒有什麼不同,這是因為這種攻擊使用了一定比例的現有算力。在這種情況下,網路參與者只能依賴於從交易包含在區塊中以來經過的時間(出塊時間),算力球的大小不能抵禦這種型別的攻擊。這就是為什麼這兩種情況是不同型別的51%攻擊。 內部算力攻擊在擁有較短出塊時間的網路上可能更容易被發現,因為我們可以在更短的時間內看到最新的算力分佈情況,以相應地對應各種情況(比如一些算力池突然停止了挖礦)。內部+外部算力攻擊
上述兩種攻擊的混合也是可能的。攻擊者使用不到51%的內部算力球(例如40%),這部分算力與之前不存在的新算力球(20%)合併。在這種情況下,網路本身算力球的大小能抵禦外部算力,因此這種攻擊情況沒有純粹的內部算力攻擊那麼糟。
比特幣算力分佈
我們不知道這些攻擊是否可能在比特幣網路上發生。比特幣網路上可能存在一些限制,使內部攻擊幾乎不可能發生。由於礦池需要非常頻繁地向礦工付款,可能會沒有足夠的資金支援,因此51%攻擊的實施可能最終無法讓他們獲利。
當前比特幣的算力分佈如下:
比特幣網路的大部分算力掌握在10多個礦池手中,這似乎不是最理想的,增加了內部算力攻擊的風險。即使這10個算力源都由誠實的網路參與者控制,但他們的系統也存在被黑客入侵的可能,如果他們使用相同的客戶端也存在漏洞被利用的風險。最後, 本文仍然認為比特幣是最安全的網路,可以用最少的信任來轉移價值,但看起來確實有改進的餘地。
總結
從網路參與者的角度來看,存在一種51%攻擊(內部算力攻擊),其中參與者不能使用算力球的大小來保護自己。這是因為算力球的大小與內部算力攻擊無關。 對於此攻擊,參與者只能依賴於從交易包含在區塊中以來經過的時間(出塊時間)。值得注意的是,能夠快速出塊的網路在這種情況下具有優勢,因為它們可以在更短的時間內獲得有關丟失池的更多資訊。 內部算力攻擊應該得到一些關注,我們需要進行研究以確定是否有可能以更好的方式分配算力。