我们介绍了区块链最核心的原理,但是,若想在实际生活中运用,仍有许多要克服的难关。本文,我们将会遇到第一个问题—如何验证交易人身分,并介绍对应的解决方案—数字签名。

看完这篇文章,你/妳将会学到:

1. 如何验证交易人身分

2. 什么是数字签名

3. 什么是哈希函数

4. 什么是SHA256

更多人参加的区块链

前一篇文章提到,大雄邀请全校所有同学一同参加区块链的计画,他们决定舍弃传统的纸本帐本,改把帐目储存在各自电脑里的一个文字档中。而目前的运作方式是:假设A 要付给B 100 元,A 就在自己电脑上的帐本记下,并透过网络将这一条帐目发送给所有参与区块链计划的同学。

此时每个人都是网络上的一个节点(node),我们会用广播(broadcast)来形容将讯息传送给其他人的动作,当其他人接收到(或者说「听」到)这一条帐目后,就在自己的帐本上加入这条帐目。如此一来,一项交易就完成了对吧

错!假设大雄某一天听到了一则讯息:

大雄并无法判断这是不是由静香本人所发出的讯息,小夫完全有可能向大家发送假讯息,让其他人误以为静香要付给小夫100 元。此时,就轮到这集的主角—数字签名出场啦,透过数字签名,大雄就能很容易地判断这则讯息是否是静香本人所发送的,就像在一则讯息的最后签名一样。

什么是数字签名

在现实生活中,签名的作用就是确认是否为本人,而数字签名也是一样的功用,甚至相比于传统签名还有过之而无不及之处,这项优点我们之后会提到。

概念上,静香需要在她发送的讯息最后加让她的个人签名,但很快就能发现,有心人只要复制这张图片(或是一串代码),就能轻易伪装成本人。所以密码学家们提出了「非对称式加密」(Asymmetric Cryptography)来避免上述的状况。

然而,为了理解非对称式加密的原理,首先我们必须先了解什么是「哈希函数」(Hash Function)。

什么是哈希函数

所谓「哈希函数」(Hash Function),是将不定长度讯息的输入,演算成固定长度哈希值的输出,且所计算出来的哈希值必须符合两个主要条件: (1) 由哈希值

是无法反推出原来的讯息

(2) 哈希值必须随明文改变而改变

白话来说,就是当使用者输入一段讯息后,函数会产生出一组看似毫无规则、随机产生的数列。

SHA256

SHA256 是一种哈希函数,也是比特币所使用的哈希函数。它的功能是:当使用者输入一段后,产生一组由256 个0 和1 所组成的字串。

这256 个0 或1 可以产生2256 种组合,2256 是个非常、非常、非常大的数字!如果用天文数字来比喻的话反而太高估「天文」了。以下是几个简单的比较:

以上这两个看似庞大的数量根本连2256 的零头都算不上,可见这个数字有多大了。即使将全地球的电脑集合起来,到宇宙毁灭之前,还是没办法算完所有的值!同时,以现有的科技,也没办法从输出的内容逆推回输入的资讯。而就是这样的一个函数,能够在非对称式加密中,起到关键的作用。

总结

在这篇文章中,我们了解到当参与区块链的人数一多,就必须要有更有效的方式来辨认讯息的真伪,也就是透过数字签名的方式。数字签名是一种非对称式加密,在我们深入理解非对称式加密前,必须先认识哈希函数,而SHA256就是一种哈希函数,并被运用在比特币的区块链中。有了这些先备知识,接下来就能很好地理解数字签名与非对称式加密了。