密码学专家徐秋亮:区块链底层是如何构造出来的?

文章正文
发布时间:2024-09-04 05:06

密码学专家徐秋亮:区块链底层是如何构造出来的?

雷锋网AI金融评论按:本文转载自公众号@碳链价值,编者秦晋。文章是根据山东大学教授、密码学专家徐秋亮在「中国电子学会区块链专委会成立大会」现场演讲内容整理而成。供大家品读。徐秋亮教授逻辑严谨、思路清晰的阐述了基于密码学的区块链是如何构造这一问题。

部分精彩观点摘录:

「从区块链密码学角度看,链式存储结构,是密码学中一种常见结构。我们要用现在最常用的加密标准AES加密一个信息。AES每次只加密128个比特,分成三块。但这种加密有很多缺点,密码学来说是不够安全的。

要让它更加安全,提高安全性,怎么办?有很多办法。比如一种叫CBC模式,这种方式首先要提一个初值,每次取不同初值,得到不同加密结果。」

「从密码学角度看,无论比特币是兴还是衰,它技术上完美、思想创新。比特币创造了无中心稳定系统,非常了不起,系统没有中心,没人能对它起到权职作用,而且运行稳定,数据组织、共识机制精美无比。

比特币没有币,有的只是一个帐本,这个帐本现在叫区块链。但是区块链不是一个普通帐本,是一种机制,区块链是表达了一种机制。这个机制将铸币、发行、交易融为一体。」

以下是徐秋亮教授演讲内容(略有删减):

我对区块链从密码学结构角度来做一点底层普及。

现在区块链技术经过一两年发展,已经和原始比特币中的区块链技术完全不同了。区块链已经进入了哲学、社会学、法律学范畴内了。

据说它体现了一种新思想、一种新追求。我对此很困惑。区块链源于比特币底层技术,具有金融血统,那么它在金融上具有什么意义?我也很困惑。

密码学角度看,区块链基于简单密码学构造,形成了一种数据存储结构、数据处理系统、数据发布平台。那么最底层区块链到底是怎么构造出来的?

通过最基础构造,可以想像这样一种结构到底能做什么。这里涉及三方面,一是区块链底层技术;二是比特币密码学元素;三是区块链隐私保护相关技术。

用密码学来解释:区块链是什么

区块链在媒体上被表述得无所不能,要颠覆世界、颠覆互联网。那么它到底是什么?为什么如此神通?

区块链是谁?区块链是密码学的产物、它来源于比特币,我们不妨从比特币和电子现金看一下。

电子现金概念是1988年由D.Chaum提出,现金不可追踪。但是它的理论面临最大困难是电子现金。重复消费、双花很难解决,同时不可分性,也给消费带来很大麻烦。

基于这种思想,Chaum开发了一个电子现金系统。但没有成功。经过多年积淀,比特币奇迹般出现。他解决问题的法宝是区块链。

Chaum电子现金属于法币,支付的也是法币。比特币不同,完全草根出身,无中生有的一种货币。

从密码学角度看。无论比特币是兴是衰,它技术上完美、思想创新毋庸置疑。比特币创造了无中心稳定系统,非常了不起,系统没有中心,没人能对它起到权职作用,而且运行稳定,数据组织、共识机制精美无比。

比特币用区块链打破了以前电子现金面临的困境,使得现金匿名性、不可追踪性成为可能。并解决了电子现金可分、双花问题。

比特币没有币,有的只是一个帐本,这个帐本现在叫区块链。但是区块链不是一个普通帐本,是一种机制,区块链是表达了一种机制。这个机制将铸币、发行、交易融为一体。

可以说是突破固定思维的创造。我们所看到的区块加链形式是它的躯体。共识机制是挖矿才是它的灵魂。

2014-2015年开始出现区块链,2016年爆发。这时各种溢美之词开始出现,那么是真的吗?我不知道。

区块链密码学角度来看,链式存储结构,区块加链这种结构不稀奇,是密码学中常见一种结构。我们要用现在最常用的加密标准AES加密一个信息。AES每次只加密128个比特,分成三块。但这种加密有很多缺点,密码学来说是不够安全的。

