主页 > imtoken平台 > 比特币的底层漏洞:最公正和渠道安全

比特币的底层漏洞:最公正和渠道安全

imtoken平台 2023-04-03 07:27:35

几乎所有关于加密货币和区块链的讨论都源于中本聪的白皮书:“比特币:点对点电子现金系统”(中本聪)。

2008 年 11 月 1 日,一个密码学邮件组收到了来自 satoshi@vistomail.com 的这份白皮书,2009 年 1 月 3 日,中本聪的个人电脑被挖出。 50 个比特币,并在创世区块中留下了不可更改的一句话:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks (2009 年 1 月 3 日,总理处于第二轮银行救助的边缘) )。”

就在英国财政大臣达林被迫考虑第二次尝试缓解银行业危机的时刻,这句话登上了当天的《泰晤士报》头版。文章标题。区块链的时间戳服务和存在证明允许永久保存第一个区块链的创建时间和当时发生的事件。

最早的汇率出现在 2009 年 10 月 5 日:1 美元 = 1309.03 个比特币。十年后,比特币的价格已经超过了 8000 美元。按照 2017 年 20000 美元的峰值价格计算,2100 万比特币的市值已经达到 4200 亿美元。规模已超过一万亿美元。

比特币给我们带来的最大震撼是哈耶克的原创想法是可行的,该技术可以超越现有政府的框架,实现“非国有化货币”,开始流通。

在货币价值飙升的疯狂时代,已经很少有人阅读中本聪的白皮书了。只有九页的白皮书只是一套技术方案。所有页面都致力于讨论“硬币”的实现。抛开软件技术本身,我们将考察更本质的问题:比特币的“去中心化”是什么?彻底?它真的变成了一个去中心化和完全自治的系统吗?白皮书中是否还有其他缺陷是中本聪默认忽略并实际存在的错误前提?

算力垄断≠51%攻击

目前对比特币的信念是基于这样一个事实,即全网 51% 的计算能力难以达到。拥有大型ASIC矿机的矿场已经垄断了51%的算力。

MIT Technology Review 2018 年 1 月 18 日发表的最新研究表明,比特币和以太坊都是开放的区块链系统,即原则上任何人都可以成为矿工,但由于这样的架构特点,相应的组织自然有为集中矿产资源而形成。

基于每周统计,比特币挖矿活动前四名占整个系统挖矿活动的53%;而以太坊挖矿活动的中心化程度则更加稳定,前三名的挖矿活动机器在整个系统中的平均每周挖掘活动占比高达 61%。算力垄断是否动摇了比特币的“去中心化”本质?

答案是否定的。 51% 的攻击并非来自比特币生态系统。

这是因为虽然挖矿巨头集中控制算力,但按照游戏规则,他们付出了大量的硬件投资和电费。如果发起 51% 攻击,整个系统的价值就会崩溃,攻击获得的比特币将毫无意义。

51% 的攻击必须来自系统外部。

权力下放 = 多数人的正义

【白皮书摘要】:

本文提出了一种完全通过点对点技术实现的电子现金系统,它使在线支付可以由一方直接发起并支付给另一方,而无需通过中间的任何金融机构。虽然数字签名部分解决了这个问题,但如果仍然需要第三方支持来防止双花,那么系统就失去了它的价值。

在此,我们提出了一种解决方案,使现金系统能够在点对点环境中运行并防止出现双重支出问题。网络通过随机散列为所有交易添加时间戳,将它们合并成一个基于随机散列的不断扩展的工作量证明链作为交易记录,除非重新完成完整的工作量证明,否则已经形成的交易记录将不可更改。

最长的链不仅可以作为观察到的事件序列的证明,还可以被视为包含 CPU 上最大计算工作量的链。只要绝大多数 CPU 算力不打算合作攻击整个网络,诚实节点就会生成超过攻击者的最长链。系统本身只需要很少的基础设施。

