0
本文作者: 溫曉樺 | 2017-11-16 18:11 |
雷鋒網(wǎng)AI金融評(píng)論按:本文轉(zhuǎn)載自公眾號(hào)@碳鏈價(jià)值,編者秦晉。文章是根據(jù)山東大學(xué)教授、密碼學(xué)專家徐秋亮在「中國電子學(xué)會(huì)區(qū)塊鏈專委會(huì)成立大會(huì)」現(xiàn)場(chǎng)演講內(nèi)容整理而成。供大家品讀。徐秋亮教授邏輯嚴(yán)謹(jǐn)、思路清晰的闡述了基于密碼學(xué)的區(qū)塊鏈?zhǔn)侨绾螛?gòu)造這一問題。
「從區(qū)塊鏈密碼學(xué)角度看,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),是密碼學(xué)中一種常見結(jié)構(gòu)。我們要用現(xiàn)在最常用的加密標(biāo)準(zhǔn)AES加密一個(gè)信息。AES每次只加密128個(gè)比特,分成三塊。但這種加密有很多缺點(diǎn),密碼學(xué)來說是不夠安全的。
要讓它更加安全,提高安全性,怎么辦?有很多辦法。比如一種叫CBC模式,這種方式首先要提一個(gè)初值,每次取不同初值,得到不同加密結(jié)果?!?/p>
「從密碼學(xué)角度看,無論比特幣是興還是衰,它技術(shù)上完美、思想創(chuàng)新。比特幣創(chuàng)造了無中心穩(wěn)定系統(tǒng),非常了不起,系統(tǒng)沒有中心,沒人能對(duì)它起到權(quán)職作用,而且運(yùn)行穩(wěn)定,數(shù)據(jù)組織、共識(shí)機(jī)制精美無比。
比特幣沒有幣,有的只是一個(gè)帳本,這個(gè)帳本現(xiàn)在叫區(qū)塊鏈。但是區(qū)塊鏈不是一個(gè)普通帳本,是一種機(jī)制,區(qū)塊鏈?zhǔn)潜磉_(dá)了一種機(jī)制。這個(gè)機(jī)制將鑄幣、發(fā)行、交易融為一體。」
我對(duì)區(qū)塊鏈從密碼學(xué)結(jié)構(gòu)角度來做一點(diǎn)底層普及。
現(xiàn)在區(qū)塊鏈技術(shù)經(jīng)過一兩年發(fā)展,已經(jīng)和原始比特幣中的區(qū)塊鏈技術(shù)完全不同了。區(qū)塊鏈已經(jīng)進(jìn)入了哲學(xué)、社會(huì)學(xué)、法律學(xué)范疇內(nèi)了。
據(jù)說它體現(xiàn)了一種新思想、一種新追求。我對(duì)此很困惑。區(qū)塊鏈源于比特幣底層技術(shù),具有金融血統(tǒng),那么它在金融上具有什么意義?我也很困惑。
密碼學(xué)角度看,區(qū)塊鏈基于簡單密碼學(xué)構(gòu)造,形成了一種數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)、數(shù)據(jù)處理系統(tǒng)、數(shù)據(jù)發(fā)布平臺(tái)。那么最底層區(qū)塊鏈到底是怎么構(gòu)造出來的?
通過最基礎(chǔ)構(gòu)造,可以想像這樣一種結(jié)構(gòu)到底能做什么。這里涉及三方面,一是區(qū)塊鏈底層技術(shù);二是比特幣密碼學(xué)元素;三是區(qū)塊鏈隱私保護(hù)相關(guān)技術(shù)。
區(qū)塊鏈在媒體上被表述得無所不能,要顛覆世界、顛覆互聯(lián)網(wǎng)。那么它到底是什么?為什么如此神通?
區(qū)塊鏈?zhǔn)钦l?區(qū)塊鏈?zhǔn)敲艽a學(xué)的產(chǎn)物、它來源于比特幣,我們不妨從比特幣和電子現(xiàn)金看一下。
電子現(xiàn)金概念是1988年由D.Chaum提出,現(xiàn)金不可追蹤。但是它的理論面臨最大困難是電子現(xiàn)金。重復(fù)消費(fèi)、雙花很難解決,同時(shí)不可分性,也給消費(fèi)帶來很大麻煩。
基于這種思想,Chaum開發(fā)了一個(gè)電子現(xiàn)金系統(tǒng)。但沒有成功。經(jīng)過多年積淀,比特幣奇跡般出現(xiàn)。他解決問題的法寶是區(qū)塊鏈。
Chaum電子現(xiàn)金屬于法幣,支付的也是法幣。比特幣不同,完全草根出身,無中生有的一種貨幣。
從密碼學(xué)角度看。無論比特幣是興是衰,它技術(shù)上完美、思想創(chuàng)新毋庸置疑。比特幣創(chuàng)造了無中心穩(wěn)定系統(tǒng),非常了不起,系統(tǒng)沒有中心,沒人能對(duì)它起到權(quán)職作用,而且運(yùn)行穩(wěn)定,數(shù)據(jù)組織、共識(shí)機(jī)制精美無比。
比特幣用區(qū)塊鏈打破了以前電子現(xiàn)金面臨的困境,使得現(xiàn)金匿名性、不可追蹤性成為可能。并解決了電子現(xiàn)金可分、雙花問題。
比特幣沒有幣,有的只是一個(gè)帳本,這個(gè)帳本現(xiàn)在叫區(qū)塊鏈。但是區(qū)塊鏈不是一個(gè)普通帳本,是一種機(jī)制,區(qū)塊鏈?zhǔn)潜磉_(dá)了一種機(jī)制。這個(gè)機(jī)制將鑄幣、發(fā)行、交易融為一體。
可以說是突破固定思維的創(chuàng)造。我們所看到的區(qū)塊加鏈形式是它的軀體。共識(shí)機(jī)制是挖礦才是它的靈魂。
2014-2015年開始出現(xiàn)區(qū)塊鏈,2016年爆發(fā)。這時(shí)各種溢美之詞開始出現(xiàn),那么是真的嗎?我不知道。
區(qū)塊鏈密碼學(xué)角度來看,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),區(qū)塊加鏈這種結(jié)構(gòu)不稀奇,是密碼學(xué)中常見一種結(jié)構(gòu)。我們要用現(xiàn)在最常用的加密標(biāo)準(zhǔn)AES加密一個(gè)信息。AES每次只加密128個(gè)比特,分成三塊。但這種加密有很多缺點(diǎn),密碼學(xué)來說是不夠安全的。
要讓它更加安全,提高安全性,怎么辦?有很多辦法。比如一種叫CBC模式,這種方式首先要提一個(gè)初值,每次取不同初值,得到不同加密結(jié)果。
第一塊加密結(jié)果加到第二塊上進(jìn)行加密,再把這塊加到第三塊,最后整個(gè)變成了這樣一個(gè)塊。它已經(jīng)鏈接起來了,加密秘文相互鏈接。比如你改變了C2和C3就不一樣。
在構(gòu)造這種散列函數(shù),有一種Kerkle-Damgard,把定長函數(shù)改為接受任意長度的函數(shù)。我們有四個(gè)128比特,怎么哈希?取一個(gè)初值,隨機(jī)化,將第一塊放進(jìn)來,256比特,壓成128比特,然后再把第二個(gè)128比特放進(jìn)來,又是256比特,最后得到的是我要的哈希值。這種是密碼學(xué)當(dāng)中常用結(jié)構(gòu)。
比特幣中,這是它構(gòu)成區(qū)塊鏈的方式。我們把區(qū)塊鏈放大一點(diǎn),怎么構(gòu)成的?用哈希值連接,下一塊記錄了上一塊哈希值,這樣不可改變,這種方式鏈接起來。
這個(gè)鏈如何形成?原始區(qū)塊鏈?zhǔn)亲罴儩嵉?,比特幣中區(qū)塊鏈怎么形成的?介紹兩個(gè)密碼原理。
第一個(gè)密碼原理叫做數(shù)字簽名。數(shù)字簽名有兩個(gè)密鑰,形成密鑰對(duì)。其中一個(gè)叫秘鑰,用來簽名,自己掌握;另外一個(gè)密鑰叫公鑰,用來驗(yàn)證,它是公開的。
對(duì)應(yīng)這兩個(gè)密鑰,一個(gè)密鑰對(duì)應(yīng)一個(gè)簽名算法。這個(gè)簽名算法,要代入到,把參數(shù)秘密參數(shù)、再加一個(gè)消息可形成一個(gè)簽名。驗(yàn)證算法要把公鑰帶進(jìn)去。把簽名帶進(jìn)去進(jìn)行驗(yàn)證。
強(qiáng)調(diào)一點(diǎn),用pk公鑰簽名一定用相對(duì)應(yīng)的sk簽署。只要pk定了,驗(yàn)證通過相應(yīng)的一定是用對(duì)應(yīng)的sk簽署。
第二個(gè)密碼原理抗碰撞單向哈希函數(shù)。單向就是給X計(jì)算y,這個(gè)速度非???,X計(jì)算y非常容易。如果給一個(gè)y計(jì)算X,是非常困難的。所謂非常困難實(shí)就是不可行,算不出來。
這樣只能往一個(gè)方向鉆,X算Y,Y算X不可能。我們解H(x)等于0是困難的。如果我們現(xiàn)在把這個(gè)要求降低,取一個(gè)數(shù)字,比方說取T,我不要求X要等于0,哈希X等于0,要求X哈希以后小于t,這樣相對(duì)來說要簡單,當(dāng)然本質(zhì)性簡單,這個(gè)是可以做到的。一般概率來算大約2的32次方可以做到。這是單向用途。
第二是抗碰撞,我找不同的X1、X2,哈希完以后是不可能的。可以看到,如果給定一個(gè)H(X)等于Y是不可行的。Y定了篡改X是不可能的。這個(gè)性質(zhì)在比特幣中保證了不可篡改性。這是比特幣中的標(biāo)準(zhǔn)哈希函數(shù),比特幣使用了SHA256等兩個(gè)來定了它的防篡改性。
如何產(chǎn)生比特幣,先設(shè)一個(gè)哈希函數(shù),兩個(gè)256比特連起來,選取一個(gè)閾值,16進(jìn)制8個(gè)0,256個(gè)比特,是2的224次方。
再選取一個(gè)簽名體制,系統(tǒng)設(shè)立塊,現(xiàn)在要為創(chuàng)世塊做準(zhǔn)備,先需要這樣一個(gè)簽名算法,算法已經(jīng)選好,也就是要選一個(gè)秘鑰,一個(gè)是sk、一個(gè)pk,把公鑰經(jīng)過兩個(gè)函數(shù)變化一個(gè)雜亂字符串,這個(gè)字符串作為帳戶,比特幣帳戶是公鑰經(jīng)過兩次哈希后得到的亂碼。
由于這個(gè)帳戶由pk按照固定方法來生成,因此可把它看成和pk是等價(jià)的??梢园裵k說成帳戶。
這是關(guān)于公鑰生成帳戶過程?,F(xiàn)在創(chuàng)建比特幣?,F(xiàn)在沒有比特幣,既然沒有就沒有任何交易。怎么辦?
這里只有一筆交易,挖這一塊獎(jiǎng)金,叫coinbase,把50比特轉(zhuǎn)到剛才形成的帳戶。這個(gè)交易寫成一個(gè)壓縮固定長度。開始計(jì)算,選取一個(gè)隨機(jī)數(shù),叫做nonce。把選擇的隨機(jī)數(shù)和剛才那筆交易,經(jīng)過處理壓縮的標(biāo)準(zhǔn)格式。
把它放到哈希函數(shù)計(jì)算,計(jì)算完得到一個(gè)值,這個(gè)值是否小于剛才設(shè)定的T?一直算到哈希值小于t,就成功了。這個(gè)時(shí)候產(chǎn)生了比特幣創(chuàng)世塊。
后面如何來產(chǎn)生其他塊?
選取nonce,到得到h小于t的nonce。這個(gè)過程叫挖礦。挖礦難度在最開始時(shí),t是2的224次方,下面加了一個(gè)難度系數(shù)?,F(xiàn)在這個(gè)d已經(jīng)很大。挖礦比原來難得多了。
現(xiàn)在比特幣已經(jīng)誕生,可以進(jìn)行交易。怎么交易?用到數(shù)字簽名。交易是這么一個(gè)信息,A帳戶是Alice,要轉(zhuǎn)到B帳戶,以后誰保證?做一個(gè)簽名,Alice用這個(gè)帳戶私鑰對(duì)信息進(jìn)行簽名,對(duì)這個(gè)簽名把私鑰對(duì)應(yīng)的公鑰公布出來,這時(shí)可看到如果用pk,這樣一個(gè)公鑰能夠驗(yàn)證通過簽名,說明這個(gè)簽名是用pkA對(duì)應(yīng)私鑰簽的。
A帳戶對(duì)應(yīng)私鑰簽就是合法的。A這個(gè)帳戶私鑰說我把帳戶錢轉(zhuǎn)到B,驗(yàn)證通過被認(rèn)可,就是一筆合法交易。
當(dāng)然現(xiàn)在還沒有上到這里去。
這個(gè)怎么上到這兒去。這個(gè)交易放出去,放到比特幣網(wǎng)上,怎么進(jìn)入鏈上。假設(shè)這個(gè)區(qū)塊鏈已經(jīng)形成到這里,創(chuàng)造下一塊怎么創(chuàng)造,現(xiàn)在為創(chuàng)造把下一塊哈希值放到這一塊里。然后選取一些交易,把這個(gè)交易也放到這一塊里,這個(gè)交易怎么放?
就是一個(gè)數(shù),把根放進(jìn)去,現(xiàn)在我們又進(jìn)入挖礦過程,隨機(jī)一個(gè)Nonce,隨機(jī)計(jì)算哈希值,如果大,就回去、如果小,就挖礦成功,這個(gè)鏈就上去了,這樣就越來越長。
這個(gè)鏈可以看到,每一個(gè)鏈都記錄了上一個(gè)鏈,每一塊都有哈希值,這個(gè)哈希值記錄在這里,這個(gè)記錄在這里。這是不可能改變的。如果這邊改變和那邊對(duì)不起來??梢钥吹皆酵懊嬖桨踩?。
因?yàn)楦淖円粋€(gè)會(huì)影響后面所有塊,因此越往前越安全。這是關(guān)于區(qū)塊鏈整個(gè)過程。
比特幣,密碼算法構(gòu)造出的貨幣,此應(yīng)該叫做密碼貨幣,在英文里這個(gè)詞叫Cryptocurrency,不是加密貨幣,哈希不是加密、簽名不是加密,密碼不等于加密。因此在用到哈希也好、簽名也好是用來認(rèn)證的。密碼學(xué)屬于認(rèn)證算法。
因此以后在媒體報(bào)道時(shí),盡量不要用加密貨幣,用密碼貨幣,這是密碼學(xué)者的共識(shí)。
總之區(qū)塊鏈按照上述形成過程,是去中心化的,所有人都按照挖礦共識(shí)工作。
再一個(gè)是分布式的,任何人都可以下載區(qū)塊鏈,都可以去上載區(qū)塊鏈,也是公開的,任何人可以查。
里面媒體交易可以用數(shù)字簽名驗(yàn)證,每一塊可以用哈希值驗(yàn)證。既然可驗(yàn)證,而且我們保證防篡改。所有這些保證了可信機(jī)制。可信由這些信任保證的。
區(qū)塊鏈應(yīng)用可以做什么?做數(shù)字商店、防偽、證書管理。但銀行銀聯(lián)我不知道,需要金融學(xué)家考慮。
一個(gè)區(qū)塊鏈中有很多密碼學(xué)問題。第一個(gè)是隱私問題。比特幣匿名,如果用這種區(qū)塊鏈方式來產(chǎn)生法幣,這里隱私、認(rèn)證、監(jiān)管效率如何平衡。
第二比特幣帳戶雖然匿名,但是帳戶之間關(guān)聯(lián),交易額度可以說一覽無余,現(xiàn)實(shí)世界通過分析很容易確定帳戶擁有者、你寄一筆錢,公布你的帳戶,所有交易、來往都可以觀察出來,或者觀察關(guān)聯(lián),這個(gè)帳戶一提款那邊買房子,很容易推測(cè)。
隱私保護(hù)最好的是CASH,利用承諾將交易方、交易數(shù)額隱藏起來,用零知識(shí)證明來證明交易有效性。
最后隱私問題是關(guān)于它不是貨幣了,但是有一些隱私信息、健康信息,在這里我們可以用一些秘態(tài)處理技術(shù),公開加密、同態(tài)加密。還可以用一些保密認(rèn)證,環(huán)簽名、群簽名、承諾、零知識(shí)等等。
區(qū)塊鏈給密碼學(xué)帶來了新定義。很早時(shí)候,這種環(huán)簽名、群簽名做的時(shí)候技術(shù)成熟了,沒有什么再做的就放棄了。
然后開始做多方計(jì)算,我做十年多方計(jì)算都做到絕望,有什么用呢?突然區(qū)塊鏈告訴我多方計(jì)算很有用,燃起了我們搞多方計(jì)算的信心?,F(xiàn)在我們的課題也多方計(jì)算的。
總之區(qū)塊鏈利用密碼學(xué)構(gòu)造,因此存在大量密碼學(xué)問題研究。
但另一方面,區(qū)塊鏈也為密碼學(xué)提供了寶貴資源。比如安全多方計(jì)算,最核心的是沒有可信中心,如果有可信中心什么解決了,但是區(qū)塊鏈可不可以把它當(dāng)成核心中心?
再比方隨機(jī)數(shù)生成,區(qū)塊鏈?zhǔn)遣皇强梢援?dāng)做一個(gè)好的隨機(jī)源?它不光是密碼學(xué)很多算法激活各種簽名、安全計(jì)算、零知識(shí)都被激活,密碼學(xué)很多經(jīng)典問題被區(qū)塊鏈激活。
另外一方面也為區(qū)塊鏈提供很多資源。因此我們做密碼的對(duì)區(qū)塊鏈?zhǔn)欠浅g欣鼓舞的,這個(gè)技術(shù)激活了我們領(lǐng)域很多純領(lǐng)域問題,把很多純理論問題連接起來了。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。