区块链技术为什么不能脱离密码学而单独存在
扫描二维码
随时随地手机看文章
引言
关于中央第十八次集体学习时强调区块链技术的报道,行业媒体们已经给予了充分的重视。然而,人们却对两天之后的另一条重要报道,没有表现出应有的重视。
这条报道是,10月26日,十三届全国人大常委会第十四次会议26日下午表决通过《中华人民共和国密码法》,将自2020年1月1日起施行。
从中央开展对区块链技术的学习,在战略层面对区块链技术予以承认,到正式出台的密码法,偶然中也蕴含着必然。
区块链技术分布式、防篡改、可溯源的好处已经人尽皆知,但所谓万物相生,事实证明,区块链技术难以脱离密码学而单独存在,原因有二:
第一,与传统技术思路不同,区块链技术大大削弱了单一中心的控制力,各参与方的数据安全性离不开密码学的保护。比特币诞生已超过十年,在恰当的密码学的保障下,去中心化的比特币始终保持着较为平稳安全的运行。
第二,在实际应用中,许多参与节点不希望自己的数据被完全公开出来,因此不愿意数据上链,这显然限制了区块链技术的应用落地。如何维护链上数据的隐私性成为区块链应用的一大难题,密码学则大大有利于为这一点提供补充。
谈到区块链,就绕不开比特币,更加离不开密码学。本文旨在探讨以椭圆加密算法(以下简称ECC)为代表的密码学的由来、价值、现状,以及在未来量子计算机时代中密码学的前景。
从RSA到ECC
区块链最著名的应用莫过于比特币,而作为比特币的保镖,基于ECC的椭圆曲线数字签名算法(以下简称ECDSA)对区块链的价值不可谓不显著。可以说,ECC与区块链可谓休戚相关。在谈ECC之前,我们先介绍一下RSA算法。
密码本是二战影视剧有一个重要的题材。对交战国来说,国之重器不是大炮坦克,也不是金银钞票,甚至不是航母飞机,而是那个不太起眼的密码本。
1942年,太平洋海战重要的转折点——中途岛海战中,美军之所以取得胜利,一个重要的因素就是美军获得了日本的加密文件,并破译出日本即将攻击中途岛的重要情报。
1943年,日本联合舰队司令,海军大将山本五十六在视察部队时,座机被美军击落而毙命,直接原因就是通讯密码被美军破译。
二战前后,诸如此类的事例不胜枚举。即便到了冷战时期,破译密电也是美苏情报部门的一项主要工作。到了1977年,Rivest、Shamir和Adleman三位教授用名字的首字母命名一种新算法:RSA。不同于以往的对称加密需要厚厚的密码本,RSA算法属于非对称加密。所谓非对称加密,是指将秘钥分为公钥和私钥,公钥和私钥必须成对出现,不能单独生成。公钥任何人都可以知道,用以加密;私钥只有接受信息的人才能知道,用以解密。
RSA的诞生可谓历史性突破,堪称古典与现代密码学的分水岭。只要RSA的质数足够大,解密将会耗费巨大的算力和时间,短期内难以破解。
但所谓福祸相依,为了追求安全性,RSA需要非常大的质数作为基础,拉长秘钥会大大增加加密成本,降低速度。更要命的是,RSA算法在应对量子计算机的威胁时颇为力不从心。
此时,ECC应运而生。ECC于1985年由Koblitz和Miller两位教授发明。与RSA算法一样,ECC同样属于非对称加密,但ECC在使用中的便捷性和安全性大大强过RSA。
什么是ECC呢?可能大家对这一点很感兴趣。
我们定义平行线相交于无穷远点P∞,使平面上所有直线都统一为有唯一的交点,而区别于无穷远点的原来平面上的点为平常点。通过无穷远点和平常点我们可以引入射影平面的概念。
射影平面:平面上全体无穷远点与全体平常点构成射影平面。
而椭圆曲线,指的就是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合,且曲线上所有点都是非奇异的。
所谓非奇异,指的是曲线上任意一点的偏导数不能同时为0。
明白了椭圆曲线的由来,我们再来看椭圆曲线在密码学上应用的方案。首先面对的问题就是椭圆曲线是连续的,并不适合用于加密。因此,椭圆曲线密码学的第一要务就是把椭圆曲线定义在有限域上,(有限域Fp ,p为素数),并提出一条适于加密的曲线:y2=x3+ax+b (modp)。
相比起在商业中被广泛采用的RSA加密算法,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高级别的安全。
通过下图我们清楚的发现,160位ECC加密安全性相当于1024位RSA加密,而210位ECC加密安全性甚至相当于2048位RSA加密。ECC中256位数的密钥与RSA算法中3072位数密钥所提供的安全强度相同。
因此,ECC具备计算量更小,处理速度更快,占据存储空间更小的优点,在资源、算力有限的前提下,ECC比RSA具备显著的优势。这些优势已经使得ECC逐渐完成了对RSA的取代,成为了新一代的通用公钥加密算法。
如今,ECC早已无处不在:我们的第二代身份证都基于ECC,美国政府部门也用ECC加密内部通信,FireFox和Chrome浏览器、苹果的iMessage服务都使用ECC。
那么,ECC、ECDSA等密码技术在应用过程中有哪些值得关注的地方呢?另外,近期火热的“量子霸权”讲的又是什么,它会对密码学产生什么影响呢?
在后续的系列文章中,我们将会继续对其展开讨论。
推荐阅读:RSA的基本原理
我在此前的文章写道,密码学问题,本质上是数学问题。RSA算法自然也不例外,其原理并不复杂,几个数字即可讲明白。
我们先引入三个中学数学概念,质数,互质、取模。
质数:指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。比如,2、3、5、7…
互质:是指公约数只有1的两个数。比如,2和3,3和5,4和5均互质。
取模:指求余运算,运算符是mod,比如4 ÷ 3 = 1余1,所以,4mod 3 = 1。
在明白上述概念后,我们来看一组简单的RSA加密方案:
1、找到一组互质数,P和Q,相乘后得到N
2、将P和Q分别减去1,再次相乘,得到M
3、确定加密公钥E,使得E与M互质
4、确定解密私钥D,使得D乘以E除以M余1,即(D × E) mod M = 1
比如,挑两个互质数,P=5和Q=8,N=P*Q=40,M=(P-1)*(Q-1)=28
随机选取公钥E=5,则私钥D=45.
从这里,我们可以设计出一对公钥私钥,加密公钥KU={E,N}={5,40},解密私钥KR={D,N}={45,40}。
1、在加密过程中,需要将加密数字自乘(E-1)次,当自乘结果超过N时,需要将结果取模后再乘,最后得到安全密文。
2、在解密过程中,用密文自乘(D-1)次,同样,当自乘结果超过N时,需要将结果取模后再乘,最后得到加密数字。
感兴趣的朋友可以通过我们给出的加密方案来对一些简单的数字进行加密,由于秘钥数字P和Q很小,用纸笔或者简易的计算器就能够计算出来。