一种安全协议建模端与验证端的跨平台方法、计算机及存储介质与流程

文档序号:24305045发布日期:2021-03-17 00:57阅读:69来源:国知局
一种安全协议建模端与验证端的跨平台方法、计算机及存储介质与流程

本发明涉及计算机技术领域,特别涉及一种安全协议建模端与验证端的跨平台方法、计算机及存储介质。



背景技术:

针对形式化建模和验证套件研制难度大、建模模型和验证器模型之间集成困难、不同验证器模型之间异构程度大等问题,可以从建模和形式化验证模型中抽象出一套通用的表示方法。从具体实现的角度来看,形式化建模和验证套件需要为用户使用图形建模语言建立的前端模型和后端集成的形式化验证器、代码自动生成器等设计一套关联性强、语义明确、易于转换的导出方案。

目前的主流的形式化建模和验证套件虽然能够在自己的建模前端和验证器后端之间较好的做到这一点,但其表示格式往往是一种领域特定语言(domainspecificlanguage),一方面需要自己的解析方式,另一方面不具有通用性,当用户需要使用既有的建模端配合其它验证器作为后端时,就需要自己实现两类dsl的端到端翻译器(sourcetosourcetranslator),不仅难以保证两类dsl具备语义包含关系,在实现翻译器上也较为困难。

因此产生了对普适的从建模前端到验证器后端的跨平台表示格式的需求,需要能够用统一的方式对验证器后端进行集成,同时保证模型的数据流和对验证器的控制流的有效传递不受影响。



技术实现要素:

基于此,有必要提供一种普适的从建模模型到验证器的跨平台的方法。

本发明提供一种安全协议建模端与验证端的跨平台方法,包括如下步骤:

获取建模模型的数据;

使用xml文件来描述建模模型的数据;

使用抽象语法树作为多平台验证器和/或代码生产器的中间表示;

建模模型的数据模型传输至所述抽象语法树,并通过脚本文件建立从模型工具到多平台验证器和/或代码生成器的控制流。

优选地,所述使用xml文件来描述建模模型的数据包括:

确定基于可扩展标记语言从建模模型向验证器的模型表示范式,使用xml元数据和xml属性来标识模型中的数据类型、进程模板、运行状态、公理、初始知识、信道模板、状态结点和迁移的内容;

确定基于可扩展标记语言从建模模型向验证器的模型解析流程,对模型自底向上多次扫描以获取数据类型、进程模板、运行状态、初始知识、信道模板、状态结点和迁移的内容,并保持其间的引用关系。

优选地,所述扫描包括第一次扫描,第一次扫描时,获取协议中的数据类型、进行模板、运行状态及状态之间的转移边和连线关系。

优选地,所述数据类型包括自定义复合数据类型,所述扫描包括第二次扫描,第二次扫描时,确认协议中的自定义复合数据类型的属性和通信方法,确认协议中进程模板的的属性和通信方法。

优选地,对于用户自定义的复合数据类型,还可以在标签元素的内部添加属性标签,同时记录属性的类型、标识符和是否是数组属性;所述标签属性为:<attributetype=""identifier=""isarray=""/>。

优选地,所述扫描包括第三次扫描,第三次扫描时,确定协议中的初始知识、该初始知识引用的进程模板、单知识和公钥私钥对;还确认协议中的功能安全性质和信息安全性质。

优选地,所述使用抽象语法树作为多平台验证器和/或代码生产器的中间表示包括:

确定基于抽象语法树的迁移条件表达式和赋值表达式的描述方法,提供支持多平台后端验证器和/或代码生产器的通用中间表示;

确定对中间表示的递归扫描方法,对语法树采用先根和后根遍历结合的方式,提取出适合于多平台验证器和/或代理生成器的条件表达式和赋值表达式语义信息。

优选地,所述建模模型的数据模型传输至所述抽象语法树,并通过脚本文件建立从模型工具到多平台验证器和/或代码生成器的控制流包括:

