bn254

https://blog.csdn.net/trustbo/article/details/8806441

https://www.chainnews.com/articles/779116108226.htm

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

数字签名的作用在于:

(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,即椭圆曲线数字签名算法。其签名过程如下:

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

Penta 的签名方案

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

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

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

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

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

**
**

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

**
**

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

猜你喜欢

转载自www.cnblogs.com/Janly/p/12973100.html