Penta 剖析|Penta数字签名方案介绍

Penta 剖析|Penta数字签名方案介绍

概述

当区块链网络中的分布式节点之间进行通信交互时,需要依靠数字签名技术实现对身份的确认以及验证信息的真实性、完整性和不可抵赖性从而达成互信。

数字签名的作用在于:

(1)验证消息发送方的身份;

(2)验证消息的完整性。

数字签名的实现原理是签名者使用自己的私钥sk对消息M进行签名,得到签名结果S,然后将签名S和消息M一起发送出去。接收者使用签名者的公钥pk对签名者的签名进行验证。

Penta团队在深入分析考察了多种主流的数字签名方案后,基于自身独特设计的账户模型和实际业务场景,搭建并实施了Penta数字签名方案,下面将对此做一个详细的介绍。


非对称算法

非对称算法中每个通信方使用一个公私钥对(pk,sk),其中私钥sk自己保密存储,公钥pk是公开的。非对称算法主要有两个方面的应用:(1)加密方案:使用公钥对消息进行加密,然后使用私钥对消息进行解密;(2)签名:使用私钥对消息进行签名,然后使用公钥对签名进行验证。常用的非对称算法有:

  • RSA算法

RSA算法是1977年由Ron Rivest、Adi Shamir和Leonard Adleman共同提出的,是现今使用最广泛的公钥密码算法。RSA算法的安全性基于大整数难分解问题,给定两个大素数p、q 很容易相乘得到n,而想对n进行因式分解却异常困难。

  • ECC算法

ECC(Elliptic Curve Cryptography)即椭圆曲线密码算法,其定义了在有限域上的椭圆曲线y²=x³+ax+b(mod p),a,b, p的取值均要满足一定的构造条件,从而形成基于不同参数的椭圆曲线。椭圆曲线密码体制的安全性基于椭圆曲线离散对数问题(ECDLP)的困难性,至今没有有效的破解方法。

ECC和RSA相比,在许多方面都有绝对的优势,比如抗攻击性强、计算量小、处理速度快、存储空间占用小和带宽要求低等等。所以在区块链底层技术中更多的使用到了ECC算法。

ECDSA签名算法

ECDSA全名是Elliptic Curve Digital Signature Algorithm,即椭圆曲线数字签名算法。其签名过程如下:


Penta 剖析|Penta数字签名方案介绍


鉴于ECC算法具有很好的公钥算法特性,比特币使用了基于secp256k1的椭圆曲线的ECDSA作为其数字签名算法,而以太坊也沿用了这一方案。值得注意的是,ECDSA是一种非确定性的签名算法。因为随机数k的存在,对于同一条消息,同一个人每次产生的签名却是不一样的。从函数的角度来理解,签名函数对同样的输入会产生不同的输出,因为将随机数混入了签名函数。

Penta的签名方案

由于比特币UTXO模型和以太坊账户模型相对较为简单,并且被签名的消息大多是普通交易,所以非确定性的ECDSA算法可以很好地胜任签名和验证工作。但Penta出于提高系统整体安全性的考虑,在账户模型中独创性地设计了安全私钥、交易私钥、共识私钥和种子私钥四种不同的私钥,所以并不能完全遵循传统的区块链签名算法。

通过分析,安全私钥、交易私钥和共识私钥相关的消息仍然视为普通交易,所以可以安全地沿用ECDSA算法。但根据DSC共识中随机抽签算法的设计,种子私钥签名后的值经过Hash后将会作为新的随机种子来决定下一轮出块人, 如果沿用非确定性的ECDSA算法,将导致当前出块人能够通过反复签名产生多个结果,最后选择一个有利于自己成为下一出块人的签名消息向全网广播,这样一来就可以操控随机抽签算法的随机种子,从而影响区块链网络出块的随机性、公平性和安全性。

这就是所谓的Stake Grinding攻击——攻击者通过执行某些计算或步骤来尝试以自己的偏好影响随机性。所以针对种子私钥的签名,需要一种确定性签名方案使其不具有可操控性。Penta团队经过深入研究和反复验证选择了目前较为先进且成熟的BLS签名方案。

BLS 签名方案在 2003 年由 Boneh,Lynn 和 Shacham 三人提出,该签名方案产生的签名很短,通常也被称为短签名方案。该方案的签名是椭圆曲线群上的元素,验证算法使用的是双线性映射。该方案是一个基于双线性映射且具有唯一确定性的签名方案。

BLS 签名方案主要包含如下四个算法:

Penta 剖析|Penta数字签名方案介绍


目前用来实现双线性映射的椭圆曲线根据参数设置不同主要分为以下两类:

BN(Barreto-Naehrig)曲线:一簇易于做双线性映射的椭圆曲线, 根据签名长度可分为BN-254、BN-381和BN-512等等。

BLS(Barreto-Lynn-Scott)曲线:一簇稍微古老的Pairing友好的椭圆曲线,代表曲线为BLS12-381。

目前 Zcash 和Dfinity项目使用的均是 BN-254 的曲线,但是近期有研究报告使用数域筛法证明,该曲线安全级别只能达到将近110 比特安全。而BN-381和BLS12-381曲线均能达到 128 比特安全,安全性提高了16%,而相比BN-512的安全级别虽然更高,但随之带来的是系统吞吐量下降以及额外的数据存储开销。

由于在实际应用中128比特已经保证足够安全,最终Penta团队选择了技术实施上更成熟、代码库更完善、应用也更加广泛的BLS12-381用于种子私钥签名

Penta 剖析|Penta数字签名方案介绍

各种签名方案的安全级别和签名长度对比

结语

在本文中,我们介绍了Penta项目中涉及到的包括ECDSA和BLS签名算法在内的算法相关技术,可见区块链本身的安全性离不开数字签名技术的可靠性。在未来,Penta团队仍然会基于最先进的签名算法进行深入研究,并结合项目实际应用场景不断加以创新和改进,推进区块链数字签名和区块链安全技术的持续迭代


分享到:


相關文章: