轻松读懂区块链
上QQ阅读APP看书,第一时间看更新

4.2 一把锁配两把钥匙——奇特的非对称加密

要进行数字签名,小明首先要学习一种新的加密方法,其为非对称加密。在通常的加密方法中,密钥只有一个,这个密钥既用来加密信息,也用来解密信息,这叫作对称加密。就好比一把锁有一把钥匙,既可以用这把钥匙把锁锁住,也可以用这把钥匙把锁打开。例如小明有一个密钥6666,他用这个密钥加密自己的情书,他的情书就和密钥6666混在一起进行了某种数学计算,变成一堆谁也看不懂的乱码。翠花收到乱码情书后,也用密钥6666进行解密,于是情书又变成了小明写出来的原文,如图4.2所示。对称加密虽然方便,但是存在以下两个缺点。

(1)小明需要在网上把密钥传输给翠花,二黑很有可能在网上截获这个密钥,这样二黑还是可以解密小明的情书并进行篡改。

(2)假如小明是个花心男,除了翠花外,还有金花、银花、茉莉花等红颜知己。那么他需要为每一个红颜知己准备一个密钥,要安全地在网上传输以及保存这么多密钥,也是一件麻烦的事情。

图4.2│对称加密对信息进行加解密的过程

因此,密码学家们想出了更好的加密方法,也就是非对称加密。比特币系统所使用的加密算法,就是一种称为椭圆曲线加密算法(Elliptic Curve Cryptography,ECC)的非对称加密算法。这种非对称加密算法的特点在于,它不遵守一把钥匙开一把锁的“套路”,它有两把钥匙,即两个密钥,一个称为公钥,另一个称为私钥。公钥与私钥是一对,公钥可以向所有人公开,即使二黑知道了也没关系,私钥则必须由本人机密保管。公钥和私钥都是一串数字,且这一对公钥和私钥有如下特点。

(1)用私钥可以生成公钥,但从公钥无法推算出私钥。

(2)如果用公钥对数据进行加密,那么只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。

通过这种办法,就可以很方便地管理密钥了。因为小明只需要保存自己的私钥,并且把公钥向所有人公开,这样任何人要向他发送信息时都可以用公钥加密,并且只有小明才可以用私钥解密这些信息。