自动执行路径的监控方法及装置制造方法及图纸

技术编号:25225795 阅读:21 留言:0更新日期:2020-08-11 23:14
本公开实施例公开了一种自动执行路径的监控方法及装置。其中,该方法包括:根据当前智能合约生成对应的控制流图;对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记;对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图;对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记;部署所述智能合约,根据所述上下文标记对所述智能合约的执行状态进行分析监控。

【技术实现步骤摘要】
自动执行路径的监控方法及装置
本公开涉及区块链
,具体涉及一种自动执行路径的监控方法、装置、电子设备及存储介质。
技术介绍
区块链技术是一种去中心化、不需要第三方进行认证、点对点交互的分布式数据存储技术,区块链通过维护链式结构的数据块,可以维护持续增长、不可篡改的数据记录。目前区块链的应用主要集中在数字货币、网络交易等方面,但这仅仅是因为这些领域更依赖区块链的某些特性,事实上区块链实际应用方向远远不止上述领域。第一代区块链在本质上是一个去中心化的数据记录(比如比特币的账本)工具,通过共识算法确保区块链网络的参与者能够维持记录的一致性。第二代区块链技术(比如以太坊)最明显的改进就是加入了智能合约的概念,使其不仅仅是简单的去中心化的记录,而是一个完整的开发平台,开发者可以在其提供的图灵完备的脚本语言基础上建立符合业务逻辑的应用程序。智能合约是运行在区块链上的程序代码,一旦部署上区块链上就无法篡改,其执行过程完全自动化并不需要人为介入,并且执行结果写入到区块链中,由区块链的特性来保证整个执行过程是不可篡改不可逆的。智能合约可以在完全避免第三方的介入下,完成透明、无冲突的交互过程的执行。之后号称第三代区块链技术的EOS(EnterpriseOperationSystem)是为商用分布式应用所设计的一种新型区块链技术,其通过并行链等技术解决了区块链交易吞吐量和延迟的难题。其中,智能合约的模型一般包括以下三个部件:第一,体系结构;智能合约应用多数是用Solidity编写(Solidity是一种强类型的类javascript编程语言,具有面向对象的特性),为了将智能合约部署到以太坊当中,Solidity编写的智能合约还必须编译为EVM(EthereumVirtualMachine,以太坊虚拟机)字节码,编译后用户才能通过发送交易的方式部署智能合约到以太坊中。第二,调用模型;智能合约的函数调用方式,主要分为无代价调用和有代价调用两种,前者无需消耗系统费用(以太坊中以gas表示)调用pure/view的函数,且过程和结果不会写入到区块当中;后者调用非pure/view的公有函数,通常会影响到智能合约的状态变量或者账户余额(balance),其执行结果会记录到区块当中,因此需要消耗系统费用(gas)。第三,数据管理模型;EVM是基于256位字长栈虚拟机,其利用的存储结构包括最大深度为1024的256位操作栈、字寻址的字节数组(作为内存)、键值对的存储结构(作为持久化数据的存储模型)以及只读存储器(用于存储与外部调用相关的参数和返回值)这4类。智能合约的控制流监控主要应用于智能合约的测试,通过分析测试时智能合约是否出现于需求分析不相符的控制流,判断智能合约的代码逻辑是否存在设计上的错误或者是否存在某些意想不到的bug。其次,智能合约的控制流监控可以用于实现基于异常路径检测的智能合约防火墙,通过对控制流的实时分析,识别出攻击者的非法行为,并且进行拦截和回滚。现有的智能合约控制流监控主要是利用智能合约虚拟机(EVM)中的监控功能(管理API)来获取智能合约在特定输入下的运行路径(比如通过debug_TraceTransactions机制获取),通过收集这些路径数据,可以分析智能合约的漏洞以及针对智能合约的攻击行为。然而,专利技术人在实现本公开实施例相关技术方案的过程中发现,现有的智能合约控制流监控只能在合约执行完毕之后才能返回得到路径,显然是一种事后评估方式。但是在实际应用中,有很多情况是需要在运行时动态监控,单纯的事后控制显然不可能解决所有问题,某些重大漏洞或攻击行为需要及时阻止,否则可能会造成无法挽回的重大损失;而现有方法目前不能解决运行时监控路径的需求。
技术实现思路
针对现有技术中的上述技术问题,本公开实施例提出了一种自动执行路径的监控方法、装置、电子设备及计算机可读存储介质,以解决现有技术中不能对智能合约进行运行时监控的问题。本公开实施例的第一方面提供了一种自动执行路径的监控方法,包括:根据当前智能合约生成对应的控制流图;对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记;对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图;对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记;部署所述智能合约,根据所述上下文标记对所述智能合约的执行状态进行分析监控。在一些实施例中,所述根据当前智能合约生成对应的控制流图包括:对所述智能合约进行编译,获取EVM上对应的字节码;根据所述字节码对所述智能合约进行块划分;根据每个块的内容以及块与块的关系构建生成所述控制流图。在一些实施例中,所述对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记包括:遍历所述控制流图,将所述控制流图中的每条回边拆分为至少一条无环路径;使用EPP算法分析控制流程图,对所述控制流图中的每一条路径进行上下文标记,确定所述每一条路径的编码。在一些实施例中,所述对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图包括:解析所述智能合约中的各个函数,确定函数之间的调用关系;以所述各个函数为节点,以所述函数之间的调用关系为边,构建生成所述函数调用图。在一些实施例中,所述对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记包括:遍历所述函数调用图,将所述函数调用图中的每条回边拆分为至少一条无循环调用边;对无循环调用的函数调用图进行分析,对其中的每一条路径进行上下文标记,确定所述每一条路径的编码。本公开实施例的第二方面提供了一种智能合约嵌入式入侵检测方法,包括:在测试环境中使用测试用例对需要进行保护的智能合约进行测试,收集所有测试用例的路径特征,形成安全路径特征集合;采用如前述实施例所述的自动执行路径的监控方法对所述智能合约进行处理,将所述安全路径特征集合与带有上下文标记的所述智能合约组成带有嵌入式IDS功能的智能合约部署到区块链中;在接收到所述嵌入式IDS判断出现入侵行为的通知时,通过审计路径特征重现所述入侵行为的执行场景,以对所述入侵行为进行识别和处理。本公开实施例的第三方面提供了一种自动执行路径的监控装置,包括:控制流图生成模块,用于根据当前智能合约生成对应的控制流图;第一标记模块,用于对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记;函数调用图生成模块,对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图;第二标记模块,用于对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记;监控模块,用于部署所述智能合约,根据所述上下文标记对所述智能合约的执行状态进行分析监控。在一些实施例中,所述控制流图生成模块包括:编译模块,用于对所述智能合约进行编译,获取EVM上对应的字节码;块划分模块,用于根据所述本文档来自技高网
...

