一种需求层形式化验证方法及系统

文档序号:33159594发布日期:2023-02-04 00:21阅读:40来源:国知局
一种需求层形式化验证方法及系统

1.本发明属于计算机软件设计及测试技术领域,具体地,涉及一种操作系统需求层的形式化验证方法及系统。


背景技术:

2.软件都是依赖于操作系统来提供服务,因此操作系统的安全可靠性是保障高安全可靠服务的关键。操作系统中的一个错误或漏洞可能会造成所有运行的软件崩溃。形式化验证方法是基于严格的数学基础,对软件硬件进行形式规约和形式验证。其描述软件及其性质的语言是无歧义的,构造和验证软件的方法是严格的,因此形式化方法可以有效地提高和保障操作系统的可信性。
3.需求设计是在软件开发中最初始的阶段。然而对需求分析不充分,不完备一直软件开发中的重要问题。对需求层进行形式化验证能够更早发现隐藏的错误,提高软件的安全可靠性。
4.图1为嵌入式实时操作系统spaceos2的需求层形式化验证方法示意性流程图。如图1所示,该方法包括以下步骤:首先通过状态机模型对系统内核状态、输入条件、内核操作进行抽象规范,建立了一个事件驱动任务转移系统模型。根据确定的操作系统需求,提炼出多条核心的全局性质。最后在定理证明器coq中形式化定义全局性质,并验证建立的形式化模型是否满足提出的全局性质。
5.然而,该方法在对spaceos2进行形式化验证时,仅从需求文档中提取全局性质,未充分考虑其需求模型的需要满足的其他安全性质,存在验证不全面、可拓展性低的缺陷。


技术实现要素:

