当前位置:首页 > 物联网 > 区块链
[导读] 什么是重放攻击? 重放攻击(Replay Attack)是计算机网络中常见而古老的攻击手段。在区块链中,重放攻击特指在硬分叉中,攻击者将一条链上的交易拿到另一条链上“重放(Replay,

什么是重放攻击?

重放攻击(Replay Attack)是计算机网络中常见而古老的攻击手段。在区块链中,重放攻击特指在硬分叉中,攻击者将一条链上的交易拿到另一条链上“重放(Replay,即重新播放之意)”,从而获取不正当利益的攻击手段。这毕竟是一个技术概念,小白可能不容易理解,为了解释清楚,我们干脆用一个真实案例来说明重放攻击具体是如何实施的。这个真实案例出自大名鼎鼎的以太坊The DAO分叉事件。

The DAO是以太坊上发起的一个众筹项目,它运行在智能合约上。由于智能合约存在某种漏洞,黑客转走了合约内管理的价值数千万美元的以太币。为了挽回损失,以Vitalik为首的大部分社区意见支持分叉以实现交易回滚(使得黑客的攻击无效化),于是通过硬分叉形式发起了一条新链。然而另一部分社区意见则认为不应该回滚,仍旧维护原有的区块链。这导致以太坊分裂成新链(Ethereum, ETH)和原链(Ethereum Classic, ETC)两条不同的区块链。

那么重放攻击又是怎样实施的呢?我们假设小明在分叉前持有500个ETH。分叉以后,小明的地址(暂且称为A地址)下就同时持有500个ETH和500个ETC,因为这个A地址在两条链上都是存在的。由于小明是坚定的分叉支持者,因此小明只看好ETH未来的发展,觉得ETC肯定要归零。此时小刚找到小明,提议以低价购买小明手中的ETC。小明便将手中的500个ETC全部转账到了小刚的地址(暂且称为B地址)。

前面听起来没什么不对劲吧,然而小明没有想到的是,小刚反手就把这笔ETC的转账交易发到了ETH的网络上。由于ETH、ETC是分叉的产物,因此两者交易结构、密码学体系都是一致的,ETC链上的交易在ETH链上也一样可被识别,因此这笔交易就会被验证上链,最终的结果是ETH链上的A地址也转出了500个ETH到B地址去。小刚假意低价收购ETC,却成功骗取了小明所有的ETH,小明自然是亏大发了!

如何防范重放攻击?

我们可以看到,小刚问小明收购ETC这个行为,本身没有问题;小明将手中的ETC转账给小刚这个行为,也没有任何问题。真正出问题的地方在于,由于ETH和ETC两条链使用了完全一致的交易结构和密码学体系,导致在ETC上有效的交易在ETH上也同样有效。这就给了攻击者可乘之机。

攻击者可以将ETC上的一笔有效的交易“重放”到ETH的链上,仍可形成一笔有效的交易,然而这笔被重放的交易并不是交易者本人的真实意愿,因此容易被攻击者利用而造成资产损失。

大家可能会有一个疑问:那岂不是在分叉后的链之间,比如ETH和ETC之间、BTC和BCH之间,做的所有交易都是有可能被“重放”的?

事实上,重放攻击的实施是需要一系列严苛条件的。只有在刚分叉完毕的一段时间内,两条链才能够保持共享几乎相同的链上数据的状态(因为在分叉高度之前的历史数据都是完全相同的),最容易发生重放攻击;一旦运行一段时间,两条链上分别有了新的数据输入,将一条链的交易重放到另一条链的可行性就大大减弱了。

从防范重放攻击的角度,我们可以总结一些规律。首先,大家要意识到,重放交易本身不是一种Bug,并不能直接窃取您的资产,重放攻击一定是配合或结合其他恶意行为进行的。就好像我们刚才提到的小明卖ETC案例中,一定是有小刚这样的角色实施了“假意低价收购ETC、实则图谋ETH”的欺诈行为。如果您在分叉之后的一段时间内保持警惕,时刻意识到您在新链上的交易有可能被重放到原链(或相反),就可以杜绝绝大多数与之相关的欺诈行为。

我们介绍两种具体的防范手段。

第一种是在分叉后购买极少量“新鲜的币”到您的地址内。所谓“新鲜的币”是指那些在分叉高度以后挖矿产出的币,这些币在另一条链上并不存在,因而当交易的input引用到它们时,这笔交易就不可能被另一条链所验证。

第二种是在分叉后将您所有地址内的币归结到一个新生成的地址。这也就是所谓的“腾笼换鸟”,可以减少攻击者在另一条链重放交易的可行性。

如果您按顺序结合使用两种方法,基本可以免除遭受重放攻击的可能性。

Lava团队关于分叉期间的风险提示和相关建议

首先,我们特别提醒,本次PoC2+升级使用硬分叉方式,有可能形成两条链,即一条升级协议后的“新链”、一条仍运行旧协议的“原链”。这是区块链的特性所致,只要原有的协议有算力维护,那么原链也可以保留下来(反之无人维护则逐渐消亡)。

Lava技术团队声明,升级完成后我们不会对运行旧协议的原链进行任何维护和开发工作。

因此,我们首先建议社区用户务必在分叉前更新您手中的所有全节点或钱包软件版本。您可以前往官网(https://www.lavatech.org/zh/)下载最新版本的软件,并在升级指南页面(https://www.lavatech.org/zh/poc2Upgrade)检查您的软件版本是否为最新。如果您没有及时更新,仍在使用旧版本的钱包,可能会造成混淆和误操作。

其次,我们建议您在没有把握的情况下,分叉后短期内谨慎与第三方进行转账活动。分叉后可能有人提出收购您在原链(或新链)的LV资产,您需要特别意识到交易存在被重放的风险。

Lava技术团队可能计划在分叉完成后,向所有持有LV余额较大的地址转账少量金额的“新鲜LV”,以减少攻击者实施重放攻击的可行性。我们建议所有持有大额LV资产的用户,在接收“新鲜LV”转账后,将持有的LV归集到一个新的地址。(具体方法是在您的钱包内,将所有LV余额都通过发起一笔转账交易,转移到您钱包下的另一个新地址中。请参考下列教程。所有方案都为建议方案,您可以自行操作。)

教学:如何做归集交易

归集交易(或称为规整交易)就是将您钱包内分散在各个地址下的资金统一发送到一个地址下的交易。该地址应当是一个由您的钱包控制的、最好是没有使用过的地址。在分叉后进行一次资金归集,能够减小被重放攻击的可能性。

(1)如果您使用带有界面的钱包,例如轻钱包、GUI钱包:

此处以GUI钱包为例,其他带有界面的钱包的操作方法类似。

在“接收”界面点击“请求付款”,钱包会自动展示一个收款地址。

复制该地址,前往“发送”界面,将钱包内所有资金发送至该地址即可。

您可以预先浏览您的钱包余额并填写需要发送的资金数额,或者在发送交易时直接勾选“发送全部余额”(或在填写金额时选择“Max”选项,因钱包而异)以保证所有余额都得到归集。

(2)如果您使用全节点钱包(命令行模式):

·使用getbalance查看钱包内的总余额;

·使用getnewaddress生成一个新地址;

·使用sendtoaddress将钱包内的所有余额转账到新地址内。

注意:要考虑留出交易手续费,因此可以在转账之前先设置settxfee 0.001,然后将剩余余额通过sendtoaddress转入归集地址。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