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

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



                      V  =(  v i  |每个节点  v 与一个系统调用一一对应)
                      E  =(< v i ,v j  >|表示系统调用  i 到系统调用  j 之间存在控制权转移)
                    合约的控制流图构造过程如图           3  所示.

                                     函数入口                  基本块1                  V1


                                    函数选择器                  基本块2                  V2



                                 函数A       函数B        基本块3      基本块4          V3     V4


                                      函数C                  基本块5                  V5



                                                           基本块6                  V6


                                                           基本块7                  V7

                                  (a) 基本功能划分           (b) 功能基本块划分           (c) 系统调用转换
                                               图 3 智能合约控制流图构造过程

                  3.3.2    行为特征提取
                    行为特征提取模块的输入是控制流图, 它描述了合约的执行过程和状态转换. 行为特征提取模块的输出是预
                 期行为规则集, 它描述了合约的预期行为和安全策略.
                    预期行为规则可以用四元组表示            Rules=(F, S, KP, SP), 分别表示以下内容.
                    (1) 合约的功能模块     (function, F), 即合约可以实现的不同功能.
                    (2) 合约的预期行为序列       (sequence, S), 即合约在执行每个功能模块时所触发的系统调用及其序列.
                    (3) 合约的关键参数集      (key parameter, KP), 即合约在执行时触发的每个系统调用的关键参数.
                    (4) 合约的安全策略     (security policy, SP), 即合约在执行每个系统调用时所需满足的安全条件或约束.
                    行为特征提取模块的过程如下.
                    (1) 根据控制流图中的分支结构, 划分合约的不同功能模块, 例如一个众筹合约可能有创建合约、设置目标、

                 设置截止日期、贡献资金、提现资金、退款资金等功能模块.
                    (2) 对于每个功能模块, 遍历其控制流图中的所有节点, 将按照时间顺序执行的系统调用串联起来作为该功能
                 模块的预期行为序列, 例如创建合约功能模块的预期行为序列可以是: open, write, close 等.
                    (3) 利用  strace 命令收集合约进程运行过程中正常的系统调用行为, 记录分析各系统调用的参数值范围, 提取
                 关键系统调用参数. 当采用系统调用来表现软件行为时, 需要对各个系统调用进行识别. Linux                          系统内存在    393  个
                 系统调用   [40] , 主要有文件类、进程类、网络类、内核类等. 合约主要对读写等文件类系统调用影响较大, 为了提
                 高效率, 本文只关注文件操作类.
                    (4) 对于每个合约功能, 分析其可能的安全策略, 例如系统调用访问控制, 节点身份验证, 背书策略验证等.
                    (5) 各功能模块的预期行为序列、关键参数以及合约安全策略构成合约的预期行为规则集, 并存入可信行为
                 基准库, 一个合约功能绑定一个预期行为规则.
                    行为特征提取模块从控制流图中提取合约的预期行为规则, 并将其基准值发送到行为基准库以便后续模块可
   217   218   219   220   221   222   223   224   225   226   227