谈到Libra(天秤币),加密货币是其最核心的关键词,区块链是其底层关键技术。追踪溯源,Libra的设计思想来自比特币,只是它没有同比特币一样,缺乏基础资产支撑且采用原教旨主义的工作量证明机制(Proof of Work,简写为PoW),而是做到了100%资产储备并采用了改良版的拜占庭容错共识机制(LibraBFT-HotStuff)。实际上,比特币也不是最早的数字货币,它是数字货币技术发展到一定阶段之后才出现的产物。
早在20世纪70年代末、80年代初就有学者在研究数字货币。数字货币技术的蓬勃发展与现代密码学的演进紧密相关,因此要想准确理解以比特币为代表的虚拟货币,以及“去虚拟化”的Libra,我们需要回到40年前,探寻现代密码学的发展历程。本章从现代密码学的演进脉络追溯数字货币的技术起源,剖析数字现金设计的基本原理和创新思路,探讨加密货币技术的优点、缺点及重点研究方向,并针对以比特币为代表的虚拟货币崛起,讨论各国的监管应对,分析当前我国央行数字货币的设计理念、技术架构和前沿焦点。
现代密码学的历史演进
密码学是研究编制密码和破译密码的技术科学。它以数学为基础,在加密和解密、攻击和防守、矛和盾的对抗过程中交替发展起来。从数学算法的角度看,它包含对称算法、非对称算法和杂凑算法。
非对称算法开启真正的现代密码学时代
顾名思义,对称算法与非对称算法紧密关联。何为对称算法?对称算法是指加密和解密共用一个密码,也称单钥加密算法。我们经常在谍战片中看到,敌我双方为了一个密码本,你争我抢。这个密码本就是对称加密体系中最重要的对称加密密钥。密钥丢失,就意味着信息隐秘参数或者加密参数出现重大问题,机密将被泄露。要想管理好密钥很难,因为有人会来偷或抢。在现代通信条件下,更是很难把密钥管理起来或者分发出去。因为随着我们与外界的沟通范围的不断扩大,我们对事情的把控能力将会变得非常困难。在密钥的分发过程中,我们无法有效地防止被窃取或者被人攻击,也不太容易去管理那么多的密钥。
比如,我和某人约定好一个对称密钥:我给他发的每个信号加1才是真正的信号。两两之间没有问题,可是如果我想大规模做这样的动作,和所有人进行对称加密传输的话,那么我就要和所有的每一个人约定一个特殊的密钥和特殊的方法。无疑,这是一个很大的挑战。
现代密码学的真正起源正是解决对称算法无法在大规模的信息加密传输中普及的问题。1976年,迪菲(Diffie)和赫尔曼(Hellman)提出了新的加密方法,他们将原来的一个密钥一分为二成一对密钥,一个密钥用于加密,一个密钥用于解密。加密密钥公开,称为公钥。解密密钥不能公开,唯独本人秘密持有,对别人保密,称为私钥。如果别人想给我发信息,他要用我的公钥对信息进行加密,而只有我的私钥才能解开,其他任何人都解不开。同样,我想给别人发信息,要用对方公开的加密密钥进行加密,而只有他手上有的那把私钥才能解开加密信息。这样,我就不用和其他每个人约定对称密钥,很好地解决了单密钥体系下的密钥大规模分发的问题。由于加密密钥和解密密钥是完全不一样的一对密钥,所以这一思路被称为非对称加密思想。1978年,罗纳德·李维斯特(Ronald Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)首次提出非对称加密的实现算法,即著名的RSA(三人姓氏开头字母拼在一起)算法。
非对称加密思想的提出以及1978年算法的实现,开启了真正的现代密码学时代。继RSA算法之后,各类非对称算法不断出现,比如椭圆曲线加密算法等。
非对称算法的独特认证功能
非对称算法带来了原来对称算法不具备的功能,那就是非常独特的认证功能。比如,如果我想给别人发信息,我不仅用别人的公钥对报文进行加密,同时我还可以用我的私钥进行签名,这样别人就可以用我的公钥进行验签,判定报文是不是我发给他的。认证功能的出现,使信息加密传输形式发生革命性的变化:信息既可以加密,也可以签名,就像支票一样,使信息的加密传输有了主人的感觉。
基于加密签名的认证功能,我们可以构造出一个非常严密的信息传输体系。以邮件的加密传输流程为例。首先,我们都有一把对外公开的公钥,将其托管到一个服务器上,既然对外公开,那么所有人都可以从服务器中得到别人的公钥,这样就建立起非对称公钥密码体系,或称公钥基础设施。然后,当进行加密邮件传输时,我们分别从公钥的服务器取出对方的公钥,我用对方的公钥对邮件加密,同时用自己的私钥对邮件签名。对方从托管服务器上拿到我的公钥,对我的私钥进行验签,以此证明收到的邮件是我发出去的邮件,同时他用自己的私钥对邮件的公钥进行解密阅读邮件。而其他人虽然可以验证这是我发出去的邮件,但无法解密阅读邮件。
对称加密和非对称加密在实践中的混合使用
在对称加密体制,由于加密、解密使用同一个密码,所以加密速度比较快,保密程度也较高,但如前所述,它最突出的问题是如何把密钥安全地送到收信方。如果有N个合作者,就需要有N个不同的密钥,整个密钥的分发和管理非常复杂,而且对称加密体制不具备签名的功能。
非对称加密的特点则在于,公钥是公开的,可以托管出去,但私钥是绝对不能泄露的,否则,什么秘密都没有了。公钥与私钥之间存在一个数学关系:从私钥很容易推导出公钥,但想从公钥推出私钥,则被认为是不可能的。当然,不是说绝对不可能,而是说从计算的复杂性看,很难去暴力破解,即便用世界上最强大的计算器去破解它,也可能需要100年、200年,这对于攻击者而言,破解的时间成本和资源成本是不可承受的,相当于无法破解。所以相对来说,非对称加密是安全的。
由于这是依靠计算的复杂性来阻挡攻击者对信息的破解,所以有人担心,假设有了量子计算机,计算的能力大大加强,是否会威胁非对称加密体制的安全。其实不用担心,密码学是在加密和解密、攻击和防守、矛和盾中不断演化的技术,不是说量子计算机出来以后就没有对抗了,攻击和破解能力强了,防守能力自然也会跟上,有量子计算,就会有抗量子密码。目前,很多国家都在研究抗量子密码,等到量子计算机出现的那一天,自然会有全新的应对方案。
在现实生活中,对称加密和非对称加密并不相互排斥,而是混合使用。以网银的应用为例,我们的私钥存在银行发给我们的U盾里,当我们把U盾插到电脑时,U盾就会与银行的服务器进行交互,身份验证后,代表你身份的数字身份上线,验明正身很容易,就是前述私钥的签名和验证。在随后交易的过程中,双方会约定一个交易会话的密钥,这个密钥则是对称加密密钥。为什么用对称加密密钥?因为它计算位数短、资源开销小、效率高,但为了保密,每次交易会话的密钥不一样,并采用非对称加密的方式进行传递,相当于密钥双方事先通过一个加密邮件,沟通一下使用什么对称密钥,然后无论汇款,还是买理财产品,都采用事先通过非对称加密方式传输的对称密钥来完成,这就是两种传输方式混合使用的很好例子。
哈希算法
哈希算法也叫“安全散列函数”,又称信息摘要。众所周知,文章摘要是对文章内容的概况总结。看了文章摘要,我们就能理解文章的大部分意思。哈希算法也有这样的功能,它可以把任意的信息集,用非常简单的信息予以描述。它是一个特别的数学函数:给定输入很容易得到输出,但是从输出计算回输入不可行。这就像从全文得出摘要很容易,但要根据摘要把全文再重写一遍就不容易了。此外,哈希算法还有一个有意思的特性,只要信息发生稍微变化,摘要就变得完全不一样,这一特性非常有用。
在早期,通信传输经常发生丢包和错包,信道要么不安全,要么出现各种信息散乱。那么接收方怎么判断接收到的信息与发送方传送的信息完整一致呢?一种办法是一遍一遍地发,一遍一遍地试,一次不行多发几次,但这样效率很低。而利用哈希函数则可以很好地解决这一难题。发送方发送信息时对原始报文做一个哈希运算,将运算出来的值一同放在原始报文后面,用来校验。接收方收到信息包后,也对原始报文做同样的哈希运算。根据哈希算法的特性,如果两个运算值是一样的,那么说明接收的信息和传送的信息完整一致,否则,说明信息包丢失,那么只要重发丢掉的信息包即可,无须重复发送整条信息。
与对称加密和非对称加密不同,哈希函数是一种快速收敛的算法,从输入到输出的计算非常快,迅速收敛数值,无须耗费巨大的计算资源,而从输出倒推输入又几乎不可行。基于这样优秀的特性,哈希函数得到广泛的应用,我们习以为常的人民币冠字号码就是由哈希算法产生的。在数字货币领域,哈希算法更是得到广泛的应用。