谈谈区块链的加密技术(公钥、私钥)
文章图片
区块链简单理解就是一个分布式账本亦或一个数据库,当区块链凭借其独特的技术特点,在各行各业被研究被采用时,面对大量的数据,区块链是如何保护数据的隐私安全的呢?这主要依赖于密码学。
密码学使用先进的数学原理和方法来传输和存储数据,这种存储方式要求只有数据接收者才能对数据进行读取和处理。在密码学中,加密是密码学中的核心概念,它以一种“除接收者外任何人都无法解密的方式”对消息进行编码,其他人无法读取和理解数据格式,以此来保护数据免受攻击。
据说,第一个使用密码学技术的是古罗马凯撒大帝,他发明了“凯撒密码(Caesar cipher)”来保护重要的军事情报。凯撒密码先将正常的文本内容通过一套规则编译成密码文本,然后通过通信渠道发送出去,接收者再用这套规则对密文进行解密。他的方法很简单, 就是将字母表依次往后移动几个位置。具体移动的数量n就是密钥了。比如移动两个,则:
文章图片
【谈谈区块链的加密技术(公钥、私钥)】用这种方法加密hello, 则密文是jgnnq。拿到密文后再倒着将每个字母往前移动n个位置就解密了。大家可以试着解密dmqemejckp, 密钥是2。
凯撒密码有个问题就是很容易破解, 因为总共只有26种可能(移动27个位置, 跟移动1个位置是一样的),很容易就暴力破解了。只需要把0-25都试一下, 看看“解密”出来的文字哪个是有具体含义的即可。比如大家可以破解一下"thnpj"。
加密技术有两种加密类型:1.对称加密(Symmetric cryptography)
对称加密算法是应用较早的加密算法,在对称加密算法中,数据发送者和接收者使用同一套规则来对数据进行加密和解密。简单理解就是加密密钥和解密密钥是同样的,前面说的凯撒密码采用的就是一种加密算法。
文章图片
优点:与公钥加密相比运算速度快。
缺点:
密钥传输问题:由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性不仅仅取决于加密算法本身的强度,也取决于密钥是否被安全的保管。当我们使用对称加密技术来保证数据安全传输的同时,也必须将密钥共享给接收者,但是怎么把这个“密钥”安全的传输给接受者呢?
密钥管理问题:随着密钥数量的增多,密钥的管理问题会逐渐显现出来。比如我们在加密用户的信息时,不可能所有用户都用同一个密钥加密解密吧,这样的话,一旦密钥泄漏,就相当于泄露了所有用户的信息,因此需要为每一个用户单独的生成一个密钥并且管理,这样密钥管理的代价也会非常大。
常用算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES。
2.非对称加密(Asymmetric cryptography)
非对称加密指为满足安全性需求和所有权验证需求而集成到区块链中的加密技术。它和对称加密的主要区别是:对称加密使用共享密钥来解密数据,而非对称加密使用“密钥对”来解密数据。密钥对包含两部分:一个公钥,一个私钥。
举个例子,当你给你妈的银行卡转钱时,需要知道她的银行卡账号,那么这个账号就相当于她的公钥,是公开可见的。私钥就相当于是她的密码,在没有告诉你密码的情况下只她自己知道账户里的资金情况。
发送数据时,我们需要使用私钥(即密码)和接收者公钥(即用户名)。接收者则使用他的私钥(密码)和发送者的公钥(用户名)来解密数据。整个流程如下图所示:
文章图片
值得提醒大家注意的是区块链是去中心化的,私钥一旦丢失就无法找回,所以有数字资产的朋友一定要谨慎对待,不要以为和银行卡一样,密码忘记了带着身份证和相关资料去银行就能解决。
优点:解决了密钥传输中的安全问题
缺点:无法验证发送方是否正确,发送方可能存在被伪造
常用算法:RSA、ECC(椭圆曲线加密算法)
非对称加密一般划分为三类主要方式:1.大整数分解问题类:指用两个较大的质数的乘积作为加密数。由于质数的出现具有不规律性,寻找破解只能通过不断的试算。
2.离散对数问题类:指的是基于离散对数的难解性,利用强的单向散列函数的一种非对称分布式加密算法。
3.椭圆曲线类:指利用平面椭圆曲线来计算成组非对称特殊值,比特币就使用此类加密算法。
非对称加密技术在区块链的应用场景:1.信息加密场景:主要是由信息发送者(记为A)使用接受者(记为B)的公钥对信息加密后再发送给B,B利用自己的私钥对信息解密。比特币交易的加密即属于此场景。
2.数字签名场景:由发送者A采用自己的私钥加密信息后发送给B,B使用A的公钥对信息解密、从而可确保信息是由A发送的。
数字签名,可以保证收到的文件没有被篡改,也可以保证发送者的身份。因为私钥生产了数字签名,私钥是不公开的。
文章图片
3.登录认证场景:是由客户端使用私钥加密登录信息后发送给服务器,后者接收后采用该客户端的公钥解密并认证登录信息.
目前非对称加密技术大多应用在区块链数字货币交易中,防止篡改和伪造信息。
上述三种场景加密的不同之处主要在于:信息加密是公钥加密,私钥解密,确保信息的安全性;
数字签名是私钥加密公钥解密,确保数字签名的归属性;
登录认证私钥加密,公钥解密。
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 「#1-颜龙武」区块链的价值是什么()
- leetcode|leetcode 92. 反转链表 II
- 我在一条路上走了5年
- BNC公链|BNC公链 | Eth2.0测试网Topaz已质押超100万枚ETH
- 【#2-戴栋】区块链可以提升哪些商业上的效率改进
- Spectrum|Spectrum 区块偶尔停止同步问题排查与解决笔记
- 父母链接八~未了情结
- java|java 常用知识点链接