第五节:比特币非对称加密-公钥与私钥小时候

Posted 蜡币小胖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五节:比特币非对称加密-公钥与私钥小时候相关的知识,希望对你有一定的参考价值。


你好

欢迎来到蜡笔小胖的区块链学习课堂

首先感谢中本聪

今天是比特币的第五节课

 

(注:文稿与音频同步)

在了解比特币的时候,大家总会提起私钥和公钥的事情,但是很多文章对公钥和私钥的解释都停留在比较浅的层次,总是给你一种雾里看花感觉。今天我就从本质上给你梳理这个问题。

 

通过昨天的课程我们了解了哈希算法的加密过程,其实质就是不可逆的单向加密过程。

现在我们来看一下在真正要进行信息传输的情况下应该怎么办:

传统密码世界一直需要面对这样一个看似死循环的无解问题。

那有什么办法可以解决这个问题吗?我先来看一个小魔术。


1.魔术师为什么能猜到你心里面想的数字

有时候我们会看到一个数学小魔术(这里假设我是魔术师):让你任意想一个三位数,并把这个数和91相乘,然后说出乘积的最后三位数,我就可以猜出你想的是什么数字。比如你想的是123,那么就可以计算出123×91=1193,并把结果的最后三位193告诉我,看起来,这么做似乎损失了不少信息,可能没法反推出原来的数。不过,我仍然有办法:我只需要把你告诉的结果乘以11,乘积的末三位就是你刚开始想的数字了。可以验证一下,193×11=2123,末三位123正是你所想的秘密数字! 其实道理很简单,91乘以11等于1001,而任何一个三位数乘以1001,末三位显然都不会变(例如123乘以1001就等于123123)。我的套路就是先让你用所想的数字乘以91,假设乘积为X:我再在X的基础上乘以11,其结果相当于我俩合作把原来的数字乘以了1001,末三位自然就变了回去。X乘以11后的最后三位是什么只与X的最后三位有关,因此,你只需要告诉我X的最后三位就行了,实际上这并不会丢失信息。

知道原理后,我们可以构造一个更大的加密解密系统。比如,任意一个数字乘以40000000170)后,末八位都不会变,400000001=19801×20201,于是你乘以19801,我乘以20201,一个加密解密不对称的系统就构造好了。我们甚至还可以构造一个更大的系统:4000000000000000000000000001= 119948199546957X3334772856269093,这样我们就成功构造了一个30位的加密解密系统。这是一件非常酷的事情,任何人都可以按照这个方法加密一个数字,但是只有自己才知道怎么把所得的加密数据变回去。这其实就是一种最简答的非对称加密方法,我们可以将事例中的91当作公钥,11当作私钥。将公钥公布出去,任何人把信息利用你公布的公钥加密,但是只有你的私钥能解密信息,就算信息在传输中被截获了,他们也不能解密这个信息。


2.非对称加密(RSA算法与椭圆曲线算法)

说起非对称加密,实际上直到1976年以前,大家都不知道非对称加密,所有的加密方法都是同一种模式

a.甲方选择某一种加密规则,对信息进行加密

b.乙方使用同一种规刚,对信息进行解密

由于加密和解密使用同一种规则(简称“密钥”,我们可以通俗的理解为密码),这种规则被称为“对称加密算法”。这种加密模式有一个最大的弱点:甲方必须把加密规则告诉乙方,否则无法解密。这样一来,保存和传递密钥就成了最让人头疼的问题。尤是人数多了之后,每两个人都要互相商量一个密钥,复杂性大大提高,而传递密钥又带来更高的安全风险

直到1977,李维斯特,沙米尔和艾德曼设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫作RSA算法。直到现在,RSA算法一直是应用最广泛的非对称加密算法。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。这种算法为什么这么晚才出现?或许该技术一直隐藏在“二战”的迷雾中是不为人知的。RSA算法有一对公钥和私钥,公钥加密的东西只有私钥能打开。

这一非对称加密模式的流程如下:

a.乙方生成两把密钥(公钥和私钥),公钥是公开的,任何人都可以得到,私钥则是保密的。

b.甲方获取乙方的公钥,然后用它对信息进行加密

c.乙方得到加密的信息后,用私钥解密

由于公钥加密的信息只有私钥才能解得开,因此只要私钥不泄露,通信过程就是安全的。

 

但是RSA算法的缺点是计算量大,处理速度慢。后来人们发现椭圆曲线加密算法(ECC)优于RSA。椭圆曲线加密算法最早是有美国华盛顿大学的数学教授Neal Koblitz和普林斯顿大学教授Victor S.Miller1985年开始独立使用,20042005年间得以广泛使用。

通过比较,椭圆曲线加密算法(ECC)算法各方面性能和RSA相比,几乎完胜:

a.安全性能更高。比如160ECC1024RSA有相等的安全强度。

b.计算量小,处理速度比RSA快得多。

c.存储空间占用小。密钥尺寸和系统参数与RSA相比要小得多。

d.带宽要求低

椭圆曲线加密算法(ECC)的这些特点就使它逐渐取代RSA,成为通用的公钥加密算法。在比特币里面占有非常重要的地位。那么通过今天的学习你就非常透彻的理解了为什么必须保管好自己的私钥不能泄露。那么关于比特币公钥和私钥的其它的知识我们后面再普及。


通过今天的学习,你知道了什么是非对称加密。从本质上知道了什么是公钥,什么是私钥。以后别人再提起私钥是什么,你就可以很自信的告诉他这是怎么回事儿了。


蜡币小胖的讨论群也建立了,你可以加入讨论群一起学习:(讨论群二维码如下:)二维码过期后,可以加我微信。


另外,蜡币小胖的知识星球已经开通了,我在文稿末尾给你贴出了链接的二维码,如果你有什么问题,可以加入知识星球提问一起学习。


参考书籍:《比特币—一个虚幻而真实的金融世界》.李钧,长铗。


以上是关于第五节:比特币非对称加密-公钥与私钥小时候的主要内容,如果未能解决你的问题,请参考以下文章

golang:常用加密算法学习总结之非对称加密

非对称加密算法(公钥和私钥)

数据加密 第五篇:非对称密钥

数据加密 第五篇:非对称密钥

非对称加密:谁能花费那些比特币?

区块链词典 | 区块链核心技术之非对称加密算法