比特币中的数字签名和转账基本原理是怎样的
扫描二维码
随时随地手机看文章
我们一步一步的讲,先以最简单的发电子邮件为例。
现在A向B发出一封email,这封邮件是加密的,根据之前的公钥加密原理也就是非对称加密原理,B是收email的,那么,A就拿着B的公钥加密这个email信息,B收到后用自己的私钥就可以解开这个email信息,知道里面的内容。
大家对这个非对称加密的流程已经比较熟悉了,这里面有一个问题,如果这个email的信息很重要,当然,不重要也不需要非对称加密了。我是说如果这个信息里面是关于钱的,最直接的说就是A在邮件里写了,“我欠了B十万块钱”,这时候这个email就有了一点点类似欠条的法律效用。
问题来了,欠条都需要有个签字签名手印等凭证,这个email有什么凭证呢?没有,只能说这个email是写给B的,因为是B的公钥加密的,也只有B能用自己的私钥解开看到,但是没有什么凭证说明是谁写的。
这个时候就需要一个东西,叫做数字签名,就像是现实世界的亲笔签名、按手印。
数字签名如同指纹一样独一无二。怎么做呢?
A发信息给B,用自己的私钥去加密这段信息,这时候B收到后,拿着A的公钥(公开的),去验证下是A发出的,这就是数字签名。
这时候结合之前的方法,A发出的时候用A自己的私钥对信息进行签名,然后用B的公钥进行加密,B收到后有B自己的私钥解密看到信息,又可以用A的公钥验证签名,整个流程就完成了。
用公钥加密就是上图,公钥密码的基本流程,用私钥加密就是下图,其实是一样的,只不过翻了过来,一个用公钥,一个用私钥。
而私钥加密相当于生成签名,而用公钥加密相当于验证签名。
公钥和私钥是成对出现的,有严谨的数学逻辑,用公钥加密的密文只能用与之对应的私钥进行解密;同样的,用私钥加密的密文需要与之对应的公钥进行解密。也就是说用某个公钥如果成功解密了密文,说明这个密文就是用和这个公钥对应的私钥加密得到的,而世界上掌握这个私钥的人只有一个,也就是这个私钥的主人。
讲到这里,你就知道了,比特币的交易信息传递,也是这样的。
以上摘自比特币的白皮书(中英文版本都放在上面),相信各位读者第一次看到这图的时候,也是比较懵逼的状态,因为不理解非对称加密(公钥加密)的话,理解这个图有一定困难。
从创始区块开始的转账都在这一个链条上,产生新的比特币的方法就是挖矿,也就是生成货币的过程。而每一个交易比特币的人,或者说转账,我转给你10个比特币,这个信息就是我的私钥对之数字签名,收到比特币的人拿我的公钥进行验证,就知道是我转的,而我转给你的信息就是我拿着你的公钥加密的,这个别人看得到对应的地址,别人也知道我这个地址转给你的地址,但是能使用这个地址上的比特币的只有拥有私钥的你一个人。地址对应的人具体是谁不知道,也就是公开透明的转账,但是又保护隐私的原理。
至于私钥推出公钥(反过来不行),公钥推出公钥哈希(反过来不行),公钥哈希推出地址(反过来可以),这个过程不是很难的东西,随意去网上搜索就可以知道。公钥私钥加密解密的过程在比特币网络上自动就完成了,你看到的就是比特币从一个地址转到另一个地址。
所以,整个密码学系列文章讲到这里就打通了整个知识链条,从隐藏法、移位替换法到维基尼亚加密法到恩尼格玛机,然后讲到非对称加密、哈希函数,以及利用哈希函数的挖矿原理,利用非对称加密的数字签名。比特币就是建构在这个密码学之树上的一个重要果实。
如果你认真读过这一个系列的文章,相信会超过很多人对密码学和比特币的认知,而如果能做到这一点,我的工作就没有白费,我也希望看到文章的你,当有朋友问你比特币是什么的时候,比特币怎么转账的时候甩出一句“你知道非对称加密法吗?你知道哈希函数的作用吗?我来给你讲讲吧”,当然,你也可以把我的系列文章发给朋友,先搞清楚基本原理,后面的都好理解。
来源: 加密二锅头