免责声明:一圈作为开放的资讯分享平台,所提供的所有资讯仅代表作者个人观点,与一圈平台立场无关,且不构成任何投资理财建议。
logo

学堂

Pixel:专为区块链优化的签名算法

这篇文章通过Pixel如何解决问题,如何工作,以及其特性展开对它的剖析。

原文作者:

Haichao

翻译作者:

Aman Aman

Pixel 是什么?

Pixe l是 Algorand 研发的一种基于公私钥对的前向安全多重签名技术,专为使用权益证明机制(Proof of Stake,PoS)作为共识机制的区块链系统设计。Pixel 签名是前向安全的,并且允许签名者随着时间的推移而演化他们的密钥,这样新密钥就不能用于旧区块的签名过程中,从而防止区块链共识过程中的变节攻击。另外,通过在区块链共识过程中运行 Pixel,能够显著地降低带宽、存储和节点验证工作等方面的开销。

前向安全(Forward Security): 用来产生会话密钥(Session Key)的长期密钥(Long-Term Key)泄露出去后,不会造成之前通讯时使用的会话密钥的泄露,也就不会暴漏以前的通讯内容。简单的说,当你丢了这个 long-term key 之后,你以后的行为的安全性无法保证,但是你之前的行为是保证安全的。

变节攻击(Posterior Corruption): 通过盗取或腐败等手段来获取某个已经结束验证节点使命的用户的私钥,然后使用该私钥来对伪造的旧区块进行签名,从而形成攻击。

Pixel 解决了什么问题?

在权益证明(PoS)和有许可的区块链中,验证节点会同意并签署每个包含交易的区块。这些区块由网络中的所有用户验证、传播和存储。然而,由于敌手可能会在委员会验证者认证一个块后引诱其腐败(corrupt committee verifiers),并使用其签名密钥认证其他块,由此引发的变节攻击对这类设计构成了共同的威胁。因此大多数 PoS 或联盟链系统都会选择使用前向安全的签名算法来使得变节攻击无效化, 比如 Ouroboros Genesis, Pra,Thunderella,Snow White 等区块链方案都采取了类似的解决方案。除此以外,为 PoS 区块链设计高效和安全的数字签名可以大大减少节点的带宽、存储和计算需求,从而实现更高效的应用。正是因为这些原因,Algorand 设计了 Pixel,一个专为优化区块链带宽和计算资源占用的前向安全的多签算法。

Pixel 如何工作?

Pixel 集成: 为了对块 B 进行投票,协议里的每个成员使用具有当前区块高度的 Pixel 对 B 进行签名。当我们看到N个委员会成员签名的集合 σ1,σ2,…,σN 在同一区块 B 上签名时即可达成共识,其中 N 是一个固定阈值。最后,我们将这 N 个签名聚合为一个单一的多签 ∑,并且将(A,∑)组成为一个所谓的区块证书,然后将区块 B 附加到区块链上。

注册公钥: 希望参与到共识当中的每个用户都需要注册一个参与签名密钥(participation signing key)。用户首先对 Pixel 密钥对进行采样并生成相应的 PoP(Proof of Participation)。然后,用户发出一个特殊交易(使用他的交易用密钥签名)来注册新的参与密钥,交易中会包含 PoP 。被选中在 r 轮进行共识的 PoS 验证节点会检查(a)该交易的有效性和(b)PoP 的有效性。如果两个检查都通过,则使用新的参与密钥更新用户帐户。在此之后,如果该用户被选中参与共识,用户将使用 Pixel 在区块上签名。

投票生成: 若要对区块 t 投票,用户首先更新其参与密钥以对应区块高度,随后再使用正确的密钥对区块进行签名,并将签名广播到网络。

传播和聚合签名: 单个验证节点的签名将通过网络传播,直到我们在同一块 B 上看到 N 个验证节点的签名为止。请注意,Pixel 支持非交互式和聚合签名:前者意味着在广播后任何一方都可以在已有签名上叠加签名,而无需与原始签名者通信;后者意味着我们可以在多重签名中添加一个新的签名来获得一个新的多重签名。实际上,这意味着传播节点可以对任意数量的验证节点签名上叠加新的签名并传播结果,直到获得足够的签名并形成区块证书。或者,节点可以在将块写入磁盘之前聚合所有签名。也就是说,一个节点在收到一个块的足够的认证投票后,可以将 N 个验证节点的签名聚合成一个多签,然后将该块和证书写入磁盘。为了加快验证单个委员会成员签名的速度,一个节点可以预先计算e(h,y),其中 y 为拥有最高质押数量的用户。

密钥更新: 在区块链 blockchain 中使用 Pixel 时,时间是一一对应于共识协议中的区块高度或子步骤的。简单地说,当将时间与区块高度关联时,这意味着所有合格的验证节点都应该在每次形成新块和更新轮数时更新其 Pixel 密钥。为简单起见,假设每个验证节点最多签署一个块(如果不是,只需在块编号后附加一个计数器,并将其用作时间)。如果某个节点被选为区块 t 的验证节点,则该节点应首先将其密钥更新到 skt(对于任何 t0>t,Pixel 支持 skt 到 skt0 的“快进”密钥更新),并且一旦对区块签名,应该立即将其密钥更新到skt+1,然后传播签名。需要注意的是,当节点未被选为验证节点时,不需要进行密钥更新。

Pixel 有什么特点?

Pixel 签名由两个元素组成,无论签名者的数目如何,都可以通过三对一指数运算进行验证,并且支持将单个签名非交互式的聚合为多个签名。Pixel 签名还具有前向安全性,允许签名者随着时间的推移更新密钥,这样新密钥就不能用于在旧块上签名,从而防止对区块链的变节攻击。同时我们对 Pixel 在现实世界中的区块链上的表现进行了评估,结果显示它在存储、带宽和区块验证时间上有显著优化。特别是,Pixel 签名将包含1500笔交易的区块的签名大小减少了35%,并将区块验证时间减少了38%。

关于 Pixel 的完整信息可以参考论文:https://eprint.iacr.org/2019/514

原文标题:

Pixel:专为区块链优化的签名算法

发表时间:

2020/04/26
火速分享
Share on facebook
Share on twitter
Share on linkedin

Leave a Reply

相关课程

热门标签

好久不见,甚是想念。快登录吧