代碼、協(xié)同、口令,科學家談區(qū)塊鏈最前沿技術

區(qū)塊鏈技術是由多方共同記錄和維護的分布式數(shù)據(jù)庫,該數(shù)據(jù)庫通過哈希形成一種鏈狀結構,其中數(shù)據(jù)的記錄和維護通過密碼學技術來保證其完整性,使得任何一方難以篡改、抵賴、造假。

區(qū)塊鏈技術是可以降低社會系統(tǒng)運作的信任成本。它用軟件的方式解決了信任問題,前提是要保證軟件的可信度。

同時軟件運行也需要高的性能,盡管目前的區(qū)塊鏈性能已經足夠支撐我們去做一些應用和探索,但還不能替代中心化系統(tǒng)。

如果要將區(qū)塊鏈運用到社會的方方面面,還需要去打破目前區(qū)塊鏈性能、安全的瓶頸。

12月6日,《麻省理工科技評論》與螞蟻集團共同舉辦了“區(qū)塊鏈與數(shù)字經濟發(fā)展論壇”,會議邀請到了美國西密西根大學計算機科學系正教授楊子江,中科院計算所研究員、博導孫毅,南開大學教授、博導、天津網絡與數(shù)據(jù)安全技術重點實驗室副主任汪定,他們分別從代碼、性能、口令等領域,分享了區(qū)塊鏈技術最前沿現(xiàn)狀。

“90%項目代碼高度相似度,市值半年后跌至10%”—楊子江(美國西密西根大學計算機科學系正教授、深信科創(chuàng)創(chuàng)始人兼CEO)

人類的信息發(fā)展非???,從遠古打繩結來記錄,到現(xiàn)代信息時代的電郵、手機,信息流轉的非常通順,信息量非常大。但是有一個問題始終沒有解決,就是信任問題。

為什么我們要在火車站排長隊?因為它不信任你有票可以上火車。相比之下,歐洲的火車站、地鐵站,是隨機抽查的機制,因為它假設你有票,它信任你已經買了票。它不檢票,因此沒有時間成本。

可以看出,信任其實是有代價和成本的。我們每一天都在為信任付出高昂成本,不管是時間成本還是金錢成本。

區(qū)塊鏈解決了人類歷史上2000年來沒有解決的信任問題,至少從理論上解決了。

人類歷史依賴三個技術的進步,計算技術,從算盤到計算機,計算速度增加了很多;通信技術,從信鴿到互聯(lián)網,信息在傳儲過程中的信息量以及信息的考核性都有很大的提升;但有一個技術始終沒有太多的進展,就是存儲技術,以前是用書,現(xiàn)在記載到一個光盤、硬盤或者一個外置的云存儲項,但是它的信任問題沒有很好的解決。

區(qū)塊鏈技術是由多方共同記錄和維護的分布式數(shù)據(jù)庫,該數(shù)據(jù)庫通過哈希形成一種鏈狀結構,其中數(shù)據(jù)的記錄和維護通過密碼學技術來保證其完整性,使得任何一方難以篡改、抵賴、造假。

所以歸根到底這是一個數(shù)據(jù)庫技術,是存儲技術。但區(qū)塊鏈是用軟件寫的,這里有一個問題。

比爾·蓋茨曾說,人類歷史上所創(chuàng)造的最復雜的人造物是軟件,它復雜到沒有人能保證它的正確性。寫軟件與蓋摩天大樓不同,帝國大廈蓋起來時很復雜,因為它是第一個超過一百米的高樓,但是你蓋第二座時,有第一座的藍本,就會簡單很多。

但是軟件不一樣,每一次寫軟件都是第一次在寫,所以它里有很多很多的錯誤。工業(yè)級的軟件每千行有七個錯誤。

區(qū)塊鏈解決了信任問題,但是如果寫區(qū)塊鏈的軟件不安全,存在大量的漏洞,信任從何談起?

