首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是证明ECDSA签名知识的安全方法吗?

这是证明ECDSA签名知识的安全方法吗?
EN

Cryptography用户
提问于 2020-05-30 14:58:16
回答 1查看 718关注 0票数 10

我认为我找到了一个很好的解决方案来证明ECDSA签名的知识,而没有透露它。简而言之,它包括使用点R作为生成器、s作为私钥和s*R的结果作为公钥生成ECDSA签名。因此,签名的r部分将被公开,但s部分仍然是保密的。

通常的ECDSA签名生成是在证明给定一个点Qa ( Qa = da*G )的情况下,您知道数字da,而不透露它。

为此,签名过程如下:

  • 步骤1.签名者计算一个新的R点,使R = k*G和其中的k是一个需要对每个新签名进行更改的时间。
  • 步骤2.签名者设置r,以便r是点R的x坐标。
  • 步骤3.签名者计算m以便使m = HASH(message)
  • 步骤4.签名者计算s以便使s = k^{-1}(m+da*r)
  • 最后,签名是(r,s)值。

核实签名的真实性是通过确保:

R = s^{-1}m*G + s^{-1}r*Qa

或者说:

s*R = m*G + r*Qa

那么,如何从签名中证明s部分的知识,比如s*R = m*G + r*Qa和这个,而不暴露s。这正是我们对Qa = da*G所做的!唯一的区别是,与使用点G作为生成器不同,我们使用R,而不是生成私钥da,而是使用s

因此,解决办法是揭示:

m
R
  • Qa'使Qa' = s*R
  • R',使得R' = k'*R中的k‘是生成的
  • s',使得s' = k'^{-1}(m'+r'*s)m'是您想要用派生的私钥s签名的消息的散列。

核查分两步进行:

  • 步骤1.验证Qa' = m*G + r*Qa
  • 步骤2.验证s'*R' = m'*R + r'*Qa'

这个过程容易被伪造吗?是否有其他已知的ECDSA签名知识的证据?

EN

回答 1

Cryptography用户

发布于 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。

不要认为我的回答是完整和准确的,这只是一般的抽象思维。我希望它能对你有所帮助。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/81089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档