一种基于智能合约代码数值溢出的安全检测方法技术

技术编号:20566856 阅读:32 留言:0更新日期:2019-03-14 09:33
本发明专利技术涉及计算机安全检测方法,旨在提供一种基于智能合约代码数值溢出的安全检测方法。包括:针对以太坊的加减乘除编写安全检测规则;将智能合约代码加载到审计代码的引擎中;对智能合约代码所调取的solidity安全规则函数进行统计,确认已采用solidity安全代码库;对智能合约代码进行翻译,将其构造成有效的智能合约脚本语言,并用另外可执行的脚本语言对合约代码进行形式化的描述;针对翻译后的智能合约脚本语言进行变量的上溢出和下溢出检测,显示输入的参数与溢出结果。本发明专利技术能够用于智能合约代码数值溢出的安全检测,特别对于复杂的业务逻辑场景,无需人工进行测试和审计。能够减少判断误差,提高验证效率,节省人力物力以及时间的成本。

【技术实现步骤摘要】
一种基于智能合约代码数值溢出的安全检测方法
本专利技术涉及计算机安全检测方法,特别涉及基于智能合约代码数值溢出的安全检测方法。
技术介绍
以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(EthereumVirtualMachine)来处理点对点合约。智能合约代码发布场景下存在代码编码不规范的问题。随着智能合约的增多和大规模的发展,安全问题也频繁的出现。该问题不解决,对造成经济上的损失是不可估量的。例如,此类问题曾经所引安全漏洞,导致DAO、Parity、BEC等市值几乎一夜归零。如何对智能合约资产进行有效的管理和控制,保证安全的执行合约以及不出现漏洞等,日益显得重要。且合约代码具有公开且上传不可以更改的特性,如何在最短的时间内对智能合约代码进行快速的审计,评估和修复也更加迫切。现有检测方法通常的做法是需要人工进行测试和审计,此类方法存在对于一些复杂的业务逻辑场景难以复现(特别是针对属于经济学、博弈论范畴之内)。而人为判断可能会有一定的误差,验证的效率慢,浪费人力物力以及时间的成本的缺陷。
技术实现思路
本专利技术要解决的技术问题是,克服现有技术中的不足,提供一种基于智能合约代码数值溢出的安全检测方法。为解决上述技术问题,本专利技术采用的的解决方案是:提供一种基于智能合约代码数值溢出的安全检测方法,包括以下步骤:(1)针对以太坊的加减乘除编写安全检测规则;(2)将智能合约代码加载到审计代码的引擎中;(3)对智能合约代码所调取的solidity安全规则函数进行统计,确认已采用solidity安全代码库;(4)对智能合约代码进行翻译,将其构造成有效的智能合约脚本语言,并用另外可执行的脚本语言对合约代码进行形式化的描述;(5)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示为上溢、下溢或除零,并同时显示输入的参数与溢出结果;(6)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索不存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示上溢、下溢或除零,并同时显示输入的参数与溢出结果。本专利技术中,步骤(1)中所述的安全检测规则包括:加减乘除函数的合约成员确认方法、成员变量特征的代码库、所引用规则函数的安全性判断。本专利技术中,步骤(4)中所述形式化的描述是指,将智能合约代码翻译成可执行的脚本语言,并且在客户端显示出来。本专利技术中,步骤(5)和(6)中进行上溢出和下溢出检测时,利用了交互验证辅助工具coq。与现有技术相比,本专利技术的技术效果是:1、本专利技术能够用于智能合约代码数值溢出的安全检测,特别对于复杂的业务逻辑场景(属于经济学、博弈论的范畴),无需人工进行测试和审计。2、本专利技术能够减少判断误差,提高验证效率,节省人力物力以及时间的成本。附图说明图1为本专利技术实现过程流程图。图2为智能合约代码安全检测实施示意图。具体实施方式下面结合附图,对本专利技术的具体实施方式进行详细描述。本专利技术基于智能合约代码数值溢出的安全检测方法,包括以下步骤:(1)针对以太坊的加减乘除编写安全检测规则;安全检测规则包括:加减乘除函数的合约成员确认方法、成员变量特征的代码库、所引用规则函数的安全性判断。(2)将智能合约代码加载到审计代码的引擎中;(3)对智能合约代码所调取的solidity安全规则函数进行统计,确认已采用solidity安全代码库;(4)对智能合约代码进行翻译,将其构造成有效的智能合约脚本语言,并用另外可执行的脚本语言对合约代码进行形式化的描述;形式化的描述是指,将智能合约代码翻译成可执行的脚本语言,并且在客户端显示出来。(5)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示为上溢、下溢或除零,并同时显示输入的参数与溢出结果;(6)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索不存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示上溢、下溢或除零,并同时显示输入的参数与溢出结果。本专利技术中,步骤(5)和(6)中进行上溢出和下溢出检测时,利用了辅助工具coq。下面通过一个实例,对本专利技术具体实现方式进行举例说明:将智能合约代码放入到检测平台之中,然后点击检测,发送检测请求,检测引擎获取到检测请求,得到合约的名称。如果合约名称不为空,就进入检测流程。首先,将合约进行形式化的翻译,将合约函数翻译成有效的脚本语言,生成前端显示页面。然后,查找存在加减乘除运算,运算函数是否采用了安全运算库里面的函数,如果采用,检测引擎不进行检测,如果未采用安全运算库的函数进如特定的检测中,对其变量参数进行条件上的提取和定义,比如变量参数是8位的,还是16位的,是有符号的还是无符号的。根据提取出来的条件特征,对其进行上溢或者下溢的检测,看看是否存在溢出,并在检测结束后,将检测到的结果返回到前端。本文档来自技高网...

【技术保护点】
1.一种基于智能合约代码数值溢出的安全检测方法,其特征在于,包括以下步骤:(1)针对以太坊的加减乘除编写安全检测规则;(2)将智能合约代码加载到审计代码的引擎中;(3)对智能合约代码所调取的solidity安全规则函数进行统计,确认已采用solidity安全代码库;(4)对智能合约代码进行翻译,将其构造成有效的智能合约脚本语言,并用另外可执行的脚本语言对合约代码进行形式化的描述;(5)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示为上溢、下溢或除零,并同时显示输入的参数与溢出结果;(6)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索不存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示上溢、下溢或除零,并同时显示输入的参数与溢出结果。

【技术特征摘要】
1.一种基于智能合约代码数值溢出的安全检测方法,其特征在于,包括以下步骤:(1)针对以太坊的加减乘除编写安全检测规则;(2)将智能合约代码加载到审计代码的引擎中;(3)对智能合约代码所调取的solidity安全规则函数进行统计,确认已采用solidity安全代码库;(4)对智能合约代码进行翻译,将其构造成有效的智能合约脚本语言,并用另外可执行的脚本语言对合约代码进行形式化的描述;(5)针对翻译后的智能合约脚本语言找寻可能存在溢出的加减法运算的变量参数,然后搜索存在安全规则函数的代码;加载带智能合约安全代码库规则,针对书写不规范进行变量的上溢出和下溢出检测;如果不存在溢出,表示测试通过,显示输入的值和输出结果;如果存在溢出,则显示为上溢、下溢或除零,并同时显示输入的参数与溢出结果;(6)针对翻译后...

【专利技术属性】
技术研发人员:周楠范渊杨勃
申请(专利权)人:杭州安恒信息技术股份有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1