对于曲线,secp256k1素数模为2^{256}-2^{32}-977,阶数较小,但具有近一半的起始位集。如果我把号码画成私钥,它必须少于订单。所有的场运算都是模素数,这意味着它们必须小于模,但可以是>=阶?(或者不是?)公共要害点的坐标会不会超过秩序?一个非常有趣的例子是签名和验证:在伪代码中:来自nayuki图书馆是模序。
* if (nonce outside range [1, order-1]) return false
* p = nonce * G
* r = p.x % order
* if (r == 0) return false
* s = nonce^-1 * (msgHash + r * privateKey) % order
* if (s == 0) return false
* s = min(s, order - s)这意味着,操作已经完成,首先是模模p,下一个模阶?
发布于 2020-11-20 16:09:36
是的,外地行动可能涉及比订单更大的数字。公开的关键点坐标可能超过命令。
协议中处理标量的部分处理曲线顺序,而处理椭圆曲线点的部分处理素数模。
有时,正如您所指出的,这些域之间有一些信息“交叉”:主要情况是在ECDSA协议中,在从X坐标获得的r值中,并降低了在计算s中输入的顺序。
发布于 2020-11-20 16:09:45
所有的场运算都是模素数,这意味着它们必须小于模,但可以是\ge阶?
是的,从理论上讲,这是可能发生的,但这是罕见的。在[0,p)中,当模p约化时,场中操纵的所有量通常都是一致随机的。因此,它们很少超过n。概率是关于1-n/p\approx2^{-127.65}的。也就是说,在实践中从来没有。
我不知道如何在未修改的密钥生成器或签名代码中,即使是根据基点的特殊形式,故意触发这一点。但如果需要的话,这很容易添加到点加/乘法测试代码中。它可以在某种程度上用于签名验证代码,尽管使用的公钥没有已知的匹配私钥或有效签名。
这意味着,操作都做好了,首先是模模p,然后是模序?
是。点坐标的算法是模块化的p,是场的顺序。乘法器、随机数和签名分量的算法是模n,椭圆曲线群阶。一个例外是当[0,p)中的X坐标减少模n时。如果坐标在[n,p)中,则存在编码错误的空间。ECDSA的定义排除了下限n,但(n,p)是有效的。
https://crypto.stackexchange.com/questions/86328
复制相似问题