區塊鏈安全入門筆記:多籤、雙花攻擊、軟分叉、硬分叉

買賣虛擬貨幣
雖然有著越來越多的人參與到區塊鏈的行業之中,然而由於很多人之前並沒有接觸過區塊鏈,也沒有相關的安全知識,安全意識薄弱,這就很容易讓攻擊者們有空可鑽。面對區塊鏈的眾多安全問題,慢霧特推出區塊鏈安全入門筆記系列,向大家介紹十篇區塊鏈安全相關名詞,讓新手們更快適應區塊鏈危機四伏的安全攻防世界。多籤 Multi-sig多籤(Multi-sig)指的是需要多個簽名才能執行的操作(這些簽名是不同私鑰生成的)。這可用於提供更高的安全性,即使丟失單個私鑰的話也不會讓攻擊者取得帳戶的許可權,多個值得信賴的各方必須同時批准更新,否則無效。我們都知道,一般來說一個比特幣地址對應一個私鑰,動用這個地址中的資金需要私鑰的持有者發起簽名才行。而多重簽名技術,簡單來說,就是動用一筆資金時需要多個私鑰簽名才有效。多籤的一個優勢就是可以多方對一筆付款一起達成共識,才能支付成功。雙花攻擊  Double Spend Attack雙花攻擊(Double Spend Attack)即一筆錢花了兩次,雙重支付,利用貨幣的數字特性兩次或多次使用“同一筆錢”完成支付。雙花不會產生新的 Token,但能把自己花出去的錢重新拿回來。簡單說就是,攻擊者將一筆 Token 轉到另外一個地址,通常是轉到交易所進行套現,然後再利用一些攻擊手法對轉賬交易進行回滾。目前有常見的幾種手法能夠引發雙花攻擊:
1. Race Attack這種攻擊主要透過控制礦工費來實現雙花。攻擊者同時向網路中傳送兩筆交易,一筆交易發給自己(為了提高攻擊成功的概率,他給這筆交易增加了足夠的礦工費),一筆交易發給商家。由於傳送給自己的交易中含有較高的手續費,會被礦工優先打包進區塊的概率比較高。這時候這筆交易就會先於發給商家的那筆交易,那麼發給商家的交易就會被回滾。對於攻擊者來說,透過控制礦工費,就實現了同一筆 Token 的“雙花”。2. Finney Attack攻擊者主要透過控制區塊的廣播時間來實現雙花,攻擊物件針對的是接受 0 確認的商家。假設攻擊者挖到區塊,該區塊中包含著一個交易,即 A 向 B 轉了一定數量的 Token,其中 A 和 B 都是攻擊者的地址。但是攻擊者並不廣播這個區塊,而是立即找到一個願意接受 0 確認交易的商家向他購買一個物品,向商家發一筆交易,用 A 向商家的地址 C 支付,發給商家的交易廣播出去後,攻擊者再把自己之前挖到的區塊廣播出去,由於發給自己的交易先於發給商家的交易,對於攻擊者來說,透過控制區塊的廣播時間,就實現了同一筆 Token 的“雙花”。3. Vector76 attackVector76 Attack 又稱“一次確認攻擊”,也就是交易確認一次後仍然可以回滾,是 Finney Attack 和 Race Attack 的組合。
攻擊者建立兩個節點,節點 A 連線到商家節點,節點 B 連線到區塊鏈網路中的其他節點。接著,攻擊者用同一筆 Token 發起兩筆交易,一筆交易傳送給商家地址,我們稱為交易 1;一筆交易傳送給自己的錢包地址,我們稱為交易 2。與上面說的 Race Attack 一樣,攻擊者對交易 2 新增了較高的礦工費從而提高了礦工的打包概率,此時,攻擊者並沒有把這兩筆交易廣播到網路中去。接著,攻擊者開始在交易 1 所在的分支上進行挖礦,這條分支我們命名為分支 1。攻擊者挖到區塊後,並沒有廣播出去,而是同時做了兩件事:在節點 A 上傳送交易 1,在節點 B 上傳送交易 2。由於節點 A 只連線了商家節點,所以當商家節點想把交易 1 傳給其它對等節點時,連線了更多節點的節點 B,已經把交易 2 廣播給了網路中的大部分節點。於是,從概率上來講,交易 2 就更有可能被網路認定為是有效的,交易 1 被認定為無效。交易 2 被認為有效後,攻擊者立即把自己之前在分支 1 上挖到的區塊,廣播到網路中。這時候,這個接受一次確認就支付的商家,會確認交易成功,然後攻擊者就可以立即變現並轉移資產。同時,由於分支 2 連線的更多節點,所以礦工在這個分支上挖出了另一個區塊,也就是分支 2 的鏈長大於分支 1 的鏈長。於是,分支 1 上的交易就會回滾,商家之前支付給攻擊者的交易資訊就會被清除,但是攻擊者早已經取款,實現了雙花。4. 51% attack

攻擊者佔有超過全網 50% 的算力,在攻擊者控制算力的這段時間,他可以創造一條高度大於原來鏈的新鏈。那麼舊鏈中的交易會被回滾,攻擊者可以使用同一筆 Token 傳送一筆新的交易到新鏈上。

目前已知公鏈安全事件的攻擊手法多為 51% 攻擊,截止發稿日由於攻擊者掌握大量算力發起 51% 攻擊所造成的損失共 19,820,000 美金。2019 年 1 月 6 日,慢霧區預警了 ETC 網路的 51% 算力攻擊的可能性,據 Coinbase 部落格報道該攻擊者總共發起了 15 次攻擊,其中 12 次包含雙花,共計被盜 219,500 ETC(按當時市價約為 110 萬美元),攻擊者經過精心準備,透過租借大量算力向 ETC 發動了 51% 攻擊,累計收益超 10 倍,Gate.io、Yobit、Bitrue 等交易所均受到影響。所幸在整個 ETC 生態社羣的努力下,一週後攻擊者歸還了攻擊所得收益,幸而沒有造成進一步的損失。

軟分叉 Soft-fork

軟分叉(Soft-fork)更多情況下是一種協議升級,當新共識規則釋出後,沒有升級的舊節點並不會意識到程式碼已經發生改變,而繼續生產不合法的區塊,就會產生臨時性分叉,但新節點可以相容舊節點,即新舊節點始終在同一條鏈上工作。

硬分叉 Hard-fork

硬分叉(Hard-fork)是區塊鏈發生永久性分歧,在新共識規則釋出後,已經升級的節點無法驗證未升級節點產生的區塊,未升級節點也無法驗證已經升級的節點產生的區塊,即新舊節點互不相容,通常硬分叉就會發生,原有正常的一條鏈被分成了兩條鏈(已升級的一條鏈和未升級的一條鏈,且這兩條鏈互不相容)。

歷史上比較著名的硬分叉事件是 The DAO 事件,作為以太坊上的一個著名專案,由於智慧合約的漏洞造成資金被駭客轉移,駭客盜取了當時價值約 6000 萬美元的 ETH,讓這個專案蒙受了巨大的損失。為了彌補這個損失,2016 年 7 月,以太坊團隊修改了以太坊合約程式碼實行硬分叉,在第 1920000 個區塊強行把 The DAO 及其子 DAO 的所有資金全部轉到一個特定的退款合約地址,進而“奪回”了駭客所控制 DAO 合約上的幣。但這個修改被一部分礦工所拒絕,因而形成了兩條鏈,一條為原鏈(以太坊經典,ETC),一條為新的分叉鏈(ETH),他們各自代表了不同社羣的共識和價值觀。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;