Verge Hack:它是怎樣的(第 2 部分)

第一部分

時間扭曲、挖掘漏洞、DOS 攻擊等等。

Verge 挖礦:當 5 種算法太多時

傳統上,在基於工作量證明協議的加密貨幣中,使用單一算法(最常見的是 SHA-256)來挖掘區塊。 在 Verge 中,可以使用 5 種不同的算法(對於好奇的人來說 - Scrypt、X17、Lyra2rev2、myr-groestl 和 blake2s)。 下面描述使用多種算法的原因。

一些比特幣批評者認為,隨著時間的推移 比特幣挖礦 已經變得過於專業化和集中化,大多數挖礦都是在 ASIC(“專用集成電路”的縮寫,特殊用途集成電路)上完成的 - 專門為貨幣挖礦而創建的設備,並且大多數比特幣挖礦都是在幾個中完成的礦池由一群礦工組成,他們匯集資源並在彼此之間分享收益。 他們表示,這些不同類型“中心化”的趨勢違背了加密貨幣的基本原則。 使用具有多種挖掘算法的硬幣可以平衡這種趨勢。 言下之意是,在硬件、生產、資源管理等方面管理五種不同的算法必然會比控制單一算法更加困難,從而讓Verge能夠實現更加去中心化、分佈式的挖礦。

情況是這樣的:實現正確操作的唯一方法——而這種情況下“正確操作”的概念包括維持區塊之間 30 秒的間隔、維持所有五種算法對礦工的經濟可行性以及不允許一種算法主導(這將擊敗整個實驗)是為了確保每個算法都有自己的複雜性參數,該參數將獨立於其他四個算法進行配置。 換句話說,Scrypt 算法中的挖掘難度被調整為遵守每個塊 30 秒的間隔,就像 X17 和其他算法一樣。

這意味著我們的黑客實際上並沒有降低整個網絡的挖礦難度; 他只對那些使用五種算法之一(Scrypt)進行挖掘的人降低了它。 雖然 Scrypt 礦工享受了極其簡單的挖礦體驗,但對於運行其他算法的其餘礦工來說,任務的難度並沒有降低,這意味著他們所有的綜合能力將無助於保護網絡。 這意味著攻擊者只能使用 Scrypt 算法,並且必須與其他使用相同算法的用戶競爭; 因此,我們的攻擊者所需的算力不超過 50%(統治整個網絡),但只有 10% 以上(統治其他 Scrypt 礦工)。

現在我們將進入猜測領域,但情況似乎更糟。 我們假設這個數字為 10%,基於每個算法應該分配大約相同數量的資源(這是挖礦難度設置機制的本質)。 然而,實際上,自由市場經濟的公理並不總是得到遵守。 社區認為,多種因素——例如,尚未激活的 Scrypt ASIC 的存在,以及通過 Nicehash 可以出租的免費資源等——導致了主導的成本要低得多攻擊時 Scrypt 上的挖掘比四種算法中的任何其他算法都要好。 可以安全地假設所需的哈希率最終遠低於 10% - 根據 Reddit 上的一些早期估計,哈希率可能低至 0,4%。

總結一下:假時間戳大大降低了挖礦難度; 五種算法的使用意味著只需要其中一種可以降低難度,從而更容易捕獲整個網絡; 這種特定挖礦算法的經濟和生產狀況使其更容易捕獲; 最後,由於挖礦複雜性降低,形成區塊的時間大幅減少,這使得攻擊的利潤增加了約 30 倍。

得到教訓

從這種情況可以得出什麼結論? 可以預見的是,這次黑客攻擊的短期後果是混亂且難以理解的。 幾天后,主要開發人員使用也可能出現錯誤的工具修復了幾個錯誤,最終網絡經歷了一次硬分叉,這最初可能是偶然發生的(好吧,或者不是偶然)。 從全球反應來看,黑客攻擊發生一周內,Verge 的價格上漲了 30%,接下來的一周又宣布 Verge 貨幣將在 Pornhub.com 上被接受作為訂閱費。 加密貨幣最大的協議級黑客攻擊如何導致該貨幣價格上漲,並隨後與訪問量最大的色情網站建立合作夥伴關係 - 我將保留這個問題。 我個人認為,重點很簡單,就是這個世界沒有道理,人們徹底瘋了。

但我離題了。 從全球角度思考,我們可以從這種情況中吸取一些教訓:

首先,利用時間戳人為降低複雜性的技術其實早已為人所知,甚至還獲得了一個名字——“時間扭曲”漏洞(“time warp”)。 幾年前,比特幣論壇上討論了一種攻擊向量。 在某種程度上,使用較新的“黑暗重力井”難度調整算法,即隨著每個新區塊的出現而調整難度,有助於實現對Verge的攻擊。 然而,在比特幣中,難度每 2016 個區塊才會發生變化。 儘管這種拉伸和間歇性的難度設置看起來像是一個奇怪的解決方案,但 Verge 黑客事件明確表示這實際上是一種安全措施:如果比特幣中有任何方法可以降低挖礦難度,那麼攻擊者就可以做到。每兩週才一次,這使得攻擊的結果與 Verge 相比微不足道,黑客每 2 秒就可以降低挖礦難度。

有趣的是,暗重力波的好處之一是它應該不受“時間扭曲”漏洞的影響。 考慮到這一假設已被徹底揭穿,使用該算法的其他貨幣至少應該感到緊張。

至於這五種算法的使用,雖然乍一看似乎是在經濟刺激的去中心化環境中值得進行的實驗,但它引入了新的複雜性,不可避免地增加了出現不可預見漏洞的可能性。

在這兩種情況下,這次黑客攻擊都代表了支持經過驗證的機制的有力論據,並呼籲謹慎行事,避免使人們的金融資產複雜化並引入不必要的風險。 在這些領域,比特幣團隊表現出色。

這個問題有點更廣泛:軟件開發人員雖然可能不願意承認,但歸根結底也只是人類。 即使安全的基本原則看起來完全可靠,也總是存在出錯的空間。 存在意想不到的攻擊,妥協並不總是合理的,當然,沒有人消除了舊錯誤出現的可能性。 軟件並不總是按照我們希望的方式運行,在 2018 年,沒有人會對此類錯誤可能導致資金損失感到驚訝。 但當軟件 本身  錢,我們需要特別小心。

鑑於我們大多數人沒有時間對我們投資的每個項目進行徹底的代碼審查,預防災難的最佳方法是信任具有良好記錄和保守開發方法的經過驗證的系統。

而如果你想在實驗性匯款項目中押註一些資金,那麼你至少應該意識到其中的風險。 最終,最好的保護是社區要求採取適當措施來預防未來的災難。 如果我沒記錯的話,喬治·桑塔亞納 (George Santayana) 說道:“那些無法從過去的安全漏洞中汲取教訓的人注定會在未來一次又一次重蹈覆轍。” 這些話一定要記住,以免我們意外地再次重蹈過去的覆轍。

給文章評分
區塊鏈媒體
添加評論