重播攻擊又稱回放攻擊,在該種網路攻擊的情況下惡意實體將會攔截有效數據,並將其在網路中重複傳輸。由於原始資料(通常來自已授權使用者)的有效性,因此網路的安全協定通常會將此種攻擊視為正常的資料傳輸。同時,由於進行重播攻擊的駭客會將原始訊息攔截並原樣重傳,駭客通常不需要對這些資料進行破解。
重播攻擊可以透過傳輸看似有效的憑證來存取其他儲存在受保護網路中資訊。它們還可以欺騙金融機構進行重複交易,並以此來允許攻擊者直接從受害者帳戶中提取資金。在某些情況下,駭客還會將不同的加密訊息的不同部分進行組合,並將形成的密文上傳至網絡,而這就是所謂的剪貼攻擊。駭客通常使用此種攻擊來獲取網路中更有價值的訊息,並利用這些資訊來進一步損害系統。
重播攻擊的確會造成一些顯而易見的風險,但僅使用它們的駭客可獲得成果卻很有限。攻擊者無法篡改正在傳輸且未被網路拒絕的數據,所以此種攻擊的有效性將被限制為重複傳輸先前的數據。而且這些攻擊通常也是容易進行防禦的。例如為資料傳輸添加時間戳這樣的基本防禦措施就可以避免簡單的重播攻擊。伺服器還可以快取重複的訊息,並在一定次數後切段與此類訊息的連接,從而限制了攻擊者可以進行的連續重播次數。
儘管此類攻擊並非加密貨幣世界所專有的,但它們與加密貨幣交易以及區塊鏈帳本的安全環境卻特別相關。因為,區塊鏈帳本通常要進行被稱為“硬分叉”的協議更改或升級。當發生硬分叉時,現有的帳本要分為兩部分,一部分要運行軟體的遺留版本,另一部則運行更新後的版本。有些硬分叉只是為了帳本升級,而有些則是為了更有效的形成新的加密貨幣。後者效用最明顯的例子就是2017年8月1日發生的硬分叉,這次更新之後允許了比特幣現金從比特幣帳本中分支出來。
當這些硬分叉發生時,攻擊者理論上是可以是對區塊鏈帳本進行重播攻擊的。在一條分類帳上處理的交易可能在硬分叉後在另一條鏈上也是有效的。所以,在一條分類帳上接受一定數量加密貨幣的人,可以在切換到另一條分類帳上並複製交易,並以此詐欺的方式來第二次獲得相同數量單位的加密貨幣。而因為錢包不並是帳本共享歷史的一部分,所以在硬分叉之後訪問區塊鏈的用戶將不會受到此類攻擊。
的確,已分叉區塊鏈帳本可能受到重播攻擊的漏洞值得我們關注,但大多數硬分叉中都包含了專門用於防止此類攻擊的安全協議。針對區塊鏈重播攻擊的有效措施分為兩類,一為強制性重播保護,另一種是選擇性重播保護。在強制性重播保護中,會在硬分叉產生的新帳本上添加特殊的標記,來確保在新帳本上進行的交易在舊帳本上無效,而反過來也是如此。此種方式是當時比特幣現金從比特幣中分叉出來所實施的保護。
此強制性重播保護會在發生硬分叉時立即自動執行。而選擇性重播保護則需要使用者手動的更改他們的交易,以確保這些交易不能被重播。當硬分叉是為了對加密貨幣主帳本進行更新而並非分離新帳本時,選擇性重播保護是有效措施。
除了這些主帳本解決方案外,個人使用者還可以自行採取措施來保護自己免受重播攻擊侵害。其中一種方法是鎖定正在傳輸的代幣,直到帳本具有了一定數量的區塊,從而阻止了那些擁有相同代幣數量的重播攻擊的網路驗證。但要注意的是,並不是所有的錢包或帳本都提供了此種功能。
當重播攻擊成功實施時,的確會對網路安全造成威脅。不同於其他類型的攻擊,重播攻擊並不依賴對資料的解密,而這就使得它們成為惡意參與者對抗日益健全的安全協定的有效“解決方案”。但同時也存在一些強而有力的解決方案可以有效的防止區塊鏈系統不受它們的影響。特別是強制性重播保護的使用,可以有效的防止在發生硬分叉後攻擊者進行的交易複製。