Py学习  »  区块链

区块链 - Ring Signature 算法介绍

星想法 • 5 年前 • 432 次点击  

最近看的一些项目中,好多提及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三位密码学家首次提出了环签名算法。该算法的好处是环签名的发起者的身份隐藏,签名验证者只知道发起者是“环中”签名者的其中一个,但不能确定是哪一个。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/6vKzSpLCQF
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25310
 
432 次点击