信息可以尽可能地在整个网络中传播,节点可以随时离开和重新加入网络,并使用最长的工作量证明链作为节点离线时发生的交易的证明。

仔细阅读比特币白皮书,你会发现中本聪“去中心化”背后的潜台词是“为多数人伸张正义”,而共识机制是比特币的核心理念。

比特币算力的替代方案

用加密原理和工作量证明 (Pow) 代替集中式权威信用。当新的交易记录产生时,总是有顺序的,即使是双花,也总是有顺序的,同一个用户不可能同时创建两个交易。比特币首先引入了基于时间戳的随机散列,形成前后相关的序列。比特币的交易记录是一个时间序列链。这就是为什么它被称为区块链。

为了避免双花,我们只需要证明其中一条链是有效的并记录在交易链上,其他的交易都是无效的。要证明其中一个是有效的,不允许中心化存在,只有一个办法:动员大家参与这个活动,进行“为大多数人伸张正义”。

PoW共识算法正是为了解决谁是多数的问题,将“多数”的决定表示为最长的链。新区块由节点广播。一旦一个节点接收到这个区块的广播,其他节点就会根据“当且仅当该区块中包含的所有交易都有效且之前不存在区块有效性”的规则来识别该区块。

验证通过后,该节点将不再接受来自其他节点的相同区块。同时,节点将终止其正在进行的包含相同交易的块的计算,也就是说,它不会做无用的工作。节点会在这个区块的基础上开始计算新的交易区块,以此类推,形成一条链。

由于网络延迟,如果多个节点同时接收到彼此的交易块,并记录同一个链(分叉),就会打破死锁,直到找到下一个工作量证明。运行一段时间后,总会有一条序列最长的区块链,作为最终被识别的链。比特币区块链是一个不断分叉、放弃、分叉、合并的过程。

共识机制代替中介信任,我们来讨论一下极端情况下可能会出现什么问题?

2018年的一天下午15:30,中国的海底光纤突然出现故障,国际出口受阻。整个比特币网络仍在正常运行:国内矿池和矿场继续挖币;国外矿场和交易所继续正常挖矿和交易。

就在不知不觉中,中国比特币网络和国际比特币网络被撕成了两个子网。

停电期间,中国境内算力形成一条链,中国境外算力形成另一条链。根据共识机制比特币算力的替代方案,取决于哪条链的长度更长,而另一条长度更短的链会被淘汰,即这条被淘汰的支链上产生的所有交易都需要重新计算,记账奖励为作废。

17:40,故障2小时后,光纤故障排除,恢复国际出口。

由于中国国内算力占比高达70%,国外链将被淘汰出局,不出意外。故障发生后的两个多小时内,海外矿场算力成果被销毁,海外链全部销毁。的比特币交易面临重新计算,比特币上的商业活动陷入瘫痪。

大规模的通信中断会将比特币网络撕裂成两个计算能力悬殊的分支,因此最优策略是从故障发生的那一刻起,整个比特币网络立即停止,直到故障修复。否则,如果你继续孤立地跑步,当你重新连接时,你会遇到更难缠的瘫痪。

比特币对此也有一些防御措施。为了防止分叉链的干扰造成的损失,一笔比特币交易至少需要6个区块的确认,一个区块的时间是10分钟,6个区块一个区块是一个小时。如果故障导致的断网超过一小时,就会对交易产生影响,而且断网时间越长,影响越大。

人们对比特币容灾能力的讨论更多地集中在分布式多节点存储备份上,忽略了共识机制本身带来的隔离和吞噬效应。

这样的想法并非不可能。就在 2018 年 3 月 30 日,非洲国家毛里塔尼亚因海底电缆被切断,彻底断网 2 天。还同时影响到几个周边国家,网络断线的噩梦首次在现实中上演,说明全球网络基础设施并没有人们想象的那么安全。

事实上,全球97%以上的网络数据都是通过海缆传输的,但在海缆附近进行军事用途的活动并不多。 2013 年,三名潜水员因涉嫌切断海底电缆而在埃及被捕。

