区块链笔记——协议(分叉攻击)day2

比特币系统的工作原理和面临的挑战——

  1. 加密货币的发行和验证

    • 与传统货币(如人民币)不同,加密货币是通过密码学(尤其是非对称加密算法)来保证安全性。交易需要通过签名来验证,但是简单的签名验证存在安全问题,例如私钥泄露和交易复制。

  2. 双花攻击(Double Spending Attack)

    • 数字货币不同于实体货币,可以被复制,这导致了双花攻击的可能性。为了防范这种攻击,需要有一个数据结构来记录每个数字货币的唯一性和当前持有者。

  3. 去中心化系统中的交易验证

    • 在比特币系统中,为了防止双花攻击和验证交易合法性,所有的交易信息都被记录在一个公开的分布式账本中。每个交易需要指定其来源(即之前的交易),并通过公钥和签名验证来确保交易的有效性。

  4. 脚本和交易验证

    • 比特币系统中的交易验证是通过执行脚本来实现的,每个交易的输入和输出都包含特定的脚本。验证过程是将当前交易的输入脚本与前一交易的输出脚本拼接并执行,如果脚本能顺利执行,则交易被认为是合法的。

  5. 全节点与轻节点

    • 系统中的节点分为全节点和轻节点。全节点保存所有的交易信息,并验证每个交易的合法性,而轻节点只保存区块头信息,只能验证简单的信息。这种设计使得比特币网络能够同时保证安全性和可扩展性。

在区块链和加密货币系统中,每个交易的有效性和安全性是通过引用前一个交易、使用公钥和数字签名来保证的。

1. 指定交易的来源

每笔交易都需要有一个明确的来源,这通常是一个或多个之前的交易。这意味着:

  • 交易输入(Input): 每笔新交易都会引用一个或多个之前的交易作为其输入。输入是指向之前的交易输出(Output)的一个引用。具体来说,这些之前的交易输出可以是其他用户发送给你的加密货币或资产的记录。

  • UTXO(未花费的交易输出): 在比特币等系统中,未花费的交易输出(Unspent Transaction Output, UTXO)是未来交易可以使用的资金来源。新交易创建时,它会消耗这些UTXO,并生成新的输出。

2. 公钥与私钥

在区块链系统中,每个用户都有一对公钥和私钥:

  • 公钥(Public Key): 是公开的,可以与其他用户共享。它通常用于生成地址和验证签名。

  • 私钥(Private Key): 是保密的,用户需要保护好私钥。私钥用于生成数字签名,证明交易的所有权和合法性。

3. 数字签名

为了确保交易的合法性,必须证明交易的发起者确实是资金的所有者。这是通过数字签名来实现的:

  • 签名过程:

    1. 用户首先使用私钥对交易进行签名。具体来说,用户将交易内容(包括输入、输出、金额等信息)哈希后,用私钥对哈希值进行签名。

    2. 生成的数字签名附加在交易中。

  • 验证过程:

    1. 其他用户或节点在验证该交易时,会使用发起者的公钥对签名进行验证。

    2. 他们将交易内容哈希后,与公钥解密签名得到的哈希值进行比较。如果两者匹配,则证明该签名有效,交易合法。

4. 交易链的建立

因为每个交易都引用之前的交易作为输入,交易在区块链上形成了一个链式结构。这意味着:

  • 无法篡改: 任何试图更改历史交易的人都会破坏整个链的完整性。因为每个交易的哈希都依赖于之前交易的内容,篡改交易会导致签名失效。

  • 双重支付防范: 引用之前交易作为输入,并且确保这些输入未被再次使用,这样可以防止同一个输入被多次使用(双重支付问题)。

5. 总体流程总结

  1. 交易创建: 用户创建交易,引用之前的交易作为输入,并指定新的输出(即接收方地址和金额)。

  2. 签名: 用户用私钥对交易进行签名,证明他们有权使用这些输入。

  3. 广播: 签名后的交易广播到网络中。

  4. 验证: 其他节点使用用户的公钥验证交易的有效性。如果有效,交易将被添加到区块链中。

