密码学可以说是比特币最为核心的一项技术。
普通人对密码学都比较陌生,说起密码学大家都觉得很高大上。其实密码学关注的事情主要是两点:
一是加密解密的数学算法本身。
二是如何在现有算法基础上实现安全需求。
所以我们可以看到:密码学不仅研究加密解密的数学算法,还有一点同样重要,就是保护信息安全的策略,这就是本文重点论述的非对称加密技术。
让我们来看一个真实生活中的场景:
北京的小明发了一个快递到广州的爱斯,途中经过了上海,上海快递中心出现了一个黑客X,他偷偷打开了小明给爱斯的快递,然后悄悄把里边的东西替换掉,再按照原样包装好发往广州,可以看到对于这样简单包装的传输在中途是可以偷偷修改里边的东西。
互联网中HTTP的数据包是明文传输,也就是如果中途某个黑客嗅探到这个HTTP包,他可以偷偷修改里边包的内容,至于小明跟爱斯是互相不知道这个动作的,因此我们必须要有一个方案来防止这种不安全的篡改行为,这个方法就是加密!
再回到上面的例子,这一次,小明将衣服放到一个保险箱里边锁起来,他打了个电话告诉爱斯保险箱开柜密码是1234,而黑客X不知道密码,所以他看不到保险箱里边的东西,爱斯收到快递后用预先沟通好的密码就可以打开保险箱了。
这里保护的手段就是小明对物品进行加密,同时告诉了爱斯解密的方法!
但如果是绝密情报的特工,面对的可能是国家机器,所有的网络和通信都处在被监听的状态,采用上述的加密办法,依然会造成信息泄漏。
因此人们提出了一个方案:
在上面的例子中,要求小明的密码只能通过快递传给爱斯。但这里还有一个技术问题待解决:如果小明直接传密码给爱斯,黑客X如果嗅探到这个快递,那X也知道密码了,这就无法保护快递的安全性了。因此还需要有个方案,让小明能够告诉爱斯密码的同时,黑客X又无法查看到小明跟爱斯通信的数据。
解决的方法就是采用非对称加密:小明拥有两把钥匙,一把叫做公钥,一把叫做私钥。公钥是公开让全社会都知道,小明告诉所有人,你们要传递数据给我的时候请先用这个密钥(公钥)去加密一下你们的数据,加密后的数据只能通过小明私自藏着的私钥才能解密。
回到刚刚例子,小明先发给保险柜(小明公钥)给爱斯,接着爱斯把自己的保险柜(爱斯公钥)放到小明的保险柜(即使用小明的公钥加密爱斯的公钥)里,送还给小明,接着小明拿到爱斯的数据包后,用自己的私钥解开了外层保险柜(小明的公钥),拿到了里边爱斯保险柜(爱斯的公钥)。此时爱斯跟小明都有了各自的公钥(并且都有他们自己的私钥),接着只要保证每次互相传递数据的时候,把数据放在对方的保险柜里边即可(即每次都用对方的公钥加密数据),这样无论如何,黑客X都无法解开保险柜(因为只有各自的私钥才能解开各自的保险柜)。
这个技术猜想虽然早就提出,但直到1977年才被美国麻省理工学院的研究小组 [ 成员:李维斯特(Rivest)、沙米尔(Shamir)、艾德曼 (Adleman) ]提出的。该算法用他们三个人的名字命名,叫做RSA算法。一直到现在,RSA算法仍然是应用最广泛的非对称加密算法。
最后,我们再来总结一下这一非对称加密算法的流程:
B生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
A获取B的公钥,然后用它对信息进行加密,将信息传输给B。
B得到加密信息后,用私钥解密。
由于公钥加密的信息只有私钥才能解开,因此只要私钥不泄露,通信过程就是安全的。
所以,在比特币乃至区块链的世界中,私钥都是极其重要的!
请区块链玩家们保护好自己的私钥!
请区块链玩家们保护好自己的私钥!
请区块链玩家们保护好自己的私钥!
重要的事情说三遍!!!