?

智能合約安全與實施規范研究

2020-06-23 09:27魏昂黃忠義周鳴愛
網絡空間安全 2020年3期
關鍵詞:智能合約去中心化基礎架構

魏昂 黃忠義 周鳴愛

摘? ?要:自區塊鏈2.0時代以來,以智能合約為代表的第二代區塊鏈平臺及應用呈爆發式增長,但隨之而來的智能合約安全事件也頻繁發生。區塊鏈3.0時代,智能合約因其固有的去信任化、自動性、防篡改、可追溯等技術特性,必將被廣泛應用。但是,在此前景之下,智能合約的安全性成為了區塊鏈生態安全的基石。文章創新地提出了智能合約3.0—智慧合約的概念,并基于智能合約基礎架構研究了智能合約安全威脅,提出了一套基本的智能合約安全實施規范,旨在為智能合約安全實施提供參考與借鑒。

關鍵詞:區塊鏈;智能合約;去中心化;基礎架構;智能合約安全

中圖分類號: TP309? ? ? ? ? 文獻標識碼:A

Abstract: Since the era of blockchain 2.0, the second generation of blockchain platforms and applications represented by smart contracts have grown explosively, but the security incidents of smart contracts are also frequent. In the era of blockchain 3.0, smart contract will be widely used because of its inherent technical characteristics of de trust, automation, anti tampering and traceability. But in this perspective, the security of smart contracts has become the cornerstone of the ecological security of blockchain. This paper puts forward the concept of smart contract 3.0 - Smart contract through innovation, studies the security threat of smart contract based on smart contract architecture, and puts forward a set of basic smart contract security implementation specifications, aiming to provide reference and reference for the implementation of smart contract security.

Key words: blockchain; smart contract; decentralization; basic framework; smart contract security

1 引言

近年來,隨著世界各國聚焦區塊鏈技術創新與產業應用,區塊鏈及智能合約技術在全球范圍內得到了快速發展,并且成功地進入了以“以太坊”平臺為標志的區塊鏈2.0時代。智能合約技術作為劃分區塊鏈1.0時代的關鍵技術,從以太坊開始,正式登上了區塊鏈發展的里程碑。智能合約已在許多區塊鏈系統上成功實現,比較著名的系統有以太坊和超級賬本。以太坊(Ethereum)是一個開源的支持智能合約功能的公共區塊鏈平臺,利用智能合約能夠在平臺上創建任何去中心化的應用(Dapp)。超級賬本(Hyperledger Fabric)是一個為聯盟鏈而設計的系統,支持種類繁多的非確定性智能合約(鏈碼 Chaincode)和可插拔的服務,具有良好的靈活性、通用性和可擴展性。當前,智能合約還廣泛應用于存證、能源、金融、公益慈善等領域,各種可執行智能合約的區塊鏈呈井噴式增長,應用前景十分廣闊。

當然,智能合約作為一段程序,無可避免地會存在漏洞,黑客攻擊這些漏洞給智能合約帶來了一系列的安全挑戰。如2016年以太坊上發生的DAO(Decentralized Autonomous Organization)攻擊,導致6000萬美元的以太幣被盜;2017年,以太坊庫合約被開發者誤刪除,導致依賴于該庫合約的錢包無法正常工作,損失了2.8億美元的以太幣;2018年,美鏈被攻擊者利用智能合約BatchOverFlow數據溢出的漏洞,產生大量代幣并拋售,致使美鏈憑空蒸發60億元人民幣的BEC[1]。智能合約安全問題正逐漸成為行業的聚焦點,文章通過對智能合約安全威脅進行研究,提出了一套完整的智能合約實施規范,將極大地降低智能合約全生命周期的安全威脅。

2 智能合約基本內涵

2.1 定義與發展歷程

