[發明專利]一種基于人工智能的智能合約安全漏洞挖掘方法及系統有效
| 申請號: | 201910317989.1 | 申請日: | 2019-04-19 |
| 公開(公告)號: | CN110175454B | 公開(公告)日: | 2021-03-26 |
| 發明(設計)人: | 肖銀皓 | 申請(專利權)人: | 佛山市微風科技有限公司 |
| 主分類號: | G06F21/56 | 分類號: | G06F21/56;G06F21/57;G06Q40/04 |
| 代理公司: | 廣州嘉權專利商標事務所有限公司 44205 | 代理人: | 王國標 |
| 地址: | 528000 廣東省佛山市禪城區張槎街道*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 人工智能 智能 合約 安全漏洞 挖掘 方法 系統 | ||
1.一種基于人工智能的智能合約安全漏洞挖掘方法,其特征在于,所述方法包括以下步驟:
步驟1,智能合約安全漏洞挖掘系統讀取待驗證的智能合約的二進制代碼;
步驟2,啟動字節碼控制流圖生成模塊,將待驗證的智能合約的二進制代碼作為該模塊的輸入,字節碼控制流圖生成模塊通過字節碼解析器將二進制代碼反匯編轉換成智能合約字節碼;
步驟3,字節碼控制流圖生成模塊按照智能合約字節碼跳轉指令字節碼劃分成不同模塊,然后根據跳轉的指令的源和目標代碼塊生成有向圖,該有向圖即為該智能合約字節碼的控制流圖;
步驟4,啟動特征提取模塊,將字節碼的控制流圖作為該模塊的輸入;
步驟5,特征提取模塊將控制流圖中每個節點的提取m個特征;
步驟6,啟動深度學習決策模塊,將n*m特征矩陣作為該模塊輸入,該模塊將矩陣分別輸入模塊中的深度學習模型中,每個模型給出一個k維向量,k是總共可能漏洞的總數,向量中每個元素為[0,1]中的一個分數,表示該智能合約存在某個特定漏洞的概率;
步驟7,深度學習決策模塊統計深度學習的決策概率,并整合成一個總概率,輸出給用戶,提醒用戶可能存在的安全漏洞;
步驟8,啟動深度學習可解釋性模塊對深度學習決策模塊所有的深度學習模型做可解釋性分析并展示給用戶,并可以進行手動修改模型的參數;
步驟9,當用戶手動修改后,深度學習可解釋性模塊記錄下用戶修改的結果,將結果輸入到給深度學習決策模塊進行再訓練;
在步驟2中,所述字節碼控制流圖生成模塊用于將一段智能合約字節碼轉換成字節碼控制流圖,調用字節碼解析器,將智能合約的二進制按照智能合約指令集進行反匯編,變成智能合約匯編,按照智能合約字節碼跳轉指令將字節碼劃分成不同模塊,然后根據跳轉的指令的源和目標代碼塊生成有向圖,該有向圖即為該智能合約字節碼的控制流圖;
在步驟6中,所述深度學習決策模塊用于通過輸入的特征向量或特征矩陣,利用一個或多個深度學習模型結合搜索算法,做出判斷結果,指出該智能合約可能有哪些安全漏洞或邏輯錯誤,深度學習模型包括但不限于循環神經網絡、卷積神經網絡、圖神經網絡、深度森林等,多個深度學習模型結合的搜索算法包括但不僅限于多數投票算法或加權平均;
在步驟8中,所述深度學習可解釋性模塊的主要功能是為了更好地把深度學習決策模塊中的深度學習模型的決策過程呈獻給用戶,并允許用戶對其中的決策過程進行調整,調整后的數據會返回到深度學習決策模塊再訓練,從而使得整個決策過程更透明,決策結果更準確,其中,可解釋性算法包括但不限于決策樹和隨機森林。
2.根據權利要求1所述的一種基于人工智能的智能合約安全漏洞挖掘方法,其特征在于,在步驟1中,所述智能合約安全漏洞挖掘系統包括字節碼控制流圖生成模塊、特征提取模塊、深度學習決策模塊及深度學習可解釋性模塊。
3.根據權利要求1所述的一種基于人工智能的智能合約安全漏洞挖掘方法,其特征在于,在步驟1中,所述待驗證的智能合約的二進制代碼是通過EVM編譯器編譯該智能合約的solidity源代碼生成。
4.根據權利要求1所述的一種基于人工智能的智能合約安全漏洞挖掘方法,其特征在于,在步驟4中,所述特征提取模塊用于對字節碼控制流圖提取特征,因為字節碼控制流圖中每個節點都是一個字節碼代碼段,含有多個的指令,因此具有相當豐富的信息,即指令數、算數指令數、存儲指令數、讀取指令數等,該特征提取模塊的任務就是需要把這些節選這些豐富的信息作為特征轉換成特征向量或特征矩陣,并將這些特征向量和特征矩陣作為輸入傳給深度學習決策模塊,讓深度學習決策模塊做出決策。
5.根據權利要求1所述的一種基于人工智能的智能合約安全漏洞挖掘方法,其特征在于,在步驟5中,所述特征包括但不僅限于指令數、算數指令數、存儲指令數、讀取指令數。
6.一種基于人工智能的智能合約安全漏洞挖掘系統,其特征在于,所述系統包括:存儲器、處理器以及存儲在所述存儲器中并可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序運行在智能合約安全漏洞挖掘系統的字節碼控制流圖生成模塊、特征提取模塊、深度學習決策模塊及深度學習可解釋性模塊的各自單元中,
其中,字節碼控制流圖生成模塊,包括以下單元:
智能合約反匯編單元,用于讀取待驗證的智能合約的二進制代碼,并通過字節碼解析器將二進制代碼反匯編轉換成智能合約字節碼轉成智能合約字節碼;
控制流圖生成單元,用于字節碼控制流圖生成模塊按照智能合約字節碼跳轉指令字節碼劃分成不同模塊,然后根據跳轉的指令的源和目標代碼塊生成有向圖,該有向圖即為該智能合約字節碼的控制流圖;
其中,特征提取模塊,包括以下單元:
特征提取單元,用于特征提取模塊將控制流圖中每個節點的提取m個特征;
其中,深度學習決策模塊,包括以下單元:
深度學習單元,用于將n*m特征矩陣作為該模塊輸入,該模塊將矩陣分別輸入模塊中的深度學習模型中,每個模型給出一個k維向量,k是總共可能漏洞的總數,向量中每個元素為[0,1]中的一個分數,表示該智能合約存在某個特定漏洞的概率;
決策統計輸出單元,用于統計深度學習的決策概率,并整合成一個總概率,輸出給用戶,提醒用戶可能存在的安全漏洞;
其中,深度學習可解釋性模塊,包括以下單元:
可解釋性分析單元,用于對深度學習決策模塊所有的深度學習模型做可解釋性分析并展示給用戶,并可以進行手動修改模型的參數;
再訓練單元,用于當用戶手動修改后,深度學習可解釋性模塊記錄下用戶修改的結果,將結果輸入到給深度學習決策模塊進行再訓練;
所述字節碼控制流圖生成模塊用于將一段智能合約字節碼轉換成字節碼控制流圖,調用字節碼解析器,將智能合約的二進制按照智能合約指令集進行反匯編,變成智能合約匯編,按照智能合約字節碼跳轉指令將字節碼劃分成不同模塊,然后根據跳轉的指令的源和目標代碼塊生成有向圖,該有向圖即為該智能合約字節碼的控制流圖;
所述深度學習決策模塊用于通過輸入的特征向量或特征矩陣,利用一個或多個深度學習模型結合搜索算法,做出判斷結果,指出該智能合約可能有哪些安全漏洞或邏輯錯誤,深度學習模型包括但不限于循環神經網絡、卷積神經網絡、圖神經網絡、深度森林等,多個深度學習模型結合的搜索算法包括但不僅限于多數投票算法或加權平均;
所述深度學習可解釋性模塊的主要功能是為了更好地把深度學習決策模塊中的深度學習模型的決策過程呈獻給用戶,并允許用戶對其中的決策過程進行調整,調整后的數據會返回到深度學習決策模塊再訓練,從而使得整個決策過程更透明,決策結果更準確,其中,可解釋性算法包括但不限于決策樹和隨機森林。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于佛山市微風科技有限公司,未經佛山市微風科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910317989.1/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種判斷作弊操作的方法和裝置
- 下一篇:一種用于數據庫的風險防御方法





