指南:关于secp256k1、ECDH、ECDSA

在密钥交换中使用ECDH,在数字签名中使用ECDSA,secp256k1 曲线已被证明可以在密钥交换和 RSA 签名中取代 Diffie-Hellman 方法。

微信图片_20221214142213.jpg

如果不是中本聪,你可能永远不会听说secp256k1椭圆曲线密码学(ECC)方法。但是,中本聪用它来获取私钥,然后生成一个公共标识符。

采用比特币的核心是使用ECDSA(椭圆曲线数字签名算法),并且可以通过公共比特币标识符来验证交易。secp256k1标准已发布:https://www.secg.org/sec2-v2.pdf

这是椭圆曲线的Weierstrass形式,并使用:

y ²= +7 (mod p)

它的基点为 g=(0x79be667ef9dcb … 959f2815b16f81798, 0x483ada77 … 8ffb10d4b8) 和一个质数 ²²⁵⁶−²³²−²⁹−²⁸−²⁷−²⁶−²⁴−1。曲线的阶数为n =0xfffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141。

总的来说,我们有一个私钥a,然后产生一个公钥aG。对于secp256k1,我们有一个256位的私钥值和一个512位的公钥值(这是椭圆曲线上的一个点)。

为什么是secp而不是NIST?

谁知道为什么中本聪选择了secp256k1曲线而不是NIST定义的secp256k1曲线。许多人质疑NIST和NSA之间的密切关系,以及在曲线中插入后门的可能性。因此,也许中本聪选择secp256k1就是出于这个原因。

secp256k1的要点

椭圆曲线上的点并不总是给出一个有效的x坐标。同样,每个有效的x坐标值都有两个点:

带有 secp256k1 的蒙哥马利阶梯

椭圆曲线密码学之所以快速,是因为它能够将一个点(G)乘以一个标量值(通常是私钥)来得到aG。因为有蒙哥马利阶梯,所以是快速的:

  • 蒙哥马利阶梯在固定时间内计算kG。计算secp256k1 的kG

制图

椭圆曲线在它的模拟中是美丽的,但在离散时指向:

  • 绘制 y² = x ³+7(mod p )

点乘法

椭圆曲线密码的核心,是我们执行点乘法:

密钥生成

椭圆曲线密码学主要关注数字签名过程,我们生成一个私钥(sk)和一个公钥(pk)。密钥对定义如下:

带有 secp256k1 的 ECDH

除数字签名外,椭圆曲线方法也用于密钥交换:

ECDSA

比特币和以太坊信任的核心部分是使用 ECDSA 签名:

但需要谨慎对待:

公钥的大小是多少?

由于公钥是一个点,在其最纯粹的形式中,我们有一个512位的公钥,它由256位的x坐标和256位的y坐标组成。但是,其实也可以压缩它,因为我们可以很容易地从x坐标推导出y坐标。最后,只有两个可能的y坐标,所以我们要做的就是记录它是奇数还是偶数,然后用一个标识符和x坐标压缩这个点:

02、03 还是 04?那么什么是压缩和未压缩的公钥?https://asecuritysite.com/ecc/js_ethereum2

结论

在密钥交换中使用ECDH,在数字签名中使用ECDSA,secp256k1 曲线已被证明可以在密钥交换和 RSA 签名中取代 Diffie-Hellman 方法。

Source:https://medium.com/asecuritysite-when-bob-met-alice/the-bluffers-guide-to-secp256k1-when-satoshi-said-goodbye-to-pki-bad327c4f079

关于

ChinaDeFi - ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。

本文首发于:https://mp.weixin.qq.com/s/Jb-z7G9yJxwBGS6Y7gfKww

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ChinaDeFi 去中心化金融社区
ChinaDeFi 去中心化金融社区
ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。