BLS签名

作者: 雪落无留痕 | 来源:发表于2021-04-15 23:47 被阅读0次

BLS签名由Dan Boneh提出,能够将区块中所有的签名组合成单个签名,签名者之间需要进行多轮通信,生成的签名为一个曲线点。

BLS签名需要用到两个新的结构:哈希到曲线(hashing to the curve)以及曲线配对 (curve pairing).

哈希到曲线

BLS签名中,需要稍微修改下哈希算法,可直接哈希到椭圆曲线, 最简单的方法是先对消息进行Hash, 并将结果当作 x 坐标。

曲线配对

双线性对是一种特殊的函数 ,取两个点 PQ, 映射到一个数字:
e(P,Q)\to n
双线性对的性如下:
e(a\cdot P,b\cdot Q)=e(P,Q)^{ab}

BLS签名

若私钥为sk, 公钥为 P=sk\cdot G, 要签名的消息为:m

为了计算签名,需要计算哈希到曲线H(m), 再乘以私钥得到签名:S=sk\cdot H(m)

签名验证:
e(P,H(m))=e(G,S)

BLS聚合签名

若一个区块包含1000笔交易,每个交易都有签名S_i, 公钥 P_im_i 消息。可以聚合签名:
S = S_1+S_2+\cdots+S_{1000}
要验证区块,需要检查下式是否成立:
e(G,S)=e(P_1, H(m_1))\cdot e(P_2,H(m_2))\cdots e(P_{1000},H(m_{1000}))
验证要知道所有的公钥并计算1001个配对函数。

n-of-n 多重签名

若使用多重签名地址,将使用不同的密钥签署相同的交易,可以将它们组合在一起,得到的签名为:S=S_1+S_2+S_3, 密钥P=P_1+P_2+P_3, 此时方程验证依然有效:
e(G,S)=e(P,H(m))
类似于Schnorr, 为了避免密钥免受攻击,每个联合签名者需要证明他们具有公钥的私钥,或者添加非线性元素,即:
S=a_1S_1+a_2S_2+a_3S_3\\ P=a_1P_1+a_2P_2+a_3P_3
签名和密钥的系数根据签名者的公钥和其它公钥确定:
a_i=H(P_i,{P_1,P_2,P_3})

m-of-n 多重签名

BLS构造(m,n)多重签名需要有一个设置阶段进行初始化过程. 下例假设(2,3)签名方案,可以推到(m,n)

初始设置

对于每个签名者 i , 其私钥sk_i 和公钥 P_i=sk_i\cdot G, 计算聚合的公钥为:

P=a_1\cdot P_1+a_2\cdot P_2+a_3\cdot P_3, a_i=H(P_i,{P_1,P_2,P_3})

每个签名者都需要对编号 i签名,聚合这些签名并保存下来:
MK_i=(a_1\cdot sk_1)H(P,i)+(a_2\cdot sk_2)H(P,i)+(a_3\cdot sk_3)H(P,i)
这个签名称为:成员密钥,将用来生成签名,并且:
e(G,MK_i)=e(P,H(P,i))

签名过程

假设用sk_1sk_3签署一笔交易,生成两个签名 S_1S_3:
S_1=sk_1\cdot H(P,m)+MK_1 \\ S_3=sk_3\cdot H(P,m)+MK_3
将他们相加得到单个签名和密钥:
(S',P')=(S_1+S_3, P_1+P_3)
要验证这签名,需要检查:
e(G, S')=e(P',H(P,m))\cdot e(P,H(P,1)+H(P,3))

结论

BLS可聚合签名,节省区块时间,但对于(m,n)多重签名,需要通信进行初始化过程, 并且采用双线性对会导致配对效率低下。

参考

https://eprint.iacr.org/2018/483.pdf
https://blog.csdn.net/BitTribeLab/article/details/102934972

相关文章

  • BLS签名

    BLS签名由Dan Boneh提出,能够将区块中所有的签名组合成单个签名,签名者之间需要进行多轮通信,生成的签名为...

  • 什么是 BLS 签名

    BLS 签名是一种可以实现签名聚合和密钥聚合的算法,可以将多个密钥聚合成一把密钥,将多个签名聚合成一个签名。 BL...

  • 区块链密码学

    1、群签名:以太坊使用BLS群签名 只有群中成员能够代表群体签名(群特性); 接收者可以用公钥验证群签名(验证简单...

  • BLS签名实现阈值签名的流程

    【原创说明】 BLS签名在英文文档介绍的比较多,但是很多讲得并不清楚,通常需要查看原有的论文,对应后学习,对一般的...

  • 英国BLS游学之旅

    从翻译材料到领取签证真是一个漫长而辛苦的时光,不过令人开心的是我们小分队每个人都通过了,不仅是我,每个孩子...

  • 基础生命支持~BLS

    从大学到实习再到培训,已经是第三次参加急救技能训练~ 今天学习的是国际版本基础生命支持(简称:BLS) 内容主要包...

  • 基础生命支持(BLS)

    我们医院几乎每年要求我们需要急救考试,还给每人最前沿标准的培训,比如基础生命支持(BLS),它是人心脏骤停后拯救生...

  • 英国BLS游学之旅3♥

    紧张而忙碌的周一度过了,由于这是来英国的第二周了,孩子们已经适应这边的学习节奏,我觉得她们过得还挺潇洒的,...

  • 7月21日黄金急救4分钟

    天天开心读书会第853次活动总结 基础生命支持,BLS 是 Basic Life Support的缩写,也...

  • Day2-幕布及liunx入门

    今天学习了幕布的使用方法及liunx入门 选修题目 a、bls -hl c1.查看liunx版本 cat /pro...

网友评论

      本文标题:BLS签名

      本文链接:https://www.haomeiwen.com/subject/nulslltx.html