作者:苏江,首发于《区块链生存训练》饭团
首先,传统的加密方式肯定是对称加密。
即:我向你发送一串信息,我用一定的规则(算法)把它加密,你接收到信息后,用同样的的算法逆向解密。
明显,这种方法必须只有你我知道这个算法规则,才能保证信息的安全。
但是有个问题,假设你我素未谋面,而且相距甚远,不能悄悄话, 我可以向你传送加密的消息,但是如何把加密的方法(算法)告诉你呢?不然你不知道算法规则你也无法解密,我也不可能直接就把解密方法直接发送给你,因为怕被截获。那么,难道我得把加密方法再次加密?加密方法的加密方法如何再约定,这就成了一个循环的问题...
对称加密需要双方提前商定好解密方法,即保存好约定的密钥,一旦密钥被泄露,这种保密方法就不再安全,需要协商使用新的密钥。
如果两个人扩大成多个人,保存和传递密钥就更比较麻烦,每次协商一个密钥,复杂性更高,同时也有更大安全性的风险,如果一个人的密钥泄露,那么整个群体的加密方式就失效了。
对称加密有这种固有的缺点,直到1977年,一种非对称加密的方法被设计了出来。
比如,我想发消息给你,于是,你把加密方法(公钥)告诉我,甚至公开给大家,但你接受到消息之后,却只有你自己(通过私钥)才能解密,大家尽管拥有你的公钥却没法解密,
这是怎么做到的呢?
这里引入上一个概念:哈希算法。
哈希算法有一个显著的特点:
- 单向加密,不可逆。
即你无法通过结果值来逆向推导出最初值。
哈希算法是一种通过输入任意长度字符,生成固定长度字符输出的不可逆的算法。
公钥与私钥的关系就是:私钥经过单向的计算,生成公钥。
公钥就是由私钥经过类似哈希运算算法所得,即你无法通过公钥来逆向推导出私钥,但私钥拥有者却可以通过哈希运算来生成公钥。
在非对称加密算法中,主要有这两种典型的代表:
- RSA算法
- 椭圆曲线算法
RSA算法的原理也很简单:
比如,任意生成一个200位的数字,将他分解成两个素数的乘机。我们知道,两个素数相乘是非常容易的,当是根据结果来推导出两个素数的值却极其困难,即使是超级计算机也要耗费海量的时间和资源才能算得。这便是数学中的一种难以可逆的计算方法。
椭圆曲线则算法是另外一种非对称加密的算法。
简单来讲,它是一个方程,在平面中呈现为曲线状,同样,它也是一个数学问题,单向计算很容易,逆向计算却极其困难,椭圆曲线算法太复杂,一时半会真心看不懂...
再说回比特币中的公钥和私钥的概念,对于普通老百姓经常被这些概念弄糊涂。再来梳理下:
基于椭圆加密的原理,由私钥是可以计算出公钥的,再由公钥经过一系列数字签名运算就会得到比特币钱包地址。
1,私钥是一个随机数,32个字节随机生成。
2,通过使用椭圆曲线加密算法,生成公钥,共65字节。
3,公钥进行一系列的哈希运算,生成比特币地址,具体过程参考知乎有专门的文章解释,就不详述了....
所以说,在比特币这个系统里,你可以公开你的收款地址、公钥,基于哈希运算这种密码学原理,再加上可靠性极高的椭圆加密算法,目前任何计算机都几乎不可能通过你的地址和公钥来破解你的私钥,从而保证了你财产的安全性。
我是苏江,长期分享区块链思考,欢迎加我微信与我交流:su466120534