计算机系统形式化验证中的模型检测方法综述论文

1 形式化方法概述

形式化方法是用数学和逻辑的方法来描述和验证系统设计是否满足需求。它将系统属性和系统行为定义在抽象层次上,以形式化的规范语言去描述系统。形式化的描述语言有多种,如一阶逻辑,Z语言,时序逻辑等。采用形式化方法可以有效提高系统的安全性、一致性和正确性,帮助分析复杂系统并且及早发现错误。形式化验证是保证系统正确性的重要方法,主要包括以数学、逻辑推理为基础的演绎验证(deductive verification)和以穷举状态为基础的模型检测(model checking)。演绎验证是基于人工数学来证明系统模型的正确性。它利用逻辑公式来描述系统,通过定理或证明规则来证明系统的某些性质。演绎验证既可以处理有限状态系统,又可以解决无限状态问题。但是演绎验证的过程一般为定理证明器辅助,人工参与,无法做到完全自动化,推导过程复杂,工作量大,效率低,不能适用于大型的复杂系统,因而适用范围较窄。常见的演绎验证工具有HOL,ACL2,PVS和TLV等。模型检测主要应用于验证并发的状态转换系统,通过遍历系统的状态空间,对有限状态系统进行全自动验证,快速高效地验证出系统是否满足其设计期望。下面将主要介绍模型检测方法的发展历史和研究现状,以及当前面临的挑战和未来发展方向等问题。

2 模型检测及相关技术

模型检测方法最初由Clarke,Emerson等人于1981年提出,因其自动化高效等特点,在过去的几十年里被广泛用于实时系统、概率系统和量子等多个领域。模型检测基本要素有系统模型和系统需满足的属性,其中属性被描述成时态逻辑公式Φ。检测系统模型是否满足时态逻辑公式Φ,如果满足则返回“是”,不满足则返回“否”及其错误路径或反例。时态逻辑主要有线性时态逻辑LTL(Linear TemporalLogic)和计算树逻辑CTL(Computation Tree Logic)。

2.1 线性时态逻辑

对一个系统进行检测,重要的是对系统状态正确性要求的形式化,其中一个基本维度是时间,同时需要知道检验结果与时间维度的关系。使用线性时态逻辑(LTL)来描述系统,可以使得系统更容易被理解,证明过程更加直截了当。LTL公式是一种线性时态逻辑。它在表示授权约束时,定义了无限的未来和过去,这样扩展了常用语义,并且保证了证明中判定的结果在各个时间点中都是成立的。LTL公式用逻辑连接符和时态算子表达系统运行时状态之间的关系。LTL的逻辑连接符包括:∧(与),∨ (或),—|(非),→(逻辑包含),←→(逻辑对等)。时态算子包括:G(Globally),U(Until),F(Future),X(neXt-time)。LTL模型检测验证系统状态转换模型是否满足属性,使用可满足性判定,即为检测系统模型M 中是否存在从某个状态出发的并满足LTL公式—|Φ 的路径,如果所有路径都满足LTL公式Φ 则不存在有路径满足—|Φ。使用LTL公式也有一定的局限性,LTL公式只能包括全称量词,对于混用了全称和存在量词的性质,一般无法用这种方法进行模型检测。

2.2 计算树逻辑

计算树即为通过将迁移系统M 某一状态作为根,将M 用树形结构展开表示出来,CTL使用路径量词(包括:A(All),E(Exist))和时态算子(包括F,G,X,U)对计算树属性进行形式化的描述,表示出系统的状态变化以及状态的分枝情况。LTL的时间定义是与路径相关的,每个时刻只有唯一的一个后继状态。LTL可用于有重点的选择感兴趣的路径分析,并且LTL可以表达公平概念而CTL不能。但是对于一些复杂属性,如每个计算总是可能返回到初始状态,LTL将无法描述,但是CTL可以。CTL的时间定义是与状态相关的,每个状态都有多个可能的后继状态,从一个给定的状态量化分离出路径,能够断言行为的存在。CTL可以用路径量词E,而LTL不可以;CTL公式使用路径量词A时与LTL公式表达内容可以相同。LTL和CTL各有优势,Emerson等人提出扩展的时间逻辑CTL,提供了一种统一的框架,包含了LTL和CTL,但是可满足性判定代价较高。

2.3 模型检测工具