确定适合多操作系统脚本命令的通用调用方法,对建模模型根据不同的操作系统采取统一格式的抽象控制流,通过分离控制脚本与建模模型解耦,完成对多种操作系统的验证器和/或代码生产器的命令控制。

本发明还提供一种计算机,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述任一项所述方法的步骤。

本发明还提供一种存储有计算机程序的存储介质,所述计算机程序被一个或者多个处理器执行时,使得一个或多个处理器执行如上述任一项所述方法的步骤。

由于本发明提供安全协议建模端与验证端的跨平台方法普适性强,且能够保证模型数据流和对验证器和/或编码器的控制流的有效传递不受影响。

附图说明

通过附图中所示的本发明优选实施例更具体说明,本发明上述及其它目的、特征和优势将变得更加清晰。在全部附图中相同的附图标记指示相同的部分,且并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本的主旨。

图1为本发明安全协议建模端与验证端跨平台解决方法的架构图;

图2为本发明优选实施例的转移动作msga=100的ast示意图;

图3为本发明优选实施例的ctl公司的ast及其转移的图形化实现示意图;

图4为本发明优选实施例的多平台命令脚本。

具体实施方式

下面结合附图和具体实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

请参考图1至图4,一种安全协议建模端与验证端的跨平台方法,包括如下步骤:

s1、获取建模模型的数据;

s2、使用xml文件来描述建模模型的数据;

具体地,这种形式化模型的xml范式包含以下部分:

使用<protocolname=">双标签包含一个完整的协议模型及其名称,同时作为该xml文件的树根,对于不同的协议模型,将被组织到不同的xml文件中。

使用<clsdddiaram>双标签包含所有的类图元素,对本发明中的图形化建模前端而言,所有功能建模的元素都被组织在类图中。

在类图元素内部,使用<usertypename=""basic=">双标签表达形式化模型中的一种数据类型,数据类型名称不能重复。标签的basic字段标识了该数据类型是否是一个基本数据类型。

对于用户自定义的复合数据类型,还可以在标签元素的内部添加形如<attributetype=""identifier=""isarray=""/>的属性标签,同时记录属性的类型、标识符和是否是数组属性。属性中的类型是已定义的数据类型中的一种,为了方便,在xml文件中不规定引用的type在引用处以前出现过,因此在解析时需要对其进行两次扫描,第一次扫描出所有定义的数据类型的名称,第二次再对具体的自定义复合数据类型的属性部分进行扫描,获取其所引用的数据类型信息。属性的定义在后续的进程模板中是类似的,不在赘述。

对于用户自定义的复合数据类型,还可以在标签元素的内部添加形如<methodreturntype=""name=""achive="">的方法标签,同时记录方法的返回值类型、名称和实现代码。实现代码部分可以用于代码生成时的辅助填充。方法的定义在后续的进程模板中是类似的,不再赘述。

在方法元素内部,还可以定义方法的形参表,每条形参定义为形如<parametertype=""identifier=""isarrsy=""/>的单标签,同时记录形参的数据类型、标识符名称、是否是数组等信息。形参的定义在后续的通信方法中是类似的,不再赘述。

在类图元素内部,使用<processname=">双标签表达形式化模型中一类实体抽象出的进程模板。在进程模板内部可以定义前述的属性、方法、还可以定义用于进程的例化实体之间通信的通信方法,每条通信方法定义为形如commmethodname=""inoutsuffix=""commway="">的双标签,同时记录通信方法的名称、发送/接收方法、通信方式等信息。

在类图元素内部,使用双标签<commchannelname="">表达形式化模型中一类通信信道实体抽象出的信道模板。在信道模板标签内部可以定义若干对通信方法序对,用于表达形式化模型中的通信双方的主体进程,以及用于通信的一对方法,每条通信方法序对定义为形如<commmethodpairid=""pa=""cma=""pb=""cmb=""privacy=""/>单标签,同时记录标识信息、通信双方的进程模板、通信双方的方法、通道私有性。