智能合約(Smart Contract)[1]這一概念可追溯到20世紀末。由尼克薩博(NickSzabo)首次提出智能合約的定義為:“智能合約是一個由計算機處理的、可執行合約條款的交易協議?!边@一概念,可以解釋為自動化的自我執行協議,標志著智能合約1.0時代的到來。智能合約在1.0時代大多應用于自動售貨機的物理設定中,自動售貨機會根據觸發的條件釋放相應的物品。但是,由于智能合約1.0時代,缺乏可信操作環境,缺乏支持可編程合約的數字系統和技術,智能合約并未被廣泛應用于實際產業中。直到區塊鏈技術的興起,使得該問題得以解決,區塊鏈不僅能夠支持可編程合約,并具有去中心化、不可篡改、過程透明、可追蹤等優勢,為智能合約提供了一個完美的解決信任問題的機制。2013年以太坊項目成功地將智能合約引入了區塊鏈,拓展了區塊鏈在貨幣領域之外的應用,智能合約2.0時代正式到來,如圖1所示。

如今,廣泛認為智能合約是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議,是在計算機代碼中構建的形式定義的承諾,合約參與方可以執行存儲在區塊鏈上的承諾協議,通過計算機或計算機網絡自動執行,一旦雙方達成協議并執行,處罰執行條件會自動輸出結果。目前,以太坊已成為最主流的智能合約開發和運行平臺,隨著Dapp的發展,智能合約將迎來全面爆發的3.0時代—智慧合約,智慧合約將是全面實現合約智能處理、自動社會的基礎設施,如圖2所示。

2.2 技術特征

智能合約的運用目的是為了提供優于傳統合約的安全方法,可以將應盡義務轉變為自動化流程,從而保證更高程度的安全性。智能合約允許在沒有第三方的情況下進行可信交易,減少對中介方的依賴,并減少與合約相關的其他交易成本,同時保證這些交易可追蹤且不可逆轉??偟膩碚f,智能合約具有去信任化、自動性、防篡改、可追溯等技術特性[3]。

去信任化:智能合約的所有條款和執行過程都是預先制定好的,一旦部署運行,合約中的任何一方都不能單方面修改合約內容以及干預合約的執行。同時,合約的監督和仲裁都由計算機根據預先制定的規則來完成,明顯地降低了人為干預風險.

自動性:當智能合約成功部署到區塊鏈上之后,智能合約就會立刻生效,自我驗證、自我執行,當觸發合約內容設立的執行條件時,智能合約可以自動輸出相應的結果而不需要依賴當事人的配合。鑒于此,可以看出智能合約將明顯地節省締約方在合約執行期間人力、物力、財力的資源浪費。

防篡改:區塊鏈本身的所有數據不可篡改,因此部署在區塊鏈上的智能合約代碼以及運行產生的數據輸出也是不可篡改的,運行智能合約的節點不必擔心其他節點惡意修改代碼與數據。

可追溯:智能合約通過區塊鏈技術的數字簽名和時間戳,保證了合約的一切執行運作過程記錄在鏈,有跡可循,確保了安全可溯源。

2.3 基礎架構

智能合約不僅是一段可以自動執行的計算機程序,同時也是系統的參與者。它可以對接收到的信息進行回應,既能夠實現接收和儲存價值,又可以向外發送信息和價值??傮w來說,區塊鏈智能合約包含基礎設施層、傳輸層、合約層、維護層、執行層以及應用層[4],如圖3所示。

基礎設施層包括基礎數據賬本、共識算法、基礎運行環境等,它們是智能合約運行的必要基礎。傳輸層則封裝了用于支持賬本數據通信、傳輸的協議。合約層包含了合約文件、合約代碼、應對準則等內容。維護層主要包含對合約代碼進行形式化驗證、檢測審計、升級維護、運行廢止等。執行層主要封裝了智能合約運行環境的相關軟件。應用層則相對智能合約在各領域應用,它主要是為智能合約與其他計算機、應用程序通信服務的。

3 智能合約安全威脅

3.1 漏洞威脅

智能合約由于部署在區塊鏈上,具有復雜的時間依賴和次序依賴關系,合約代碼邏輯屬性的正確性以及合約代碼和合約文本的不確定性、不一致性,將導致智能合約本身存在漏洞,進而導致智能合約受到漏洞攻擊,最終會導致自動性執行結果的輸出錯誤。常見的智能合約漏洞威脅包含整數溢出漏洞、短地址漏洞、拒絕服務漏洞等。

