我已经实现了一个红宝石代码,我在这里生成私钥和公钥,如下所示。
然而,我很少读到关于数字减影技术的[1]文章,以及为什么不应该使用它。我不擅长密码学。但仍然想知道我的实现是否容易恢复公钥/私钥?
$group = ECDSA::Group::Secp256k1
$private_key = 1 + SecureRandom.random_number($group.order - 1)
$public_key = $group.generator.multiply_by_scalar($private_key)
发布于 2018-06-28 02:19:05
您的混淆似乎是在DSA、离散签名算法和椭圆曲线变体ECDSA之间。你所指出的问题的答案似乎已经区分了这两种情况,这个答案不会再重复。
对于Koblitz曲线(如SECP256K1 ),256位的密钥大小被认为是安全的.。因此,正确使用的<#>if在涉及到所使用的算法和密钥大小时,显示的代码是安全的。使用坏的随机数发生器来进行ECDSA签名是众所周知的,它会导致关键材料的灾难性损失.。
备注:
发布于 2018-06-28 03:39:05
Ruby代码中的数学原理是可以的:它的目标是在范围$$中生成私钥,然后生成相应的公钥,用于椭圆曲线secp256k1 (例如,由比特币的ECDSA签名使用)。据信,这提供了近128位的安全性,十年来都很好。
它的安全性主要取决于运行代码的计算机的完整性、使用私钥的谨慎程度以及SecureRandom.random_number
的质量。
在链接的问题中讨论的问题是在某些情况下被废弃的DSA (不是ECDSA),因为
与问题的代码最接近的共同点是,如果SecureRandom.random_number
不安全,那么所做的事情就不安全了。
https://crypto.stackexchange.com/questions/60366
复制相似问题