根据设计,EdDSA需要一个b-bit字符串作为密钥k,在签名时,将其扩展为2b-bit string H(k),完成一些位旋转操作,并将前半部分用作签名中的私钥。[1]
该曲线将具有b-bit安全级别,并且可以在b \over 2中解决离散日志。
为什么EdDSA需要一个b-bit密钥,而不是只需要b \over 2-bit,而D8-bit似乎提供了与曲线本身相同的安全性?
发布于 2020-01-30 19:36:30
一个可能的原因(也可能是设计选择背后的原因)是为了避免多目标攻击。
考虑存在k公钥/私钥对的设置,攻击者的目标是找到这些私钥之一。攻击者不关心获取哪一个私钥;获取其中任何一个都是“胜利”。例如,攻击者希望通过恢复证书颁发机构的私钥来伪造X.509证书:将链中的任何私钥恢复到可信根CA集中的任何根CA即可。对b-bit种子的暴力攻击将以平均成本2^b/k成功(攻击者计算每个潜在b-bit种子的公钥,然后在目标集合中查找公钥;查找不涉及复杂的数学,与公钥计算相比,可以在“可忽略”的时间内完成)。如果b = 128和k是大的,那么这可以大大小于2^{128}。
从“学术”的角度来看,这意味着128位种子只能提供“64位安全”:如果有一组2^{64}目标,那么攻击成功的代价是2^{64},而辩护者集体只花费了2^{64}的努力。将种子大小提高到256位是防止这种学术中断的一种简单而廉价的方法。
发布于 2020-01-30 19:00:47
私钥与曲线的顺序大致相同的原因是,可能的公钥数量等于G生成的循环子群的顺序。
这种情况因曲线而异,但最终一个较短的私钥最终会将子群中的一些可能的元素排除在外,削弱密码。
在2^n/2中,DLP所能解决的事实是不相关的,因为攻击并不会强制使用键空间。它使用Pollard Rho。
的确,有些曲线产生的密钥空间比2^n (例如curve25519 )要小,而D3的辅助因素实际上导致了(2^n)/8的密钥空间,但为了简单和交叉兼容性,我们仍然使用32-byte键。图书馆将在必要时夹紧钥匙。
https://crypto.stackexchange.com/questions/77326
复制相似问题