【技术保护点】
1.一种自动执行路径的监控方法,其特征在于,包括:/n根据当前智能合约生成对应的控制流图;/n对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记;/n对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图;/n对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记;/n部署所述智能合约,根据所述上下文标记对所述智能合约的执行状态进行分析监控。/n

【技术特征摘要】
1.一种自动执行路径的监控方法,其特征在于,包括:
根据当前智能合约生成对应的控制流图;
对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记;
对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图;
对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记;
部署所述智能合约,根据所述上下文标记对所述智能合约的执行状态进行分析监控。


2.根据权利要求1所述的方法,其特征在于,所述根据当前智能合约生成对应的控制流图包括:
对所述智能合约进行编译,获取EVM上对应的字节码;
根据所述字节码对所述智能合约进行块划分;
根据每个块的内容以及块与块的关系构建生成所述控制流图。


3.根据权利要求1所述的方法,其特征在于,所述对所述控制流图进行处理,生成无环路径的控制流图并进行上下文标记包括:
遍历所述控制流图,将所述控制流图中的每条回边拆分为至少一条无环路径;
使用EPP算法分析控制流程图,对所述控制流图中的每一条路径进行上下文标记,确定所述每一条路径的编码。


4.根据权利要求1所述的方法,其特征在于,所述对所述智能合约中各个函数的调用关系进行解析,生成对应的函数调用图包括:
解析所述智能合约中的各个函数,确定函数之间的调用关系;
以所述各个函数为节点,以所述函数之间的调用关系为边,构建生成所述函数调用图。


5.根据权利要求1所述的方法,其特征在于,所述对所述函数调用图进行处理,生成无循环调用的函数调用图并进行上下文标记包括:
遍历所述函数调用图,将所述函数调用图中的每条回边拆分为至少一条无循环调用边;
对无循环调用的函数调用图进行分析,对其中的每一条路径进行上下文标记,确定所述每一条路径的编码。


6.一种智能合约嵌入式入侵检测方法,其特征在于,包括:
在测试环境中使用测试用例对需要进行保护的智能合约进行测试,收集所有测试用例的路径特征,形成安全路径特征集合;
采用如权利要求1-5中任一项所述的自动执行路径的监控方法对所述智能合约进行处理,将所述安全路径特征集合与带有上下文标记的所述智能合约组成带有嵌入式IDS功能的智能合约部署到区块链中;
在接收到所述嵌入式IDS判断出现入侵行为的通知时,通过审计路径特征重现所述入侵行为的执行场景,以对所述入侵行为进行识别和处理。


7.一种自动执行路径的监控装置,其特征在于,包括:...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:广州拉卡拉信息技术有限公司华南师范大学
类型:发明
国别省市:广东;44

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

1