在军事家的理论中,全面切断海底电缆,影响国家军事通信能力,给敌人造成经济损失和瘫痪灾难,也是一种重要的替代打击。

而且,不仅仅是拔掉网线会让比特币崩溃。

比特币算力的替代方案

让我们传播一些可能影响比特币网络的可能性:

大规模黑客攻击,控制骨干网设备的路由策略,发起BGP攻击。

网络设备制造商的后门许可。针对核心路由器0day漏洞的蠕虫在传播过程中有意或无意地阻止了国际出口。

电信运营商国际出口通信故障。

国家防火墙的限制和阻止。

在上述场景中,发起者可以是系统外的成员,不需要花费大量的硬件和电力资源,只需控制网络层即可轻松实现。这暴露了比特币和所有加密货币最致命的缺陷:网络层固有的高度中心化。

忽略默认前提:渠道安全

区块链的底层是P2P网络通信技术,区块链本质上是一个基于P2P的价值传输协议。

比特币采用基于互联网的P2P(点对点)网络架构。 P2P是指同一网络中的每台计算机都是对等的,每个节点共同提供网络服务,没有“特殊”节点。每个网络节点都以“平面”拓扑相互连接。 P2P 网络中没有服务器、集中式服务和层次结构。

P2P网络中的节点交互运行,相互协作:每个节点对外提供服务的同时也使用网络中其他节点提供的服务。

早期的互联网是 P2P 网络架构的典型用例:IP 网络中的所有节点都是完全平等的。今天的互联网架构具有分层结构,但IP协议仍然保留了扁平拓扑的结构。在比特币之外,P2P 技术最大和最成功的应用是文件共享:Napster 是该领域的先驱,而 BitTorrent 是其架构的最新发展。

“比特币网络”是在比特币 P2P 协议下运行的节点集合。除了比特币 P2P 协议之外,比特币网络中还包含其他协议。例如,Stratum 协议用于采矿、轻量级或移动比特币钱包。网关路由服务器提供这些协议,使用比特币 P2P 协议连接到比特币网络,并将网络扩展到运行其他协议的各个节点。

例如,Stratum 服务器通过 Stratum 协议将所有 Stratum 挖矿节点连接到比特币主网,并将 Stratum 协议桥接到比特币 P2P 协议。我们使用术语“扩展比特币网络”来指代所有的整体网络结构,包括比特币 P2P 协议、矿池挖矿协议、Stratum 协议以及与连接比特币系统组件相关的其他协议。

运行比特币P2P协议的比特币主网由大约7,000-10,000个运行不同版本的比特币核心客户端(Bitcoin Core)的监听节点组成,数百个运行各种类型的比特币P2P应用的节点组成协议(如BitcoinJ、Libbitcoin、btcd等)。比特币 P2P 网络中的少数节点也是挖矿节点,竞争挖矿、验证交易和创建新区块。

Bit 节点通常使用 TCP 协议,使用 8333 端口(比特币通常使用此端口号,除 8333 端口外还可以指定其他端口)与已知对等节点建立连接。

P2P网络只为所有节点提供信息交换方式,做事的是共识算法和加密算法。但是,接收方必须相信数据块在传输数据块的过程中没有被任何中介改变或破坏。这其实需要一个“渠道安全”的前提(这是中本聪没有明确提出的条件,默认是必须的):

这种信任基于“网络中立”。然而,互联网传输和承载网的建设是一项高额的资金投入。因此,所有的互联网基础设施建设都来自通信公司的高额投资,而互联网服务则由各大ISP及其分销商提供。

这带来了一个相对矛盾的问题:托管在中心化互联网服务上的“去中心化”分布式系统并未得到广泛认可。高度中心化的底层传输网络,具备轻松打击和控制“去中心化”互联网产品的能力。

比特币算力的替代方案