在类图元素内部,使用双标签<safetypropertyname="">表达形式化模型中定义的功能安全性质。

在功能安全性质标签内部可以定义若干条ctl公式,形如<ctlformula=""/>用于表达形式化模型中使用计算树逻辑描述的状态机上的安全性质。

也可以定义若干条不变性,形如<invariantcontent=""/>用于表达形式化模型中整个状态机运行过程中应当满足的属性。

在类图元素内部,使用双标签<securitypropertyname="">表达形式化模型中定义的信息安全性质。

在信息安全性质标签内部可以定义若干条保密性,形如<confidentialprocess=""attribute=""/>用于表达某进程的某个属性在运行过程中是私密的。

在信息安全性质标签内部可以定义若干条完整性,形如<integritypa=""aa=""attaa=""pb=""sb=attab=""/>用于表达两进程通信过程中,各自在某个状态(一般是一个发送一个接收)两个进程的两属性在传递中是完整的。

在信息安全性质标签内部可以定义若干条认证性,形如<authenticitypa=""sa=""attra=""autha=""pb=""sb=""attrb=authb=""/>

用于表达两进程通信过程中,各自在某个状态具备认证关系,即两进程的两属性的认证字段互为认证关系。

在信息安全性质标签内部可以定义若干条可用性,形如<availabilityprocess=""state=""/>用于表达某进程总是能从错误中恢复到某个状态,即进程的部分功能性是可用的,具体地,该状态表达的功能是可用的。

在类图元素内部,使用双标签<initialknowledgeprocess="">表达形式化模型中预定义的各进程或全局的初始知识。

在初始知识标签内部可以定义若干条单知识,形如<knowledgeprocess=""arrtibute=""/>用于表达某进程模板的某属性是可被该初始知识所定义的主体捕获的。

在初始知识标签内部可以定义若干条公钥私钥配对关系,形如<keypairpubprocess=""pubkey=""secprocess=""seckey=""/>用于表达两进程模板(可以是同一进程模板)的两属性互为公钥私钥这件事情,是被该初知识所定义的主体所知的。

使用<procsstosms>双标签包含所有的进程模板状态机,其子标签<processtosmprocess="">定义了指定进程模板下的所有状态机,每个状态机是用形如<statemachinerefine_state="">的双标签来表达的,同时指明了该状态机所精化的具体状态,如果留空,则表明是该进程模板的最顶层状态机(唯一)。在状态机标签内部,使用<statename="">表达一个状态及其名称。在状态机标签内部,可以定义若干状态之前的转移关系,每条转移关系定义为形如<transitionsource=""dest=""guard="">的双标签,source指明了该条转移的源端状态,dest指明了该条转移的目标状态,guard指明了要触发这条转移关系需要的条件。

在转移关系标签内部,可以添加若干形如<actioncontent=""/>的单标签,表达转移上的动作,按照从上到下的顺序逐条执行。

s3、使用抽象语法树作为多平台验证器和/或代码生产器的中间表示;

使用抽象语法树(abstractsyntaxtree)作为多平台验证器(或代码生成器)的中间表示。相比于编程语言的三地址码(3-addresscode)表示形式,ast更加高层和抽象,易于贴合文法结构,并适合快速进行类型检查。虽然ast在传统使用时存在控制流信息隐晦等问题,但对于本发明的形式化建模器的状态机表示而言,控制信息被显式的表达在了转移结点的属性条目中,因此不存在此类问题。

使用ast作为ir,不仅解决了状态机模型转移关系中的卫条件表达式和若干转移动作语句的统一存储问题,还解决了基于ctl公式验证的验证器中,ctl公式的统一表达问题。本发明提供的工具实现还支持图形化的表达ctl公式存储和自动计算公式的功能,可以清晰的看到抽象语法树的组织过程。

