文|焦鋒
基于網絡交易的區塊鏈安全技術研究
文|焦鋒
若干年前,比特幣誕生了,當時的技術和經濟環境還沒有對它引起足夠的重視,然而現在比特幣的價值已經在3萬元人民幣一個左右。為什么它的存在能有這么大的價值,作為一種數字貨幣,它所存在的意義又是什么呢?比特幣作為眾多數字貨幣中的一種,之所以有這么大的價值,是因為它使用了一種可以代替第三方作為信任機構的技術,就是區塊鏈技術。時下盛行的二維碼支付,各種第三方網絡支付機構的出現,無現金文化的提倡等等,涌現出了支付安全問題。區塊鏈技術開始被人們所重視,尤其是京東、阿里這種巨無霸的網購平臺。
從網購誕生到現在為止,站在人們面前最為嚴重的問題就是信任問題。為了解決這個問題,京東提出了自營策略,希望通過自身的信譽來解決客戶的信任問題。阿里則通過支付寶第三方擔保的手段,試圖解決該問題。然而,這些方法無法從根源上解決信任危機。因此,就有了本文要研究的區塊鏈技術,也就是當前最火的比特幣所使用的技術。下面重點對區塊鏈技術進行說明。
簡單來說,區塊鏈就是一種分布式的賬本技術。它采用密碼學的方法,確保自身的數據不會被篡改,然后又使用共識算法來對新增數據達成共識。
1、區塊鏈是一個放在非安全環境中的分布式數據庫
首先,這是一個分布式的,去中心化的系統。所以,有一個中心服務器或者節點的,不是區塊鏈。節點都是安全的,無惡意的,這也不是區塊鏈。同理,從應用的角度講,如果你的應用必須要使用中心節點(例如要用超級計算機做深度學習)或者沒必要考慮節點不安全的情況(例如某個安全的工廠里的傳感器),那么并不需要考慮區塊鏈技術。
至于后面的詞“數據庫”,目前大部分成熟的區塊鏈都是數據庫,例如比特幣就是一個分布式賬本,而賬本其實就是數據。然后,根據數據的格式,又可以分三種:1,數據是完全不相關的,只是達成的共識,沒有有效無效之分;2,數據有某些邏輯結構,例如賬本中,一筆交易實際上除了金額,還有輸入和輸出,連接到之前的交易,這些數據需要通過邏輯驗證(例如交易中,節點需要驗證輸入的交易是否有效);3,數據擁有圖靈完備的邏輯,而驗證的時候需要通過節點使用算力運算,每筆交易可以有不同的輸出和狀態,每個節點要做的不僅僅是驗證交易的真實性和輸入的正確性,還要根據交易里的邏輯讀入數值,進行驗算然后再驗證結果。比特幣的系統就是第二種,又叫分布式賬本;以太坊是第三種。第三種可以支持智能合約。用比特幣舉例的話,它是一個完全去中心化的系統;它放在一個非安全的環境,并不要求所有使用比特幣的人都沒有惡意。
2、區塊鏈采用密碼學的方法來保證已有數據不可能被篡改。
這個部分的兩個核心要點是:密碼學哈希函數;非對稱加密。兩個都是密碼學的基礎概念:
已有關于研究農業機械化水平評價指標的文獻中,主要考察的指標是農業機械化程度[3-4]。由于我國畜牧業機械化統計數據的缺失,本文畜牧業機械化水平也通過畜牧機械在畜牧生產過程中的應用程度來反映,因此擬通過加權各家畜種類在畜牧生產過程中的主要關鍵環節的機械化應用程度來計算其機械化水平。
(密碼學)哈希函數:一個函數Y=H(X),有如下性質:有X可以很容易算出Y;有Y不可能算出X;有Y不可能找到另一個X'使得H(X')=Y;如果X和X'相差很小,H(X)和H(X')則完全不相關。這東西主要用于驗證信息完整性——在一個信息后面放上這個信息的哈希值,這個值很小,例如256bit,而且計算方便。收到信息之后收信人再算一遍哈希值,對比兩者就知道這條信息是否被篡改過了。如果被篡改過,哪怕只有1數字1bit,整個哈希值也會截然不同。而根據哈希函數的性質,沒有人能夠偽造出另一個消息具有同樣的哈希值,也就是說篡改過的數據完全不可能通過哈希校驗。
非對稱加密:這東西很好理解——對稱加密就是有個密鑰,可以理解成保險箱鑰匙,你把消息加密變成密文,沒有人能看懂這是啥,然后同一把鑰匙解密成原來的消息。非對稱加密就是有兩把鑰匙,一把叫公鑰,一把叫私鑰,用其中一把加密的話,只能用另一把解密,反之亦然。另一個重要的性質是,給你密文,明文和其中一把鑰匙,你還是解不出來另一把鑰匙是啥。原理基本上是基于一些困難數學問題,例如因數分解和離散對數,常用的有RSA,Diffie-Hellman和ECC(橢圓曲線),比特幣用的是橢圓曲線。非對稱加密除了和對稱加密一樣用于信息加密之外,還有另一個用途,就是身份驗證。因為通常情況我們假設一對公私鑰,公鑰是公開的,而私鑰只有本人有,于是一個人如果有對應的私鑰,我們就可以認定他是本人。其中一個重要的應用就是數字簽名——某個消息后面,發信人對這個消息做哈希運算,然后用私鑰加密。接著收信人首先對消息進行哈希運算,接著用相應的公鑰解密數字簽名,再對比兩個哈希值,如果相同,就代表這個消息是本人發出的而且沒有被篡改過。
區塊鏈把交易(數據)寫在區塊里:第一個區塊叫創世區塊,內容隨意。從第二個區塊開始,每個區塊的第一部分有前一區塊的哈希值。此外,區塊里的每一筆交易(數據),都有發起人的數字簽名來保證真實性和合法性。于是,先前區塊里的任何數據都不可被篡改。這個數據庫并不是靜止的啊。數據庫的數據是會增加的,而每次增加的數據,就是一個區塊,于是這些生成時間不同的區塊,就以這種形式鏈在一起了。
3、區塊鏈采用共識算法來對于新增數據達成共識。
共識算法的目的,就是讓所有節點對于新增區塊達成共識,也就是說,所有人都要認可新增的區塊。對于有中心的系統,這事很簡單,中心說什么大家同意就好了,但是放到去中心化系統里,尤其是當有些節點有惡意的時候,這東西非常復雜,計算機科學里有個相應的問題,叫做“拜占庭將軍問題”或者“拜占庭容錯”(BFT)。
公有鏈,以比特幣,以太坊和所有虛擬貨幣為代表,都采用比特幣共識,共識算法基本上都采用工作證明機制,也就是挖礦,這種機制其他回答里已經講得夠清楚了。工作證明機制一切都好,除了費電……費多少電呢?比特幣的話,差不多和一個百萬人級別的城市那么多。此外以太坊的創始人特別喜歡權益證明,似乎很快要小范圍投入使用(100個區塊里一個用權益證明)。但是目前為止,大家對它的可靠性還持觀望態度。
私有鏈和聯盟鏈。以IBM的hyperledger-fabric,以及一大堆其他的類似于tendermint,甚至R3 corda和ripple為代表,都用BFT共識。其實這方面的應用已經很多了,問題是,目前基本上所有應用給人的感覺都還是為了做區塊鏈而區塊鏈,真的覺得這東西好到不可或缺的應用還基本沒有。
安全且沒有中央大賬本,所以無法銷毀(不是一臺電腦可以控制的),無法作弊,每個人都有相同的賬本,能確保賬本記錄過程是公開透明的。
全民記賬效率也會提高沒有中心化的中介機構存在,讓所有的東西都通過預先設定的程序自動運行,能夠大大降低成本,提高效率。
解決了中介信用的問題以前兩個人合作,若是不信任對方,就必須依靠第三方,就像轉賬必須通過銀行。但通過區塊鏈技術,人們就可以實現在沒有中介機構的情況下雙方相互轉賬,比如比特幣,它就是區塊鏈的實際應用之一。
區塊鏈的主要技術應用就是在金融上,然而還是存在不少的問題需要去解決:
1、區塊鏈作為一個記賬系統,如何解決金融體系的底層線下摩擦。
2、比特幣在支付方面,當前比特幣網絡確認的交易是每秒最多7筆,而支付寶每秒則達到上萬筆的交易確認。便捷性上來看,的確不如微信和支付寶,這個毋庸置疑,不過側鏈和閃電網絡正在攻克這些技術問題。
3、銀行開戶的成本是比較高昂的,但也無法避免。因為涉及到跨境支付,像目前對于不同的機構,做賬對不上這些問題,其實都會涉及到支付成本。而區塊鏈要怎么給出實際的解決方法,都是很現實的問題。
區塊鏈技術雖然目前被看好,然而由于是新技術,且成熟案例非常有限,可借鑒的案例幾乎沒有,因此,還需要不斷的去探索和嘗試,解決所遇到的各種坑和一些現實問題。
作者單位:湖南省汽車技師學院