在快速成長的crypto利基產業中,交易的安全性比以往任何時候都更為重要。由於區塊鏈的使用增加,駭客可利用弱點的途徑也隨之增多。重放攻擊就是一種嚴重且未被充分理解的威脅。
什麼是重放攻擊?
重放攻擊是指攻擊者重傳一筆合法交易以欺騙系統。攻擊者並未修改簽名,而是將其在其他地方使用。這可能導致同一筆交易重複發生,對用戶構成威脅。
由於簽名保持不變,區塊鏈可能會接受重複的消息。在 區塊鏈 或應用程式未經驗證的情況下,攻擊者會利用重放攻擊。這在分叉或此類區塊鏈之間可能尤其不安全。
重放攻擊何時發生?
當區塊鏈分叉或兩條鏈具有相同格式時,重放攻擊經常發生。在缺乏足夠保護的情況下,已簽名的交易可在兩條鏈上同時使用。這意味著資金可以同時在一條鏈和另一條鏈上發送。
區塊鏈系統中缺乏明確的邊界為駭客提供了機會。他們也針對訊息驗證薄弱的應用程式。在這兩種情況下,攻擊者都試圖透過重複看似有效的活動來獲利。
其中一個例子是 2016 年的以太坊和 Ethereum classic。攻擊者在兩個網絡上重複進行交易,因為當時沒有初始保護措施。結果,用戶無意中浪費了資金,重複進行了兩次交易。
錢包如何防止重放攻擊
加密錢包具有強大的安全工具,這些工具在任何重放攻擊之前即已實施。其中一項是與每個已簽名訊息相關聯的鏈ID,這確保了簽名只能在一個區塊鏈上通過,而在其他區塊鏈上失敗。
另一個重要的工具稱為 nonce,它是在每筆交易中遞增的數字。如果 nonce 被重複使用,錢包將拒絕該交易。這將確保駭客無法重複發送相同的訊息或付款。
某些錢包也會設定時間限制以接收付款。例如,訊息的有效期可長達五分鐘。過期後,簽名將失效,重放攻擊便無法進行。
智能合約與應用程式層級防禦
雖然錢包具有功能,但智能合約和應用程式也應確保自身安全。大多數合約都具有非重複數(nonce)/使用者,用以防止動作重複。這使得合約能夠否認其見證過的任何簽名。
協助離線簽名的應用程式很可能遵循 EIP-712 標準。此格式包含鏈 ID、應用程式和合約的名稱。使用此標準,應用程式將每條訊息與其目的關聯,並避免重放攻擊。
根據區塊鏈安全公司 QuillAudits 的說法,應用程式不應在鏈下批准中省略域分離。缺乏正確的上下文將使攻擊者能夠濫用互操作性。這說明了審計對於保障 Web3 系統安全的重要性。
關鍵組件
重放保護依賴於明確且獨特的工具,以確保正確的上下文。這些工具包括鏈 ID、帳戶隨機數和過期時間。它們的組合使攻擊者難以進行重放攻擊。
最重要的元素包括:
- Chain ID – 該交易僅在單一區塊鏈上有效,其他區塊鏈會拒絕該交易。
- Nonce – 這是一個用於確保簽名訊息不會被重複使用的數字。
- 時間戳或時間限制 – 這將設定一個時間窗口,超過該時間後,重播的訊息將被拒絕。
- 領域分隔符 – 透過 EIP-712 標準將 Tether 的鏈下訊息與特定應用程式、合約和鏈關聯。
- 智能合約非同步追蹤 – 讓應用程式和合約在合約層級阻止已使用或重複的訊息。
這些工具的組合可防止大多數重放攻擊。所有這些技術均由錢包、應用程式和協議採用,以防止訊息重複。結果是為開發者和用戶提供更安全的體驗。
為何重播保護對用戶至關重要
重播保護讓用戶在使用錢包、橋樑和交易所時感到安心。若缺乏重播保護,用戶將無法察覺自己已損失資金。透過拒絕重複或濫用的交易,系統能變得更安全、更可靠。
鏈名-ID-提示錢包可幫助用戶避免錯誤。當用戶清楚了解其交易的去向時,便能更好地掌控情況。這也能減少在鏈或應用之間過渡時的混亂。
重播保護亦被交易所和託管方用於確保安全的充幣與提幣。它們通常會開發個人化工具,僅允許在正確的網路上進行交易。這能確保在分叉或升級時,客戶資金的安全與運營的穩定性。
結論
重放攻擊利用一個或多個區塊鏈或系統中重複使用的簽名,對區塊鏈的安全構成威脅。然而,透過使用鏈 ID、隨機數和時間限制,錢包在防止此類攻擊方面發揮了重要作用。應用程式和智能合約也應參與其中,監控其使用和簽名。
系統應相互協作並了解彼此,這是它們能提供最佳保護的唯一方式。用戶透過使用可信錢包、已驗證的 DApp 和經過審計的智能合約來降低重放風險。區塊鏈領域正在擴展,確保其安全性的努力也必須加強。

