门罗币CrptoNote的环签名

1.涉及函数及参数

    : 每次交易时根据接收方的两个公钥,外加一个随机数,生成的一次性随机公钥

    : 所对应的私钥

    : keyImage,防双花标识

    : 待签名内容

   : ,共n个,用于生成的环的公钥集合

   : 哈希函数,如Keccak

   : Keccak后再转为椭圆曲线上的点

与如何生成会在其它文章介绍,以上定义具有如下数学关系:

                                      

2.准备

假设用于生成环的账户共有n个,其中真实签名账户所在序号为s

生成第一组随机数,共n个,记为

生成第二组随机数,共n-1个,记为

3.签名

1> 生成集合,共n个,记为

这样就得到n个,为了直观,将的值分别列出如下:

    \begin{cases}\begin{align}L_1  & =  q_1G+w_1P_1\\L_2 & = q_2G+w_2P_2\\ &\ \  \vdots\\L_{s-1} & = q_{s-1}G+w_{s-1}P_{s-1}\\L_{s} & = q_{s}G\\L_{s+1} & = q_{s+1}G+w_{s+1}P_{s+1}\\& \ \  \vdots\\L_{n} & = q_{n}G+w_{n}P_{n}\end{align}\end{cases}

2>生成集合,共n个,记为

这样就得到n个,为了直观,将的值分别列出如下:

    \begin{cases}\begin{align}R_1&= q_1H_p(P_1)+w_1I\\R_2&= q_2H_p(P_2)+w_2I\\ &\ \  \vdots\\R_{s-1}&= q_{s-1}H_p(P_{s-1})+w_{s-1}I\\R_{s}&= q_{s}H_p(P_{s})+w_{s}I\\R_{s+1}&= q_{s+1}H_p(P_{s+1})+w_{s+1}I\\& \ \  \vdots\\R_{n}&= q_{n}H_p(P_{n})+w_{n}I\end{align}\end{cases}

3>.组合出一个非交互式的挑战:

4>计算集合与集合:

    

 在这里要注意到所有的和是式(6)的挑战值,即

    

5>组合得到签名结果:

4.验签

1>计算与集合:

2>验证:

5.验证原理

1> 式(11)的右边,主要是集合与集合的值

 将(7)与(8)代入(10),又因为(参考式(1)、式(3)),同时(参考式(2))

我们能发现集合与集合在理论上应该是一样的,集合与集合在理论上也是一样的。

参考式(6),我们能发现等式(11)右边的值等于挑战

2> 式(11)的左边,是集合所有元素的和

根据式(7),我们知道

3> 输入与输出分析

签名时公开的参数为:真实签名对应公钥,即;待签名内容;

签名时需输入参数为:用于混淆签名的其它个公钥;真实签名对应私钥;

签名完成后公开的内容为:签名,注意中包含了防双花标识

6.问题

1> 在签名时能不能随便生成,而不用式(2)

答:不行,在验签的时候通不过,参考式(13),证明中将无法消去.

2> 没有正确的私钥能不能生成有效的环签名?

答:不行,不能成环。参考式(8)、(12)、(13),没有私钥,将无法使得中的,以及.

 参考

1. https://web.archive.org/web/20201028121818/https://cryptonote.org/whitepaper.pdf

2.https://blog.csdn.net/shangsongwww/article/details/90402326

3.https://zhuanlan.zhihu.com/p/45985430

你可能感兴趣的:(门罗币CrptoNote的环签名)