這里的安全風險是很多的,比如說基礎設施里的區(qū)塊鏈時間,代碼的安全、共識機制、加密機制的安全等,再比如智能合約的安全,有溢出漏洞、時間漏洞等,有些是通用軟件的漏洞,有些是智能合約它獨特的漏洞。

2019年交易所的漏洞就占了黑客攻擊的61%。我們現(xiàn)在主要做的就是智能合約的漏洞檢查,這個占了大概12%的損失,錢包流動14%,供應鏈漏洞占了8%等。

我們是如何做區(qū)塊鏈測試的呢?

目前我們采取一般性分析、靜態(tài)分析、模糊測試、并發(fā)安全等各種各樣的技術。因為每一種技術可能能發(fā)現(xiàn)錯誤,但不能發(fā)現(xiàn)所有的錯誤,要用不同的技術來盡量確保安全性。

一般性分析,比如說文檔的規(guī)范、社區(qū)的治理、項目的概況分析等,然后再用計算分析來掃描代碼,然后再加上模糊測試,模糊測試是一個動態(tài)技術,最后還專門做一個并發(fā)安全的測試。因為區(qū)塊鏈里有大量并發(fā)的問題,并發(fā)導致軟件寫起來非常的復雜,并發(fā)軟件有很多難以讓人琢磨的漏洞,因為人的大腦不適合寫并發(fā)程序。

首先,行之有效的是模糊測試,因為模糊測試它能真的在跑你的程序,不像靜態(tài)分析有很多的錯誤它不是真的錯誤,并且靜態(tài)分析它經過編譯器的優(yōu)化,可能和真實的錯誤不太一樣。我們在做模糊測試時,是真的把區(qū)塊鏈軟件跑起來,跑的過程中能反復檢測,并且試圖產生一個輸入,能讓它更趨近可能會發(fā)生錯誤的點。當然這些都是概率問題,我們不能保證它一定能發(fā)生檢測到錯誤。

然后模糊引擎的測試,就是我們要做一個全自動的測試工具,不能用手工,所以我們要自動的創(chuàng)建一個測試網絡,自動的部署被測試的智能合約,自動的挑選Papifashen,并且根據(jù)輸入類型產生輸入,然后它自動的進行執(zhí)行。

它要反復的跑,看里面有什么錯誤。過程中還要做監(jiān)控,比如說智能合約的哪一個部分被執(zhí)行過,我們要避免再執(zhí)行它。然后要記錄智能合約哪個部分被錯過了,需要什么樣的條件才能被執(zhí)行到的,錯過的某個部分具體的變量是怎么復制的?是否有已經漏洞?所以觀測過程中,檢查有沒有碰到漏洞是一部分,更重要的是記錄我們哪些地方被執(zhí)行了,哪些地方沒有被執(zhí)行了,怎么樣改變輸入才能讓沒有被執(zhí)行的地方下次能被檢測到。

為了能進一步的近乎證明一個錯誤不會產生,我們用了另外一種算法就是符號執(zhí)行,符號執(zhí)行它的計算量是比較大的,但是它有一個好處,就是能系統(tǒng)地測試軟件中的每一條路徑。

我們在代碼分析時做了一些比較有意思的東西,對現(xiàn)有的開源項目代碼相似度進行統(tǒng)計,我們拿了2019年3月份的485個發(fā)幣項目,還有到了2019年的9月份又拿了500多個,66個項目做他們的代碼分析。平均每一個項目他們的代碼量是500、600行左右。

最后的結論是,超過90%的項目代碼相似度在80%以上,90%的項目的代碼和另外至少1個項目代碼相似度80%,自己寫代碼的項目非常少。

代碼相似度在80%以上,市值在發(fā)布半年后降到了發(fā)布時的10%的以下。如果一個項目的原創(chuàng)能力強,你市值不會那么容易掉下去,說明投資人也會看技術,所以這其實還是技術實力的事情。

2345截圖20200908083720.png