CBC模式提高区块链安全性

要让它更加安全,提高安全性,怎么办?有很多办法。比如一种叫CBC模式,这种方式首先要提一个初值,每次取不同初值,得到不同加密结果。

第一块加密结果加到第二块上进行加密,再把这块加到第三块,最后整个变成了这样一个块。它已经链接起来了,加密秘文相互链接。比如你改变了C2和C3就不一样。

在构造这种散列函数,有一种Kerkle-Damgard,把定长函数改为接受任意长度的函数。我们有四个128比特,怎么哈希?取一个初值,随机化,将第一块放进来,256比特,压成128比特,然后再把第二个128比特放进来,又是256比特,最后得到的是我要的哈希值。这种是密码学当中常用结构。

比特币中,这是它构成区块链的方式。我们把区块链放大一点,怎么构成的?用哈希值连接,下一块记录了上一块哈希值,这样不可改变,这种方式链接起来。

这个链如何形成?原始区块链是最纯洁的,比特币中区块链怎么形成的?介绍两个密码原理。

第一个密码原理叫做数字签名。数字签名有两个密钥,形成密钥对。其中一个叫秘钥,用来签名,自己掌握;另外一个密钥叫公钥,用来验证,它是公开的。

对应这两个密钥,一个密钥对应一个签名算法。这个签名算法,要代入到,把参数秘密参数、再加一个消息可形成一个签名。验证算法要把公钥带进去。把签名带进去进行验证。

强调一点,用pk公钥签名一定用相对应的sk签署。只要pk定了,验证通过相应的一定是用对应的sk签署。

第二个密码原理抗碰撞单向哈希函数。单向就是给X计算y,这个速度非常快,X计算y非常容易。如果给一个y计算X,是非常困难的。所谓非常困难实就是不可行,算不出来。

这样只能往一个方向钻,X算Y,Y算X不可能。我们解H(x)等于0是困难的。如果我们现在把这个要求降低,取一个数字,比方说取T,我不要求X要等于0,哈希X等于0,要求X哈希以后小于t,这样相对来说要简单,当然本质性简单,这个是可以做到的。一般概率来算大约2的32次方可以做到。这是单向用途。

第二是抗碰撞,我找不同的X1、X2,哈希完以后是不可能的。可以看到,如果给定一个H(X)等于Y是不可行的。Y定了篡改X是不可能的。这个性质在比特币中保证了不可篡改性。这是比特币中的标准哈希函数,比特币使用了SHA256等两个来定了它的防篡改性。

如何产生比特币,先设一个哈希函数,两个256比特连起来,选取一个阈值,16进制8个0,256个比特,是2的224次方。

再选取一个签名体制,系统设立块,现在要为创世块做准备,先需要这样一个签名算法,算法已经选好,也就是要选一个秘钥,一个是sk、一个pk,把公钥经过两个函数变化一个杂乱字符串,这个字符串作为帐户,比特币帐户是公钥经过两次哈希后得到的乱码。

由于这个帐户由pk按照固定方法来生成,因此可把它看成和pk是等价的。可以把pk说成帐户。

这是关于公钥生成帐户过程。现在创建比特币。现在没有比特币,既然没有就没有任何交易。怎么办?

这里只有一笔交易,挖这一块奖金,叫coinbase,把50比特转到刚才形成的帐户。这个交易写成一个压缩固定长度。开始计算,选取一个随机数,叫做nonce。把选择的随机数和刚才那笔交易,经过处理压缩的标准格式。

把它放到哈希函数计算,计算完得到一个值,这个值是否小于刚才设定的T?一直算到哈希值小于t,就成功了。这个时候产生了比特币创世块。

后面如何来产生其他块?

选取nonce,到得到h小于t的nonce。这个过程叫挖矿。挖矿难度在最开始时,t是2的224次方,下面加了一个难度系数。现在这个d已经很大。挖矿比原来难得多了。

