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

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



                                                      表 2 实验数据集

                       方案          生命周期         行为        细粒度        可信验证         权限验证         安全性
                    Kalra等人 [18]      ×          √        具备          不具备          具备          符合执行
                     Hu等人 [21]        ×          √        不具备         不具备          不具备         异常检测
                    Chen等人 [23]       ×          ×        不具备         具备           具备          硬件保护
                     本文方案             √          √        具备          具备           具备          动态度量

                  5.2   性能分析
                    另一方面, 针对安全分析中的          3  种场景我们研究了智能合约行为可信验证机制对                Hyperledger Fabric 区块链
                 系统性能的影响. 我们通过对         mychaincode 合约的转账交易进行测试, 并测试该机制下区块链系统确认交易的延
                 迟. 针对访问控制场景, 在合约执行前匹配预期行为规则, 在合约执行时匹配区块链系统安全策略. 针对合约篡改
                 等资源完整性场景, 在合约执行前匹配基准值与度量值. 针对合约漏洞场景, 在简单、中等、复杂这                              3  种合约下进
                 行实验评估该机制的性能.
                    本文使用能够衡量区块链平台性能的基准工具                 Hyperledger Caliper 在单机环境下进行测试, 测试所用数据库
                 为  LevelDB, 测量交易发送请求和接收响应的时间差.
                    本节采用时间延迟作为本文研究方案的性能评价指标, 其中引起时间延迟的因素包括                             4  个部分: (1) 区块链正
                 常交易流程所用的时间        t 1 ; (2) 捕获关键系统调用所用的时间      t 2 ; (3) 匹配预期行为规则所用时间     t 3 ; (4) 系统调用加
                 载客体数据的可信度量时间          t 4 . 因此, 总的性能开销为以上    4  部分的和.
                    智能合约行为可信验证机制相较于普通合约交易过程而言, 其差别在于系统调用执行的监控及可信度量和判
                 定行为. 利用   strace 命令, 结合合约的部署或调用流程对相关系统调用进行统计, 本文选取                   read、write 这两类系统
                 调用作为预期行为规则的主要来源. 当上述两类系统调用被捕获, 根据其系统调用参数对其加载的文件进行可信
                 度量, 并根据预期行为规则判定该系统调用行为是否可信. 针对简单、中等、复杂合约, 分别对应系统调用数量
                 为  6、37、100  下进行实验评估. 本文以中等合约为例详细分析合约运行时的性能开销.
                    (1) 通过性能测试工具      Hyperledger Caliper 测试合约正常运行时交易确认的时延        t 1 .
                    (2) 通过  strace 命令获取捕获系统调用的时间       t 2 如表  3  所示.

                                                     表 3 系统调用统计

                                      系统调用          次数         耗时 (s)       总耗时 (s)
                                        read         26       0.000 012 6    0.000 327
                                       write         11       0.000 020 0    0.000 220

                    (3) 为了提高性能, 只对与合约运行相关度较大的文件进行度量, 即合约源文件、节点身份证书、区块链账本
                 等. 本实验调用国密算法       SM3  进行完整性度量, 表     4  给出了客体文件完整性度量的时间消耗            t 3 .

                                                    表 4 完整性度量耗时

                                       文件类型         文件大小 (KB)      耗时 (s)     总耗时 (s)
                                       .go (合约)         3.5        0.000 034  0.000 034
                                    .pem等 (身份认证)        0.78       0.000 020  0.000 260
                                     blockfile (账本)     105        0.000 570  0.000 570

                    (4) 匹配时间   t 4 主要是字符串比较等指针操作, 如表        5  的数据是在实验过程中多次实验得到的平均值.
                    为了减少误差因素影响, 针对简单、中等、复杂合约各重复进行了                      5  次实验, 结果如图    6  所示. 可以计算和分
                 析得出智能合约行为可信验证机制在不同合约情况下的时间消耗情况. 在简单合约下执行消耗的时间相比区块链
                 正常交易增加约      0.002 5 s, 在中等合约下执行消耗的时间相比区块链正常交易增加约                 0.014 s, 在复杂合约下执行
   221   222   223   224   225   226   227   228   229   230   231