區塊鏈技術資源分享
追尋中本聰先生的腳步
?

重放攻擊保護_如何重放攻擊?bsv硬分叉_bch如何重放保護?@BCH社區

2018年11月15日,BitcoinCash從版本0.17硬分叉升級到0.18時候,出現了另外一個與0.18不兼容的版本BitcoinSV,但是這個版本沒有添加重放保護,號稱要以算力戰的方式用BitcoinSV替換BitcoinABC 0.18。算力戰的問題這里暫且不談,只說重放保護的問題以及如何分離BCH和BSV。

關于重放保護的相關問題

什么是重放保護?

重放保護,就是讓交易只在當前鏈中有效,并且在其它鏈中無效。通常在一條鏈分裂成兩條鏈時,為了讓兩條鏈的交易互不影響,需要在生成交易信息的時候,加入不同的標識或者使用不同的交易結構,這樣,另一條鏈的礦工就會驗證該交易無效,從而不打包該交易。

添加重放保護的一方,有什么影響?

目前來看,添加重放保護的一方,是處于劣勢的,因為該舉動意味著放棄了另一方的所有生態。2017年8月1號BCH分叉時,主動添加重放保護,只能重新建立自己的相關應用,從0開始。

但是,添加重放保護,是能上交易所的基本條件。雖然不添加重放保護,交易所也可以把兩種分離,但是交易所要花費很多精力和技術去做這些事。技術差的交易所,會因為賬務混亂,無法支持。除非這種幣有很大的用戶群,否則交易所不愿意花費高成本去支持這種幣。

BCH每年兩次的硬分叉升級,為什么不添加重放保護?

BCH的硬分叉升級是為了升級(本來是升級,不知道誰取名字叫硬分叉),不是為了分叉,和ETH一樣,全節點客戶端都需要升級,否則就無法同步區塊,但是輕錢包卻不用升級。如果升級時添加重放保護,意味著之前所有的BCH輕錢包或者一些服務都不能使用,這些生態都需要同時升級,對生態的影響非常嚴重。

并不是所有的硬分叉升級,輕錢包都不需要修改的,區塊鏈系統在升級的時候,盡量避免修改與構造交易相關的修改,否則就要作相關兼容,不然就需要很多生態一起升級,費時費力,用戶體驗也不好。

BCH和BTC分叉時,是如何添加重放保護的?

2017年8月1號BCH分叉時,主動添加了重放保護,簡單的說,就是在交易簽名的數據中,添加了SIGHASH_FORKID=0x40這個數據(詳情github.com/Bitcoin-ABC/bitcoin-abc/blob/master/doc/abc/replay-protected-sighash.md)。

BSV如果要添加重放保護,只要把0x40改為其它值就可以了。

ETC和ETH分叉時,沒有重放保護,造成了什么樣的問題?

ETC的出生,是讓人未意料到的,從ETC到ETH,是一次硬分叉升級,沒有重放保護,但是仍有人堅持挖ETC原鏈,由于ETC的難度調整很快,所以ETC活了下來,并且有了價值(BCH 的0.15版,也活了下來,但是由于沒有主流交易所支持,可以認為是沒有價值的)。但是由于大家都沒有做好準備,特別是交易所,被重放攻擊了。重放攻擊,對于有價值的幣有意義,對于沒有價值的幣,是沒有意義的,因為你攻擊得到的幣,是沒有價值的。

如何重放攻擊?

大部分影響下,沒有重放保護的兩種幣,在轉帳的時候,發送其中的一種幣,另一種幣也會同時發送。

重放攻擊,就是利用這個漏洞,在接收幣的時候,同時獲取另外一種幣。重放攻擊一般對交易所進行攻擊。

例如:

在ETC分叉的初期,沒有重放保護,交易所以為ETC不會出現,也沒有做分離處理,用戶在提取ETH的時候,同時也收到了ETC,然后用戶自已把ETH和ETC分離,向交易所充值ETH,再提出ETH,這樣就多收到了ETC。

如何分離沒有重放保護的BSV?

分離兩種幣的一些基本準備工作

想要分離兩種幣,前提是兩種幣都有算力,并且都能出塊。如果11.15以后BSV不出塊,那么也不可能分離了。

