知识库详情
知识库

以“词条释义”的形式对比特币区块链技术中经常涉及的术语及基本概念进行专业化的阐释和解读。

Secp256k1
返回上级
BSV区块链编辑 2022-04-14 17:31 431

secp256k1指的是比特币公钥密码学中使用的椭圆曲线的参数,它的定义在有效密码学标准(Standards for Efficient Cryptography,SEC)中,参考Certicom Research:http://www.secg.org/sec2-v2.pdf。目前比特币中使用的是secp256k1和ECDSA算法。

在比特币之前,secp256k1几乎从未被使用过,但由于它具有几个不错的特性,目前正变得越来越受欢迎。大多数常用的曲线都具有随机结构,但secp256k1是以一种特殊的,非随机的方式构建的,因此可以实现高效的计算。如果实现充分优化,它通常比其它曲线的计算速度快30%以上。此外,与流行的NIST曲线不同,secp256k1的常数是以可预测的方式选择的,这显著降低了曲线创建者将任何类型的后门软件插入曲线的可能性。

 

这是在实数域上, 椭圆曲线secp256k1:y2 = x3 + 7 的图像。请注意,因为实际上secp256k1是在域Zp,上定义的,所以它的图实际上看起来像随机散点,而不像上图所示的那样。

 

技术细节

以下内容摘自《有效密码学标准》:

椭圆曲线在Fp上的主参数与 Koblitz 曲线 secp256k1 相关联,secp256k1由六元组 T = (p,a,b,G,n,h) 定义,其中有限域 Fp 定义为:

  • p= FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
  • = 2256– 232 – 29 – 28 – 27 – 26 – 24 – 1

曲线  Ey2 = x3+ax+b  在 Fp 上定义为:

  • a= 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  • b= 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000007

压缩形式的基点G为:

  • G= 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798

未压缩的形式是:

  • G= 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

最后G的阶n和辅因子是:

  • n= FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
  • h= 01

 

secp256k1的属性

  • secp256k1具有特征值p,它定义在素数域ℤp上。其它一些常用的曲线具有特征值2,并且是在二进制伽罗瓦域GF(2n)上定义的,但secp256k1不是。
  • 由于常数项a为零,故曲线方程中的ax项始终为零,因此曲线方程可化为y2= x3 + 7
比特币协议
创世区块
Coinbase
区块
区块哈希算法
工作量证明(PoW)
区块哈希目标值
区块补贴
挖矿
中本聪共识
难度
区块重组
孤块
比特币单位:聪
比特币协议
BSV化名协议(BSVAlias)
SHA-256
RIPEMD-160
签名标识
矿工补贴
区块时间戳
Secp256k1
传统签名算法
版本握手