


摘 ?要:區塊鏈技術已經從研究階段進入應用階段,但對區塊鏈的測評研究目前還處于探索階段。研究區塊鏈關鍵的核心架構功能、共識效率和智能合約的安全性方面的測評關鍵要素,可以幫助組織提高區塊鏈系統的質量、提升效率和減少安全性風險。通過對區塊鏈架構的分析,明確了每層架構應關注的功能測評關鍵點,針對目前效率不高和智能合約存在安全隱患等現狀,進一步總結了共識機制效率的測評屬性和智能合約安全性的測評技術和方法。
關鍵詞:區塊鏈技術測評;區塊鏈效率;區塊鏈安全
中圖分類號:TP391.44;TN915.08 ? ? 文獻標識碼:A 文章編號:2096-4706(2020)15-0160-04
Abstract:Blockchain technology has entered the application stage from research,but the testing research of blockchain is still in the exploratory stage. The research on the testing key elements of blockchain key core architecture function,consensus efficiency and security of smart contract can help organizations improve the quality of blockchain system,improve efficiency and reduce security risk. Through the analysis of blockchain architecture,the key points of function testing that should be paid attention to in each layer architecture are clarified. Aiming at the current situation of low efficiency and potential security risks in smart contracts,the efficiency testing attributes of consensus mechanism and the security testing technology and methods of smart contract are further summarized.
Keywords:blockchain technology testing;blockchain efficiency;blockchain security
0 ?引 ?言
區塊鏈是采用“區塊+鏈”的結構存儲數據并由多方共同參與的開放的分布式記賬技術。雖然其已經從研究階段進入應用階段,但對區塊鏈的測評研究目前還處于探索階段。當前區塊鏈系統的性能不理想[1],這是應用該技術的主要阻礙,已有很多關于區塊鏈系統功能、效率和安全性測評相關的研究[2,3],但是國際和我國目前還沒有形成相關的技術標準。雖然區塊鏈技術通過應用加密算法、哈希函數來保證系統的完整性、安全性和保密性,但是區塊鏈基礎層級在功能、效率和安全性方面仍然面臨著內部或外部的各種脆弱性和威脅。本文在綜合科技服務平臺項目實踐過程中,在科技資源管理與共享方面應用了區塊鏈技術。在上述實踐中筆者發現區塊鏈基礎層級的功能、共識機制效率、智能合約安全性是影響區塊鏈健壯性和質量的關鍵因素。本文分析了基礎層級的技術特點,凝練出功能測評的關鍵要素,提出區塊鏈的瓶頸和隱患主要集中在共識機制和智能合約方面,闡述了針對交易延遲、吞吐量、耗能指標、共識效率和合約漏洞等方面實施的測評。通過研究區塊鏈關鍵核心架構的功能測評、性能測評和安全測評,希望可以提高區塊鏈系統的健壯性和質量,同時減少安全風險。
1 ?區塊鏈基礎層級及功能和效率通用測評
雖然區塊鏈在各個場景中的具體應用有差異,但其基礎層級和構成有相似之處,一般可分為五個層級,按從應用端到底層的順序,分別為應用層、合約層、共識層、網絡層以及數據層。
1.1 ?基礎層級及功能測評
數據層主要是實現了分布式存儲和數據管理功能,它位于基礎層級中的最底層,其采用首尾相連的鏈式結構來實現信息的存儲。區塊中的第一個區塊被稱為“創世”區塊,后面的區塊按照產生或發生的時間順序經哈希函數處理后依次鏈接。哈希算法是通過哈希函數對原始數據進行編碼,生成固定長度的字符串序列,數據層常用RSA、橢圓曲線加密技術(ECC)等非對稱加密算法對信息進行加密或者實現數字簽名。
對于數據層的功能測評主要包括:存儲、賬本記錄、加解密、摘要、數字簽名等方面的測評,具體內容如表1所示[4]。
在區塊鏈中,網絡層負責通過特定的傳播協議執行節點間的通信、節點的加入和退出網絡,它是由拓撲結構為全聯通的節點組成的對等網絡,所有的網絡節點既可以充當客戶端,也可以充當服務端。網絡層中根據角色劃分的不同又可以分為記賬節點和驗證節點。另外,還設計有容錯機制保障各個節點的穩定性。網絡層的功能主要是測評對等式網絡,測評內容包括節點之間通信的高效性和安全性、點對點通信的多播能力和動態增刪節點的功能。
共識層是在去中心化的環境下使網絡層的各個節點能夠針對區塊數據達成一致的機制,這種共識機制主要是通過共識算法來實現,目前常見的共識算法有:工作量證明、權益證明、股份授權證明、拜占庭共識算法等。共識層功能測評的關鍵要素如表2所示。
合約層主要包括各種腳本、代碼、算法機制及智能合約,是區塊鏈可編程的基礎。合約層的功能主要是環境測評、內容靜態和動態檢查、外部數據源和智能合約交互、合約防篡改、多方共識下的合約升級和賬本中寫入合約內容等。
應用層處于整個區塊鏈基礎架構的最上層,封裝了各種應用場景,可以通過參考各個應用場景的不同需求來確定應用層的測評內容。
1.2 ?區塊鏈架構效率通用測評
除了功能測評之外,效率指標也可以應用到各個層級中,通用指標一般包括資源利用率、時間特性和容量三個方面。其中,資源利用率從CPU占用率滿足度、內存占用率滿足度、外存時間負載滿足度、外存空間占用率滿足度、傳輸帶寬負載滿足度和I/O設備占用率滿足度等維度測評;時間特性從響應時間滿足度、周轉時間滿足度和吞吐率滿足度等維度測評;容量從最大請求數滿足度、事務累積容量滿足度、數據吞吐容量滿足度和數據處理容量滿足度等維度測評。
2 ?共識機制的性能測評
區塊鏈的瓶頸主要集中在性能交易及由工作量證明為代表的共識算法的低吞吐量、高時延、低效等問題上,這種低效問題已經限制了區塊鏈的使用場景。共識機制的性能測評指標主要是交易延遲、吞吐量、耗能和共識效率等。
交易延遲是指由記賬節點發起交易到該交易被確認的整個過程所花費的時間。交易延遲與區塊鏈開放程度、網絡通信時間、共識算法等因素有關,它表征了整個系統的網絡通信性能和共識算法的運行時間。
交易延遲TTL的計算公式如下:
TTL=C2E+C2O+C2V
其中,C2E表示客戶端與背書節點間的通信時間,C2O表示客戶端與排序節點間的通信時間,C2V表示客戶端與驗證節點間的通信時間。另外,交易延遲與區塊鏈打包時間和打包的交易數也有密切關系。
吞吐量是區塊鏈時間間隔內的交易發出到交易確認(出塊時間)并寫入區塊鏈中的總交易數。一般用TPS(每秒交易數)來表示。
耗能指標方面,在區塊鏈中的區塊的生成需要進行共識算法的計算,通常有些計算是無意義的計算,在計算過程中使用的網絡通信帶寬、占用的內存、CPU資源以及維護這些資源運行的電能是衡量區塊鏈耗能的測評指標。
共識效率即為共識過程中處理交易到達成共識所需要的時間的多少。用戶需要在保證交易安全的前提下,擁有更快的交易效率。
3 ?智能合約安全性測試
“智能合約”的概念由計算機科學家加密大師尼克·薩博在1993年提出,他為其下的定義:“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。”智能合約雖然有著廣闊的應用前景,但當前還存在嚴重的安全問題,如2018年10月29日發生的PoWHC和批量傳輸溢出漏洞,在黑客的利用下,合約開發者共損失了866枚以太幣[5-7]。類似這種事件的安全問題無疑限制了區塊鏈的發展。
智能合約安全測試可以檢查智能合約代碼中是否有常見的安全漏洞、智能合約是否可信以及智能合約的程序源代碼是否符合編碼規范。智能合約漏洞主要分為5種類型:編碼規范問題、設計缺陷問題、編碼安全問題、編碼設計問題和編碼隱患[8]。其中由程序員設計和開發的編碼標準或流程存在的缺陷和問題可能會導致代碼規范問題、代碼設計缺陷(含接口設計)、代碼設計和代碼安全漏洞。編碼安全問題主要由開發人員在合約編寫時的疏忽導致[8]。
對于區塊鏈智能合約安全測評,本文主要介紹漏洞分析技術、污點分析技術、模型檢驗技術和基于字節碼的漏洞分析方法。
3.1 ?漏洞分析技術
漏洞分析技術是指通過漏洞定位、安全隱患挖掘、測評、特征分析等方法或方式分析區塊鏈漏洞的技術。通過分析可以有效提高系統的健壯性、防止數據丟失和被盜。區塊鏈智能合約的漏洞分析主要面向源代碼、二進制文件和程序動態運行的其中之一或者三者組合。
3.2 ? 污點分析技術
污點分析是將所感興趣的數據標記為污點數據,然后跟蹤和污點數據相關的信息的流向,分析這些信息的時候會影響某些關鍵的程序操作,進而跟蹤挖掘程序漏洞[9]。在具體的分析流程中,首先需要識別選定代碼(程序變量、消息變量或數據變量)中的污點源和污點匯聚點,通過標識方法把這些變量標識為污點變量,通過程序運行的流程圖來分析和跟蹤污點的傳播路徑,如果能檢測到某條路徑被污點信息污染,那么就意味著該處可能存在著安全隱患或者缺陷,通過這種預警可以為進一步的分析提供很好的參考信息。污點分析的流程圖如圖1所示。使用污點分析技術可以檢測緩沖區溢出、SQL注入等多種類型的程序漏洞。
3.3 ?模型檢驗技術
模型檢驗技術對源代碼進行狀態建模,通過分析有限狀態機來驗證需要測試的漏洞。在實際的分析中,通過已有的規則庫和白盒測試的路徑覆蓋分析方法,分析程序路徑狀態模型時序邏輯是否存在問題。
3.4 ?基于字節碼的漏洞分析方法
基于字節碼的漏洞分析結合了基于漏洞規則庫的關鍵字符串查找和基于控制規則庫的靜態符號執行分析技術。首先利用反編譯器來獲得字節碼的源代碼,然后分析源代碼的控制流程圖。通過強大的漏洞規則庫進行關鍵字查找來分析敏感指令,判斷是否存在危險API調用和參數等漏洞;同時基于控制規則庫和靜態符號的執行分析來確定重入攻擊和交易順序依賴攻擊,通過這兩種方法的結合可以輸出字節碼漏洞結果。
3.5 ?常用智能合約漏洞分析工具
智能合約漏洞分析工具在源代碼漏洞分析工具的基礎上進行了進一步發展。基于漏洞規則庫的關鍵字符串查找來分析合約漏洞問題的工具有Solium、Solhint等。使用靜態符號執行分析技術的工具有Mythril、Oyente等,這些工具的字節碼漏洞分析流程如圖2所示。專門用于分析重入漏洞和整形溢出漏洞的Mythril、Oyente也在業內得到廣泛使用。Cppcheck主要通過反編譯器建立源代碼的語法樹,然后對抽象語法樹采用源代碼常用分析方法(如邊界值分析、溢出分析、編碼規則符合性分析等)來分析智能合約的漏洞。另外,還有采用模型檢測技術來對未知漏洞進行分析的SCAVT。
4 ?結 ?論
通過對區塊鏈架構層級及相關關鍵技術的介紹,針對各個架構層級的不同側重點歸納和總結了架構功能、架構通用效率的關鍵要素測評指標。針對目前區塊鏈在共識機制方面存在的低吞吐量、高時延、低效等問題提出了共識機制的性能測評,測評指標主要有交易延遲、吞吐量、耗能和共識效率等。智能合約有著廣闊的應用前景,但當前其安全性還存在問題,主要可以從通過漏洞分析技術、污點分析技術、模型檢驗技術和基于字節碼的漏洞分析方法等提高區塊鏈系統質量、減少安全風險,為進一步的區塊鏈安全性研究提供了研究基礎。另外,文中也介紹了常用的區塊鏈漏洞測評的相關分析工具。
參考文獻:
[1] ZHENG P L,ZHENG Z B,LUO X P,et al. A Detailed and Real-Time Performance Monitoring Framework for Blockchain Systems [C]//2018 IEEE/ACM 40th International Conference on Software Engineering:Software Engineering in Practice Track (ICSE-SEIP),New Jersey:IEEE,2018:134-143.
[2] BALIGA A,SOLANKI N,VEREKAR S,et al. Performance Characterization of Hyperledger Fabric [C]//2018 Crypto Valley Conference on Blockchain Technology (CVCBT),New Jersey:IEEE,2018:65-74
[3] NASIR Q,QASSE I A,TALIB M A,et al. Performance Analysis of Hyperledger Fabric Platforms [J/OL].(2018-09-09).https://www.hindawi.com/journals/scn/2018/3976093/.
[4] 貴州省大數據標準化技術委員會.區塊鏈系統測評和選型規范:DB52/T1467-2019 [S/OL].(2019-12-31).http://amr.guizhou.gov.cn/xwzx/tzgg/202001/t20200108_41939935.html.
[5] 涂序文.面向系統內核的灰盒測試技術研究 [D].無錫:江南大學,2019.
[6] 付夢琳,吳禮發,洪征,等.智能合約安全漏洞挖掘技術研究 [J].計算機應用,2019,39(7):1959-1966.
[7] 邱欣欣,馬兆豐,徐明昆.以太坊智能合約安全漏洞分析及對策 [J].信息安全與通信保密,2019(2):44-53.
[8] 古濤銘.面向智能合約的安全檢測系統研究與設計 [D].成都:電子科技大學,2020.
[9] LIU B C,SHI L,CAI Z H,et al. Software Vulnerability Discovery Techniques:A Survey [C]//2012 Fourth International Conference on Multimedia Information Networking and Security,New Jersey:IEEE,2012:152-156.
作者簡介:李軍(1975—),男,漢族,湖北丹江口人,高級工程師,碩士,研究方向:網絡信息安全測評、區塊鏈應用、大數據。