為驗證這兩種幣是否分離成功了,你需要兩種幣的區塊鏈瀏覽器進行查詢,但是現在還沒有BSV區塊鏈瀏覽器。

另一個驗證的辦法,就是同時準備BCH錢包和BSV錢包,并且把同一個私鑰或者相同協議的助記詞導入到這兩個錢包中。目前,BSV沒有輕錢包,唯一的全節點客戶端只能在Linux系統運行,并且沒有界面。

下圖是BSV全節點客戶端的操作截圖:

BSV全節點客戶端的操作截圖

分離兩種幣的一些方法

兩種區塊鏈幣分叉以后,如果沒有專門的重放保護,大部分情況交易信息是完全一樣的,如果想分離,就需要讓一筆交易在一條鏈上打包,在另一條鏈上不打包。如果自己有礦池,那么就會有很多手段。

例如,礦池自己構造交易,直接打包,不廣播,那么,這些交易就不會在另一條鏈上存在。

另外,構造一些特殊交易,例如利用BCH新的操作碼構造交易,也可以讓交易只在BCH鏈上打包,在BSV鏈不打包。但是這兩種方法對用戶的要求太高,因為普通用戶沒有礦池,又不是高手,自己不能構造交易。下面介紹兩種方法,可以讓普通用戶都可以操作。

INPUT污染法

向你的BCH錢包轉入一筆分離后的BCH當作污染源,然后把錢包中的所有幣一分不留的全部轉向另一個地址,轉移成功后,會發現BSV錢包中的幣并沒有轉走,兩種幣分離成功。

這個方法的分離原理,要從比特幣的轉賬原理說起。

上圖這筆交易由2個輸入轉賬到一個輸出。這兩個輸入必須同時存在,礦池才會驗證通過,并打包進區塊。如果輸入1只存在BCH區塊鏈中,那么BSV礦池就會拒絕收錄這筆交易。操作的時要求用戶一分不留的全部轉走,就是為了讓那筆當作污染源的輸入能夠包括在交易中,否則就會分離失敗。

這個方法要求首先有一筆分離后的BCH,才能把其它的BCH和BSV分離開。這些幣可以是礦池新挖出來的幣,也可以是別人分離后轉給你的幣。我會在分離BCH后,給大家發送BCH,以便大家分離。

INPUT污染法-重放攻擊

區塊不同步確認法

此方法用到兩個特性:

  • BCH的零確認有個特點,就是未確認的交易,最多只能發送26次。
  • BCH和BSV挖礦出塊不同步。

我們可以利用這兩個特點分離BCH和BSV。

這個方法操作相對復雜一些,并需要試很多次,還要花費一些BCH或BSV,需要準備BCH錢包和BSV錢包,把同一個私鑰導入到BCH錢包和BSV錢包。

  • 我們仍然操作BCH(因為BCH的工具比較多,錢包多)。向BCH錢包轉入大約0.01個BCH,不要太多,此時,BCH錢包和BSV錢包都會收到這0.01個幣。
  • 快速把這些幣轉賬到原來的地址,連續操作26次以上(越快越好,最好在5分鐘能操作完成,否則要試很多次),等錢包提示錯誤不能再操作為止。如果你的錢包不允許零確認26次,那就需要換個錢包。如果你會用程序生成交易,那最好不過了。
  • 等未確認的交易達到26次以后,等待BCH網絡和BSV網絡出塊。如果BCH網絡先出塊,那么再發一筆BCH交易,此時BCH網絡會收錄這筆交易,BSV網絡因為超過26次零確認,會拒絕你的交易,分離成功。如果BSV網絡先出塊,那么用BSV錢包再發一筆交易,同樣原理,也可以分離BCH和BSV。

微博@BCH社區

比特幣現金(BCH),一種點對點的電子現金系統。


重放攻擊保護_如何重放攻擊?bsv硬分叉_bch如何重放保護?@BCH社區

分享到:更多 ()
0
區塊鏈神吐槽
pi幣注冊流程教程圖解中文版

來評論吐槽 搶沙發

評論前必須登錄!

 

區塊鏈資源分享聯系我

區塊鏈資源分享聯系我首頁更多新聞
做滴滴代驾还是开滴滴那个赚钱