整數溢出漏洞:在智能合約代碼中整數類型均為無符號整數,最小的就是0,在算術運算中出現越界,就會出現整數溢出漏洞。超出整數類型的最大表示范圍,數字便會由一個極大值變為一個極小值或直接歸零,這叫“上溢”,如假設合約中最大值為X,當X+1=0時即發生整數上溢漏洞;超出整數類型的最小表示范圍時,數字便會由一個極小值或者零變成一個極大值,如0-1=X,即發生整數下溢漏洞。

短地址漏洞:短地址漏洞是虛擬機未能接受正確參數的副產物。攻擊者可以通過特定制作的地址,利用這個弱點,針對部分編碼錯誤的客戶端進行參數填充。

拒絕服務漏洞:拒絕服務漏洞是指讓目標機器停止提供服務,通常被黑客利用拒絕服務攻擊方式進行攻擊。這種攻擊方式可以讓合約執行正常的交易操作被擾亂、中止、凍結,更嚴重的是讓合約本身的邏輯無法運行。

3.2 隱私安全威脅

智能合約運行在區塊鏈上,沒有任何第三方進行信用背書,因此智能合約不同于傳統合約的隱私保護。智能合約中的隱私安全威脅主要是攻擊者對身份隱私和交易隱私的攻擊,目前主要隱私安全威脅包括匿名性威脅、權限控制威脅和鏈上信息威脅等[5]。

匿名性威脅:區塊鏈上的信息是以分布式賬本的形式存儲在鏈上,任何一個節點都可以通過公開或者外部函數獲取到合約的內容。機關智能合約交易具備一定的匿名性,但隨著技術的發展,匿名性已經不能完全保護個人身份隱私。通過大數據的技術,攻擊者可以通過分析交易規律,甚至能夠推測出用戶的身份信息和位置信息。

權限控制威脅:假設對于智能合約的可視性沒有進行良好的安全設置,攻擊者很容易查看并獲取合約的隱私內容和內部邏輯,他們能夠找到繞過限制的方式,例如運用合約使用tx.origin對調用者進行驗證時觸發權限控制威脅。

鏈上信息威脅:智能合約中對交易雙方信息保護的措施是通過對信息加密,防止攻擊者獲得有用的信息。但是,在鏈上加密交易信息的過程中,一方面要保證不能讓非交易者看到交易的信息,另一方面需要驗證交易的正確性,對交易內容不能完全加密。這兩者本身存在矛盾,也是隱私安全的威脅。

4 智能合約安全實施規范

4.1 安全實施框架

當前,應對智能合約安全威脅解決的主要辦法是:按照智能合約全生命周期安全實施規范進行合約的實施,在合約創建前期,進行詳細的需求收集計劃;合約創建要符合代碼書寫規范、邏輯要求等規范性要求;嚴格按照在合約正式部署到區塊鏈平臺前,對合約進行盡可能完善的漏洞檢查與安全審計。智能合約的安全實施框架根據其運行機制可概括為需求收集與規劃、合約創建、安全審計、合約部署、觸發執行、廢止六個階段,如圖4所示。

智能合約安全實施執行標準流程分為六步。

(1)需求收集和規劃:包括從多個來源收集輸入事實,同時注意需求的可追溯性。

(2)合約創建:編寫符合指定需求的程序代碼,避免邏輯性沖突,避免已知的邏輯漏洞和低級的邏輯錯誤。

(3)安全審計:首先在內部審核代碼,進行形式化驗證,然后在所有前提條件下提交外部安全審核。

(4)合約部署:將智能合約部署上鏈,執行自動化運行。

(5)觸發執行:通過相關調用達到觸發條件,智能合約執行輸出結果。

(6)合約運行:執行從合約部署、合約實例化、合約執行直到合約廢止整個生命周期流程。

4.2 智能合約創建

智能合約的創建主要是體現在代碼設計規則性上。在編寫智能合約代碼時,應符合代碼書寫規范、邏輯要求等規范性要求,使用已經廣泛應用的安全技術和工具,合約和函數應模塊化,避免出現邏輯性沖突,避免已知的邏輯漏洞和低級的邏輯錯誤,如轉賬前余額未校驗,未檢查返回值的調用等。同時,對智能合約語言進行約束,包括數據類型、計算類型和計算基本結構等內容[6],如表1所示。

4.3 合約安全審計

