區塊鏈安全入門筆記(四)

區塊鏈 廣播 比特幣 Odaily星球日報 2019-07-07
區塊鏈安全入門筆記(四)

雖然有著越來越多的人蔘與到區塊鏈的行業之中,然而由於很多人之前並沒有接觸過區塊鏈,也沒有相關的安全知識,安全意識薄弱,這就很容易讓攻擊者們有空可鑽。面對區塊鏈的眾多安全問題,慢霧特推出區塊鏈安全入門筆記系列,向大家介紹十篇區塊鏈安全相關名詞,讓新手們更快適應區塊鏈危機四伏的安全攻防世界!

系列回顧:

區塊鏈安全入門筆記(一) | 慢霧科普

區塊鏈安全入門筆記(二) | 慢霧科普

區塊鏈安全入門筆記(三) | 慢霧科普

多籤 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 attack

Vector76 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),他們各自代表了不同社區的共識和價值觀。

相關推薦

推薦中...