6.本发明公开了一种操作系统需求层的形式化验证方法及系统,能够对嵌入式操作系统实现从属性层面到源码层面的多层次规范描述和安全验证。
7.第1方面,提供了一种操作系统的需求层形式化验证方法,包括:步骤100、基于所述操作系统的需求文档提取操作系统的功能点,通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型;步骤200、获取用户自定义的功能安全需求的自然语言描述,通过构造不变式对所述功能安全需求进行形式化描述,得到功能安全模型;步骤300、对所述操作系统形式化模型在执行过程中是否满足所述不变式进行验证,以验证所述操作系统是否符合所述功能安全模型。
8.在一个实施例中,所述步骤100中,所述通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型,包括:步骤101、采用isabelle元语言定义包括多个状态变量的初始状态,作为所述状态机模型的入口;步骤102、采用isabelle元语言定义对所述初始状态中的各状态变量进行初始化
操作达到的下一个状态;步骤103、采用isabelle元语言定义动作以描述所述状态之间的转换关系;步骤104、构造所述功能点的全部动作的执行路径,得到用于形式化表示所述功能点执行过程的执行路径集合。
9.在一个实施例中,所述步骤200中,所述通过定义不变式对所述功能安全需求进行形式化描述,得到功能安全模型,包括:步骤201、根据用户自定义的功能安全需求,在状态机模型的状态变量集合中定义安全相关的状态变量和安全策略函数,以形成安全域集合;步骤202、采用不定式构造安全状态的条件,以表达在状态转换期间状态变量的数值所必须始终保持的关系;步骤203、构造状态转换函数以描述状态变量可能发生的变化;步骤204、构造检验函数以检测安全状态变量是否在运行之后仍保持在安全状态。
10.在一个实施例中,所述步骤300包括:步骤301、对于状态机模型中的所有可达状态,通过归纳规则构建路径-状态集合,以将对不变式的证明转换成对每一条转换规则的前后置条件证明;步骤302、利用isabelle定理证明器中已有的类型、项或公式创建辅助证明策略;步骤303、在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明前置条件时的状态满足不变式;步骤304、在状态转移后,在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明后置条件时的状态满足不变式。
11.第2方面,提供了一种操作系统的需求层形式化验证系统,包括:第一形式化模块,被配置为:基于所述操作系统的需求文档提取操作系统的功能点,通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型;第二形式化模块,被配置为:获取用户自定义的功能安全需求的自然语言描述,通过构造不变式对所述功能安全需求进行形式化描述,得到功能安全模型;验证模块,被配置为:对所述操作系统形式化模型在执行过程中是否满足所述不变式进行验证,以验证所述操作系统是否符合所述功能安全模型。
12.在一个实施例中,所述第一形式化模块通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型,包括:采用isabelle元语言定义包括多个状态变量的初始状态,作为所述状态机模型的入口;采用isabelle元语言定义对所述初始状态中的各状态变量进行初始化操作达到的下一个状态;采用isabelle元语言定义动作以描述所述状态之间的转换关系;构造所述功能点的全部动作的执行路径,得到用于形式化表示所述功能点执行过程的执行路径集合。
13.在一个实施例中,所述第二形式化模块通过定义不变式对所述功能安全需求进行形式化描述,得到功能安全模型,包括:根据用户自定义的功能安全需求,在状态机模型的状态变量集合中定义安全相关的状态变量和安全策略函数,以形成安全域集合;采用不定式构造安全状态的条件,以表达在状态转换期间状态变量的数值所必须始终保持的关系;构造状态转换函数以描述状态变量可能发生的变化;构造检验函数以检测安全状态变量是否在运行之后仍保持在安全状态。
14.在一个实施例中,所述验证模块验证所述操作系统是否符合所述功能安全模型的过程包括:对于状态机模型中的所有可达状态,通过归纳规则构建路径-状态集合,以将对不变式的证明转换成对每一条转换规则的前后置条件证明;利用isabelle定理证明器中已有的类型、项或公式创建辅助证明策略;在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明前置条件时的状态满足不变式;在状态转移后,在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明后置条件时的状态满足不变式。
15.此外,本发明还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,与所述存储器数据耦合,用于在执行所述计算机程序时,实现上述第1方面所述的形式化验证方法。
16.此外,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现上述第1方面所述的形式化验证方法。
17.本发明基于反应式系统的操作系统需求形式化建模方法,突破使用定理证明工具建立操作系统需求的通用形式化模型与模型需求功能点实例化等关键技术,使其支持需求模型应用到具体的操作系统上,通过isabelle定理证明器进行交互式验证,提高了验证的效率。此外,通过构建一定数量的不变式,较全面地对操作系统进行了功能安全性的验证。
附图说明
18.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其他特征、目的和优点将会变得更明显:图1为嵌入式实时操作系统spaceos2的需求层形式化验证方法示意性流程图;图2为根据本发明实施例的操作系统需求层形式化验证方法流程示意图;图3为根据本发明实施例的操作系统需求层形式化验证系统组成示意图。
具体实施方式
19.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了
便于描述,附图中仅示出了与有关发明相关的部分。
20.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
21.术语解释:isabelle/hol:是一个具备工业成熟度的形式化方法和工具环境,其形式证明资源库包含300多个开源项目,合计150多万行形式规约与证明。
22.simp方法:是isabelle/hol中常用的一种自动证明方法。
23.本发明基于反应式系统的操作系统需求形式化建模方法,使用定理证明工具建立操作系统需求的通用形式化模型以及模型需求功能点实例化技术,使其支持需求模型应用到具体的操作系统上,通过isabelle定理证明器进行交互式验证,以提高验证效率。
24.图2为根据本发明实施例的操作系统需求层形式化验证方法流程示意图。如图2所示,该方法包括如下步骤:步骤100、基于所述操作系统的需求文档提取操作系统的功能点,通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型;首先,根据需求文档给出的操作系统功能点构建状态机模型。状态机模型由状态和动作组成。其中,状态是需求中的抽象数据结构以及操作系统的基本数据结构,动作是操作系统的基本动作和系统调用。
25.在一个实施例中,所述步骤100中,所述通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型,包括:步骤101、采用isabelle元语言定义包括多个状态变量的初始状态,作为所述状态机模型的入口;以内存管理功能为例,首先通过isabelle元语言定义初始内存状态s0,其中包括空内存池、线程及其初始状态、空等待队列等状态变量。初始状态s0为内存管理状态机模型的入口。
26.步骤102、采用isabelle元语言定义对所述初始状态中的各状态变量进行初始化操作达到的下一个状态;通过isabelle元语言定义状态s1,为对初始状态s0中各类状态变量(标记内存块的变量)进行初始化操作达到的下一个状态。
27.步骤103、采用isabelle元语言定义动作以描述所述状态之间的转换关系;通过isabelle元语言定义动作来描述状态之间的转换关系,内存管理中的动作由四部分组成,内存初始化,内存分配,内存释放,内存重分配。
28.步骤104、构造所述功能点的全部动作的执行路径,得到用于形式化表示所述功能点执行过程的执行路径集合。
29.s0是执行路径上的一个状态,则:假设es是某一条执行路径,内存初始化操作将系统状态s转变为t,状态t是es执行路径的第一个状态,则将状态s加入到es执行路径的头部,即s#es仍然是一条执行路径。
30.假设es是某一条执行路径,内存分配操作将系统状态s转变为t,状态t是es执行路径的第一个状态,则将状态s加入到es执行路径的头部,即s#es仍然是一条执行路径。
31.假设es是某一条执行路径,内存释放操作将系统状态s转变为t,状态t是es执行路
径的第一个状态,则将状态s加入到es执行路径的头部,即s#es仍然是一条执行路径。
32.假设es是某一条执行路径,调度操作将系统状态s转变为t,状态t是es执行路径的第一个状态,则将状态s加入到es执行路径的头部,即s#es仍然是一条执行路径。
33.通过以上归纳构造执行路径集合来形式化表示内存管理的执行过程。
34.步骤200、获取用户自定义的功能安全需求的自然语言描述,通过构造不变式对所述功能安全需求进行形式化描述,得到功能安全模型;在一个实施例中,所述步骤200中,所述通过定义不变式对所述功能安全需求进行形式化描述,得到功能安全模型,包括:步骤201、根据用户自定义的功能安全需求,在状态机模型的状态变量集合中定义安全相关的状态变量和安全策略函数,以形成安全域集合d;步骤202、采用不定式构造安全状态的条件,以表达在状态转换期间状态变量的数值所必须始终保持的关系;步骤203、构造状态转换函数以描述状态变量可能发生的变化;示例性地,s
×a→
s,其中s是系统状态集合,a是系统的有限动作集合。
35.步骤204、构造检验函数以检测安全状态变量是否在运行之后仍保持在安全状态。
36.示例性地,d
×s→
o,其中d是安全域集合,s是系统状态,o是检测状态集合。例如,对于调度模块中的acblist长度应该总是小于等于actorno,此不变式可形式化表示为:definition invariant_1 :: "scheduler =》 bool"where "invariant_1 sche = int (length(acblist sche)) ≤ actorno sche"步骤300、对所述操作系统形式化模型在执行过程中是否满足所述不变式进行验证,以验证所述操作系统是否符合所述功能安全模型。
37.在一个实施例中,所述步骤300包括:步骤301、对于状态机模型中的所有可达状态,通过归纳规则构建路径-状态集合,以将对不变式的证明转换成对每一条转换规则的前后置条件证明;具体地,对于给定的程序片段c,不变式i,通过形式化构造前后置条件霍尔三元组{i} c {i},以将对不变式的证明转换成对每一条转换规则的前后置条件证明。
38.步骤302,利用isabelle定理证明器中已有的类型、项或公式创建辅助证明策略;考虑到通常isabelle定理证明器中已经存在的自动证明策略无法满足所有不变式证明需求时,因此可以利用isabelle定理证明器中已有的类型type,项term或公式formula,或者上述类型type、项term、公式formula进行组合,来创建辅助证明策略。
39.步骤303、在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明前置条件时的状态满足不变式;具体地,在isabelle定理证明器中调用auto、blast、arith、simp等自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明前置条件时的状态满足不变式;步骤304、在状态转移后,在isabelle定理证明器中调用自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明后置条件时的状态满足不变式。
40.同样地,在状态转移后,在isabelle定理证明器中调用auto、blast、arith、simp等自动证明策略,并调用add方法将不变式的定义展开,通过组合自动证明策略和辅助证明策略来证明后置条件时的状态满足不变式。
41.以群体智能操作系统的调度模块为例,首先对其功能需求进行形式化建模,以及对调度模块需要满足的安全属性进行形式化描述,最后验证满足安全属性,具体包括如下过程:(1)通过isabelle元语言描述调度模块中的状态,包括状态的命名及类型;通过isabelle元语言对上述调度模块的状态变量的命名以及其相应的类型进行记录,部分示例如下:record scheduler =acblist :: "acb list"
……
(2)通过isabelle元语言中的条件语句、赋值语句描述调度模块中的函数功能,即如何根据什么条件,如何更新状态变量。
42.例如,re_yieldactor函数输入参数为角色标识号anactorid,其将搜索当前调度状态下的acblist,若找到符合条件的指定角色,则将其优先级加一,否则返回false。角色需符合的条件定义在re_yieldacb中。在对其进行形式化描述时,通过isabelle元语言对函数名,参数,类型以及状态转换条件,状态变量的更新进行描述。部分示例如下:definition re_yieldacb :: "acb =》 int64_t =》 bool"
……
(3)针对调度模块中的状态变量来定义调度模块中的不变式。
43.例如,其中的一个不变式1,acblist长度总是小于等于actorno,其形式化描述如下:definition invariant_1::"scheduler =》 bool"where "invariant_1 sche = int(length(acblist sche))≤ actorno sche"其中,definition表示定义的标识符,invariant_1为不变式的自定义名称,where中为对状态变量需要满足的关系。
44.(4)以上述不变式1为例进行验证。
45.该定理名称为invariant1_verify,此即不变式1的目标验证定理。re_reachable_state即归纳定义的系统状态机模型,其可以正确表示系统的可达状态。定理内容表示对于任意的可达状态s,其调度模块成员是满足不变式1的形式化表示如下:" re_reachable_state s ⟹
invariant_1 (pactorscheduler (fst s))"在证明的第一步即apply (rule re_reachable_state.induct)中,根据re_reachable_state的具体定义对其进行归纳证明。该步将产生11个子目标。实际上,这11个子目标即是通过re_reachable_state的归纳规则产生的,由于每一条规则导致的状态迁移可能在任意时刻发生,因此对不变式1的证明即可以转化为对每一条迁移规则的前后置条件证明。
46.通过向simp方法中传入相关函数定义或辅助引理。simp方法会将一些基础规则作用于当前子目标,主要起到子目标逐步简化的作用。add : invariant_1_def表示将invariant1的定义加入当前simp证明,即可以将invariant1的定义展开进行进一步证明。
47.本发明的第2方面,提供了一种操作系统的需求层形式化验证系统,包括:第一形式化模块,被配置为:基于所述操作系统的需求文档提取操作系统的功能点,通过构建状态机模型对所述功能点的需求进行形式化描述,得到所述操作系统需求的形式化模型;第二形式化模块,被配置为:获取用户自定义的功能安全需求的自然语言描述,通过构造不变式对所述功能安全需求进行形式化描述,得到功能安全模型;验证模块,被配置为:对所述操作系统形式化模型在执行过程中是否满足所述不变式进行验证,以验证所述操作系统是否符合所述功能安全模型。
48.此外,本发明还公开了一种电子设备,包括:存储器,用于存储计算机程序;处理器,与所述存储器数据耦合,用于在执行所述计算机程序时实现所述的形式化验证方法。
49.此外,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的形式化验证方法。
50.虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明发明构思的情况下,可以对本本发明实施例的技术方案进行修改或等同替换都不应脱离本发明实施例的技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1