Page 216 - 《软件学报》2025年第10期
P. 216

张建标 等: 面向联盟链的智能合约行为可信验证机制                                                       4613


                 交易效率高、访问控制等特点          [7] . 相比公有链, 联盟链更适用于重要信息系统, 具有更加广泛的应用场景.
                    近年来, 智能合约一直受到安全事件的困扰. 智能合约本质上是一种计算机代码, 不可避免存在代码漏洞, 这
                 也是目前针对合约进行攻击的常用手段. 例如, 2016               年的  DAO  事件导致价值约      6 000  万美元的以太币损失     [8] .
                                                                            [9]
                 2018  年, 攻击者针对  Spankchain  智能合约发起重入攻击, 并盗走       165  个  ETH . 2022  年, 将近  8 000  万美元的被盗
                 资产令   Fei Protocol 成为有史以来规模最大的重入攻击受害者           [10] . 这些事件都暴露了智能合约存在着严重的安全
                 漏洞, 威胁着区块链系统的稳定性. 因此, 对于具有严格安全需求的联盟链应用场景, 例如情报机构、金融机构等,
                 不能简单地要求没有漏洞的合约, 而是应要求合约的行为符合预期.
                    对于智能合约来说, 其行为主要体现在对账本的读写操作上. 本文采用主动免疫可信计算的概念, 在计算运算
                 的同时进行安全防护, 使计算结果符合预期              [11] , 因此, 智能合约行为可信是指合约在执行过程中没有发生任何违
                 反安全策略、未经授权或恶意的操作, 能够达到预期的效果. 智能合约行为不同于一般的软件行为, 智能合约行为
                 是不可逆的, 一旦合约被部署到区块链上, 就无法修改或删除. 智能合约行为是公开透明的, 任何人都可以查看合
                 约的源代码. 智能合约行为是受限制的, 合约不能直接访问外部数据或服务, 只能通过预定义的接口与外部环境交
                 互. 在联盟链中, 智能合约行为可信面临以下几种威胁: (1) 合约漏洞威胁: 合约代码中存在逻辑错误或安全漏洞,
                 导致合约被攻击者利用; (2) 合约篡改威胁: 合约存储在区块链, 运行在本地沙箱环境中, 从区块链到沙箱的过程发
                 生合约的篡改, 使得合约的执行结果发生错误. 例如在金融投资场景中                      [12] , 攻击者利用合约中的回退函数漏洞抛
                 出异常, 导致资金以不符合系统预期的方式发生逆转, 金融机构不得不支付大量赎金以请求攻击者撤销抛出操作.
                 因此, 保证联盟链系统中智能合约的行为可信至关重要.
                    然而, 现有的智能合约漏洞检测技术并不完全适用于具有较高安全需求的联盟链应用场景. 一方面, 大部分研
                 究方案  [13,14] 都是对合约代码漏洞进行检测, 主要针对智能合约安全性进行研究, 而对智能合约可信性的研究较少.
                 另一方面, 目前智能合约可信性研究方案主要集中在利用可信执行环境保障合约数据的隐私, 并未考虑合约行为
                 可信. 此外, 目前的研究方案仅在合约部署前发现漏洞, 并未考虑合约运行时的安全问题.
                    可信计算为智能合约可信研究提供了新思路, 安全可信是国家网络安全法律、战略和等级保护制度的要求.
                 等保  2.0 [15] 中明确指出针对重要信息系统及应用进行动态可信验证的要求, 强化了网络安全等级保护一级到四级
                 的可信要求, 以确保重要信息系统的安全. 因此, 基于区块链技术构建的重要信息系统也需要满足区块链应用程序
                 动态可信验证的要求, 而智能合约作为扩展区块链功能的主要技术, 智能合约行为的不可信必将导致区块链系统
                 的不可信, 对智能合约行为进行可信验证更是重中之重.
                    针对上述问题和挑战, 本文基于可信计算技术提出一种面向联盟链的智能合约行为可信验证机制, 在合约所
                 有执行环节进行动态可信验证. 基于控制流图提取合约预期行为规则, 作为行为可信验证的依据. 在合约执行过程
                 中对行为进行主动控制, 基于预期行为规则对其进行动态可信验证, 保障智能合约的可信运行. 此外, 本文分析了
                 合约行为的控制流, 选择       Hyperledger Fabric 环境下具有代表性的合约验证了该机制的可行性. 实验结果表明, 本
                 文提出的智能合约行为可信验证机制能够在区块链系统中建立起主动免疫机制, 确保合约的行为按照预期执行.
                    本文的主要贡献如下.
                    (1) 从行为角度分析智能合约, 提出智能合约行为可信的定义, 以系统调用作为最小行为单元, 用基于系统调
                 用的行为序列描述合约行为.
                    (2) 提出基于主动免疫可信计算的智能合约行为可信验证机制, 实时监控合约运行时的系统调用和状态变化,
                 根据预期行为规则进行动态可信判定, 实现对合约运行时的可信度量与主动防护, 提升智能合约的可信性.
                    (3) 在  Hyperledger Fabric 环境下进行实验验证, 实验结果表明, 我们提出的智能合约行为可信验证机制能够
                 有效实现对合约行为的验证, 确保智能合约行为是符合预期的.
                    本文第   1  节介绍并总结相关工作. 第       2  节介绍背景和基础知识. 第       3  节介绍我们提出的智能合约行为可信验
                 证机制的设计与实现细节. 第         4  节分析该机制的安全性. 第      5  节通过实验评估该机制的效果. 第         6  节总结全文并展
                 望未来工作.
   211   212   213   214   215   216   217   218   219   220   221