圖|楊子江博士

“用協(xié)同思維搞區(qū)塊鏈性能優(yōu)化”—孫毅(中科院計算所研究員、博導)

我們主要聚焦于區(qū)塊鏈技術問題,底層技術尚未成熟,存在性能、安全性、互操作性、強化合約等一系列技術挑戰(zhàn)。性能挑戰(zhàn)是目前是非常受關注的議題。

為什么要用協(xié)同?因為區(qū)塊鏈的性能受到多種因素的制約,而這些因素實際上是相互關聯(lián)的,就像一個木桶里擱個板,當我們把這塊短板彌補上以后,會發(fā)現(xiàn)另一塊可能會成為新的短板,所以我們要真正搞優(yōu)化時,是需要用協(xié)同的思想去考慮的。

怎么樣去做協(xié)同優(yōu)化?從三個層面分析:

第一,存儲計算和傳輸,存算傳的協(xié)同,這是在區(qū)塊鏈軟件的內部。第二,軟硬件協(xié)同的思想,提升區(qū)塊鏈的性能。螞蟻其實也做了很多的軟硬件一體化的設計,這是非常好的一些思路。第三,作為一個分布式系統(tǒng)來講,區(qū)塊鏈很難在性能方面跟某些中心化的系統(tǒng)去做這種競爭,所以它更多是一個互補合作的關系。

第一部分,我們在計算傳輸存儲層面進行鏈內優(yōu)化,在計算層上采用區(qū)塊鏈并行化架構模型和算法,通過一條主鏈連接很多的分片、子鏈,然后讓分片和子鏈做并行化,通過主鏈來進行交互,來提升我們的性能。之后與創(chuàng)新工場的聯(lián)合實驗室提出了一個異步共識的算法,為了防止它的安全性不降低,我們還提出了一個連母共識的機制。通過把同步通信變成異步通信。

在性能研究的過程中,我們又初步提出了一個叫并行多鏈的架構,它不需要中間的,它不是把傳統(tǒng)的新型架構打散成一個純網狀的架構,可以更進一步提升我們整個的性能。

除了計算層,存儲和傳輸同樣需要進行改進。我們提出了一個雙重的壓縮方法,對于K域提出了一個數(shù)據(jù)壓縮的方法,對于Y域我們也提出了一個兩層哈希壓縮的方法。這是基于數(shù)據(jù)壓縮的存儲方法BZIP,有效的解決了驗簽吞吐量瓶頸??梢燥@著的降低我們對于磁盤LO的訪問,然后使得我們的性能在存儲這個方面得到一系列的這種提升。

在傳輸層上,我們提出了一個層次化的傳輸協(xié)議,這是基于無連接數(shù)據(jù)傳播的低延遲區(qū)塊鏈的傳輸優(yōu)化算法,這個協(xié)議我們在現(xiàn)網上做了一些實驗,效果也很不錯。

第二部分,我們研究了面向區(qū)塊鏈的專用計算架構,提出了面向區(qū)塊鏈的專用計算架構(KPU,Kernel Processing Unit)。它是一個專用計算芯片的思想,把我們區(qū)塊鏈上常用的操作,給它分裝了獨立的IP盒,然后我們再用軟件定義的思想,它需要時我們按需去組合這些IP盒組成一些區(qū)塊鏈需要的計算邏輯。

這一塊我們分了功能區(qū)和非功能區(qū),一部分實現(xiàn)計算的工作,一部分實現(xiàn)數(shù)據(jù)管理的這些工作。這一點上的話,軟硬件一體化的這些工作都是未來我們可以去大膽嘗試的。

