logo

建造更安全的SGX区块链共识机制 Proof-of-Elapsed-Time,百度安全论文入选安全顶会NDSS

作者:技术大发2022.04.26 16:15浏览量:668

简介:建造更安全的SGX区块链共识机制 Proof-of-Elapsed-Time,百度安全论文入选安全顶

百度安全在系统安全领域深耕多年,成果产出持续在多个世界顶会亮相。近日,百度安全有一最新研究成果在信息安全四大顶会之一NDSS 2022发表。文章聚焦在新型区块链共识机制PoET的安全问题以及解决方案。

区块链共识机制

现今流行的加密货币,如比特币,多基于去中心化的区块链设计。由于各节点分散且平行,所以需要有一套统一的机制来维护整个系统的公平性。这样的机制能够证明是谁取得了一个区块的打包权或者记账权,以及获得打包这一个区块的奖励。同时,又最好能发现谁意图进行危害,并让攻击者获得一定的惩罚。这就是区块链的共识机制。

目前,最受认可共识机制是基于工作量证明的Proof-of-Work (Pow)机制,比特币即基于该机制运作。PoW要求参与者进行一些复杂运算,而且运算结果可以被快速验证。具体来说,PoW通过计算来获取一个数值,使得关联上交易内容的哈希值满足固定的上限。由于哈希计算具有不可逆的特点,因此目前除了暴力计算外,还没有有效的方法破解比特币的 PoW。反之,如果获得了符合要求的数值,则证明节点已经付出了对应的算力。

这种共识机制的优点是简明扼要,有效可靠,公平性好,以及高昂的攻击成本。但是,由于哈希函数在目前的计算模型下需要大量的计算成本,PoW的缺点也显而易见:浪费能源。

Proof-of-Elapsed-time (PoET) 是由Intel Hyperledger 提供的基于“时间证明”的共识机制。PoET 针对 PoW 的能源消耗问题,通过一个类似于彩票的系统和基于随机产生的等待时间的长短来实现共识。并且,PoET通过硬件的可信执行环境(Intel SGX)来保障随机时间产生的不可控制性,从而达到共识机制的公平性。

针对共识机制的攻击

由于共识机制决定是谁产生新块,因此破坏了共识机制,攻击者就可以完全掌握区块链,从而获得奖励机制的控制权,进一步可以操纵交易。例如,可以通过双花攻击,51%攻击,以及自私挖矿攻击等来破坏PoW 的共识机制。这些攻击可以通过修改区块链来重构花销,使得已经被确认的交易重新被放弃,从而实现双花甚至多花。

PoET的公平性假设

图片.jpg

⬆️ 图1 PoET简介

PoET 的主要原理是证明一个参与节点产生了一个随机数作为时间长度,并且还等待了这个随机的时间长度。在所有参与节点中,拥有最短等待时间的成为领导者,可以添加一个区块到区块链上。为了防止节点作弊,PoET通过可信执行环境(TEE),如 Intel 的 SGX Enclave,来产生和保护随机生成的时间变量,以及确保经过时间等待的证据的隐私性和完整性。

PoET 的公平性保证基于两个假设,一是在 SGX 的 Enclave 内部,数据和代码不可以被篡改;二是Intel CSME 提供的可信计时器和单调计数器是确定可信的,即攻击者无法操纵计时器和改变计数器值。此外,我们还发现了PoET公平性所依赖的两个重要的潜在假设。第一,PoET 网络中的节点需遵循 PoET 代码实现的完整流程;一个节点在每一轮中只生成一个随机时长和一个证书。第二,伪随机时间的生成所依赖的三个种子不可以被篡改。

然而,我们发现这两个潜在假设可能是不成立的,而PoET共识机制会因为以上潜在假设的不成立而受到攻击。

Multi-Certificate 攻击核心技术揭秘

