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,所以采用暴力破解法破解私钥是根本不可行的。
为了让椭圆曲线更形象易理解,我们上面画的曲线都是连续的,实际用于加密的曲线都是有限域上定义的离散曲线。
随着椭圆曲线参数 a、 b,基点 G 的不同,椭圆曲线的加密性能也不一样。为了获得更高的安全性,对这些参数也有一些特定的要求。
我们会给一些常用的使用特定参数的椭圆曲线取一个名字。比如:美国国家标准与技术研究院(NIST)和美国国家安全局(NSA)推荐过的 secp256r1、secp521r1 等椭圆曲线(有些开源社区怀疑这些曲线中参数有可能被精心选取,导致曲线加密性能弱化),中国国家密码局认定的 SM2 国产密码算法。
比特币和以太坊使用的椭圆曲线是 secp256k1。该曲线的参数非常简单(人们相信不是为了设计一条弱曲线而被精心构造的):
( secp256k1 的 a、b 以及基点 G)
与传统的 RSA 算法相比,严格选定参数的 ECC 有更强的安全性,不易被攻击。
1)破解相同位数密钥所需能量:
有科学家通过计算攻破一个密码学算法需要多少能量并把它与水沸腾需要多少能量对比来衡量一个加密算法的安全性。
经过他的分析,破解一个228位的 RSA 密钥需要的能量少于煮沸一汤勺水的能量。而破解一个228位的椭圆曲线密钥需要足够煮沸地球上所有水的能量。
RSA 要达到一个安全的水平,需要一个至少2380位的密钥。此外 RSA 算法还有一个缺点就是随着密钥长度的增加,其安全性的增益是减少的。这意味着我们无法通过不断增加密钥长度来获得更高的安全性。
2)性能对比:
另一方面,使用椭圆曲线签名算法(ECDSA)做签名的性能也比 RSA 签名算法高很多。根据某些研究结果,在获得相同的安全性时,前者要比后者快20多倍。
椭圆曲线加密算法能够以更短的密钥获取与其他加密算法相同的安全性及更快的运算速度,所以 ECC 正在快速成为网络隐私和安全的首选解决方案。比特币等数字货币系统也纷纷使用 ECC 作为其安全性的基石。
下面我们简单说说椭圆曲线密码学在比特币中的用法。
另:在生成私钥 k 的过程中,确保 k 是真正随机生成的非常重要。曾经有些厂商的随机数生成算法因为有漏洞或者故意留有后门,造成了巨大的安全隐患。
http://toutiao.manqian.cn/wz_aJj096BV3Mx.html
ECC 构筑安全可靠的区块链的更多相关文章
- 深入解读EOS源代码之——区块链内核
EOS进入大众视野并且受到热议已经有一段时间了,各种热捧和争议过后,是时候让我们静下来搞清楚EOS到底是一个什么样的产品.本文从技术角度深入的分析EOS底层设计,从源代码入手,一层层揭开EOS区块链底 ...
- [区块链] 密码学——椭圆曲线密码算法(ECC)
今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不 ...
- Factom(公证通)--基于区块链的存证系统
Factom这个Solution在2014年的时候就已经推出了,现在已经2018年了,我才来写这一篇分析文章可能有些迟了,但是它是十分具有参考价值的.因为现阶段来开区块链虽然炒得火热--养猫.养狗.草 ...
- 非对称加密技术中,iFace [ 爱妃链 ]人脸密钥技术排名第三,将弥补区块链现有不足
最近,区块链领域,出现了一个比较热门技术的讨论,人脸密钥技术,可能大家还对这个名词感到很陌生,但是熟悉加密技术的技术大牛可能一听就能够明白大体的意思了,但是也正是这一熟悉而陌生的技术名词,掀起了区块链 ...
- 一、Bitcoin比特币与BlockChain区块链技术
一.比特币历史 2008 年 10 月 31 日,一个网名叫中本聪(英文翻译过来滴)的家伙发布比特币唯一的白皮书:<Bitcoin:A Peer-to-PeerElectronic Cash S ...
- 给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识
给本体ONT技术社区的第一封公开信-涉及到不少区块链技术知识 共识是区块链的核心机制,在一系列的区块链的发展历史当中,PoW/PoS/BFT等系列的共识算法都在各自的应用场景发挥了不同作用.在本体的第 ...
- 001-Bitcoin比特币与BlockChain区块链技术
一.比特币历史 2008 年 10 月 31 日,一个网名叫中本聪(英文翻译过来滴)的家伙发布比特币唯一的白皮书:<Bitcoin:A Peer-to-PeerElectronic Cash S ...
- 醒醒吧!互联网的真正未来不是AI,更不是VR,AR,而是区块链
这些力量并非命运,而是轨迹.他们提供的并不是我们将去向何方的预测,而是告诉我们,在不远的将来,我们会向那个方向前行,必然而然. ---凯文•凯利 文字与货币 人类在演化过程中,凭借智慧创造了无数事物, ...
- HyperLedger Fabric Introduction——区块链超级账本介绍
介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...
随机推荐
- MySQL语句给字段值加1
update tbl_moment_like set like_count = like_count + #{addLikes} where mid = #{mid}
- Scala入门到精通——第十五节 Case Class与模式匹配(二)
本节主要内容 模式匹配的类型 for控制结构中的模式匹配 option类型模式匹配 1. 模式的类型 1 常量模式 object ConstantPattern{ def main(args: Arr ...
- Windows 9立即公布了
Windows 9技术预览版可能于今晚在美国旧金山举办的Windows公布会上宣布.下一代的Windows名称最有可能是Windows或Windows 9.网友猜想也可能是WIndows X或Wind ...
- 【poj 1724】 ROADS 最短路(dijkstra+优先队列)
ROADS Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12436 Accepted: 4591 Description N ...
- 一个APP爆炸的时代,假设没有wifi
我们每天都离不开的微信,又传来了一个新消息.你造?微信公众平台新增了设备功能.眼下可支持可穿戴设备,将来呢,前景不可限量!能够想象,"后果"是我们越来越离不开微信,依附于它.这样的 ...
- 批量将网页转换成图片或PDF文档技巧分享
工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...
- 从基于 SQL 的 CURD 操作转移到基于语义 Web 的 CURD 操作
中文名称 CURD 含义 数据库技术中的缩写词 操作对象 一般的项目开发的各种参数 作用 用于处理数据的基本原子操作 它代表创建(Create).更新(Update).读取(Retrieve) ...
- 云栖社区> > 正文 永久免费SSL安全证书Letsencrypt安装使用方法
./letsencrypt-auto certonly --standalone --email admin@thing.com -d thing.com -d www.thing.com
- PCB NOSQL MongoDb MI流程指示数据存储结构
一.MI流程指示结构 二.产品型号树结构(即盲埋孔板型号结构) 三.MI流程指示UI 小结:1.MI流程指示使用的表非常之多(30多张表),存储的数据分散到各个表中,而NOSQL 一个产品型号一条记录 ...
- Potted Flower(线段树+dp)
http://poj.org/problem?id=2750 题意:在一个圈中取若干个相邻的数,求他们的最大序列和.不能够同时取所有的数. 看了一篇解题报告写的很详细..http://blog.csd ...