重点整理

  • 当恶意行为者拦截到一笔有效的资料传输,并将其重新送到网路中,骗使网路再次接受该资料时,就会发生重放攻击。

  • 重放攻击不需要解密资料;它利用的是原始传输的合法性。

  • 在加密货币领域,重放攻击可能会在区块链硬分叉之后发生,导致一条链上的交易被复制到另一条链上。

  • 常见的防御措施包括时间戳(timestamps)、nonce(一次性随机数)以及一般网路使用的会话代币(session tokens);至于区块链,则是使用强重放保护或自愿启用的重放保护。

  • 目前多数主要硬分叉都会内建强重放保护,以防止跨链交易被重复复制。

Binance Academy courses banner

简介

重放攻击(replay attack),有时也称为播放攻击(playback attack),是一种网路资安攻击:攻击者截取到一笔有效的资料传输,然后再传回网路。由于资料源自已授权的使用者,网路的安全协定可能会将其视为合法。这使攻击者能在不需要伪造凭证或破解加密的情况下,执行未授权的行为。

重放攻击可能影响许多类型的网路,包括金融系统、验证平台以及加密货币帐本。在加密货币的脉络中,这特别重要,因为当区块链发生硬分叉时,两条分叉后的链可能都会面临跨链交易复制的脆弱性。

骇客能用重放攻击做什么?

重放攻击可透过提交网路认定为有效的凭证,来取得对受保护网路的未授权存取。攻击者也可能用它来复制金流交易,例如让同一笔付款被触发两次。某些情况下,骇客会将不同加密讯息的片段组合起来,产生一个新的密文,这被称为「剪下贴上(cut-and-paste)」攻击。网路对这种被窜改讯息的回应,可能会暴露有用于进一步滥用的资讯。

尽管存在上述风险,重放攻击也有明确限制。攻击者无法在网路拒绝的情况下修改所送出的资料,因此他们通常只能重复过去的行为,而不是引入全新的行为。重放攻击也相对可预测,这使得它比某些其他类型的网路威胁更容易被防御。

为什么重放攻击在加密货币中很重要

区块链帐本有时会经历称为「硬分叉」的协定变更。当发生硬分叉时,帐本会分裂成两条链:一条运行原本的软体,另一条运行更新后的版本。有些分叉是为了升级,而其他分叉可能会建立完全独立的加密货币。知名的例子是比特币现金(Bitcoin Cash),它在 2017 年 8 月从主比特币区块链分叉出去。

当区块链分叉时,分叉后的两条链会共享分裂前相同的交易历史。在分叉之后,分叉前曾有效的一笔交易可能仍在两条链上有效。这会形成重放攻击的窗口:如果你在其中一条链上送出交易,攻击者可能会在另一条链上重放它,在未经你允许的情况下,转移等值的代币。

在硬分叉发生之前就持有钱包(wallet)的使用者,最容易面临此风险。分裂之后才加入任一条链的人通常不会受到影响,因为他们的钱包在共同的分叉前帐本上没有交易历史。

区块链如何防御重放攻击

大多数主要的硬分叉都会包含针对重放攻击的特定保护机制。这些机制可分为两类。

强重放保护会自动在新链上的交易加入特殊标记,使其在原始链上变为无效,反之亦然。此保护在网路层级套用,且不需要使用者采取任何行动。比特币现金(Bitcoin Cash)在从比特币分叉的当下就实作了强重放保护。

自愿启用的重放保护要求使用者手动修改交易,以避免交易被重放到另一条链上。当硬分叉的目的更偏向「网路升级」而非完整分裂时,这种做法较常见:预期多数交易在两条链上都应维持有效。

个别使用者也可以将自己的币在帐本达到某个区块高度(block height)之前锁定,这会阻止这些代币在锁定到期之前被纳入重放攻击。并非所有钱包都支援此功能。

针对重放攻击的一般网路防御

