主页 > imtoken下载手机版 > 干货| 深入探索比特币的安全模型(上)(续)

干货| 深入探索比特币的安全模型(上)(续)

imtoken下载手机版 2023-07-03 05:12:29

干货| 深入探究比特币的安全模型(上)

(续)安全模型错误

此外,每个区块链系统都将创世块硬编码到节点软件中。 您可能会将“共享历史”(即分类帐)视为一种社会契约——一旦某个区块足够旧,网络中的所有参与者都同意该区块永远不会回滚。 当开发人员使用较早开采的区块并使用它来创建检查点时,它更像是一种可接受的健全性检查,而不是对历史的客观描述。

除了检查点之外,节点如何实现自引导也是一个问题。 目前,比特币节点的引导过程是检查该节点是否在本地存储了它之前从对等方那里学到的数据。 如果没有,节点将查询一组硬编码到软件中的“DNS 种子”。 这些种子负责维护连接良好的比特币节点列表,并将该列表返回给您的节点。

从代码中我们可以看出,Bitcoin Core 0.13 目前使用了由 Pieter Wuille、Matt Corallo、Luke Dashjr、Decker、Jeff Garzik 和 Jonas 运行的 DNS 种子。 任何人都可以使用 Pieter Wuille 的比特币种子生成器软件或 Matt Corallo 的软件来运行 DNS 种子。 但是比特币干啥用,他们必须说服全节点实施的开发人员将他们的 DNS 种子主机添加到彼此的软件中。

新节点的引导过程仅依赖于 6 个 DNS 种子,这又是一个极其集中的单点问题。 但是不要忘记,比特币的安全模型只需要你连接到一个诚实的对等节点,就足以抵御女巫攻击了。

因此,一个新节点只需要能够连接到一个未妥协的 DNS 种子,它返回诚实节点的 IP 地址。 然而,如果所有 DNS 节点由于某种原因变得不可访问,则有一个回退 - 一个受信任的节点 IP 地址列表,该列表被硬编码到软件中并随每个新版本更新。

在围绕这些初始化参数构建的安全模型下,全节点运营者无需相信 X DNS 种子或 Y Bitcoin Core 软件开发商会为他们提供真实数据,只需要相信 1/X DNS 节点没有受到攻击,或 1/Y 比特币核心软件开发人员诚实地审查硬编码对等更改的有效性。

没有绝对的安全

比特币之父能不能随意制造比特币_808比特币创始人颜万卫 炮制比特币风险大_比特币干啥用

在更深层次上,当你运行一个全节点时,你在一定程度上信任你运行的硬件和软件。

比特币分叉会影响比特币价格吗_比特币123导航_比特币123

有许多方法可以根据 van der Laan 的签名检查二进制文件的签名以验证软件的真实性,但很少有人愿意这样做。 至于如何验证硬件比特币123的可靠性,这是一个棘手的问题。 如果您需要安全的硬件解决方案,最接近的选择是 ORWL。 如果有人试图篡改 ORWL,它的“自毁”机制就会被触发。

但是,由于 CPU、RAM 等重要硬件通常是专有的,您永远无法 100% 确定它们不会受到损害。

比特币的去中心化制衡

当你开始审视比特币系统中不同参与者之间的关系时,你会发现自己陷入了迷雾之中。

运行全节点的目的是保护您的财务主权。 这意味着一旦您安装并运行了特定版本的软件,您就与该软件和所有其他网络参与者签订了协议——不仅您将遵守该软件的规则,其他网络参与者也必须遵守这些规则。

因此,如果人们想要对软件规则进行向后不兼容的更改,您必须运行新版本的软件以明确同意这些规则更改。 另一方面,如果它是向后兼容的规则更改,即使您不同意,也可以在整个网络中强制执行。

比特币干啥用_比特币之父能不能随意制造比特币_808比特币创始人颜万卫 炮制比特币风险大

有人对比特币内部的去中心化制衡做了一个高层次的总结:

比特币123_比特币123导航_比特币分叉会影响比特币价格吗

比特币治理分为三个主要分支:

全节点(可以否决矿工和开发者)

矿工(可以否决开发者)

开发人员(可以帮助其他人绕过某些否决权)

需要注意的是,全节点软件不会自动更新,这是设计使然。 自动更新将使权力的平衡向有利于开发人员的方向倾斜,允许开发人员在未经节点和矿工许可的情况下强制更改规则。

不幸的是,虽然规则更改在技术上可能是向后兼容的,但多年的经验告诉我们,足够有创意的软分叉可以实施违反旧版本规则的更改。 例如,Vitalik Buterin 曾提到通过软分叉将比特币的出块时间从 10 分钟缩短到 2 分钟,这必然会加快比特币的发行速度。

比特币干啥用_比特币之父能不能随意制造比特币_808比特币创始人颜万卫 炮制比特币风险大

面对不利的软分叉,全节点有一张王牌:用硬分叉与其他支持软分叉的矿工划清界限。 这(按设计)难以执行,并引发了许多关于如何衡量共识和找到具有高经济权重的节点的问题。