智能合約的安全審計采取自身與第三方安全機構審計,包括智能合約設計及業務邏輯安全、源代碼安全審計、編譯環境審計及相關的應急響應審計,具體操作主要體現在對代碼進行函數可見性審核、合約限制繞過審核、調用棧耗盡審核、進行拒絕服務審核等測試分析。發現智能合約漏洞后,應及時反饋,保證檢査和修復智能合約源代碼。

4.4 合約運行生命周期

智能合約通過安全審計之后,將進行上鏈部署運行,整個運行生命周期可分為合約部署、合約實例化、合約執行、合約廢止四個周期,如圖5所示。

(1)合約部署是將合約代碼部署到區塊鏈網絡節點的智能合約運行時環境中的過程。

(2)合約實例化是將智能合約代碼轉換成運行環境可執行格式的過程,該過程由智能合約運行環境自動完成。

(3)合約執行是執行智能合約業務邏輯的過程,這一過程展現出智能合約技術自動性的特性。

(4)合約廢止是廢棄已部署智能合約的過程,該過程以接口調用的方式,在區塊鏈中達成共識后生效,智能合約廢止后,在區塊鏈網絡中保存被終止版本的智能合約代碼。

5 結束語

自以太坊項目成功提供圖靈完備的智能合約后,區塊鏈技術逐漸成為分布式應用建設的底層基礎設施,為智能合約的發展提供了良好的實驗藍田。隨著智能合約創新發展應用,智能合約的安全問題也正受到關注,雖然國內外在智能合約安全研究已取得不少的成果,但隨著區塊鏈3.0時代的到來,不斷提高智能合約安全技術仍是區塊鏈發展的重點研究領域。本文創新地提出了智能合約3.0—智慧合約概念,并基于智能合約架構研究了智能合約安全威脅,提出了一套基本的智能合約安全實施規范,以期能夠為智能合約安全和隱私保護的未來研究做出一些有益的探索。

參考文獻

[1] 許雄.區塊鏈智能合約技術的研究[D].成都:電子科技大學, 2019.

[2] 賀海武,延安,陳澤華.基于區塊鏈的智能合約技術與應用綜述[J].計算機研究與發展,2018,55(11):2452-2466.

[3] 付夢琳,吳禮發,洪征,等.智能合約安全漏洞挖掘技術研究[J].計算機應用,2019,39(07):1959-1966.

[4] 歐陽麗煒,王帥,袁勇,等.智能合約:架構及進展[J].自動化學報, 2019,45(03):445-457.

[5] 王化群,張帆,李甜,等.智能合約中的安全與隱私保護技術[J].南京郵電大學學報(自然科學版),2019,39(04):63-71.

[6] 王繼輝.區塊鏈與智能合約圖譜分析[J].網絡空間安全, 2019,10(11):1-6+25.

[7] 王棟,石欣,陳智雨,呂梓童.區塊鏈智能合約技術在供應鏈中的應用研究[J].網絡空間安全,2018,9(08):8-17.

作者簡介:

魏昂(1995-),男,漢族,安徽宿州人,青島科技大學,碩士,賽迪(青島)區塊鏈研究院有限公司,工程師;主要研究方向和關注領域:區塊鏈技術、網絡安全、金融科技。

黃忠義(1989-),男,漢族,山東青島人,中國石油大學,碩士,賽迪(青島)區塊鏈研究院有限公司,工程師;主要研究方向和關注領域:區塊鏈、工業互聯網、物聯網、智能制造。

周鳴愛(1988-),女,漢族,河北張家口人,河北工程大學,碩士,賽迪研究院網絡安全研究所,工程師;主要研究方向和關注領域:區塊鏈、計算機軟件 、網絡安全。

猜你喜歡
智能合約去中心化基礎架構
我國云IT基礎架構投資保持高速增長
IDC發布云計算IT基礎架構Q4跟蹤報告
革新數據中心及邊緣基礎架構
紅帽推出業內首個生產就緒的開源超融合基礎架構
區塊鏈技術在互聯網保險行業的應用探討
智能合約的特點及其在債券市場的應用
淺析移動互聯語境下中小成本電影去中心化的創作趨向
區塊鏈技術在會計中的應用展望
“去中心化”電子商務背景下大學生網絡創業前景分析
淺析新媒體視閾下的新聞失實報道
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合