在线无码中文破解|日本影院一区二区三区|五月激情Av在线|国产香蕉视频一区|国产老熟女AAAA|云霸高清91视频|久久久www视频|在线熟女网站无码视频|国产精品 国产|韩日精品中文字幕

風險提示:理性看待區(qū)塊鏈,提高風險意識!

什么是重放攻擊?

2個回答

態(tài)度網(wǎng)友丶馬克6星評價

2020-10-13 17:00:02

什么是重放攻擊?

重放攻擊(Replay Attack)并非區(qū)塊鏈技術所特有,其最初指在互聯(lián)網(wǎng)中,攻擊者將攔截到的數(shù)據(jù)再次原封不動發(fā)送給接收方的情況。只要攻擊者知曉自己所攔截信息的用途,哪怕信息經(jīng)過加密,其仍然可以發(fā)起重放攻擊達到惡意目的,例如竊取存款、竊取賬號等。而在區(qū)塊鏈中,由于時間戳的存在,重放攻擊的定義不同于傳統(tǒng)互聯(lián)網(wǎng),其表現(xiàn)形式也有相應差異。

如果BTC分裂為一種或多種BTC,如BTC1/BTC2/BTC3等,每個BTC賬戶內(nèi)將根據(jù)他的BTC余額,同時存在對應數(shù)量的所有分叉幣。

由于每條鏈上的地址和私鑰、算法等都相同,交易格式也完全相同,導致在其中一條區(qū)塊鏈上發(fā)起的交易,完全可以放到另一條區(qū)塊鏈上去重新廣播,可能也會得到確認。這就是“重放攻擊”。

如何防止重放攻擊?

由于重放攻擊會導致鏈分叉時用戶的資金安全性降低,為了保證資金安全,區(qū)塊鏈項目多采用不同手段來防止惡意用戶發(fā)起重放攻擊。

首先最常用的方式便是完善交易格式,讓分叉點之前即存在的資金所關聯(lián)的交易只能在一條鏈上生效,這就要讓分叉后的鏈條在交易結(jié)構(gòu)上做出區(qū)別。

對于以升級為目的的分叉而言很容易就能達到,因為硬分叉升級將采用不同的客戶端版本,交易的前綴中通常包含有發(fā)起交易客戶端的版本信息。分叉后礦工為了避免打包舊客戶端的“非法交易”(并非惡意交易,僅僅只是版本號過低不被其他節(jié)點所承認),通常會拒絕一定版本號以前的交易,保證惡意攻擊者很難在硬分叉升級時通過重放攻擊竊取資金。

幸福的地方3星評價

2020-10-11 17:01:00

以太坊硬分叉后發(fā)生的“重放攻擊”和傳統(tǒng)計算機術語不是一回事。

傳統(tǒng)術語“重放攻擊”:指的是身份欺詐。在維基百科上定義很清晰,如下,

假設Alice向Bob認證自己。Bob要求她提供密碼作為身份信息。同時,Eve竊聽兩人的通訊,并記錄密碼。在Alice和Bob完成通訊后,Eve聯(lián)系Bob,假裝自己為Alice,當Bob要求密碼時,Eve將Alice的密碼發(fā)出,Bob認可和自己通訊的人是Alice。

以太坊硬分叉后產(chǎn)生的“重放攻擊”并不是身份欺詐,是一條鏈上的交易在另一條鏈也往往是合法的,交易可以重新在另一鏈上廣播,所以才被稱為“重放攻擊”,但這本質(zhì)上并不是一種“攻擊”。

以太坊在192萬區(qū)塊高度發(fā)生了硬分叉,產(chǎn)生了兩條鏈,分別稱為ETH chain和ETH Classic chain,上面的代幣分別稱為ETH和ETHc。這兩條鏈上的地址和私鑰生產(chǎn)算法相同,交易格式也完全相同,導致在其中一條鏈上的交易在另一條鏈上很可能是完全合法的。所以你在其中一條鏈上發(fā)起的交易,就可以到另一條鏈上去重新廣播,可能也會得到確認。這就是“重放攻擊”。

我們使用例子來說,這次以太坊硬分叉后發(fā)生的“重放攻擊”是這樣的:

1.以太坊在第1920000區(qū)塊高度上硬分叉出來兩條鏈,分別稱為ETH chain和ETH Classic chain,上面的代幣分別稱為ETH和ETHc。

2.在硬分叉高度前的所有ETH都在分叉后的兩條鏈上有用,即持有分叉前的ETH都自動被贈送等額ETHc。