现在比特币已经诞生,可以进行交易。怎么交易?用到数字签名。交易是这么一个信息,A帐户是Alice,要转到B帐户,以后谁保证?做一个签名,Alice用这个帐户私钥对信息进行签名,对这个签名把私钥对应的公钥公布出来,这时可看到如果用pk,这样一个公钥能够验证通过签名,说明这个签名是用pkA对应私钥签的。

A帐户对应私钥签就是合法的。A这个帐户私钥说我把帐户钱转到B,验证通过被认可,就是一笔合法交易。

当然现在还没有上到这里去。

这个怎么上到这儿去。这个交易放出去,放到比特币网上,怎么进入链上。假设这个区块链已经形成到这里,创造下一块怎么创造,现在为创造把下一块哈希值放到这一块里。然后选取一些交易,把这个交易也放到这一块里,这个交易怎么放?

就是一个数,把根放进去,现在我们又进入挖矿过程,随机一个Nonce,随机计算哈希值,如果大,就回去、如果小,就挖矿成功,这个链就上去了,这样就越来越长。

这个链可以看到,每一个链都记录了上一个链,每一块都有哈希值,这个哈希值记录在这里,这个记录在这里。这是不可能改变的。如果这边改变和那边对不起来。可以看到越往前面越安全。

因为改变一个会影响后面所有块,因此越往前越安全。这是关于区块链整个过程。

比特币,密码算法构造出的货币,此应该叫做密码货币,在英文里这个词叫Cryptocurrency,不是加密货币,哈希不是加密、签名不是加密,密码不等于加密。因此在用到哈希也好、签名也好是用来认证的。密码学属于认证算法。

因此以后在媒体报道时,尽量不要用加密货币,用密码货币,这是密码学者的共识。

总之区块链按照上述形成过程,是去中心化的,所有人都按照挖矿共识工作。

再一个是分布式的,任何人都可以下载区块链,都可以去上载区块链,也是公开的,任何人可以查。

里面媒体交易可以用数字签名验证,每一块可以用哈希值验证。既然可验证,而且我们保证防篡改。所有这些保证了可信机制。可信由这些信任保证的。

区块链应用可以做什么?做数字商店、防伪、证书管理。但银行银联我不知道,需要金融学家考虑。

区块链的隐私问题

一个区块链中有很多密码学问题。第一个是隐私问题。比特币匿名,如果用这种区块链方式来产生法币,这里隐私、认证、监管效率如何平衡。

第二比特币帐户虽然匿名,但是帐户之间关联,交易额度可以说一览无余,现实世界通过分析很容易确定帐户拥有者、你寄一笔钱,公布你的帐户,所有交易、来往都可以观察出来,或者观察关联,这个帐户一提款那边买房子,很容易推测。

隐私保护最好的是CASH,利用承诺将交易方、交易数额隐藏起来,用零知识证明来证明交易有效性。

最后隐私问题是关于它不是货币了,但是有一些隐私信息、健康信息,在这里我们可以用一些秘态处理技术,公开加密、同态加密。还可以用一些保密认证,环签名、群签名、承诺、零知识等等。

区块链给密码学带来了新定义。很早时候,这种环签名、群签名做的时候技术成熟了,没有什么再做的就放弃了。

安全多方计算

然后开始做多方计算,我做十年多方计算都做到绝望,有什么用呢?突然区块链告诉我多方计算很有用,燃起了我们搞多方计算的信心。现在我们的课题也多方计算的。

总之区块链利用密码学构造,因此存在大量密码学问题研究。

但另一方面,区块链也为密码学提供了宝贵资源。比如安全多方计算,最核心的是没有可信中心,如果有可信中心什么解决了,但是区块链可不可以把它当成核心中心?

再比方随机数生成,区块链是不是可以当做一个好的随机源?它不光是密码学很多算法激活各种签名、安全计算、零知识都被激活,密码学很多经典问题被区块链激活。

另外一方面也为区块链提供很多资源。因此我们做密码的对区块链是非常欢欣鼓舞的,这个技术激活了我们领域很多纯领域问题,把很多纯理论问题连接起来了。

雷峰网版权文章,未经授权禁止转载。详情见转载须知。