聊一聊ETC 51%算力攻擊
整理:Sherry、金小佳;校準:肖傑
從數字貨幣誕生之初,51% 攻擊就是大家討論的熱點話題,以工作量證明為共識機制的數字貨幣,最大的安全隱患就是可能會存在51% 攻擊。如果有人持有超過全網51% 的算力,那麼他就可以發起一次攻擊。這個攻擊可以讓錢被花費兩次,或者重新改變已經達成的共識狀態。
比特幣網絡已經運行超過十年,很多時候大家會覺得51% 攻擊好像只停留在理論層面上,很少聽到它真實發生。但是這一次,它真真切切的發生了,就是ETC 的51% 攻擊。
這一期, Fork It 主播們(Terry、Daniel、Kevin)和大家好好的聊一聊ETC 51% 攻擊的來龍去脈。
ETC 51% 攻擊的來龍去脈
Daniel:ETC 的51%攻擊是一次有組織、有預謀、精心策劃的攻擊。 2019 年1 月6 日,一家叫Bittrue 的交易所,發公告稱它們發現了一筆價值13000 ETC 的異常提現。也就是充值進來的交易被回滾了,但是交易餘額在交易所提現時被發現,被攔截了下來。
進一步追查後,Coinbase 官方發現了更大規模的ETC 網絡重組情況。
知識點:所謂網絡重組(Block Reorganization)就是網絡中六到八個塊甚至更長的塊都已經被礦工挖出來了,但是這些塊突然全部被移除,產生了一些新的塊去代替這些已經被確認過的塊。
Coinbase 官方博客在第一時間發布了被懷疑存在問題的三次比較大規模的網絡重組。之後一個比較著名的交易所gate.io 被曝出遭受了51% 攻擊,黑客在這個交易所有兩筆金額較大的充值,這兩筆充值又通過網絡重組被移除,黑客在網絡上通過賣掉他們在交易所裡的幣,或者把充值進交易所的幣換成其它幣種,最後提現。隨後gate.io 發出公告稱,這次攻擊造成了大概價值20 萬美元的損失。
這個事件被暴露出來後,一些技術愛好者,尤其是國內慢霧、PeckShield 等安全組織開始調查攻擊事件,它們發現51% 攻擊的算力來自一個叫NiceHash 的網站,黑客可以在這個網站租用到一定規模的算力,然後向ETC 網絡發起攻擊。
在那個時候,超過ETC 網絡112% 的算力是可以被租到的,並且租到的算力可以從事ETC 挖礦,以及任何你想做的事。黑客就是利用NiceHash 網站租到了算力才能發起攻擊。
ETC 為什麼容易被攻擊,其實是基於ETC 的兩個特點。
第一個特點是攻擊成本小。我們假設ETC 的主網絡算力是100,現在要租101 的算力去攻擊ETC 網絡,黑客通過攻擊導致一個交易所損失了大概20 萬美元,也就是黑客攻擊賺到20 萬美元。大家覺得需要花多少錢去租賃一個超過ETC 主網絡的算力發起攻擊能賺到20 萬美元?
答案是黑客的攻擊成本只要每小時5000 美元左右。從攻擊的那一天到現在,ETC 主網絡的算力市值也進一步下降,現在再去租用算力攻擊ETC 網絡要比前一次攻擊還要便宜。
在之前的Fork It 2 中,我們知道ETC 是2016 年THE DAO 事件分叉出來的鏈。在很長一段時間裡,ETC 的算力大概是以太坊總網絡算力的1/20,它的幣價也是以太坊網絡的1/20 左右,但是隨著時間的推移,ETC 的網絡算力越來越少,幣值也越來越低,到現在剛好達到特別容易受到攻擊的狀態。
ETC 的另外一個特點就是它的流動性很好。以太坊是被全世界大多數交易所支持的主流數字貨幣,ETC 和以太坊同根同源,所以交易所對ETC 的支持非常好。雖然它的價格低,算力低,但鑑於它的流動性,黑客做一次51% 攻擊至少有兩種賺錢的方式。
第一種方式是雙花攻擊:先給交易所轉一筆賬,然後通過算力攻擊改掉這筆轉賬在鏈上的共識,此時交易所還保留了這筆轉賬記錄,所以在交易所裡會有一筆其實不存在的錢可以套現。另外一種方式是黑客成功實現一次51% 攻擊,會是一個非常大的負面新聞,它可以影響到期貨市場,黑客可以通過提前在期貨市場做空實現套利賺錢。
PoW 的共識基石動搖了嗎?
Terry:其實這次PoW 51% 攻擊不是第一次,有很多小幣剛上線就被「打掉了」,所謂的「打掉」,就是利用算力進行攻擊。不管是新幣種還是小幣種,當它們的算力、市值不夠高,黑客就可以用相對比較低的成本,攻擊一個鏈,這就顯得特別不安全。
那麼我就會有一個疑問:這個事件發生之後,出現了很多關於PoW 的新聞,比較有代表性的就是:「ETC 遭遇51% 攻擊,PoW 的共識基石因此動搖了嗎?」(有點標題黨)我想問的是,你們對PoW 共識算法失去信仰了嗎?或者覺得它真的是有問題的嗎?
Kevin:首先PoW 是一種防女巫攻擊的方式,它的共識算法非常簡單,就是選擇一個天然的隨機數,可以做到完全公平。
知識點:女巫攻擊(Sybil Attack):在對等網絡中,單一節點通常具有多個身份標識,通過控制系統的大部分節點來消弱冗餘備份的作用。
如果網絡中存在一個惡意節點,那麼同一個惡意節點可以具有多重身份,原來需要備份到多個節點的數據被欺騙地備份到了同一個惡意節點(該惡意節點偽裝成多重身份),這樣作惡的節點就有可能掌握網絡的控制權。
另外一個是開放性,任何節點都可以參與共識,礦工只需要買一個礦機插電,就可以直接進行挖礦。如果網絡本身算力非常高,PoW 的優勢還是非常明顯。而PoS 約束條件比較多,可能需要保持在線、購買Token,這過程中會可能有一些包含個人信息的IP 地址會被暴露。 PoW 整個系統保證了每個礦工都要在最長鏈上提交區塊,這使得每個礦工挖到一個塊後,有動力盡快地將其廣播出去。這些都是比特幣Nakamoto Consensus 非常好的屬性。
但是任何一個共識機制都有它的安全模型,都會存在被攻擊的可能。只是人們比較了解PoW 的攻擊模型,知道它可以怎樣抵禦攻擊。其它的共識人們並不充分了解,尤其是比較新的公司,包括在很多PoS 的項目中,採用的方式還是基金會等相關團體持有Token 的50%,來保證不被攻擊。真正在「野地」裡成長出來的PoS,運作時間還非常短,人們還在摸索的過程中,但它是一個非常值得研究的方向。
Daniel:是的,對於不了解的共識機制,我們更擔心的是未知的攻擊方式,以及對於這些攻擊方式,我們還沒有成熟的解決方案。而PoW,我們非常清楚地知道黑客會以怎樣的方式發起攻擊。
Terry:Vitalik 曾發Twitter 說過,他認為ETH 要轉向PoS 從哲學上來講是正確的。當然也有很多反對的聲音。慢霧科技的創始人說過一個話題,就是無論採用什麼算法,只要是在解決拜占庭將軍問題,就都有它自己的安全模型。就像Kevin 說的一樣,安全的前提假設不一樣,都會有各自的問題,PoS 也有很多沒有解決的問題。其實我們對於PoS 共識算法也有蠻多的理解和認知,我們可以在以後的節目裡專門聊一聊PoS。
但現在我想表達的是把PoW 換成PoS,這並不是一個解決問題的辦法,或者是說它有可能會引來很多新的問題。從實際解決問題的角度來講,有人提出了一些真實的解決方案,比如針對鏈的重組問題,BCH 社區發起了重組保護(在BCH 中,ABC 0.18.5 版本增加了重組保護,能夠排除超過10個塊的重組)。
現在的PoW 挖礦方式大致分為兩種,一種是通過ASIC 礦機來挖,比如比特幣,另一種是通過GPU 礦機來挖(下文統稱為顯卡挖礦),比如ETC。不得不承認的一點是,顯卡挖礦的算力流動性較高,因為它能挖的幣種比較多,很容易可以租到算力去攻擊某一個幣,攻擊完某個幣以後,就算這個幣垮了,礦工還是可以通過挖另外的幣獲得收益。那麼問題來了,顯卡挖礦的算力流動性這麼高,會不會從某種程度上影響用顯卡挖礦的鏈的安全性?
Daniel:基於事實,整個算力市場是一個存量市場,在當前的市場環境下,很少有人會投資顯卡市場去購買顯卡,增加算力。相反,更多的礦工會選擇把礦機停掉,因為現在所有幣種的價格都很低,挖礦不合算。
所有礦工都可以自由選擇挖哪一種幣,通常理性的礦工會選擇那些能盈利、賺錢的幣種。最終導致的結果是,所有的幣種都會回歸到一個相對的盈虧平衡點,或者說挖每一種幣種所得到的盈利可能都差不多。所以現在每一個幣種背後所支撐的算力都保持在一個穩定的狀態。
在這個穩定的狀態下,一些幣種價值較高,它的算力就越大,想要去租超過主網絡的算力進行攻擊非常難。而那些因為價值不夠高,或者挖礦不經濟,導致很少有礦工去挖的幣種就非常不安全,攻擊者很容易租到算力對其進行攻擊。
任何一個項目,尤其是選擇PoW 作為共識協議的項目,在上線的初期算力增長階段,都會經歷一個不安全的階段,那麼如何從一個危險的狀態過渡到到安全的成熟階段就顯得特別關鍵。
ASIC Friendly or Not?
Terry:我們見過很多項目,他們對是否採用ASIC 礦機來挖礦有著不同的態度,有些是抵觸的,有些是中立的,也有些是友好的。那麼如果一個小幣種用ASIC 來挖,那麼它就更安全嗎?
Kevin:這要看你如何界定安全性。小幣種對ASIC Friendly 的詬病態度有兩種。一種是假設在很短的研發週期內可以把一個新項目的ASIC 礦機做出來,而且大家都看好這個項目。那麼可能會出現這樣的問題:
一般來說一個項目在前期散幣最快,而最快的紅利期就讓給了擁有ASIC 的礦工,那麼這些礦工很可能就是中心化的。甚至可能會出現ASIC 生產廠商自己在研發出礦機之後,並不用來銷售,而是自己挖幣,這樣會導致Token 本身非常集中。如果Token 過於集中,社區就會非常集中,那麼以後如果出現需要是用Token 投票或者是用算力進行線上治理的情況,都可能出現問題。更甚至,如果出現像比特幣ASIC 礦機生產商一樣一家獨大的情況,生產商能夠最先生產出礦機,挖出最多的Token,之後拋售Token,把所得到的資金再重新投入生產和研發,就又會領先別人一個身位。所以這一點是大家對ASIC Friendly 詬病的地方。
另外一種是一些項目會採用其他項目(比如挖比特幣的礦機)的ASIC 挖礦算法,那麼市面上已經有大量的ASIC 礦機在挖比特幣,這對於該項目來說非常不安全。因為一旦項目上線,比特幣的礦工可以直接對該項目進行降維打擊。只要這些比特幣礦工本身擁有的算力足夠多,就很容易對該項目發起51% 的算力攻擊。
所以說最好的方式是採用一個新的算法,不管是用顯卡挖礦,還是用ASIC Friendly 挖礦。
但是對於採用一個新算法的項目來說,也存在一些問題。如果它用的是顯卡挖礦,因為顯卡都是一樣的,那麼黑客就可以通過裝挖礦軟件對其進行攻擊。如果它用的是ASIC 礦機挖礦,那麼已有的ASIC 礦機在剛開始的階段就很難直接進行攻擊,但是這可能會帶來一些其它的問題,比如挖礦中心化。
我們拿Grin 來舉例。 Grin 的挖礦設計很有意思,它有兩個基於Cuckoo Cycle(一種由John Tromp 發明的圖論式工作量證明,我們會在下一期Fork It 中進行介紹)的算法,一個是抗ASIC(ASIC Resistant ,通過顯卡挖礦,很難用ASIC 挖礦),叫Cuckaroo29;另一個算法是ASIC Friendly,叫Cuckatoo31+。
一開始Grin 通過用大量的顯卡進行挖礦,並讓礦工把幣散出去。因為Grin 採用了一個新的算法,所以之前存量的顯卡雖然能切換算力過去,但是也存在一定難度。同時Grin 不排斥ASIC,有一定數量的幣由ASIC 礦機挖出,隨著時間的推移,不同挖礦算法挖出來幣的比例會逐漸變化。
如果把顯卡比作僱傭軍, 那麼ASIC 礦機就像禁衛軍。優化了的ASIC 礦機,就不可能再去挖其他項目的Token,這些設備只能挖一個項目。如果別的礦工想要加入進來,只能通過購買礦機的方式加入。從這個層面上來說,Grin 是個比較好的項目,雖然ASIC 的礦工可能會有一定的中心化,但是礦工只要在挖Grin 的Token,那麼他們就有動力去保護這個項目(因為除此之外,它們的芯片也無其他作用)。
Terry:對,假設有一個新項目的新ASIC 算法被製造出來,並且有很多人在挖這個幣,礦工並不一定願意通過租用算力來攻擊它。雖然短期可能會盈利,但是長期來看,如果幣沒有價值,所有的礦機就只是廢鐵而已,損失會更大。但是採用顯卡挖礦幣種的礦工不會考慮這種情況,因為即便這個幣被攻擊了,礦工還是可以挖其它的幣。這也體現了ASIC 挖礦的忠誠性,它是不同於顯卡挖礦的一點區別。
剛才我們也提到了Grin 的挖礦,一個很有意思的設計,剛開始Grin 挖礦的90% 用的是Cuckaroo29(抗ASIC),10% 是Cuckatoo31+(ASIC Friendly)。而這個比例會變動,ASIC 挖礦的部分會越來越大,顯卡挖礦的部分會越來越小。這樣的變換方式說明Grin 對ASIC 是中立的,這一點和我們的看法非常一致。
我聽過一個資深礦機生產商的觀點,他認為只要項目足夠好, ASIC 化是不可避免的。要避免只有兩種做法,一種是項目方威逼,只要敢造ASIC,我就敢分岔,就換算法。還有一種是「騙」,就像ETH 一直說要轉PoS 那樣。我對「騙」的說法不認同,但是我認為既然別人這麼諷刺幽默得去說這句話,表達的重點應該是,只要利益足夠大,一定可以做ASIC,不管是友好的還是不友好的。
雖然從技術上我不能去評判是不是所有的算法都可以做ASIC,但是如果利益足夠大,我相信會有人去做這個項目ASIC 的研究。據我所知的一些小道消息,像Zcash、門羅等其實都有ASIC 礦機,只是社區對ASIC 的礦機態度不同。
Daniel:是的,門羅社區出現ASIC 礦機之後,就快速達成了一次共識,切換了算法,之前的ASIC 礦機就變成了廢鐵。
Terry:OK,這裡需要聲明一下,我們並沒有推薦Grin 這個項目,我們的節目就算推薦也是推薦它的技術,不過Grin 這個項目背後的MimbleWimble 協議確實有很強的傳奇色彩。除了Grin,MimbleWimble 協議的另外一個實現是Beam 項目,但它在原來的協議基礎上做了一些所謂的「改良」,這個「改良」是好是壞,可能需要交給時間來評判。相比之下,我覺得Grin 更原教旨主義地實現了MimbleWimble。另外,我聽說國內有一些團隊也打算實現MimbleWimble,這可能會引起一個小風潮。
Pick Time
Daniel:最後,又到了我們最喜歡的Pick Time。我向大家推荐一部電影:《燃點》。我剛帶著部門同事去看,我們團隊裡有一些人有過創業的經驗,現在我們以創業者的身份在電影裡看創業者的故事,還是會有很多感觸和共鳴。可以把它當作一次小型的團建,和同事各自講述一下自己當年創業的故事,這可能會比電影本身更加有趣。
Kevin:我和大家推荐一家網紅店「艾格吃飽了」。我老婆一直很關注美食,她在這家網紅店買了一些柿餅,特別好吃。這家網紅店的公眾號叫「艾格吃飽了」。 (當然我們沒有被讚助)
Terry:我推荐一張電話卡,叫Google Fi,但這個電話卡只能在美國才能買到。這種卡的特點是它按流量收費,過了6G 以後就不會再收費。費用大概是十刀/G,其實在中國這並不便宜。但是對於經常出國的朋友來說,這個卡特別方便,因為它在全世界各地都可以用,包括中國。他唯一的缺點(好有道理的樣子~),就是在國內可以不用通過科學上網的方式,就能訪問到國外一些「邪惡」的網站(邪惡的笑),大家一定要注意。