从比特币的协议细节可以看出,它对传输层的攻击并没有得到完全的保护。比特币的传输协议头都是明文,规律不变。消息的前 4 个字节是 0xF9BEB4D9。据信,中本聪在设计协议时将大部分精力集中在交易过程的密码学设计上。因为对于区块链来说,传输的数据是否加密并不影响交易本身的有效性:即使中间人窃取了消息,被篡改的交易数据也无法被其他节点接受。

但是这种高度依赖通道安全的高度自信的协议特别容易受到网络底部发起的攻击。治愈攻击是一种足以打破人们对比特币的信念的攻击。<​​/p>

合并攻击

Merge 攻击,简而言之,就是先通过“撕裂”来隔离区块链网络,使其超过两条独立链的“共识阈值”(如 POW 51%),然后在一定时间后(更多比交易确认时间),让两条链“愈合”,利用合并对冲强制放弃其中一条交易量大的链。

Healing攻击实际上是Partition攻击+Delay攻击的连续组合,其破坏力远超DDos攻击和IP阻塞。

对节点、矿工的 DDos 和阻塞 IP 地址的攻击的影响是短暂的。

无论对任何 IP 地址发起 DDos 攻击,攻击者都知道,因为节点和矿工会立即意识到他们无法与任何人通信。受害者可以快速切换IP来应对。此次攻击对整个区块链网络造成的破坏并不明显,因为节点切换IP后仍然可以与其他节点通信,保证交易确认,不会对区块链网络造成破坏性影响。

愈合攻击直接撕裂网络,形成两个大型局域网。

两个网络中的节点可以相互通信,并且没有断线感知,所以没有办法采取预防措施。它利用网络层打破愈合时刻的“共识机制”:如果所有节点都遵守“代码即法律”,则链将不可避免地被吞没;如果不遵守代码协议,则需要人工分叉来颠覆信仰。更致命的是,治愈攻击可以高效重复,分而治之,比特币网络将瘫痪。

愈合攻击不仅对比特币网络有效,而且对以太坊等加密数字货币构成威胁。虽然以太坊对通信协议有一定程度的加密,但这只是为了保护智能合约的安全,并不是为了去除通信协议的识别特性而进行的加密。

只要利用网络通信中长链路的数据和行为特征、冗余心跳机制等,攻击者依然可以精准打击,通过隔离网络发起治愈攻击。

所以不管是什么数字货币,只要没有从通信底层的数据和行为中抹去特征,打击还是有效的。近年来被广泛炒作的山寨币,包括莱特币、门罗币、比特币现金和量子链,也不能幸免。

此外,所有共识算法,包括 PoW、PoS 和 DPoS,都需要确保传输不受干扰。因为分布式系统的共识算法本质上是在保证通道安全的前提下解决一致性和正确性的问题。一旦网络通道安全前提不成立,共识算法保证的“一致性”和“正确性”就会崩溃。

BGP劫持

愈合攻击是一种瓦解区块链的技术手段,最常用的是BGP劫持。

什么是 BGP 劫持?

矿工与矿池的正常通信应该包括以下步骤:

Miner->网络运营商 A->网络运营商 B->网络运营商... -> 矿池

比特币算力的替代方案

由于比特币矿池的跨区域特性,矿机和矿池之间可能存在多个网络运营商(ISP)。这是极其不安全的,任何链接都可能被黑客通过边界网关协议(BGP)劫持。

边界网关协议 (BGP) 是 Internet 的关键组件,用于确定路由路径。 BGP劫持是使用BGP来操纵互联网路由路径。网络犯罪分子和国家防火墙都可以将这种技术用于他们自己的目的,例如误导和阻止流量。

BGP 是一种网络协议,用于在 Internet 上的网络之间交换路由信息。通常,它用于确定在独立运行的网络或自治系统之间路由数据的最佳路径。因此,它也经常用于寻找从 ISP 到 ISP 的数据路由路径。需要注意的是,BGP不是用来传输数据的,而是用来确定最有效的路由路径的。实际的传输工作是由其他协议完成的,比如TCP/IP协议栈。

