据我所知,公钥不公开私钥。这不是问题所在。
问题是:给定一个EC公钥,可以导出不同的、但看似合理的、实用的私钥来匹配公钥吗?
换言之:
在基本算术中,如果您知道a x b = c,并且知道任何两个变量,那么您可以计算第三个变量。但是在ECC中,我们有一个公钥q、一个众所周知的点G和一个私有数字d。公钥由CreateBasePointMultiplier().Multiply(parameters.G,q= ECPoint d);从私钥派生而来。我必须假定Multiply是一种特殊的乘法形式,因此了解q和G并不会导致了解d。也许它实际上是在有限的域上循环多次,或者类似的事情。但是,是否可以选择不同的私钥,从而产生相同的公钥?
换句话说,具体来说,让Alice和Bob都有ECDH键盘,并交换公钥。它们都会记住对方的公钥,以便稍后进行身份验证。当有人对爱丽丝说“我是鲍勃,这是我的公钥”时,爱丽丝确认了公钥与她记忆中的匹配,并对他提出了质疑,“好吧,证明它。这是我的(爱丽丝)公钥。用它得到我们共享的秘密,然后HMAC签署以下挑战。把结果发回给我,作为挑战的回应。如果你能这样做,你必须知道与公开的公钥对应的私钥。”Eve能否捕获Bob的公钥,然后派生一些不同的私钥来对应它,然后模仿Bob说:“我是Bob,这是我的公钥。”即使夏娃没有鲍勃的私钥,她也能生产出与鲍勃的公钥兼容的其他私钥?
发布于 2014-07-19 14:50:32
我显然不理解ECC背后的数学,但我很确定提到的Multiply不像常规乘法那么简单,也不像绕有限域多次一样简单。因为:
当Alice和Bob交换ECDH公钥,然后各自执行DeriveKeyMaterial()或CalculateAgreement()时,结果应该是Alice和Bob都知道的共享秘密,而任何evesdropper都不知道。
如果夏娃有可能从鲍勃的公钥中得到任何可信且实用的私钥(甚至与鲍勃的私钥不同),那么夏娃将能够从DeriveKeyMaterial()或CalculateAgreement()那里得到同样的结果,这意味着Eve能够发现Alice &Bob的共享秘密,这被认为是不可信的。如果这个属性不存在,那么ECDH就会被完全破坏。
发布于 2014-07-19 16:45:02
Eve能否捕获Bob的公钥,然后派生一些不同的私钥来对应它,然后模仿Bob说:“我是Bob,这是我的公钥。”即使夏娃没有鲍勃的私钥,她也能生产出与鲍勃的公钥兼容的其他私钥?
不,除非公钥系统坏了。
在许多公钥系统中,正好有一个与Bob的公钥相对应的私钥,即私钥Bob知道。这就是我所知道的RSA和ECC系统的情况。这意味着没有其他与Bob的公钥兼容的私钥,Alice可以找到。
使用基于散列的签名,比如Lamport签名和Merkle树,可以有多个与公钥匹配的私钥(第二个预图像)。然而,即使在那里知道另一个匹配的私钥将允许您伪造签名,所以如果您能够找到它们,系统显然会被破坏。如果使用强散列函数,则不能。
发布于 2020-02-14 04:20:21
在实际用于密码学的曲线中,不相信任何公钥对应于多个私钥。您可以有意地创建一条曲线,其参数与此约定不同(例如,您可以使P不是素数,或者您可以选择一个实际不在曲线上的基点)。但是,为密码学选择的曲线是精心选择的,以避免这一点。公钥可能会放弃一些关于私钥的信息,从而使其发现更加可行。例如,可以确定曲线上的一个点(公钥是该点)是偶数的基点加法还是奇数的结果。但是,如果这种决心是可能的,目前还没有人知道如何做出这种决定。在ECC中搜索漏洞的人面临的问题与试图破解ECC的人面临的问题相同--在每个可能的密钥对上测试一个可能的漏洞是不可行的。
https://crypto.stackexchange.com/questions/18226
复制相似问题