傳統(tǒng)計算機術語中,重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊,是指攻擊者發(fā)送一個目的主機已接收過的數(shù)據(jù)包,來達到欺騙系統(tǒng)的目的。重放攻擊在任何網(wǎng)絡通過程中都可能發(fā)生,是計算機世界黑客常用的攻擊方式之一。
在區(qū)塊鏈網(wǎng)絡中,重放攻擊也同樣存在。但區(qū)塊鏈上的重放攻擊和傳統(tǒng)計算機術語并不是一回事,只是過程有點類似。
在區(qū)塊鏈技術中,重放攻擊是指“一條鏈上的交易在另一條鏈上也往往是合法的”,所以重放攻擊通常出現(xiàn)在區(qū)塊鏈硬分叉的時候。
由于硬分叉的兩條鏈,它們的地址和私鑰生產(chǎn)的算法相同,交易格式也完全相同,因此導致在其中一條鏈上的交易在另一條鏈上很可能是完全合法的。所以你在其中一條鏈上發(fā)起的交易,就可以到另一條鏈上去重新廣播,可能也會得到確認。這就是“重放攻擊”。
舉個例子,前段時間熱烈討論的比特幣硬分叉,我們將比特幣原鏈稱為BTC,將分叉的另一條鏈稱為BCC。那么我們知道,BCC是完全繼承分叉前的BTC信息的,因此,分叉后如果發(fā)生重放攻擊,則發(fā)生在BTC鏈上的交易,拿到BCC鏈上去重新廣播,就有可能會被BCC鏈承認有效。這就相當于是我在BTC上花了1個幣,拿著發(fā)票再到BCC上又能消費一次。
因此在硬分叉前,通常技術方都要做好重放保護,即發(fā)生在一條鏈上的交易,在另一條分叉鏈上重放就會失效。