比特币123导航_比特币123_比特币分叉会影响比特币价格吗

从技术上讲,这种硬分叉可以通过将挖掘算法从双 SHA256 更改为另一种哈希函数来实现。 一旦成功,所有 SHA256 ASIC 矿工将无法开采比特币。 因此,节点运营者应时刻警惕比特币生态的变化,提醒矿工如果越权可能被替换的风险。

许多博弈论都致力于矿工运营及其对比特币安全的威胁,在我之前的帖子中,我推测了挖矿生态系统可能会发生怎样的变化。 虽然比特币挖矿并不像它希望的那样集中,但到目前为止它运作良好。 这是因为比特币矿工投入了如此多的资金,以至于他们无法冒着巨大损失的风险在一个人人注视的系统中作恶。

SPV安全

许多比特币用户使用轻量级客户端而不是完整节点访问网络,因为它们消耗的资源少得多,同时仍提供强大的安全性。

使用简单支付验证 (SPV) 的客户下载整个链上所有区块的区块头的完整副本。 这意味着自比特币诞生以来,下载和存储需求随着时间的推移呈线性增长。 有关详细信息,请参阅比特币白皮书的第 8 节。

中本聪在白皮书中写道,SPV 客户端“无法验证交易本身,但通过将交易与区块链关联起来,可以看到网络中的节点已经接受了交易。随着越来越多的地区如果区块被链上,进一步确认网络已接受交易。” SPV 假设在 X 个区块被确认后,伪造一笔交易的成本非常高。

比特币干啥用_比特币之父能不能随意制造比特币_808比特币创始人颜万卫 炮制比特币风险大

SPV 看起来和全节点一样安全,但它引入了一个额外的假设:只要区块头和工作量证明有效,它包含的所有交易也是有效的。 由于 SPV 客户端不验证本文第 1 节中提到的所有共识规则,因此他们假设响应交易查询请求的节点已经验证了共识规则。

另一个较小的安全差异是同行可能会向您隐瞒信息。 如果你运行一个全节点,该节点可以对你隐藏未确认的交易和区块。 但是一旦你从你的同行那里得到一个区块,没有人可以向你隐藏该区块中的任何交易。 另一方面,如果您运行的是 SPV 客户端,节点可能会为您提供区块头,然后将交易保留在相应的区块中。

SPV 客户端可以查询一个地址的关联交易。 虽然节点用虚假交易欺骗 SPV 客户端的成本很高(需要足够的 PoW 才能挖出一个区块),但它们可以谎称 SPV 客户端用来查询交易的布隆过滤器(bloom filter)没有结果。 另一点需要注意的是,由于布隆过滤器的缺陷,SPV 遭受了严重的隐私泄露。

SPV的安全模型在一篇文章中有详细描述。 关于未确认的交易,他们说:

在 SPV 模式下,只要你连接的节点向你转发了一笔交易,你就只能相信这笔交易是有效的。 如果攻击者可以确保你连接的节点都是他们的,他们可以向你发送一个完全无效的交易(花费不存在的钱),你将接受该交易为有效交易。

对于普通用户来说,SPV的安全性已经“够高”了。 尽管如此,我们可以通过 SPV 欺诈证明来改进它。 虽然已经对比特币 123 中的欺诈证明进行了一些讨论比特币干啥用,但关于如何将它们构建到比特币协议中的建议尚未具体化。

比特币网络没有 127.0.0.1

如果你没有运行一个完整的节点(并实际使用它来验证交易),你至少在某种程度上信任第三方,这在安全模型中有所不同。 请注意,这并不要求所有用户和企业直接在比特币核心的 RPC API 之上构建他们的软件。

比特币之父能不能随意制造比特币_808比特币创始人颜万卫 炮制比特币风险大_比特币干啥用

一些替代基础设施配置包括但不限于:

比特币123导航_比特币123_比特币分叉会影响比特币价格吗

1)使用安卓版比特币钱包,或Stash等手机钱包配置,只查询自己的全节点钱包。

2) 在 SPV 节点存储库(例如)上构建应用程序并将这些应用程序设置为仅连接到您自己的完整节点。 在 中,这可以通过定义您自己的并在初始化期间将其传递给您来实现。 使用 ,您可以使用示例定义到特定节点的网络连接。

3) 构建与比特币核心的 JSON-RPC API 兼容的代理服务器。 这个API不仅会向第三方服务发送一些调用,还会通过调用本地全节点自动校验第三方服务返回的数据。 BitGo 的 BitGoD 软件就是一个例子。 这种混合模式提供了两全其美的优势:您可以使用第三方提供的高级功能,同时保留您自己的财务主权。

全节点:为了自由

显然,运行自己的全节点是最安全的选择,需要最少的假设。 构建一台能够运行可靠的全节点的计算机只需要几百美元。 您不妨计算一下,然后决定保护您的财务主权是否值得付出代价。

感谢 Kristov Atlas、Eric、Andrew Miller 和 Kiara Roble 对本文的审阅和反馈。

(结束)