区块链-Ring Signature 算法介绍

最近看的一些项目中,好多提及Ring Signature算法(环签名算法)。该算法的好处是环签名的发起者的身份隐藏,签名验证者只知道发起者是“环中”签名者的其中一个,但不能确定是哪一个。

2001年,Rivest,Shamir和Tauman三位密码学家首次提出了环签名算法。论文的下载地址:

https://link.springer.com/content/pdf/10.1007%2F3-540-45682-1_32.pdf

0)Trap-Door函数

Trap-Door函数指单向计算比较容易,反向计算非常困难的函数。比如RSA非对成加密函数就是一个Trap-Door函数。加密过程非常简单,但是,即使有公钥以及加密后数据,也很难推算出原始数据。也就是说,RSA算法,必须在知道私钥的前提下才能推算出原始数据。同理,椭圆曲线算法也是Trap-Door函数。

在论文中,Trap-Door函数用符号g表示。g-1是g的反函数。

1)签名过程

签名过程分为6步。假设需签名的消息为m,签名者的密钥是Ss,总共有r个签名者,他们的公钥分别是P1,P2,... Pr。签名者的编号是s。

a:选择对称加密的加密密钥。密钥为k,是签名消息的hash计算结果。对称加密算法用E符号表示:

b: 随机生成一个数v。

c:随机生成r-1个随机数(不包括签名者的其他签名者),分别是x1,x2,... x

r。并用Trap-Door函数(RSA加密函数进行加密)分别加密:

d:计算如下的方程,求出ys:

方程示意如下图所示:

Ck,v又称为combining function:计算过程如下:

也就是说,初始随机数v和随后的所有的签名者的加密信息叠加异或操作。

e:对于签名者,因为知道密钥,可以计算出ys对应的xs:

f:如下的数据序列,形成环签名信息(包括所有的公钥,v,以及所有的x)。

注意,所谓的环签名是在签名中采用了多个公钥,并不需要多个公钥的所有人参与签名。

2)验证过程

验证过程相对简单,只需要三步:

a:计算所有的加密结果:

b:获取对称加密密钥:

c:验证方程是否成立:

总结:2001年,Rivest,Shamir和Tauman三位密码学家首次提出了环签名算法。该算法的好处是环签名的发起者的身份隐藏,签名验证者只知道发起者是“环中”签名者的其中一个,但不能确定是哪一个。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181019G1XMXD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券