發表於 2019-03-21 10:45:25
重放(Replay)也稱為重播、回放,即某個消息或數據原封不動的重新發送給接收方一次,而接收方會接受這消息或數據,當這個動作是成立時,表示接收方無法有效辨識該數據是已經收過,這將會是重放漏洞。
重放攻擊主要是在有區塊鏈發生分叉之後,因為分叉後之兩方都共同還保有分叉之前的數據,因此分叉之後在兩邊都可以做一樣的交易。例如有一間蛋糕店A但是因為理念不同而分家成蛋糕店B和蛋糕店C,分家之後兩家共同擁有之前客戶資料與交易信息且用的系統還是一樣的包含驗證付款信息系統,接著各自經營客戶與交易並不會互相交換信息。
現在Alice拿著付款信息給蛋糕店B的服務員後,蛋糕店C的服務員用電腦確認信息後將蛋糕給Alice。拿到之後Alice又拿相同付款信息給蛋糕店C的服務員後,蛋糕店C的服務員用電腦確認信息後又將蛋糕給Alice,因此Alice得到兩個蛋糕,如果蛋糕店B和蛋糕店C能夠有確認付款信息,就不會發生重放漏洞,沒有漏洞就沒有被攻擊的可能,也就不會損失蛋糕了。
而在區塊鏈上就是分叉之後,就可以做重放攻擊,以比特幣(BTC)和比特幣現金(BCH)為例,BCH是從BTC中分叉出來的,但是兩者在所有基本的功能上是一樣的,只有BCH比BTC增大了區塊大小。這個時候Alice從B處購買了10BTC,Alice把這交易信息交給BTC的礦工,獲取10BTC,但是Alice複製了交易信息交給了BCH的礦工,這樣下礦工在驗證籤名之後放在BTC又放到BCH裡,最後Alice就可以獲得到10BTC也擁有10BCH。
最佳案子:以太坊重放攻擊
重放攻擊最佳的案例就是以太坊硬分叉的時候。以太坊硬分叉出現了ETH和ETC兩條鏈,兩條鏈上的交易數據結構是完全一樣的,因此一筆交易在ETH上是有效的,那它在ETC上同樣會被接受,反之亦然。因為當時所有人都認為ETC將不會再存在,所以分叉前沒人意識到兩條鏈會產生相互重放問題。後來還有許多礦工繼續在維持ETC鏈時,大家發現在ETH鏈上的交易拿到ETC鏈繼續重放仍然是有效的。
以太坊分叉時幾乎所有交易所也都沒發現到這個問題,這時候只要有人從交易所提取ETH幣,就有可能得到同等數量的ETC幣。許多人利用這個漏洞,不斷在交易所充幣和提幣(ETH),從而獲取額外的ETC。這就是雲幣、BTC-e等交易所發布說自己被重放攻擊了,被騙取了幾乎所有ETC。「重放攻擊」也就此聞名於幣圈。
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