对于一个通用的多叉抽象语法树而言,使用深度优先遍历的方式,在调用进栈和调用退栈时各对结点触发一次调用函数——即模拟先根遍历和后根遍历的同步执行过程,可以完整的将ast解析到后端验证器的输入表示上。

s4、建模模型的数据模型传输至抽象语法树,并通过脚本文件建立从模型工具到多平台验证器和/或代码生成器的控制流。形式化验证器往往都支持命令行调用,对于不同的后端验证器命令格式差异大,并且往往不是一条命令就能够完成验证工作的。为了支持多验证器平台和跨操作系统的特性,根据不同的操作系统的命令特性不同,跨平台建模工具支持对于不同的操作系统分别提供不同的脚本文件。在windows系统中,支持bat脚本文件;在osx和linux操作系统中,支持sh脚本文件。

对于具体的不同功能(如语法检查、验证、代码生成、编译执行等),分别提供独立的脚本命令文件。当前端建立的模型通过数据流形成xml传输到后端形成ast后,就可以通过这些脚本文件中预定义的命令来建立从模型工具到后端验证器或代码生成器的控制流。

在优选实施例中,使用xml文件来描述建模模型的数据包括:

s21、确定基于可扩展标记语言从建模模型向验证器的模型表示范式,使用xml元数据和xml属性来标识模型中的数据类型、进程模板、运行状态、公理、初始知识、信道模板、状态结点和迁移的内容;

s22、确定基于可扩展标记语言从建模模型向验证器的模型解析流程,对模型自底向上多次扫描以获取数据类型、进程模板、运行状态、初始知识、信道模板、状态结点和迁移的内容,并保持其间的引用关系。

在优选实施例中,使用抽象语法树作为多平台验证器和/或代码生产器的中间表示包括:

s31、确定基于抽象语法树的迁移条件表达式和赋值表达式的描述方法,提供支持多平台后端验证器和/或代码生产器的通用中间表示。

使用抽象语法树(abstractsyntaxtree)作为多平台验证器(或代码生成器)的中间表示。相比于编程语言的三地址码(3-addresscode)表示形式,ast更加高层和抽象,易于贴合文法结构,并适合快速进行类型检查。虽然ast在传统使用时存在控制流信息隐晦等问题,但对于本发明的形式化建模器的状态机表示而言,控制信息被显式的表达在了转移结点的属性条目中,因此不存在此类问题。使用ast作为ir,不仅解决了状态机模型转移关系中的卫条件表达式和若干转移动作语句的统一存储问题,还解决了基于ctl公式验证的验证器中,ctl公式的统一表达问题。本发明提供的工具实现还支持图形化的表达ctl公式存储和自动计算公式的功能,可以清晰的看到抽象语法树的组织过程。对于一个通用的多叉抽象语法树而言,使用深度优先遍历的方式,在调用进栈和调用退栈时各对结点触发一次调用函数——即模拟先根遍历和后根遍历的同步执行过程,可以完整的将ast解析到后端验证器的输入表示上。