第三部分,是區(qū)塊鏈鏈上鏈下系統(tǒng)的協(xié)調,協(xié)同優(yōu)化的工作。我們主要做二層通道、二層網絡優(yōu)化的工作。比如我們把鏈外的支付通道網絡或者狀態(tài)通道網絡給它在路由上面去做了一些優(yōu)化。但目前我們的支付通道網絡里的路由算法跟互聯(lián)網的路由算法比起來顯得比較初步。所以我們借用了互聯(lián)網上的分域、分層路由的思想,通過一個定制化的標簽,然后來實現(xiàn)了一個層次化的路由,有點類似于我們互聯(lián)網上的域間路由和域外路由,通過這種方法來去優(yōu)化我們的路由通道算法,這是我們在鏈外通道里所做的一些工作。

區(qū)塊鏈的性能優(yōu)化到底重要還是不重要?

目前對于我們區(qū)塊鏈正在探索的這些場景和應用上來說,區(qū)塊鏈的性能已經足夠支撐我們的區(qū)塊鏈在各個行業(yè)里,去做有意的部署和應用探索。從這個層面上來講,性能的優(yōu)化可能沒有那么重要,但為什么我們又要去做它呢?

如果我們能把區(qū)塊鏈的性能做的更好的話,未來很多現(xiàn)在還很難在區(qū)塊鏈上去做的場景,未來可能就可以遷移到區(qū)塊鏈上。比如說每年雙十一我們大家都非常盼望著去看阿里、螞蟻發(fā)布的TPS能達到什么樣的量級,現(xiàn)在這么高性能的系統(tǒng)確實還是通過我們中心化的一些系統(tǒng)來實現(xiàn)的,但是未來如果我們的區(qū)塊鏈真的通過我們的努力也能打造每秒鐘幾十萬的這種吞吐量的話,那未來我們也就有可能把這方面的一些應用,也嘗試著在我們分布式的區(qū)塊鏈系統(tǒng)上面做一些探索。所以,從這一點上來講,區(qū)塊鏈的性能優(yōu)化其實很重要。

區(qū)塊鏈的性能優(yōu)化一定不能是單點突破,一些重大的性能突破,往往是伴隨著底層技術的這種架構層面、新的框架層面來出現(xiàn)的一些工作,而如果我們單純的就去做一個算法、做一個協(xié)議,我們能提升的空間不會很大。如果采用協(xié)同的方式,可以讓我們在更多的不同的層面,不同的架構去做一些協(xié)同化優(yōu)化的思想,未來可能會是我們取得性能優(yōu)化突破的一個重要技術方向。

2345截圖20200908083720.png

“誘餌口令技術是平衡安全性和效率的好辦法”—汪定(南開大學教授、博導天津網絡與數(shù)據(jù)安全技術重點實驗室副主任)

口令自誕生以來,始終面臨著可記憶和抗猜測的矛盾問題。

其中可記憶的口令要求口令有規(guī)律不復雜,但是抗猜測的口令剛好相反,口令盡量長,無規(guī)律,越復雜越好。并且現(xiàn)在這個形勢越來越嚴峻,我們人類的記憶能力和認知能力非常有限,我們今天人類的記憶能力和2000年多年前的先輩比起來,并沒有增長多少。

但是攻擊者的能力現(xiàn)在是越來越強大,比如現(xiàn)在耳熟能詳?shù)脑朴嬎?,大?shù)據(jù)深度學習等,讓攻擊者能力越來越強大,口令安全這個問題越來越嚴峻,所以大家一直在尋找另一種身份認證的方法替代口令。

口令這一塊實際上是老生常談的東西,我們天天都在用,但是長期以來,我們一直低估了它的問題難度和研究難度。

最早是在2004年,微軟那個時候還是比爾蓋茨擔任CEO,他提出使口令替代計劃,谷歌和其他很多大公司也跟進,但是后來這些計劃都悄無聲息的消失了。

從2000年開始,學術界也提出了大量的替代型的身份認證方案,但是沒有一種身份認證方案能取代口令的地位,時至今日口令依然統(tǒng)治我們身份認證的世界。

這是有深層次原因的。身份認證方法主要可以分為三類。

第一類是基于用戶所知,比如口令密碼這些,比如我們輸入的6位數(shù)字也是一種數(shù)字口令。

