hello,大家好,我们第二期的区块链技术分享来啦,本期是 candy 分享公钥加密,也就是非对称加密。
提到加解密,密码学这些词汇,很多人都退避三舍,如临大敌,觉得晦涩难懂,自己不想懂也不必懂。
但是,其实不然。你每天都在接触密码学,你的上网安全与密码学息息相关。如果你经常上网,可以发现网址的链接有两种,分别是https开头和http开头的:
candy用的是Chrome浏览器,不知道大家有没有发现,http那张图,浏览器提醒:不安全。那我可以告诉你,不是不安全,是相当不安全!
那下面我们就慢慢分析为什么http开头的网址上网不安全?
1 http之那些年误点的钓鱼网站
很多吃过亏的人可能至今都想不明白,自己明明是网上冲浪多年的老手了,为什么自己的访问行为和隐私数据会被人知道,为什么域名没输错,结果却跑到了一个钓鱼网站上? 你肯定也听过,电子邮件被窃听,家庭路由器被黑等等……
随着互联网的发展,数据泄露、数据篡改、流量劫持、钓鱼攻击等安全事件频发。
这一切都是由互联网开始之初面向自由互联开放的http传输协议导致的。
http协议之所以引起这么多安全问题,最大的缺点在于:http协议传输的数据都是明文。再说的直白一点,就是你的数据在网络中裸奔~~
想想少不更事的那些年,点过的小黄文网站,小视频网站……
那我们不禁问,为什么一开始设计的时候,不考虑安全的问题呢?原因有两个:
-
第一,设计者的初衷是先有,跟所有事物发展的规律相似:先有再优。
-
第二,不得不说到互联网的起源,互联网始于1969年美国的阿帕网,首先用于军事连接,后将美国西南部的加利福尼亚大学洛杉矶分校、斯坦福大学研究学院、UCSB(加利福尼亚大学)和犹他州大学的四台主要的计算机连接起来。主要的应用在高校,人们天性使然,相信所有的参与者都是诚信的。
随着互联网的发展,所有的人都可以连到互联网上,上面的方式就土崩瓦解。各种网络安全问题接踵而来……
发现问题,解决问题。既然http协议是明文传输的,那我们加密不就好了。想的很对,那我们不禁问用什么加密?怎么加密呢?
2 https中令人烦恼的密钥配送问题
我们再回顾一下,http协议存在的问题:客户端和服务器之间的通信消息完全明文在链路上传输。
这个时候,我们就想通过给消息加密的方式,这样的话,就算消息被截获拿到的也是加密过的信息,是没有办法解密的,思路完全正确。
我们可以将客户端和服务器之间的通信,抽象成两个人Alice和Bob,那么在分析之前,我们先讲密码学两类加密方法:对称密码和公钥密码(非对称密码)。
● 对称密码:加密和解密使用同一种密钥。
如何理解呢?Alice想跟Bob这周天约会,但又不想被别人知道,因此Alice跟Bob协商用对称密码对信息进行了加密。
通过图中可以看到,Alice用密钥对明文加密,保证消息在传送过程中是加密的,同时Bob收到密文之后,用相同的密钥解密,得到明文。Alice和Bob就可以开心地约会啦~~
● 公钥密码:加密和解密时使用不同密钥的方式。
如何理解呢?Alice想跟Bob这周天约会,但又不想被别人知道,因此Alice跟Bob协商用公钥密码对信息进行了加密。
通过图中可以看到,Alice用加密密钥对明文加密,保证消息在传送过程中是加密的,同时Bob收到密文之后,用不同的密钥解密,得到明文。Alice和Bob又开心地约会啦~~
那么在https通信的时候,到底使用的是哪种加密方式对明文加密?答案是:对称加密。理由是对称加密适合对大量内容进行加密,公钥加密由于涉及复杂的运算,如果被加密的明文过长,那么运算速度将会很慢。
但这个时候问题来了,Alice怎么将密钥203514758963585告诉Bob,让Bob用这个密钥解密她发的信息呢?也就是密钥配送的问题。
这个时候必须再解释公钥密码。公钥密码是什么意思?Bob有两把钥匙,一把叫公钥,一把叫私钥。顾名思义,公钥就是可以公开的,私钥就是自己要偷偷藏起来的。
所有想给Bob发消息的人,都可以用Bob的公钥加密,Bob收到之后,用自己的私钥解密。就像公钥加密图中Alice和Bob通信的方式。
那么Alice跟Bob传递消息和传递密钥的整个过程如下:
但可能有人会好奇,如果第③步的信息被攻击者劫持了,那后面加密的密钥不就泄露了?其实没关系的,就算第③步信息被劫持了,劫持者也无法解密,因为Bob的公钥加密的信息,只有Bob的私钥能解密,但Bob的私钥只有Bob有。
Alice和Bob终于可以安心约会了~~
其实上面的过程就是https通信的过程,Alice就是客户端,Bob就是服务器。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
当然SSL除了对通信内容加密之外,还有确认网站的可靠性,也就是我们常常听到的CA。这又是另外一个话题了,今天就先不讲啦。
因此,https中即用到了对称密码,又用到了公钥密码,https中涉及到的公钥密码是RSA算法。因此,可以看出密码学是一门很有用的基础学科,不仅在信息安全领域有应用,而且在区块链领域也有应用。
不知道大家有没有好奇,我本来是想分享区块链中的公钥加密的,为什么要说https和http?因为要讲公钥加密,对称加密是没有办法避免的,而https又是二者最好的结合。
下面言归正传,聚焦区块链中的密码学应用。
3 区块链里面的那些公钥、私钥和地址
公钥密码,两把成对出现的密钥:公钥和私钥。公钥就是可以公开的,私钥自己保存,不能被泄露。
因此公钥密码有两个用途,加密和签名。公钥加密,私钥解密;私钥签名,公钥验签。
公钥加密,私钥解密
因为Bob的公钥是可以公开的,所以任何想给Bob发信息的人都可以用Bob的公钥加密,那么Bob收到之后,就可以用自己的私钥解密。
私钥签名,公钥验签
又因为Bob的私钥只有Bob自己有(就像Bob的指纹),那么Bob如果为了证明这个东西是自己写的,就可以在消息上签名(就像我们签合同按指纹一样),消息的接收者收到之后,就可以用Bob的公钥验证,如果成功那么就证明消息真的是Bob发出的。
地址呢?是公钥推导出来的。这些推导过程是单向不可逆的。这块的知识参考上期分享 你的密码安全吗? | 区块链技术之哈希https://blog.csdn.net/koudan567/article/details/120091236
公私钥对奠定了区块链的账户体系及资产(Token等)的所有权,区块链的资产是锁定在公钥上的,公钥代表身份,私钥用来解锁该资产然后才能使用。
比如说我要转让资产给你,就是我用我的私钥签名了一笔我转让资产给你的交易(含资产,数量等等)提交到区块链网络里,节点会验证该签名,正确则从我的公钥上解锁资产锁定到你的公钥上。
今天分享的比较多,又有信息安全的内容,又有区块链的内容,但其实根本还是密码学的问题。需要区分一下,https中用到的是RSA加密算法,区块链中用到的是椭圆曲线加密算法。用到了不同的公钥加密算法。
至此,区块链中涉及到的公钥、私钥、哈希就分享完了,希望大家能有所收获,这个专题也会继续下去,请持续关注哦。
如果你也对区块链感兴趣,可以关注微信公众号“Candy链上笔记”,我们一起前行~~