BLS签名算法

BLS签名方案是一个基于双线性映射的密码学算法,它可以应用于可验证随机函数的设计,具有可验证性、随机性、唯一性、确定性。

记,e: G*G->G'为一个非退化的双线性映射,G和G'为素数r阶乘法群,根据双线性映射性质有e (g1^x, g2^y) = e (g1, g2)^(x * y)。BLS签名包括三个算法。

算法描述:

(1)密钥生成算法KeyGen:随机选取x in [0, r-1]作为私钥,sk=x,计算公钥pk = g^x,g是群G的生成元;

(2)签名算法Sign:消息m的签名为sign = h^x,h = Hash(m)

(3)验证算法Verify:验证者拥有G, g^x (pk), m 和 sign,验证e(sign, g)和e(Hash(m), pk)是否相等,如果相等那么签名验证通过;

 

证明过程:

由双线性映射性质有

        e (g1^x, g2^y) = e (g1, g2)^(x * y)

可得 

        e(sign, g) = e(h^x, g) = e(h, g)^x

        e(Hash(m), pk) = e(h, g^x) = e(h, g)^x

因此

        e(sign, g) = e(Hash(m), pk)

你可能感兴趣的:(区块链)