Cover photo

比特币白皮书解读(2)——数字签名

今天主要解读的概念:数字签名。

比特币的目标是构建不需依赖于第三方金融机构的点对点(我们俗称的P2P)的电子支付系统。

“本文提出了一种完全通过点对点技术实现的电子现金系统,它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。虽然数字签名(Digital signatures)部分解决了这个问题,但是如果仍然需要第三方的支持才能防止双重支付(double-spending)的话,那么这种系统也就失去了存在的价值”。

我们来设想一下,如果张三转账给我们一笔费用100万元,我们是如何确定他到底有没支付?大家一定知道,看我们卡上有没有到账(100万元),如果有,就说明已经支付。

这背后其实是银行这个第三方金融机构,在给我们双方做了信用担保,我们相信它(银行),它在张三的账户扣减100万,在我们的账户上加上100万,在背后默默地记录着每一个人的每一笔交易。

但比特币的目标就是要革它(银行等传统金融第三方金融机构)命的,如果抛弃它了,直接进行对点对支付,谁来记账?我已经转了100万给李四,如果李四赖账说没收到,或者他说只收到80万,怎么办?

中本聪给出的解决方案是数字签名。什么是数字签名?

数字签名(Digital Signature),是类似于我们手写的签名,采用了非对称加密技术,用于鉴别数字信息的方法。

为了理解数字签名,先简单解释非对称加密。

密码学中有两种加密技术,对称加密与非对称加密。

对称加密,加密、解密都使用同一种规则。非对称加密,加密、解密不是使用同一种规则,加密采用一种规则,解密采用另一种规则。

比如,甲同学想发送数字520给乙同学,但是担心泄露,于是每位数加1,把631发给乙,甲只要把解密规则——每位数减1发给乙就可以了,即便别人截获631也无法得知你发送的真正内容。

当然实际加密要复杂的多,不太可能简单的加1,比如,每位数加153@76!54Adue78……。

这上面这个例子中,加密和解密都采用同一个规则——数字3,是典型的采用对称加密。

非对称加密(asymmetric cryptography),它可以生成唯一的匹配的密钥对,一个公钥,另一个私钥,两者一一对应。公钥可以向全网发送,也就是所有人都可以知道公钥,但是私钥必须只有自己知道,否则就容易造成泄密。

公钥用作加密,私钥用于解密。使用公钥加密的密文,只能用配对的私钥才能解密。比如用A的公钥加密,只能使用A密钥解密,不能用B的密钥或其他人的密钥来解密。

另外,公钥还可以用于签名(相当于你手写的签名),私钥用于验证签名。同样如果用A的私钥签名,只能用A的公钥验证,不能用B的或其他人的公钥验证。

甲发送一份情报给乙,首先要求甲乙双方都有各自的公钥和私钥。流程是这样的:

1.乙先把自己的公钥公之于众;

2.甲用公钥对情报进行加密,同时再用自己私钥进行签章,将加密过的情报和签章一起打包发给乙;

3.乙收到情报后,用私钥进行解密,同时用公钥进行验章

这个过程涉及两个问题:

一是如何确保乙收到的情报,内容未被被泄露、更改和动过手脚?

二是乙收到的情报如何确定是甲发送的,而不是其他人(敌方)发送的假情报?

这2个问题也是加密技术必须解决的问题:保密(内容不泄露、篡改)、发送者无法否认。

第一个问题,因为公钥加密的文件,必须要其配对的私钥才能解密。甲发送的文件,用了乙的公钥来加密,只有乙才能解密,这就使得即便情报被其他人截获,其他人因为没有乙的私钥,也就无法打开,只有乙可以解密、打开。

第二个问题,甲用自己的私钥进行了签章,乙收到甲签章过的情报后,用甲的公钥进行验章,验证通过,说明这个情报一定是甲发送的。

打个比方,甲把自己印章一分为二,印章1(公钥)和印章2(私钥),印章1公之于众,印章2自己留着。甲用印章1签章,发送给乙,乙收到后跟印章2比对,能对的上,说明就是甲发送的,不可能是其他人发送的。

这样,我们开头提到的问题,就迎刃而解了。

但是,中本聪又提出另一个问题,数字签名没法解决双重支付的问题。这个难题怎么破解,我们下一期介绍双重支付。