首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >secp256k1素数vs阶

secp256k1素数vs阶
EN

Cryptography用户
提问于 2020-11-20 15:48:03
回答 2查看 806关注 0票数 1

对于曲线,secp256k1素数模为2^{256}-2^{32}-977,阶数较小,但具有近一半的起始位集。如果我把号码画成私钥,它必须少于订单。所有的场运算都是模素数,这意味着它们必须小于模,但可以是>=阶?(或者不是?)公共要害点的坐标会不会超过秩序?一个非常有趣的例子是签名和验证:在伪代码中:来自nayuki图书馆是模序。

代码语言:javascript
复制
 * 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,下一个模阶?

EN

回答 2

Cryptography用户

发布于 2020-11-20 16:09:36

是的,外地行动可能涉及比订单更大的数字。公开的关键点坐标可能超过命令。

协议中处理标量的部分处理曲线顺序,而处理椭圆曲线点的部分处理素数模。

有时,正如您所指出的,这些域之间有一些信息“交叉”:主要情况是在ECDSA协议中,在从X坐标获得的r值中,并降低了在计算s中输入的顺序。

票数 2
EN

Cryptography用户

发布于 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)是有效的。

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/86328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档