比特币/以太坊的关键机制——secp256k1

比特币使用基于椭圆曲线加密的椭圆曲线数字签名算法(ECDSA)。特定的椭圆曲线称为secp256k1,即曲线

y² = x³ + 7

有限域 (又名伽罗瓦域),以简短描述。

椭圆曲线图y ^ 2 = x ^ 3 + 7

在平面中的椭圆曲线上的加法在几何上根据线截取曲线的位置来定义。我们不会在这里讨论几何,除了说它归结为一组涉及实数的方程。但我们并没有在实数域上去工作,而是在有限域。

有限场模量

我们的想法是采用由平面中的几何体激发的方程式,然后使用这些方程式来定义当您不在实数上但在不同的场上工作时的加法。在的情况下secp256k1,该字段是整数模的有限域p,其中

p = 2 256 - 2 32 - 977

这里选择p相对接近2 256。它不是小于2 256的最大素数; p和2 256之间有很多素数。其他因素也同样影响着选择p。请注意,我们不是在整数mod p本身工作,而是在一个阿贝尔中,其加法法则由整数mod p上的椭圆曲线定义 。

更新:这是关于secp256k1的姐妹曲线的另一篇文章,secp256r1,另一条曲线模数为256位素数,但结构不同。)

基点

接下来,我们 在椭圆曲线上选择一个基点g。定义secp256k1 的 标准g

0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798

以“压缩形式”或

040x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8

以“未压缩的形式”。

基点是椭圆曲线上特别选择的点,因此它是一 数字mod p,而不是单个数字。如何从这些压缩或未压缩的表单中提取 xy

压缩形式

压缩的 形式只给 x,你就应该解决 y。在 未压缩的 形式为您提供了 xy。但是,这些数字是略微编码的。在压缩形式中,字符串以“o2”或“o3”开头,字符串的其余部分是 x 的十六进制表示 。将满足 y 的两个值

y² = x³ + 7 mod p

并且“o2”或“03”告诉您选择哪一个。如果压缩形式以02开头,则选择最低有效位为偶数的根。如果压缩形式从03开始,则选择其最低有效位为奇数的根。(两个根将添加到 p,而 p是奇数,因此其中一个根将是偶数,一个将是奇数。)

未压缩的形式

未压缩的表单将始终以04开头。在此之后,按照 xy 连接在一起的十六进制表示形式 。

无论哪种情况,我们都有

x = 79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798

y = 483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8

我们可以使用一些Python代码验证这一点:

    x = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
    y = 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
    p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
    assert((y*y - x*x*x - 7) % p == 0)

椭圆曲线上的指数

从我们的基点 g 开始,将 kg 定义为 g 加到其自身 k 次。再次注意,这里的“加法”意义是椭圆曲线中的加法,而不是整数域 p 中的加法。椭圆曲线密码学的关键是可以有效地计算 kg,但是不能从 kg 乘积开始求解 k。您可以使用快速求幂算法计算 kg,但求解 k 需要计算离散对数。(这是ECDLP:椭圆曲线离散对数问题。)

为什么这称为“取幂”而不是“乘法”?椭圆曲线上的算术是可交换的,并且在交换(即阿贝尔)组中,组操作通常表示为加法。重复添加称为乘法。

但在一般群论中,群操作表示为乘法,并且群操作的重复应用称为取幂。使用通用术语“取幂”是常规的,即使在阿贝尔群体上,将其称为乘法更有意义。

通过取对数来撤消取幂,因此求解 k 的过程称为离散对数问题。椭圆曲线密码学的安全性取决于计算离散对数的难度。

计算安全性

为一组尺寸的解决离散对数问题的最佳算法 n 目前需要 O(√n) 操作。在我们的案例中,n 有多大 ?

选择基点 g 具有大的顺序,实际上它的顺序大约是2 256。具体来说, 用十六进制写的 g 的顺序是

n = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141。

这意味着我们得到大约256/2 = 128位的安全性,因为√(2 256)= 2 128

相关文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,333评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,812评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,016评论 0 246
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,293评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,650评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,788评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,003评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,741评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,462评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,681评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,168评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,528评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,169评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,119评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,846评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,719评论 2 274

推荐阅读更多精彩内容