模型检测因其自动化、高效等特点得到广泛应用,各类模型检测工具也层出不穷。以下是几类典型的模型检测工具。SPIN是1980年美国贝尔实验室开发的模型检测工具,主要关心系统进程间的交互问题。它以promela为建模语言,以LTL为系统属性的逻辑描述语言,支持on-the-fly技术,可以根据用户的需要生成系统的部分状态,而无需构建完整的状态迁移图。SPIN验证器无法验证实时系统。NuSMV是1987年由McMillan提出的开源的符号模型检测工具。它可以工作于批处理模式,也可以工作于交互模式。NuSMV采用扩展的SMV语言描述系统,并用CTL和LTL描述需求。NuSMV结合了以可满足性(SAT)为基础的模型检测和以二叉决策树BDD(Binary Decision Diagram)为基础的模型检测。它具有健壮性,以模块形式构建,不同模块间无依赖关系,代码易修改。提供了同步模型和异步模型的分区方法,可以结合可达性分析,验证不变性质。NuSMV非常灵活,使用者可以控制并且可以改变其系统模块的执行顺序,并且可以检查和修改系统的内部参数来调整验证过程。普通的有限状态转换图无法模拟动态变化的'物理环境,于是出现了由时间自动机与有着一系列变量的状态转换图结合而成的新模型。UPPAAL就是基于这种模型的成熟的实时系统验证工具。UPPAAL是1995年由Aallorg大学和Uppsala大学共同提出,具有可视化图形编辑器。它基于时间自动机并对其进行扩展,引入了坚定位置、初始化程序、紧迫位置和紧迫管道等概念,有助于对真实系统进行建模,并能够有效减少系统内存占用。它被用于检测不变量和可达性属性,尤其是检测时间自动机的控制节点某些组合以及变量约束是否满足初始配置。  CPN-Tool是由Aarhut大学开发的工具,用于有色petri网CPN(Colored Petri Net)的构造和分析。有色petri网是用于对系统进行建模并验证其并发、通信和同步的语言,是一种描述离散事件的图形化建模语言。它基于meta-language,并有强大的可扩展性。它能够通过仿真分析系统的行为,通过模型检测验证系统属性。对于状态爆炸问题,CPN-Tool有很多方法来减少状态数量,Christensen等人使用全局时钟和时间戳作为标记,通过状态等价关系化简状态空间,将无限状态转化为有限状态。

2.4 状态爆炸问题

模型检测使用状态空间检索来进行系统验证。状态空间检索的主要缺点就是状态空间随着进程数量增CTL使用路径量词(包括:A(All),E(Exist))和时态算子(包括F,G,X,U)对计算树属性进行形式化的描述,表示出系统的状态变化以及状态的分枝情况。

CTL和LTL都有强大的表达能力。LTL的时间定义是与路径相关的,每个时刻只有唯一的一个后继状态。LTL可用于有重点的选择感兴趣的路径分析,并且LTL可以表达公平概念而CTL不能。但是对于一些复杂属性,如每个计算总是可能返回到初始状态,LTL将无法描述,但是CTL可以。CTL的时间定义是与状态相关的,每个状态都有多个可能的后继状态,从一个给定的状态量化分离出路径,能够断言行为的存在。CTL可以用路径量词E,而LTL不可以;CTL公式使用路径量词A时与LTL公式表达内容可以相同。LTL和CTL各有优势,Emerson等人提出扩展的时间逻辑CTL,提供了一种统一的框架,包含了LTL和CTL,但是可满足性判定代价较高。

3 模型检测的新进展

尽管模型检测验证能力在不断增强,可是对于复杂系统的验证仍然面临许多挑战。验证混成系统时,由于其状态空间庞大,对于一些基础问题的验证,具有不可判定性。验证系统的访问控制策略时,一条策略可能包含大量规则,如何对策略建模成为难点。验证多智能系统MAS(Multi-Agent System)时,由于MAS出现的目的就是用多个模块来解决单一模块无法解决的复杂问题,因此MAS的使用环境一般较为复杂,行为多样且具有随机性,验证难度较大。本文针对上述难题,提出一些解决方法如下。验证混合自动机。Krishna等人用混合自动机模型化物联网系统,并且用LTL模型检测进行验证。在使用LTL模型检测混合自动机时,由于LTL具有不可判定性,引入互模拟的概念,并表明一个有限互模拟的存在意味着使得LTL模型检测问题的可判定。验证访问控制安全策略。Maarabani等人将组织间模型O2O(Organization to Organization model)与LTL模型相结合,来验证互操作访问控制安全策略。将每一个O2O策略分别用两个LTL公式表示,进行验证。Hwang,Tao等人定义了一个新的工具ACPT(Access Control Policy Testing),将策略制定者的安全需求,转化成可执行的策略,并根据需要对访问控制策略进行动态和静态验证验证MAS。Meski等人用基于SAT的限界模型检测和基于BDD的限界模型检测分别验证多智能系统MAS,并对两种验证方法的时间和内存耗费方面等进行比较。由于目前对MAS的验证技术不支持主流验证工具,且输入形式单一,Hunter等人提出扩展验证框架可以支持多种输入,并且提供翻译器将输入翻译为多个主流验证工具的输入语言,利用现有的验证工具对MAS进行验证。由于MAS的使用环境相对复杂,其行为具有随机性,Song针对MAS行为具有随意性的难题,提出一种概率建模语言对MAS的进行描述,并提出相应的模型检测框架。

4 结束语

形式化验证方法已经被广泛的研究,各种描述语言与验证工具层出不穷。相对于演绎验证,模型检测因其全自动并可以提供有数学基础的反例等特点,适用范围更广,可用于验证软件、硬件和协议系统等多个领域。利用模型检测时需控制好状态数量,进行存储压缩或者使用必要的路径压缩、状态缩减算法非常关键。同时前期对于保护目标的选取也非常关键,选出关键资产来保护可以大大提高后期的描述与验证效率。本文工作可为模型检测方法的研究提供借鉴和参考意义。

