ECC 构筑安全可靠的区块链

现在很多基于区块链技术的数字货币系统,比如:比特币和以太坊,它们都使用了椭圆曲线密码学(ECC, Elliptic Curve Cryptography)来保证货币的安全性。

ECC 是一种公开密钥密码学,又称为非对称密码学。在这种密码学中,需要产生一对密钥。其中一个密钥称为私钥,需要保密;另一个密钥称为公钥,是可以公开让别人知道的。

私钥和公钥在数学上的关系是不可逆的,也就是通过某个数学函数,我们可以私钥计算出公钥,但是不能从公钥反向推导出私钥(或者说从计算上是不可行的)。

非对称加密算法

椭圆曲线加密算法对应的数学函数是椭圆曲线乘法,而另一种广泛使用的非对称加密算法 RSA (由三个发明人姓氏的开头字母组成)对应的数学函数是极大整数的因式分解。

与对称密码学使用相同的密钥进行加解密不同,非对称密码学有一个有用的特性:如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。

椭圆曲线的运算

一听说椭圆曲线,很多人会凭直觉认为这条数学曲线像个椭圆,其实不然。椭圆曲线因为用二元三次方程y2= x3+ ax + b来表示,类似椭圆周长计算方程而得名。以下是比特币的椭圆曲线图,是不是一点也不像椭圆:

椭圆周长方程

椭圆曲线上点的加法定义:任意取椭圆曲线上两点 A、C (若 A、C 两点重合,则做 A 点的切线)做直线交于椭圆曲线的另一点 D',过 D'做 y 轴的平行线交于 D。在这里我们规定 A+C=D。

k 个相同的点 P 相加,我们记作 kP。如下图:P+P+P = 2P+P = 3P。

如果我们定义K=kG, k 为整数,G 为椭圆曲线上的一个点,该等式就是表示 k 个 G 点相加或 k 乘以G 得到的结果为点 K,K 也为椭圆曲线上的一个点。

我们可以用这个等式中的k 作为私钥,而结果点K 作为公钥G 为该椭圆曲线的基点,和参数 a,b 都是公开的

已知整数 k 和基点 G,根据椭圆曲线加法法则,推算出点 K 是非常容易的,因为存在快速算法可以将计算复杂度降低到O(logk)

私钥推导出公钥的过程是不可逆的,即现在数学上还没有有效的方法可以从基点 G 和点 K 推算出整数 k。如果使用遍历法来寻找整数 k,其计算复杂度为O(k)。在实际使用时,整数 k 会取一个非常大的值。

比如: k 为一个78位的十进制数,由私钥推算出公钥的计算复杂度为O(78),用遍历法从公钥找出私钥的计算复杂度为O(1078),而宇宙中已知的原子总数大概为1080,所以采用暴力破解法破解私钥是根本不可行的。

区块链中的椭圆曲线: secp256k1

为了让椭圆曲线更形象易理解,我们上面画的曲线都是连续的,实际用于加密的曲线都是有限域上定义的离散曲线。

随着椭圆曲线参数 a、 b,基点 G的不同,椭圆曲线的加密性能也不一样。为了获得更高的安全性,对这些参数也有一些特定的要求。

我们会给一些常用的使用特定参数的椭圆曲线取一个名字。比如:美国国家标准与技术研究院(NIST)和美国国家安全局(NSA)推荐过的 secp256r1、secp521r1 等椭圆曲线(有些开源社区怀疑这些曲线中参数有可能被精心选取,导致曲线加密性能弱化),中国国家密码局认定的 SM2 国产密码算法。

比特币和以太坊使用的椭圆曲线是 secp256k1。该曲线的参数非常简单(人们相信不是为了设计一条弱曲线而被精心构造的):

( secp256k1 的 a、b 以及基点 G)

ECC 的安全性

与传统的 RSA 算法相比,严格选定参数的 ECC 有更强的安全性,不易被攻击。

1)破解相同位数密钥所需能量:

有科学家通过计算攻破一个密码学算法需要多少能量并把它与水沸腾需要多少能量对比来衡量一个加密算法的安全性。

经过他的分析,破解一个228位的 RSA 密钥需要的能量少于煮沸一汤勺水的能量。而破解一个228位的椭圆曲线密钥需要足够煮沸地球上所有水的能量。

RSA 要达到一个安全的水平,需要一个至少2380位的密钥。此外RSA 算法还有一个缺点就是随着密钥长度的增加,其安全性的增益是减少的。这意味着我们无法通过不断增加密钥长度来获得更高的安全性。

2)性能对比:

另一方面,使用椭圆曲线签名算法(ECDSA)做签名的性能也比 RSA 签名算法高很多。根据某些研究结果,在获得相同的安全性时,前者要比后者快20多倍。

椭圆曲线加密算法能够以更短的密钥获取与其他加密算法相同的安全性及更快的运算速度,所以 ECC 正在快速成为网络隐私和安全的首选解决方案。比特币等数字货币系统也纷纷使用 ECC 作为其安全性的基石。

区块链中的应用

下面我们简单说说椭圆曲线密码学在比特币中的用法。

在比特币中,用户生成一个随机整数 k (256位二进制数)作为其账户私钥,而用对应的公钥 K(K=kG) 的哈希值作为其账户的比特币地址

(私钥与地址的关系)

用户需要使用其账户比特币地址上的货币时,只需要提供一个用其私钥对地址金额等信息计算出的签名和对应的公钥。其他比特币用户就可以在只知道该用户公钥的情况,验证该签名是否有效,从而判断该用户是否真正拥有该地址上的货币。

攻击者因为无法通过其公钥或比特币地址来推算出私钥,也就无法伪造出一个有效的签名来盗用其账户上的货币。

另:在生成私钥 k 的过程中,确保 k 是真正随机生成的非常重要。曾经有些厂商的随机数生成算法因为有漏洞或者故意留有后门,造成了巨大的安全隐患。

本文作者:肖诗源(点融黑帮),现就职于点融网工程部区块链团队。华中科技大学博士毕业,在美国国家标准与技术研究院(NIST)做过短期访问学者,后在爱立信工作10年,获批8项专利。喜欢旅游和科幻电影。

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

推荐阅读更多精彩内容

  • 〇、序言 货币由于其天然属性决定了其与安全不可分割的联系,从最早的金库、保险柜、镖局到后来的ATM机、运钞车;从存...
    怒马2048阅读 38,438评论 4 79
  • 在比特币中,经常出现三个词:私钥,公钥和地址。他们是什么意思呢?他们之间又有什么样的关系呢?搞清楚他们之间的关系和...
    姜家志阅读 44,164评论 3 48
  • 我第一次见到小刘子是在2012年的夏天。 刚从西南飘到山东的我,显然还没有适应北方的一切,干燥的空气让我嗓子难受,...
    十七分可爱阅读 465评论 0 2
  • 随着雨声,安静地看着… 假如没有你——雨,这绿润的样子怕是没法看到了。这天呀,怕是也无法知道它是生气了还是在生着闷...
    叶纸an阅读 205评论 0 0
  • 这是部电影《他是龙》,讲述一个公爵的小女儿米拉被恶龙掳走后,唤醒了恶龙的人性,最终和龙相爱的故事。 在那个久远的时...
    瑜心佳阅读 516评论 0 0