区块链中的数学 - BLS数字签名

  • blocksight
  • 更新于 2020-12-13 21:21
  • 阅读 7231

本文介紹了BLS签名简要过程及其原理,综上可以看出BLS签名过程没有使用随机数,签名结果具有确定性(与RSA,EdDSA类似,不同于ECDSA,Schnorr等)。其构建在具有双线性映射的配对函数之上。

写在前面

上一节讲了Amir Herzberg改进方案应对参与者小于门限值的情况。

本文开始讲一种新的签名机制:BLS数字签名,也能做签名聚合。

BLS数字签名

BLS字母代表Boneh–Lynn–Shacham,最初是由斯坦福大学教授Dan Boneh等人于2001年提出的一种签名方案,最新是在2018年,Boneh教授与IBM研究机构的Manu Drijvers等人更新了这种签名方案。

与以往介绍的签名方案不同的是,BLS采用了基于双线性映射的椭圆曲线配对技术,来实现签名验证与聚合。 关于什么是双线性映射,什么是椭圆曲线配对,会在以后章节中陆续介绍。

BLS签名过程

准备阶段

和其他一样,秘密选取随机数字作为私钥pk,计算公钥P = pk × G,待签名的消息m。

签名与验证

  1. 将消息哈希H(m)映射到曲线上的点,记为q
  2. 将结果点乘以私钥得到签名: S = pk × q
  3. 验证签名: 按照步骤1同样计算出映射到曲线点q,检验 e(P, q) = e(G, S)

为什么可以这样验证?函数e是什么? 这里就用到了上面略过的曲线配对函数,简介如下: 有一个(或一种)特殊的函数记为e,它可以接受输入一条(或两条不同)曲线上两点P和Q,输出至一个数字,如下式:

e(P, Q) → n

之所以说这个函数特殊,是因为它有一些特殊性质。例如我们有一个数x和两点P和Q,无论哪一个点乘以这个数字,函数结果相同即: e(x P, Q) = e(P, x Q) 更进一步: e(a P, b Q) = e(P, ab Q) = e(ab P, Q) = e(P, Q)^(ab)

当然还有其他性质,但是对于我们用来验证签名,主要用到以上性质。

要验证签名: e(P, q) = e(pk G, q) = e (pk G, q) = e (G, pk * q) = e (G, S)

有了单个签名,我们再来看下聚合签名。

BLS聚合签名

区块链应用场景下,通常用于压缩区块内交易的签名大小,假设我们有一个包含10笔交易的区块,每笔交易i有自己的签名$S_i$、公钥$P_i$以及一个签名消息为$m_i$。

聚合签名是将区块中所有交易签名的打包成一个签名,同时验证所有交易的签名正确性(之前介绍过Schnorr聚合签名,于此类似)。 令最终签名结果为S, $S =S_1 +S2 + ... +S{10}$

要验证区块所有交易签名,需检查下式成立: $e(G, S) = e(P_1,q_1)e(P_2,q_2)...e(P{10},q{10})$ 推导如下: $e(G, S)=e(G,S_1 +S2 + ... +S{10})$ $=e(G, S_1)e(G, S_2)...e(G, S_{10})$ $=e(G,pk_1q1)...e(G,pk{10}q_{10})$ $=e(pk_1G,q1)...e(pk{10}G,q_{10})$ $=e(P_1,q_1)e(P_2,q2)...e(P{10},q_{10})$

这里依然使用了配对函数性质,仍需用到所有的公钥,并计算10次配对函数,交易量越多计算量越大,好处是,区块中的签名字节大大减少了。

小结

本文介紹了BLS签名简要过程及其原理,综上可以看出BLS签名过程没有使用随机数,签名结果具有确定性(与RSA,EdDSA类似,不同于ECDSA,Schnorr等)。其构建在具有双线性映射的配对函数之上。

本着知其然知其所以然的原则,下一节将继续介绍BLS签名的基石--双线性映射的和配对函数!

欢迎关注公众号:blocksight

相关阅读:

区块链中的数学 - 参与者 < 门限值t的密钥更新Amir Herzberg方案 Amir Herzberg改进方案

区块链中的数学 - Amir Herzberg动态密钥共享 Amir Herzberg动态密钥分享方案

区块链中的数学 - Feldman的可验证的密钥分享 Feldman可验证密钥分享方案

区块链中的数学 - Shamir密钥分享 Shamir原始的密钥分享方案

区块链中的数学 - 比特币使用的多签方式 比特币多签和Schnorr聚合签名

区块链中的数学 - 随机数和伪签名 随机数与伪签名构造

区块链中的数学 - EdDSA签名机制 EdDSA的发展及优点

区块链中的数学 - Ed25519签名 Ed25519签名

区块链中的数学-ElGamal算法 ElGamal算法签名及验证&实例演练

区块链中的数学-VRF基于ECC公钥体制的证明验证过程 基于椭圆曲线的VRF证明验证过程

Schorr签名与椭圆曲线 Schorr签名与椭圆曲线

区块链中的数学-Uniwap自动化做市商核心算法解析 Uniwap核心算法解析(中)

点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
blocksight
blocksight
江湖只有他的大名,没有他的介绍。