區(qū)塊鏈?zhǔn)羌用茇泿疟澈蟮募夹g(shù),是當(dāng)下與VR虛擬現(xiàn)實(shí)等比肩的熱門技術(shù)之一。但區(qū)塊鏈或分布式記賬技術(shù)存在設(shè)計(jì)缺陷,必須引起重視。
區(qū)塊鏈或分布式賬簿既不是分布式的,也不是記賬簿,它是通過集中處理的方式,對(duì)所有交易歷史記錄進(jìn)行處理后而產(chǎn)生的,并以此來計(jì)算當(dāng)前狀態(tài)值。在工程或計(jì)算機(jī)科學(xué)定義中,分布式系統(tǒng)通常由幾個(gè)分區(qū)組成,其面臨的挑戰(zhàn)是通過分區(qū)內(nèi)以及分區(qū)之間的數(shù)據(jù)交換而作出全局最佳決策。
目前許多商業(yè)銀行參與的支付系統(tǒng)就是一種分布式系統(tǒng),這是因?yàn)楣芾怼⒎伞T、客戶偏好、地理分布、人口分布等問題,不可能建立一個(gè)由中央銀行設(shè)立并提供全國所有人賬號(hào)的系統(tǒng)。而這種一部擁有所有人賬號(hào)的系統(tǒng)正是這些區(qū)塊鏈倡導(dǎo)者所倡導(dǎo)的:整個(gè)系統(tǒng)所有狀態(tài)的副本將對(duì)每個(gè)獨(dú)立的分區(qū)(甚至所有分區(qū)的成員)都是可見的。然而,由于過高的成本以及并不如預(yù)期的簡化,這種中心化處理全用戶備份的系統(tǒng),實(shí)現(xiàn)起來既不實(shí)際也不必要。事實(shí)上,互聯(lián)網(wǎng)就是一個(gè)分級(jí)的分布式系統(tǒng),具有足夠的冗余度滿足某些應(yīng)用程序?qū)Ψ植际较到y(tǒng)的需求。例如,DNS服務(wù)是一組具有嚴(yán)格分級(jí)控制的去中心化系統(tǒng)服務(wù)。與許多區(qū)塊鏈和DLT倡導(dǎo)者所不同的是,互聯(lián)網(wǎng)并非沒有一個(gè)對(duì)其核心服務(wù)進(jìn)行控制的中心,也不是沒有對(duì)第三方的信任。
賬戶余額包含其所有賬戶的當(dāng)前狀態(tài),因?yàn)橛绊戇@些狀態(tài)的所有交易,已經(jīng)被處理并且使用迭代方法對(duì)當(dāng)前狀態(tài)進(jìn)行了更新。在使用區(qū)塊鏈算法時(shí),或者根據(jù)自己算法的正確性來選擇信任所有數(shù)據(jù)的當(dāng)前狀態(tài)值,或者每次在有新的交易發(fā)生時(shí)從整個(gè)分類賬記錄中重新計(jì)算當(dāng)前狀態(tài)。在這方面,計(jì)算機(jī)科學(xué)的目標(biāo)是開發(fā)出根據(jù)輸入數(shù)據(jù)迅速給出最簡單結(jié)果的優(yōu)化算法,而不是固執(zhí)地利用多個(gè)區(qū)塊鏈系統(tǒng)所使用的“蠻”力算法。可以信任自己的算法進(jìn)行迭代,并且只保留賬單的當(dāng)前狀態(tài),或者不信任自己的算法,每次都通過整個(gè)交易歷史重新計(jì)算當(dāng)前狀態(tài)。由于開始計(jì)算時(shí)擁有所有交易歷史并不能保證得到正確的當(dāng)前狀態(tài),如果不信任計(jì)算當(dāng)前狀態(tài)的迭代算法而選擇相信“蠻力”算法,那又如何證明“蠻力”算法會(huì)給出正確的答案呢?數(shù)學(xué)中最簡單的真理是:應(yīng)信任作出結(jié)論所依據(jù)的證據(jù),而不是回到所謂的“常識(shí)”糾結(jié)于諸如“因?yàn)閺拈_始就有某地方的所有數(shù)據(jù),就能正確估計(jì)當(dāng)前狀態(tài)”。認(rèn)識(shí)到這點(diǎn)非常重要,尤其是區(qū)塊鏈現(xiàn)在被認(rèn)為是從物聯(lián)網(wǎng)到醫(yī)療系統(tǒng),甚至政府治理的“救世主”,就好像區(qū)塊鏈產(chǎn)生之前,整個(gè)計(jì)算機(jī)科學(xué)領(lǐng)域?qū)λ惴◤?fù)雜性的研究和算法簡化都是不需要的。
那么,如何對(duì)被認(rèn)為是正確的狀態(tài)估計(jì)實(shí)施保護(hù),并且傳輸給每個(gè)參與者?用于計(jì)算當(dāng)前狀態(tài)的客戶端數(shù)據(jù)副本都必須是安全可靠的,否則基于這些數(shù)據(jù)作出的狀態(tài)估計(jì)就不可信。正因?yàn)榘惭b在電腦或智能手機(jī)上的所有客戶端都可以訪問這個(gè)副本(即使該副本可以被質(zhì)疑),不能保證它能給你帶來不被篡改的結(jié)果。因?yàn)閷?duì)于數(shù)據(jù)的保護(hù)涵蓋了對(duì)通信信道、數(shù)據(jù)傳輸以及客戶端所使用的代碼,因此保護(hù)并安全傳輸?shù)倪^程必將是十分艱難的。
除了使用“分布式”和“賬單”定義的錯(cuò)誤之外,許多可以通過區(qū)塊鏈系統(tǒng)去解決的問題在現(xiàn)有的金融系統(tǒng)中并不存在。例如,區(qū)塊鏈應(yīng)用的一個(gè)假設(shè)就是,在純粹的點(diǎn)對(duì)點(diǎn)的支付系統(tǒng)中,由于沒有一方,或者沒有可以信任的一方來計(jì)算和維護(hù)用戶在當(dāng)前狀態(tài)的余額,因此用戶當(dāng)前的余額必須根據(jù)歷史交易數(shù)據(jù)進(jìn)行計(jì)算,最終導(dǎo)致每一筆交易都需要為所有人提供可驗(yàn)證的簽名。而在許多采用區(qū)塊鏈技術(shù)進(jìn)行清算和結(jié)算的銀行應(yīng)用中,首先不存在這些用戶不信任金融機(jī)構(gòu)結(jié)算的問題,跨銀行的交易系統(tǒng)已經(jīng)運(yùn)行多年,并沒有區(qū)塊鏈推崇者假設(shè)的不信任或業(yè)務(wù)問題。當(dāng)然,所有系統(tǒng)都有改進(jìn)的空間,但是正確地提高跨銀行結(jié)算系統(tǒng)效率的方法是:要么發(fā)現(xiàn)和定位已經(jīng)存在的系統(tǒng)設(shè)計(jì)問題,并通過技術(shù)手段去解決它們;要么改進(jìn)交易流程或者圍繞交易設(shè)計(jì)新的流程去解決業(yè)務(wù)問題。多年以來,企業(yè)級(jí)應(yīng)用的架構(gòu)上都會(huì)通過改進(jìn)非最優(yōu)化的交易流程,并采用新的信息技術(shù)來設(shè)計(jì)和搭建企業(yè)級(jí)的信息技術(shù)系統(tǒng)。而通過使用一種原本是用來解決用戶之間交易互信問題的設(shè)計(jì)來解決交易流程或IT架構(gòu)問題,看起來是非常奇怪的。另外,區(qū)塊鏈需要在一部分參與者之間建立加密通信信道,以防止通信內(nèi)容被無權(quán)知悉的其他參與者獲取,這會(huì)帶來一系列新的問題,而且不可能通過最簡單的系統(tǒng)解決。任何設(shè)計(jì)過加密系統(tǒng)的人都知道管理密鑰的重要性不亞于保障算法及相關(guān)協(xié)議的安全性。在這樣的系統(tǒng)中加上幾個(gè)私密共享協(xié)議、多重簽名、同態(tài)加密以及共識(shí)算法,是不可能在一群預(yù)先毫不信任的區(qū)塊鏈參與者之間,實(shí)現(xiàn)安全的密鑰配布和生命周期管理的。
一旦了解并更正了這些區(qū)塊鏈文獻(xiàn)中使用的術(shù)語和定義的錯(cuò)誤,大家便可以像分析其他交易系統(tǒng)一樣來分析區(qū)塊鏈的應(yīng)用,并認(rèn)識(shí)到其在安全性和架構(gòu)方面中的一些設(shè)計(jì)缺陷。
以下對(duì)區(qū)塊鏈和DLT技術(shù)缺陷作一簡要總結(jié):
第一,單點(diǎn)故障。對(duì)于比特幣這樣一個(gè)昂貴系統(tǒng)(消耗的電力相當(dāng)于一個(gè)小國家)而言,致命弱點(diǎn)卻在于其安全性。用于交易簽名的非對(duì)稱算法和哈希算法都會(huì)在一定的正常使用期限以后存在缺陷。比特幣、區(qū)塊鏈的所有算法和不同的密鑰長度都已經(jīng)完全包含在它近8年的歷史。而根據(jù)區(qū)塊鏈的算法,必須信任整個(gè)區(qū)塊鏈的交易歷史的不可篡改性,才能信任當(dāng)前狀態(tài)的計(jì)算結(jié)果。不難看出:部分早期比特幣與區(qū)塊鏈由于當(dāng)時(shí)使用的算法或者密鑰長度已經(jīng)過時(shí),因而此部分交易歷史就有可能被偽造,這將導(dǎo)致以此得到的當(dāng)前狀態(tài)也不可以被信任,這種系統(tǒng)設(shè)計(jì)導(dǎo)致一個(gè)危險(xiǎn)的單點(diǎn)故障狀態(tài)。
第二,混用認(rèn)證密鑰和簽名密鑰。非對(duì)稱密鑰可以用于認(rèn)證和簽名(如果需要時(shí)可用于加密)。根據(jù)加密安全設(shè)計(jì)原則的要求,不同的密鑰應(yīng)該用于不同的目的,以避免將密鑰用于多用途而導(dǎo)致數(shù)據(jù)泄漏。在比特幣與區(qū)塊鏈實(shí)際操作中還存在更嚴(yán)重的問題:用戶需要保護(hù)好自己的私鑰,因?yàn)樗借€不僅用于驗(yàn)證身份(發(fā)件人和收件人身份驗(yàn)證),還被綁定到其所擁有的比特幣上。通常企業(yè)系統(tǒng)設(shè)計(jì)中,用戶丟失了身份驗(yàn)證密鑰還可以通過回答一些安全問題得以恢復(fù)。然而,丟失了比特幣或區(qū)塊鏈的私鑰,就意味著永久地失去對(duì)比特幣的使用權(quán)限。
第三,垂直耦合設(shè)計(jì)而非分層架構(gòu)。像區(qū)塊鏈技術(shù)這樣復(fù)雜的技術(shù)都應(yīng)具有分層架構(gòu)設(shè)計(jì),而不是使用垂直的緊密耦合的系統(tǒng)架構(gòu)。互聯(lián)網(wǎng)設(shè)計(jì)具有七層(OSI模型)或四層(TCP/IP)。這些層完全不存在耦合,因而可以支持每層具有最大的靈活性和交互性。
新聞熱點(diǎn)
疑難解答
圖片精選