我认为我找到了一个很好的解决方案来证明ECDSA签名的知识,而没有透露它。简而言之,它包括使用点R作为生成器、s作为私钥和s*R的结果作为公钥生成ECDSA签名。因此,签名的r部分将被公开,但s部分仍然是保密的。
通常的ECDSA签名生成是在证明给定一个点Qa ( Qa = da*G )的情况下,您知道数字da,而不透露它。
为此,签名过程如下:
核实签名的真实性是通过确保:
或者说:
那么,如何从签名中证明s部分的知识,比如s*R = m*G + r*Qa和这个,而不暴露s。这正是我们对Qa = da*G所做的!唯一的区别是,与使用点G作为生成器不同,我们使用R,而不是生成私钥da,而是使用s
因此,解决办法是揭示:
核查分两步进行:
这个过程容易被伪造吗?是否有其他已知的ECDSA签名知识的证据?
发布于 2020-06-08 13:11:26
任何EU-CMA-安全签名确实是对本文档或私钥签名的知识证明。所以,您所做的就是使用第二个ECDSA签名作为对离散对数s知识的证明。这完全是有道理的,我看不出有什么攻击。在此之间,作为s的证明,您还可以使用Schnorr签名或Schnorr -它在随机预言模型中具有零知识的属性(而DSA没有这种属性)。同样,这种以这种方式链接签名的思想也被用于基于身份的Galindo签名,其中2个Schnorr签名是链式的。
但我不能用安全的证据完全回答你。首先,我们需要一个严格的攻击者的正式模型。这种密码原语(签名知识的证明)不是很广泛,也很少被考虑。但是,有些作品专门针对这个问题,您可以在这里查看:https://link.springer.com/chapter/10.1007/978-3-540-47942-0_9#。Aldo,DSA签名在一般情况下安全性较差(与Schnorr相比)。例如,如果您以这种方式使用Schnorr签名,我会确切地说它是安全的(因为基于Galinda身份的方案是可证明的安全的)。而且,该解决方案在实际应用中是安全的,但由于缺乏ZKP性质,所以研究者们大多致力于其他的建设,以提供ZKP。
不要认为我的回答是完整和准确的,这只是一般的抽象思维。我希望它能对你有所帮助。
https://crypto.stackexchange.com/questions/81089
复制相似问题