我一直在研究椭圆曲线密码学,并一直试图了解我如何能够和不能使用它。请注意,这是一个业余项目,我不会为任何严肃的事情做我自己的密码系统。
我正在尝试创建一个椭圆曲线密钥对,它依赖于其他密码函数的输出。据我所知,ECC中的密钥是基于曲线上的一个点,而不是使用一对素数的RSA。
这是否意味着我可以使用长度正确的随机位(或散列输出)作为曲线(如Curve25519 )的私钥?
我很难找到关于这个主题的信息,但我知道即将发布的系统SQRL (https://www.grc.com/sqrl/crypto.htm,“SQRL的底层密码技术”)提到了使用这种系统。如果我还不明白,这是怎么回事?
发布于 2018-03-15 22:12:25
您必须为特定的答案指定一个特定的密码系统。通常,在基于椭圆曲线的密码体制中,秘密密钥涉及一个标量,它是一个整数,它位于曲线上一个群的点数范围内,可能受到一些约束,并且从所有可能的可能性中随机选择。如果你用一个足够熵的秘密来得到它,然后把它压缩到正确的范围,那就没问题了。
在Diffie-Hellman函数X25519中,秘密密钥传统上是由256位组成的任意字符串,其中有些位被屏蔽,因此Curve25519标量是在$2^{254}$和$2^{255}$之间的8倍的均匀随机选择,原因有两个:[1],[2]。
在签名方案Ed25519中,存在针对不同应用程序和性能约束的几种不同形式的秘密密钥。出于兼容性原因,通常在被解释为edwards25519标量的比特上执行相同的掩蔽操作,尽管在更奇异的应用程序中有其他问题。
在素数阶曲线群(如NISTP-256或secp256k1 )上的ECDH和ECDSA中,密钥通常是低于该组阶的正整数的规范编码,这必然也是标准基点的顺序。大多数ECDSA是在具有素数阶且不考虑扭曲安全性的曲线群上完成的(例如,NISTP-224中二次扭转阶的最大素数因子只有118位,在ECDLP可行性的范围内),与X25519和Ed25519不同,它们工作在辅助因子8的曲线组中,其二次扭转具有协因数4。
https://crypto.stackexchange.com/questions/56521
复制相似问题