现在,假设我需要将数据发送到世界的另一端。最终,这些数据肯定会离开我的 ISP 控制的网络,所以必然要用到 BGP。当然,路由路径不能由单个自治系统确定,这需要其他 BGP 对等体或邻居的参与。这些对等点是已手动配置为共享路由信息的自治系统。

随着自治系统学习新路由,此信息会进一步传播到其他对等方。通过梳理从 BGP 对等体收集的路由信息​​,处理数据的路由器能够找到最佳路径。这些最佳路径源自多种因素,包括路由器管理员实施的距离和配置设置。

由于传播路由的peer是手动配置的,所以需要破解边界路由器向外广播BGP通告比特币算力的替代方案,从而实现互联网级别的BGP劫持。虽然这很难做到,但现实世界中确实出现了 BGP 劫持攻击。

因为BGP决定了数据从源端到目的端的传输方式,所以一定要注意协议的安全性。攻击者通过操纵BGP,可以根据自己的意愿修改数据传输路由,从而达到截取或修改数据的目的。为了劫持 Internet 级 BGP,需要将边界路由器配置为发送带有未分配前缀的广告。

如果恶意广告比合法广告更具体,或者声称提供更短的路径,那么流量可能会被定向到攻击者。攻击者经常使用不推荐使用的前缀进行劫持,以免引起合法所有者的注意。通过广播包含虚假前缀的广告,被攻击的路由器可能会污染其他路由器的路由信息​​库。在污染其他路由器后,恶意路由信息可能会进一步传播到其他路由器、自治系统,甚至是互联网的主干。

近年来,记录了几次 BGP 劫持攻击。

比较有名的要数巴基斯坦长达13年的封锁Youtube了。因为巴基斯坦电信部门错误的在BGP中添加了blocking youtube,所以协议上的所有AS都被block了。换句话说,世界其他地方的每个人都无法访问 Youtube,因为数据包正在发送到巴基斯坦,这只是阻止了 Youtube。

在 Renesys 记录的案例中,2013 年使用 BGP 劫持在到达目的地之前通过任意指定的国家/地区重新路由数据。其中,一个攻击案例的数据流量实际上是绕道墨西哥到美国再到白俄罗斯才到达目的地。通过分发虚假的 BGP 广播,白俄罗斯 ISP 成功地将非法路由传播到 Internet。

在这种情况下,这很可能是公司或国家的间谍行为。然而,有迹象表明,即使是非国家级的对手仍然可以发起 BGP 劫持攻击。

在 2014 年戴尔 SecureWorks 分析的一个案例中,BGP 劫持被用来拦截从比特币矿工到矿池服务器的链接。通过将流量重新路由到攻击者控制的矿池,攻击者能够窃取受害者的比特币。这次攻击在两个月内收集了价值 83,000 美元的比特币。

2015年7月,监控软件提供商Hacking Team被黑,泄露的内部邮件显示,2013年意大利政府曾与Hacking Team合作,意大利一家ISP也购买了该公司的BGP劫持服务。由于托管 Hacking Team 命令和控制服务器的 IP 被封锁,服务器处于离线状态,因此恶意软件与命令和控制服务器之间的连接仍然无法访问。通过公布托管命令和控制服务器的虚假 IP 前缀,黑客团队能够重新获得对受害者计算机的访问权限。

这是第一个记录在案的西方政府使用 BGP 劫持的案例。

“拜占庭将军问题”和“两军问题”

比特币算力的替代方案

比特币是分布式系统前所未有的社会实验,也被称为解决“拜占庭将军”问题的成功范例。强烈建议你百度或者维基百科看看“拜占庭将军”和“两军问题”这两种理论的原型。

