Page 219 - 《软件学报》2025年第10期
P. 219
4616 软件学报 2025 年第 36 卷第 10 期
实现恶意的程序执行, 导致智能合约执行出现问题. 目前的研究方案缺乏对智能合约可信性的分析, 本文从访问控
制、代码漏洞和资源完整性这 3 个方面对智能合约不可信行为进行分析.
(1) 访问控制: 合约缺乏权限验证可导致受保护的数据或功能被恶意调用. 例如没有背书权限的节点对交易进
行恶意背书使得系统中的数据变得不一致, 未经授权的节点试图绕过访问控制策略非法访问区块链资源.
(2) 代码漏洞: 恶意攻击者利用代码中的漏洞发起攻击. 当合约调用另一个合约时, 如果合约的调用被攻击者
窃取, 则该合约将被迫执行其他恶意代码, 包括对自身的回调, 导致相同的合约代码会像递归函数调用一样被重复
执行. 因此带有恶意调用函数的合约, 可能会对受害合约发起递归调用, 绕过检查以重复获得收益.
(3) 资源完整性: 攻击者破坏智能合约运行过程中的资源完整性. 合约运行过程首先要保障合约代码的完整
性. 合约存储在区块链上, 虽然合约上链后是无法删除或修改的, 但合约从链上拿到本地的过程是有可能被篡改
的. 智能合约一般运行在隔离的沙箱中, 一旦在运行环境中存在自身安全缺陷或控制机制不完善等问题, 攻击者可
通过部署恶意合约代码, 扰乱合约业务逻辑. 因此需要考虑合约运行环境的完整性. 此外, 智能合约可能会调用区
块链内部和外部数据资源, 例如区块链文件、外部库的调用等. 因此需要保证其完整性. 如果向节点返回不可信的
外部资源, 则可能会对区块链系统造成威胁.
2.2 可信计算
2.2.1 可信定义
可信计算是一种以密码学为基础, 以可信芯片为信任源头的增强计算机系统可信性的综合性信息安全技术 [35] .
通过在计算系统平台中构建一个作为信任起点的信任根, 并通过信任链将信任关系从底层硬件平台逐步扩展至上
层应用, 从而确保计算资源的完整性和行为的预期性. 目前, 关于可信尚未形成统一定义, 不同组织解释方式有所
不同, 其中较具代表性的为以下几种.
(1) 可信计算组织 TCG (trusted computing group) 定义可信为: 如果实体的行为总是以预期的方式, 实现预期
的目标, 则该实体可信 [36] .
(2) 沈昌祥院士 [11] 结合人类免疫系统的理念提出了主动免疫可信计算: 在计算、运算的同时进行安全防护, 以
密码为基因实施身份识别、状态度量、保密存储等功能, 及时识别“自己”和“非己”成分, 从而破坏并排斥进入机
体的有害物质, 相当于为网络信息系统培育了免疫能力, 使过程和操作行为在任意条件下的计算结果总是符合预
期, 开启了我国可信 3.0 防御与运算并行的网络安全主动防御时代.
2.2.2 行为动态度量
可信度量是一种通过基准值验证数据完整性或评估实体行为和预期描述的信任量化方法 [37] , 主要包括静态
度量和动态度量. 其中静态度量主要对数据完整性加载时进行可信校验, 而动态度量更侧重程序运行过程是否符
合预期. 由于程序运行过程中的复杂性, 静态度量已不能满足系统运行时的安全需求, 不符合行为符合预期的可信
本质. 动态度量是一种对信任持续、动态的量化手段, 动态度量技术涉及的 4 个要素分别是主体、客体、操作和
环境. 动态度量在系统运行过程中, 通过对系统相关组件或数据的完整性、实体行为等多类对象进行持续的综合
可信评估. 行为动态度量通过行为特征提取构建预期行为集, 通过行为监控获取实际行为集, 通过比较实际行为集
与预期行为集的一致性对行为进行可信评估.
3 智能合约行为可信验证机制
3.1 智能合约行为基本定义
本文提出一种针对合约行为的可信验证机制来保障合约行为符合预期, 参考软件行为学中的行为定义 [38] , 研
究如何构建合约的实时度量和防护方法. 智能合约行为基本定义, 包含以下元素.
S = (s 0 , s 1 ,..., s n ), 区块链原始状态为 ;
(1) 区块链系统状态集 s 0
(2) 单个行为单元集 A, 行为单元 a 是构成某个行为的原子操作即系统调用;