【计算机系统形式化验证中的模型检测方法综述论文】相关文章:

线性时态逻辑ctl_计算机系统形式化验证中的模型检测方法综述论文相关推荐

  1. 线性时态逻辑ctl_基于决策过程的广义可能性时态逻辑模型检测

    基于决策过程的广义可能性时态逻辑模型检测 [摘要]:随着计算机软硬件系统日益复杂,如何保证其正确性和可靠性,已成为大家广泛探讨的问题.模型检测由于其借助严格的数学方法来验证系统是否满足性质和自动化验证 ...

  2. 计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述

    原标题:计算机视觉方向简介 | 人脸识别中的活体检测算法综述 本文转载自"SIGAI人工智能学习与实践平台"(ID:SIGAICN) 导言 1. 什么是活体检测? 判断捕捉到的人脸 ...

  3. 目标检测中的性能提升方法综述

    文章目录 一.多尺度检测 1.什么是多尺度检测? 2.降低下采样率与空洞卷积 3.多尺度训练 4.优化Anchor尺寸训练 5.深层与浅层特征融合 6.SNIP,尺度归一化 7.TridentNet, ...

  4. #今日论文推荐# 爱丁堡大学等首篇《移动无线网络中的深度学习》综述论文,67页pdf涵盖570篇文献阐述深度学习在移动无线网络中的应用最佳实践

    #今日论文推荐# 爱丁堡大学等首篇<移动无线网络中的深度学习>综述论文,67页pdf涵盖570篇文献阐述深度学习在移动无线网络中的应用最佳实践 移动设备的迅速普及以及移动应用和服务的日益普 ...

  5. MATLAB热障涂层成像,一种涡轮叶片热障涂层模拟试验过程中损伤实时检测方法与流程...

    本发明涉及航空发动机防护涂层技术领域,特别涉及一种涡轮叶片热障涂层模拟试验过程中损伤实时检测方法. 背景技术: 现代航空发动机已有两千多个部件应用有先进涂层材料,包括涡轮叶片.密封件.燃烧室密封件动件 ...

  6. 对计算机系统进行软攻击的方法,计算机软件中安全漏洞检测方法研究

    论文写作指导:请加QQ97050021 计算机软件安全漏洞是指计算机在网络环境中将造成计算机操作环境安全的漏洞,下面是小编搜集整理的一篇探究计算机软件安全漏洞现状的论文范文,欢迎阅读借鉴. 摘 要:计 ...

  7. 最全综述 | SLAM中回环检测方法 收藏

    在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说的累积误差.一个消除误差有效的办法是进行回环检测.回环检测判断 ...

  8. 人脸识别中的活体检测算法综述

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 1. 什 ...

  9. 计算机安全监测技术中,计算机软件安全检测技术分析论文

    计算机软件安全检测技术分析论文 摘要:近年来,我国的科技一直在快速发展,而计算机技术也实现了不断的发展.在计算机中,软件和硬件是确保计算机有效运行的重要部分,且计算机软件的安全直接决定着计算机性能的安 ...

最新文章

  1. 神器推荐,可视化 Python 打包 exe,牛逼
  2. iOS 滚动图滚动到顶部汇总
  3. VB无所不能之五:建立“标准”DLL动态链接库文件(1)
  4. git配置服务器版仓库
  5. css 图文 上下 居中,CSS垂直居中的6种方法
  6. PRD文档编写与规范
  7. NX(UGS)技术关于我和你顶着忽移不定的云彩
  8. 获取php服务器ip地址,PHP获取客户端和服务器IP地址
  9. Hi3519V101 Uboot和Kernel编译
  10. 用计算机绘制v-t图像,2.用计算机绘制v-t图象. [预习导引]
  11. 对Java中字符串的进一步理解
  12. 量子力学 计算机应用,有了九章计算机:但我们离量子力学还很远~
  13. javascript怎么对url进行编码转换
  14. 短时傅里叶变换原理解
  15. 开源中国正式进军软件开发众包领域
  16. 调用百度云短语音合成简单程序
  17. win10计算机怎么拨号上网,Win10怎么设置自动连接宽带_Win10怎么设置自动拨号连接上网-192路由网...
  18. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard
  19. Git基础-生成SSH密钥+配置密钥到远程仓库中
  20. java 退格符,Java退格键

热门文章

  1. 学习笔记(22):第一章: 路由与模板-Web前端技术与框架 3
  2. Android获取系统语言(区分简体中文和繁体中文) .
  3. (Codeforces798Div2)C. Infected Tree(思维)
  4. Python模拟栈(stack)进出--实现栈的先进后出
  5. switch php7.2,在 php 7.3 中 switch 语句中使用 continue
  6. matlab编程中函数randperm用法
  7. 鸿蒙一碰闪屏壁纸,不闪屏骗人吗? 戳穿护眼液晶的五大谎言
  8. python笔记手写照片_Python笔记-将图片转换为字符画
  9. ppt模板如何制作动画效果花瓣目录?
  10. plt.contourf、plt.contour函数