门罗币CrptoNote的环签名
1.涉及函数及参数
: 每次交易时根据接收方的两个公钥,外加一个随机数,生成的一次性随机公钥
: 所对应的私钥
: keyImage,防双花标识
: 待签名内容
: ,共n个,用于生成的环的公钥集合
: 哈希函数,如Keccak
: Keccak后再转为椭圆曲线上的点
与如何生成会在其它文章介绍,以上定义具有如下数学关系:
2.准备
假设用于生成环的账户共有n个,其中真实签名账户所在序号为s
生成第一组随机数,共n个,记为
生成第二组随机数,共n-1个,记为
3.签名
1> 生成集合,共n个,记为
这样就得到n个,为了直观,将的值分别列出如下:
2>生成集合,共n个,记为
这样就得到n个,为了直观,将的值分别列出如下:
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