在区块链之外,也有多种已被验证的做法可以保护网路免受重放攻击:

  • 时间戳(Timestamps):交易包含时间元件;在一段短时间窗之后,若未在期限内完成就会被拒绝。

  • Nonce:唯一的、一次性的值会绑定到每个会话;因此,若使用过的 nonce 的重放讯息会被系统自动拒绝。

  • 会话代币(Session tokens):伺服器端的代币,使用一次后会过期,确保被拦截到的代币无法再次重复使用。

  • 讯息验证码(Message authentication codes,MACs):加密标签,用于将讯息绑定到特定的会话,使跨会话的重放(replay)无法成立。

这些方法的原理是:确保每一个有效的传输都会绑定到特定的情境,且该情境无法被重复使用。即使攻击者拦截到一则合法讯息,将其在不同的会话或时间窗中重放,也会因被拒绝而失败。

常见问题

什么是重放攻击?

重放攻击是指:拦截到一笔有效的资料传输后,将其重新送到网路中,目的是骗过系统让它再次处理该请求。这个攻击之所以有效,是因为资料本身是真实的,没有额外保护措施的情况下,标准的资安系统往往更难将其判定为恶意。

重放攻击能用来偷取加密货币吗?

理论上可以。在区块链进行硬分叉(hard fork)之后,可能会出现:在一条链上处理的交易被重放到另一条链上,从而在未获得寄件者授权的情况下,重复一笔代币转帐。实务上,现代硬分叉内建的强重放保护机制,通常能阻止大多数主要网路发生此情况。

强重放保护与「自愿启用」(opt-in)重放保护有什么差别?

强重放保护是自动且在网路层级套用的。它会标记交易,使其只能在特定的一条链上有效。自愿启用的重放保护则要求使用者手动为交易加上标记,以防止跨链复制。由于强保护不依赖使用者操作,因此被认为更可靠。

在 2026 年,重放攻击有多常见?

在已启用强重放保护的网路中,针对区块链的重放攻击并不常见。不过,一般性的网路重放攻击在验证系统中仍可能是风险,特别是在会话管理没有妥善落实的情况下。使用多因素验证(MFA)并保持软体更新,可降低此风险的暴露程度。

重放攻击和中间人攻击(man-in-the-middle)是一样的吗?

两者有重叠之处,但并不相同。中间人攻击是指攻击者在即时通讯过程中拦截,并可能修改通讯内容。重放攻击则是特别指:在不一定改变内容的情况下,重新送出先前拦截到的合法讯息。两者都利用网路通讯,但机制与目标可能不同。

结语

重放攻击确实是一项资安风险,尤其在硬分叉期间与硬分叉之后,针对区块链网路更是如此。由于它利用的是合法资料而非需要解密或伪造凭证,因此即使面对本来就很安全的系统也可能奏效。

在大多数主要硬分叉中如今已成标准的「强重放保护」,是网路层级最可靠的防御手段。对个别使用者而言,了解某个区块链已实作哪些保护措施,能帮助降低这类攻击的风险曝露。

延伸阅读

  • 硬分叉与软分叉:解释

  • 比特币现金(Bitcoin Cash,BCH)是什么?

  • 什么是 51% 攻击?

  • 什么是钓鱼(Phishing)?它如何运作?

  • 赛博(Sybil)攻击解析


声明:此内容仅以「现状」提供给您作为一般资讯与教育用途,并不包含任何形式的声明或保证。不得被理解为财务、法律或其他专业建议,也不旨在推荐购买任何特定产品或服务。您应向合适的专业顾问寻求自己的建议。若内容由第三方贡献者提供,请注意其中所表达的观点属于该第三方贡献者,并不必然反映币安学院(Binance Academy)的观点。数位资产价格可能波动。您的投资价值可能上升或下跌,且您可能无法取回所投资的金额。您需自行承担您的投资决策责任,币安学院不对您可能遭受的任何损失负责。欲了解更多资讯,请参阅我们的使用条款(Terms of Use)、风险警示(Risk Warning)以及币安学院条款(Binance Academy Terms)。