BLS配对签名方案
目录
方案概述
BLS是Boneh–Lynn–Shacham的简称,他们3个人在2003年提出了一个签名方法,因此以他们的名字命名。该签名基于双线性对,是为了解决多次签名多次验签的低效而提出的多次签名方案。
1. 方案可以将多次签名聚合(Aggregation),只用一次签名验证即可![1]
2. 该签名方案是常用的短签名方案。[2]
方案用于多个成员的组的签名中。
背景知识
这个方案的签名生成用到了椭圆曲线群(Elliptic Curve Group)的概念,验签用到了双线性对(Bilingual Pairing)的内容。
双线性对 e: G X G -> G_T
e表示一个非退化的可计算的双线性对。其中G, G_T是以素数r 为阶的群。g是群的生成元。BLS的签名是椭圆曲线群中的元素。
CDH难题,间隙群(gap group)
CDH难题,指 Computational Diffie-Hellman难题。对离散(离散很重要,通过mod实现)对数难题来说,等效于已知g,g^x和g^y计算g^(xy)。对椭圆曲线上的点乘运算,等效于已知aG,bG,G,求abG,其中G为基点.
间隙群,是指一个群,在这个群中,CDH问题是难解的,而DDH难题可以有效解决。(这一群的存在也说明,DDH的难度不超过CDH问题的难度)。
DDH难题的解法 [2]
首先,解决DDH难题等价于:(以离散对数为例)已知g^x,g^y,g^z,g,可以通过某种方式验证 z=xy。
后来发展,可以通过在双线性对上验证: e(g^x, g^y)=e(g, g^z) 来间接验证 z=xy. [2]【以下理解存疑】
具体地:通过使用双线性对的双线性性这一属性,使用(x+y+z)次。查看
e(g^x, g^y)= e(g, g)^[xy] ?= e(g.g^z)= e(g.g)^z
数学公式
S1: 密钥生成
选择私钥x 属于[0 ,r-1] 。r是群的阶数,一个大素数。 签名者保存私钥,发布公钥 g^x。
S2: 签名
m是要签名的消息,计算h=H(m),签名为 s=h^x。其中H为哈希算法。
S3: 验签
验证者已知 签名s, 公钥g^x,公共信息g ,e, 消息m
验证:e(s,g)= e(H(m) , g^x).
签名属性[2]
1. 简单的阈值签名
2. 签名聚合
3. 唯一性和确定性
参考文献:
[1]. https://github.com/okblockchainlab/okchain/wiki/BLS%E5%A4%9A%E9%87%8D%E7%AD%BE%E5%90%8D
[2]. https://en.wikipedia.org/wiki/Boneh%E2%80%93Lynn%E2%80%93Shacham
来源:CSDN
作者:豫秦草草
链接:https://blog.csdn.net/u010665790/article/details/103430277