拜占庭将军问题是2013年图灵奖获得者Leslie Lamport在其1980年论文拜占庭将军问题中提出的分布式域容错问题,是分布式域中最复杂、最严格的容错问题。模型。 Lamport是分布式系统的大师,这个故事广为流传:

拜占庭位于现在的土耳其伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国幅员辽阔,出于防御的目的,各支军队相隔甚远,将军们只能依靠信使传递信息。在战争时期,拜占庭军队的所有将领和副官必须达成共识,决定是否有获胜的机会,然后再进攻敌方阵营。

但是,军队中可能有叛徒和敌人的间谍,影响了将军们的决定,扰乱了全军的秩序。在达成共识时,结果并不代表大多数人的意见。

此时,剩下的忠诚将领如何在没有叛徒影响的情况下达成协议,当知道有叛乱时,拜占庭问题就形成了。

拜占庭将军问题不考虑信使是否会被拦截或无法传递消息的问题。 Lamport 已经表明,通过消息通过不可靠的通道传递消息并丢失消息来尝试达成共识是不可能的。

另一个比“拜占庭将军问题”更根本、更广为人知的是“两个将军问题”:

两军各由两名将军率领,正准备进攻一座坚固的城市。两支军队都驻扎在城市旁边的两个不同的山谷中。两军之间还有第三个山谷,两位将军想要交流的唯一方式就是跨过第三个山谷发信。

问题是第三谷被城里的敌军守卫占领了,通过它发出的信件可能会被守卫截获。两位将军虽然同意同时攻城,但并没有约定具体的攻城时间。为了保证胜利,他们必须同时进攻,否则任何单独进攻的军队都有被歼灭的危险。它们必须相互通信以确定同时的攻击时间并同意在那个时间进行攻击。两位将军需要互相了解对方的将军知道他已经同意作战计划。

两军问题说明了试图通过不可靠的通信链路进行通信以达成协议是有缺陷和困难的。这个问题经常出现在计算机网络入门课程中,以说明 TCP 协议不能保证通信两端状态的一致性。但是两军问题也适用于任何有可能发生通信失败的两点通信。

对比这两个故事,我们会发现两军问题和拜占庭将军问题有一定的相似性,但必须注意的是,信使要经过敌人的山谷,在这个过程中他可能被抓,也就是说,两军问题中的渠道不靠谱,里面没有汉奸。这是两军问题与拜占庭将军问题的根本区别。

两军问题是计算机通信领域第一个被证明无法解决的问题。也可以推断,在不可靠信道条件下的“拜占庭将军问题”也是无解的。

这意味着我们仍然可以传输可能丢失、监控或篡改的信息。或许只有未来的“量子通信”才能解决加密通信的问题。

抛开各种加密货币共识算法的优劣之争,我们必须看到本质问题,那就是共识算法离不开通道安全的前提。

比特币的理论缺陷在于网络通信层的安全性。人们对区块链技术对时间戳签名和哈希链等密码学的贡献过于着迷,而忽略了其作为分布式系统的网络层安全性。事实上,这项技术还处于早期阶段。比特币虽然在过去十年里被预言过上百次死去,但它仍然活着,但作为科技本体,不应该盲目相信。

如果把世界看成一个层层协议,那么下层协议就会控制和影响上层。比特币作为应用层,势必被下一个网络层控制。

The network layer represents the operators that provide network services. It is a whole social structure that is directly affected by the financial and legal effects of the real world. The final agreement in this world, that is, the ultimate controller is actually the political layer.

Non-nationalized cryptocurrency, the bottom layer is still in the state's network facilities.

This fact seems a bit pessimistic, but from another dimension, blockchain also needs operation and maintenance.

Although this point of view seems a bit out of tune with the pursuit of "keeping open, permissionless and distributed". But when tens of billions of capital pour into those cryptocurrencies, professional attackers will also target this "borderless land". If the industry wants to develop and protect, it should call on and promote government departments to issue relevant laws, regulations and regulatory policies as soon as possible to regulate, protect and constrain a good ecological environment.