3.某個用戶持有在硬分叉高度前的ETH,該用戶將自己的硬分叉高度前的ETH通過自己控制私鑰的本地錢包(這個無論是ETH chain還是ETH Classic chain錢包都是一樣的)發(fā)一筆交易到交易所充值到其賬戶的ETH。但ETH chain和ETH Classic chain都能夠識別這一次交易,都是合法的交易,都會打包交易。也就是本來用戶是在一條鏈上廣播交易,但可以在另一條鏈上被“重放”廣播了。(你可以自己用錢包去廣播,也可能會有人或程序找到你的交易信息幫你去廣播)

4.因為用戶充值賬戶是交易所的,對用戶來說是一個offchain錢包。如果交易所不給你,那你就丟掉了本來應該屬于你的ETHc。

5.如果用戶在硬分叉高度前是將ETH存放在交易所,原則上交易所應該是給用戶兩種幣。當用戶從交易所提取ETH到本地錢包時,剛好交易被提取的幣是在硬分叉高度前的幣。而且你又在你自己的電腦上裝了兩個錢包,分別是ETH chain錢包和ETH Classic chain錢包,而且提幣地址在ETH chain錢包上生成,然后通過導入私鑰的形式錢地址導進ETH Classic chain錢包上。那你提幣的同時,可以在兩條鏈上都廣播你的提幣交易,這樣你的兩個本地錢包都能收到等額的幣。

6.步驟5里,如果用戶只裝了一個錢包比如ETH chain錢包,那另一份ETHc就會收不到,但并不會丟,因為你的收幣私鑰是和你的ETH chain一樣的,只要你提取出來這個私鑰,然后導入ETH Classic chain錢包就可以了。

7.步驟5里,如果用戶提走ETH,是充值到了另一個交易所,比如從yunbi提ETH到P網(wǎng)。這時候P網(wǎng)又只給用戶一種幣即ETH,那用戶就會丟失掉ETHc,丟掉的在誰手上呢,在P網(wǎng)手上。如果用戶又回去問yunbi交易所要一份ETHc,yunbi很人品好有擔當,真給了,那云幣就相當于賠了一份ETHc幣。

8.任何持有920萬區(qū)塊高度后的幣,情況要更復雜。比如有一筆幣從硬分叉前發(fā)到硬分叉后的一個地址1上,這個地址1同時在ETH和ETHc都是有效的。那你在ETH chain上收到的幣從地址1再次發(fā)送到地址2,我們記這筆交易為交易2。這筆交易在ETH Classic chain也是有效的,也是可以被重放的,我們記被重放的這筆交易為交易2'。但如果有辦法讓交易2發(fā)送有效,但讓交易2'無效,即ETH chain上的幣從地址1成功發(fā)送到了地址2,但在ETH Classic chain上從地址1發(fā)送到地址2失敗了。這種情況下,ETH chain的地址2的幣再次交易時就無法被重放到ETH Classic chain上了。

9.步驟8里,什么情況下能讓交易2'發(fā)送失敗呢?也就是怎么樣才能解決掉重放攻擊呢?其中一個辦法就是在交易2'發(fā)送后,但0確認前,對交易2'發(fā)起雙花攻擊,即使用相當?shù)乃借€再簽一次名發(fā)起交易2'',將幣發(fā)到另外一個地址3,如果交易2''成功了,而交易2'失敗了,從此ETH chain上的地址2的幣和ETH Classic chain上的地址3的幣都無法被重放了。

能不能將交易2'在ETH Classic chain上不廣播呢?不能,你不廣播,會有人幫你廣播的,交易信息不是加密的。誰知道哪個狗日的壞人找到你的交易信息后給你廣播一下,你的這條分支的幣就被發(fā)到了這條鏈的地址2了。

但要想把所有ETH地址和ETHc地址(這兩種地址是完全一樣的,ETH地址也就是ETHc地址)做到你有幣我就沒有,那幾乎是不可能做到的,地址太多了。也就是想用這個辦法徹底解決掉重放問題是不可能的了。

但對于用戶來說,你可以使用這個辦法分離你的ETH和ETHc,使這兩者分另處在不同的地址上,這樣你以后就不需要想著在一條鏈上做了交易我是否需要重放到另一條鏈了。不過問題又來了,誰會發(fā)起雙花攻擊0確認的交易呢?好像很難啊,所以我認為普通用戶基本上是做不到的。交易所應該會。

10.還有一種辦法,對其中一條鏈展開51%攻擊,直接消滅掉其中一條鏈就可以了,讓其算力跌到零,從此高度不再上漲,也就是這種鏈死了。這樣問題就徹底解決掉了。

或者讓其中一條鏈的價格跌到很低很低,大家都不關心了,也就懶去理重放交易了。