第二類是基于用戶所有,比如我們之前用過的銀行的U盾,USB Key,我們的智能卡片。

第三類是基于用戶所是,主要生物特征。既包括我們的指紋,人臉這種傳統(tǒng)的身份認證的方法。也包括、手勢、敲擊鍵盤的頻率等,這種基于新型行為的身份認證的方法。

后面兩種身份認證方法不論是基于硬件還是基于生物特征,它都存在嚴重的問題,其中硬件成本比較高,另外他最大的問題是不具有可用性,用戶不可能隨身攜帶幾十個U盾。

而生物特征前幾年特別火,這一兩年大家慢慢的意識到它的問題,像很多城市前兩天剛出來禁止使用刷臉,法律明確規(guī)定禁止刷臉,不僅是刷臉,包括我們的指紋,包括我們的步態(tài)等這些身份認證方法,都不適合用來做互聯(lián)網認證,做網絡認證。生物特征有它的好處,有它適用的地方,在現(xiàn)場認證,比如做門禁是沒有問題的。

如果不連網,比如解鎖我們的手機是沒有問題的,只要我們的生物特征不上傳到服務器當中是沒有問題的。

但是在現(xiàn)實使用時,我們上傳自己的生物特征數(shù)據(jù),這里就存在一個巨大的問題,不具有可再生性。口令和生物特征都在我們的計算機當中都是以01代碼存儲,口令會泄露,生物特征一樣能泄露。我們的口令能分分鐘改掉,但是我們的生物特征是改不掉的,我們人臉只有一張,我們的手指頭只有10個,一旦泄露將終身泄露。

2345截圖20200908083720.png

圖|汪定博士

所以現(xiàn)在學術界逐漸形成了一個共識,在可預見的未來,口令仍將是最主要的身份認證方法。

而近年來出現(xiàn)了數(shù)以百計“拖庫”事件,包括一些大型網站,Yahoo,Linkedin,Adobe,CSDN等。泄露大量用戶密碼,一些密碼貨幣交易所也遭遇此類危機,導致用戶的嚴重經濟損失。

比起被“拖庫”,更可怕的是網站都沒發(fā)現(xiàn)自己被“拖庫”,直到N年后數(shù)據(jù)才浮出水面。如果說口令文件泄露時,網站及時發(fā)現(xiàn),并且通知用戶更新口令,還能挽回一些損失。但是現(xiàn)實當中很多時候是網站不知道口令文件泄露了,包括數(shù)十家用戶量龐大的網站,都是泄露500萬以上的用戶帳號,而且往往是泄露了8年、4年等很長時間之后才知道文件被黑客竊走了。

如何降低用戶口令泄露帶來的危害?目前我們使用的主要有3種技術。

第一個,使用機器相關函數(shù)。比如口令猜測時一般涉及到哈希運算,可以使用一個只有特定服務器能計算的的哈希函數(shù),黑客竊取口令文件之后沒有這個服務器,無法計算機器相關哈希函數(shù),這是一種和機器相關的函數(shù)。

第二個,使用門限密碼學,這個是比較經典的,傳統(tǒng)的想法,把口令分成多份,分別存儲在不同的地方,不同的服務器。

第三個辦法就是放置假口令,做到以假亂真,欺騙迷惑,及時的檢測。

前面兩種技術往往對客戶端或者對服務器的影響比較大,需要對服務器端、客戶端進行修改,而放置假口令這種技術它不改變用戶,往往現(xiàn)在工業(yè)界有一句話:是什么樣的代價最大,改變用戶使用習慣的代價最大,所以盡量不去改變用戶的習慣。

所以使用分布式密碼學的這種技術往往現(xiàn)實當中使用的可能性不大,而機器相關函數(shù)存在可擴展性問題,所以綜合來看放置假口令雖然不是最佳的方法,但是綜合安全性和效率來看,它是可以被接受的。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論