在本论文中,我们讨论针对PoET的新攻击方式。我们将这种攻击方式称为 Multi-Certificate 攻击 (MCA)。借助 MCA,区块链网络中的恶意节点可以在同一轮区块的领导者选举过程中生成多个证书,然后选择一个对自己最有利的证书进行当前轮或者下一轮的领导者选举。MCA 攻击者可以通过控制一个(或多个)网络节点来打破 PoET 的公平性保证,获得显著多于公平预期的出块机会。

MCA 有两种形式:并行 MCA 和串行 MCA。在并行 MCA 中,攻击者可以在很短时间内构造许多份共识所需要的证书,而无需进行“必备的”等待。在 Hyperledger Sawtooth v1.0.5 中,我们发现了两种可以进行 MCA 攻击的漏洞。第一个漏洞允许攻击者生成多个“经过时间”值,并选择最短的那一个经过时间进行等待,然后创建对应的证书。这一个漏洞可以对当前轮进行攻击,使得攻击者在当前轮获得有利地位(图2)。第二个漏洞则不影响当前轮,而是允许攻击者在下一轮出块时获得有利地位。具体攻击步骤为:攻击者为相同的随机经过时间值生成多个证书,并选择具有最大可能性的那一份证书来赢得下一轮(图3)。我们在 Sawtooth v1.0.5 上成功进行了攻击,并把漏洞上报给了 Sawtooth 开发团队,得到了来自开发团队的确认和致谢。这些漏洞也被在 Sawtooth v1.1 中修补。

然而在 Sawtooth v1.1 版本中,我们又发现了第二种攻击方式:串行 MCA。由于网络延时的存在,网络节点的同步需要一个时间窗。在这个时间窗口内,攻击者可以在任意节点上可以不停的执行 PoET 的逻辑,产生随机经过时间值,等待这个时间并产生证书,从而生成多个证书。虽然每轮可以生成有限数量的证书,但这样串行的 MCA 仍然为攻击者提供了攻击机会,使得他们总可以选择一份对自己有利的证书。造成这种情况的根本原因是,随机产生的经过时间值在被创建后马上被透露给恶意攻击者,而不是在等待了这段随机时间值之后。因此,恶意攻击者可以在随机数生成之后立即知道这个时间是否对其有利,然后调整策略发动攻击。因此。顺序 MCA 在修补后的 Sawtooth v1.1 的版本中仍然有效。在 PoET 设计中,没有办法从根本上消除这种漏洞。

图片.jpg

⬆️ 图2 当前轮,并行MCA的工作流程示意图

图片.jpg

⬆️ 图3 下一轮,并行MCA的工作流程示意图

抵御Multi-Certificate 攻击:全新的PoETA共识

为了彻底免疫 MCA 攻击,我们提出了一种基于PoET 的新的共识机制PoETA,其中“A”代表“之后”。PoETA 的基本理念是:在随机经过时间过去之后再输出随机经过时间值。具体来讲,PoETA 引入了 determine-after-check 的方法:通过增加一个 oracle 函数,在随机经过时间等待完成后,再通过计算 oracle 函数来判定是否要再次产生一个新的随机经过时间值并再等待一次。因此,任何参与者(无论是否诚实)都无法提前预测全部随机经过时间的值。同时,经过精心设计,PoETA 的随机经过时间分布与 PoET 有相同的分布,使得 PoETA 和 PoET 有相同的出块率。我们对 PoETA 进行的性能和安全性的评测结果表明,PoETA 具有很低的性能开销,但是有更强的安全保障。

总结以及展望

百度安全持续开展前沿安全研究。此次论文入选 NDSS‘22,再次展示了百度安全的技术深度。近年来,百度安全在多个领域的国际顶级会议以及期刊,如IEEE S&P, Usenix Security,ACM CCS,NDSS,ACSAC,ICSE,OOPSLA,ISSTA等持续发表研究成果。展望未来,百度安全也将继续深耕系统安全,云安全,车联网,智能安全等领域的前沿性安全研究,在国际舞台展示研究能力与技术储备。

相关文章推荐

发表评论