ContractGuard:面向以太坊區(qū)塊鏈智能合約的入侵檢測系統(tǒng)
發(fā)布時(shí)間:2021-06-09 12:42
以太坊智能合約本質(zhì)上是一種在網(wǎng)絡(luò)上由相互間沒有信任關(guān)系的節(jié)點(diǎn)共同執(zhí)行的已被雙方認(rèn)證程序。目前,大量的智能合約被用于管理數(shù)字資產(chǎn),使智能合約成為黑客的重要攻擊對象。常見的攻擊方法是通過利用智能合約的漏洞來實(shí)現(xiàn)特定操作的入侵攻擊。ContractGuard是首次提出面向以太坊區(qū)塊鏈智能合約的入侵檢測系統(tǒng),它能檢測智能合約的潛在攻擊行為。ContractGuard的入侵檢測主要依賴檢測潛在攻擊可能引發(fā)的異?刂屏鱽韺(shí)現(xiàn)。由于智能合約運(yùn)行在去中心化的環(huán)境以及在高度受限的環(huán)境中運(yùn)行,現(xiàn)有的IDS技術(shù)或者工具等以外部攔截形式的部署架構(gòu)不適合于以太坊智能合約。為了解決這些問題,通過設(shè)計(jì)一個(gè)嵌入式的架構(gòu),實(shí)現(xiàn)了把ContractGuard直接嵌入智能合約的執(zhí)行代碼中,作為智能合約的一部分。在運(yùn)行時(shí)刻,ContractGuard通過相應(yīng)的context-tagged無環(huán)路徑來實(shí)現(xiàn)入侵檢測,從而保護(hù)智能合約。由于嵌入了額外的代碼,Contract Guard一定程度上會(huì)增加智能合約的部署開銷與運(yùn)行開銷,為了降低這兩方面的開銷,基于以太坊智能合約的特性對ContractGuard進(jìn)行優(yōu)化。實(shí)驗(yàn)結(jié)果顯示,可有...
【文章來源】:網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2020,6(02)
【文章頁數(shù)】:21 頁
【部分圖文】:
智能合約入侵檢測系統(tǒng)的基本思路
部署后,智能合約的外部/公共函數(shù)可以使用3種不同的方法進(jìn)行調(diào)用。第1種方法是用戶通過客戶端發(fā)送交易進(jìn)行調(diào)用,該交易的信息包含目標(biāo)函數(shù)的簽名哈希和函數(shù)所需的參數(shù)。這是一種可以更改賬戶余額和智能合約狀態(tài)的寫入操作。“礦工”將會(huì)向發(fā)送方收取以太幣,以支付交易過程中所產(chǎn)生的Gas費(fèi)用。第2種方法是通過智能合約直接調(diào)用另一個(gè)智能合約的函數(shù)。這種操作本質(zhì)上是智能合約間的消息調(diào)用。第3種方法是由客戶端在本地調(diào)用智能合約中的view函數(shù)或pure函數(shù),該函數(shù)不會(huì)修改狀態(tài)也不需要花費(fèi)Gas。3.1.3 數(shù)據(jù)管理模型
為了獲得智能合約運(yùn)行過程中的信息,ContractGuard需要先構(gòu)建智能合約的函數(shù)調(diào)用圖。函數(shù)調(diào)用圖是指在給定的具體智能合約中,將智能合約存在的所有函數(shù)作為圖中的節(jié)點(diǎn),而調(diào)用的上下文信息則表示為調(diào)用函數(shù)f前函數(shù)之間的調(diào)用序列[35]。例如,在圖3(c)中,函數(shù)B的調(diào)用上下文信息可以為S→b1,也可以為S→a1→c1→b2,還可以為S→a1→c2→b2,具體信息由實(shí)際運(yùn)行情況決定。由于遞歸,函數(shù)調(diào)用圖可能包含循環(huán),與在CFG中將回邊替換為代用邊一樣,每一條遞歸的邊都將換成從智能合約入口到函數(shù)調(diào)用處的邊。例如,將圖3(c)中的智能合約調(diào)用圖轉(zhuǎn)換為圖3(d)中的,結(jié)果中存在函數(shù)C的4個(gè)調(diào)用上下文信息:S→a1→c1,S→a1→c2,S→b1→c3和b*→c3。
本文編號:3220599
【文章來源】:網(wǎng)絡(luò)與信息安全學(xué)報(bào). 2020,6(02)
【文章頁數(shù)】:21 頁
【部分圖文】:
智能合約入侵檢測系統(tǒng)的基本思路
部署后,智能合約的外部/公共函數(shù)可以使用3種不同的方法進(jìn)行調(diào)用。第1種方法是用戶通過客戶端發(fā)送交易進(jìn)行調(diào)用,該交易的信息包含目標(biāo)函數(shù)的簽名哈希和函數(shù)所需的參數(shù)。這是一種可以更改賬戶余額和智能合約狀態(tài)的寫入操作。“礦工”將會(huì)向發(fā)送方收取以太幣,以支付交易過程中所產(chǎn)生的Gas費(fèi)用。第2種方法是通過智能合約直接調(diào)用另一個(gè)智能合約的函數(shù)。這種操作本質(zhì)上是智能合約間的消息調(diào)用。第3種方法是由客戶端在本地調(diào)用智能合約中的view函數(shù)或pure函數(shù),該函數(shù)不會(huì)修改狀態(tài)也不需要花費(fèi)Gas。3.1.3 數(shù)據(jù)管理模型
為了獲得智能合約運(yùn)行過程中的信息,ContractGuard需要先構(gòu)建智能合約的函數(shù)調(diào)用圖。函數(shù)調(diào)用圖是指在給定的具體智能合約中,將智能合約存在的所有函數(shù)作為圖中的節(jié)點(diǎn),而調(diào)用的上下文信息則表示為調(diào)用函數(shù)f前函數(shù)之間的調(diào)用序列[35]。例如,在圖3(c)中,函數(shù)B的調(diào)用上下文信息可以為S→b1,也可以為S→a1→c1→b2,還可以為S→a1→c2→b2,具體信息由實(shí)際運(yùn)行情況決定。由于遞歸,函數(shù)調(diào)用圖可能包含循環(huán),與在CFG中將回邊替換為代用邊一樣,每一條遞歸的邊都將換成從智能合約入口到函數(shù)調(diào)用處的邊。例如,將圖3(c)中的智能合約調(diào)用圖轉(zhuǎn)換為圖3(d)中的,結(jié)果中存在函數(shù)C的4個(gè)調(diào)用上下文信息:S→a1→c1,S→a1→c2,S→b1→c3和b*→c3。
本文編號:3220599
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/3220599.html
最近更新
教材專著