通过这个机制,区块链确保了交易的合法性、所有权的正确性以及系统的整体安全性。

分叉攻击(Fork Attack)是一种针对区块链网络的攻击方式,攻击者通过操控区块链的分叉过程来达到双重花费或其他恶意目的。分叉本身是区块链技术中的正常现象,但恶意利用分叉则会导致网络的安全风险。分叉攻击主要有以下几种形式:

1. 区块链重组攻击

  • 概念: 在区块链网络中,最难挖掘的链被认为是“主链”,也就是最长的合法链。如果出现两个区块同时被挖掘,暂时会出现链的分叉。矿工们会继续挖掘某一条链,直到其中一条链的工作量更大,成为新的主链,而另一条链则被丢弃。

  • 攻击方式: 攻击者利用这一点,通过有意分叉区块链,等待特定的交易被确认后,在未公布的秘密链上继续挖掘,并将双重花费的交易广播到网络中。一旦攻击者的链长度超过主链,攻击者就会公布这条链,使之成为新的主链,已确认的交易被逆转,而双重花费成功。

2. 自私挖矿(Selfish Mining)

  • 概念: 自私挖矿是一种利用分叉攻击的策略。攻击者通过不立即广播新挖出的区块来诱导其他矿工在旧链上挖矿,从而增加自己成功创建更长链的机会。

  • 攻击方式: 攻击者在成功挖出一个新块后不立即公布,而是继续在自己的私有链上挖矿。如果攻击者能连续挖出多个区块,他便可在适当时机公布这些区块,迫使网络接受他的私有链作为主链,导致其他矿工的工作无效。这不仅能增加攻击者的收益,还可能导致其他矿工损失。

3. 长链攻击(Long-Range Attack)

  • 概念: 长链攻击主要针对权益证明(Proof of Stake, PoS)区块链。攻击者通过从较早期的区块链状态开始构建新的分叉,并通过操控权益来让新链成为主链。

  • 攻击方式: 攻击者可以通过收集或购买早期区块链状态的私钥(尤其是丢失私钥的账户),并用这些私钥在早期的区块链状态上重新挖矿或进行权益投票。由于权益证明系统依赖于历史状态,攻击者可以在不实际控制网络算力的情况下构建一条更长的链,并最终让这条链成为新的主链,从而实现对网络的控制。

4. 51% 攻击

  • 概念: 51% 攻击是一种典型的分叉攻击形式,当某个实体或攻击者控制了区块链网络中超过50%的算力时,就可以对区块链实施分叉攻击。

  • 攻击方式: 攻击者控制了大多数算力后,可以自己决定哪个链是最长链,从而逆转已确认的交易,实现双重花费。这种攻击非常严重,尤其对小型区块链而言,攻击者可以通过短期内租借大量算力来进行攻击。

防御分叉攻击的措施

  1. 提高网络的去中心化程度: 通过鼓励更多矿工或权益持有者参与,减少单一实体对算力或权益的控制。

  2. 减少区块时间和增加确认时间: 缩短每个区块的出块时间,或增加交易确认所需的区块数量,使得攻击者难以在短时间内构建更长链。

  3. 使用区块链检查点(Checkpoints): 定期将区块链状态设定为固定的检查点,确保即使发生分叉,攻击者也无法逆转到检查点之前的区块。

  4. 增加分叉惩罚机制: 在PoS系统中,通过增加对双重签名或恶意分叉行为的惩罚,降低攻击者的动机。

分叉攻击通过操控区块链的正常分叉过程,试图扰乱网络的共识机制并实现非法目的。防御这类攻击需要区块链网络在设计和共识协议上采取多种策略,确保分叉的产生和处理符合网络的安全性要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值