在进一步优选实施例中,扫描包括第一次扫描,第一次扫描时,获取协议中的数据类型、进行模板、运行状态及状态之间的转移边和连线关系。在进行解析时,为保证引用关系正确,需要多次扫描。第一遍扫描时主要确定协议中包含哪些数据类型,以及包含哪些进程模板,但对于它们的内部结构则不关心。除此之外,在第一遍扫描时还可以确定每个状态机里有哪些状态(包括初始状态、终止状态、普通状态),以及状态之间的转移边(转移结点)和连线关系。数据类型包括自定义复合数据类型,扫描包括第二次扫描,第二次扫描时,确认协议中的自定义复合数据类型的属性和通信方法,确认协议中进程模板的的属性和通信方法。对于用户自定义的复合数据类型,还可以在标签元素的内部添加属性标签,同时记录属性的类型、标识符和是否是数组属性;标签属性为<attributetype=""identifier=""isarray=""/>。第二遍扫描时,可以确定协议中的自定义复合数据类型的内部结构,包括属性和方法。确定协议中的进程模板的内部结构,包括属性、方法和通信方法。在这次扫描过后,数据类型和进程模板的全部结构已经构建完整了。扫描包括第三次扫描,第三次扫描时,确定协议中的初始知识、该初始知识引用的进程模板、单知识和公钥私钥对;还确认协议中的功能安全性质和信息安全性质。第三次扫描时,可以确定协议中的初始知识,包括该初始知识引用的进程模板、单知识(对进程模板的属性的引用)、公钥私钥对(对两个进程模板的一对属性的引用)。可以确定协议中的功能安全性质和信息安全性质,因为此时它所基于的所有可能的引用(包括数据类型、进程模板及其属性、状态结点等)都已经构建完毕。

s32、确定对中间表示的递归扫描方法,对语法树采用先根和后根遍历结合的方式,提取出适合于多平台验证器和/或代理生成器的条件表达式和赋值表达式语义信息。

在优选实施例中,建模模型的数据模型传输至抽象语法树,并通过脚本文件建立从模型工具到多平台验证器和/或代码生成器的控制流包括:

s41、确定适合多操作系统脚本命令的通用调用方法,对建模模型根据不同的操作系统采取统一格式的抽象控制流,通过分离控制脚本与建模模型解耦,完成对多种操作系统的验证器和/或代码生产器的命令控制。

实施例一:比特交换协议的xml中间模型(发送方进程模板)如下;

比特交换协议的xml中间模型展示了比特交换协议的xml中间模型的发送方进程模板(sender)部分。其中定义了一个msg类型(为用户自定义类型)的属性m,两个number类型的属性x和tout。定义了一条函数makemsgrand,表示随机生成msg类型的消息。定义了四条通信方法,用于和其它进程做通道同步。

实施例二:比特交换协议的xml中间模型(发送方状态机)如下;

比特交换协议的xml中间模型展示了比特交换协议的xml中间模型的发送方状态机部分。其中定义了若干状态和迁移关系,并在迁移关系上给出了源状态和目标状态。每条迁移边上有一条转移条件表达式,有若干条转移动作。转移动作是一条赋值语句,或是一条通信方法调用。

实施例三:图2展示了一条赋值语句动作msga=100的抽象语法树的概念形式,通过约定文法规则,使得系统中的条件、动作等总是能使用相同的一套ast表达。统一了模型中语句部分的中间表示,易于结合不同的验证器后端。

实施例四:图3展示了一条ctl公式的抽象语法树的构建过程,本发明所实现的工具支持通过构建ctl公式的抽象语法树的方式来生成ctl公式的文字表述。将形式化领域的ctl公式和类编程语言的条件、动作语句使用一套统一的ast来表达,能够精简形式化模型前端和后端验证器的交互形式。

实施例五:图4展示了不同操作系统平台上的命令脚本,其中exec_gen是用于代码生成的启动脚本,simu_compile是用于模拟执行的编译脚本,simu_gen是用于模拟执行的代码的生成脚本,simu_run是用于模拟执行的启动脚本,verify是用于验证的启动脚本。对于windows操作系统上的验证器和代码生成器,跨平台建模工具通过bat脚本建立控制流;对于linux操作系统和osx操作系统上的验证器和代码生成器,跨平台建模工具通过sh脚本建立控制流。

本发明还提供一种计算机,包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述任一项方法的步骤。

本发明还提供一种存储有计算机程序的存储介质,计算机程序被一个或者多个处理器执行时,使得一个或多个处理器执行如上述任一项方法的步骤。

由于本发明提供安全协议建模端与验证端的跨平台方法普适性强,且能够保证模型数据流和对验证器和/或编码器的控制流的有效传递不受影响。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1