掌桥专利:专业的专利平台
掌桥专利
首页

一种安全协议的代码生成方法、计算机及存储介质

文献发布时间:2023-06-19 10:16:30


一种安全协议的代码生成方法、计算机及存储介质

技术领域

本发明涉及计算机技术领域,特别涉及一种安全协议的代码生成方法、计算机及存储介质。

背景技术

针对人工编码的应用软件存在安全缺陷多、纠错难度大等问题,可以对软件进行形式化验证,来确保软件的可靠性。还可以对已经构造的系统原型模型来自动生成代码框架,甚至是可执行的代码。现有的工具往往只能实现形式化验证和模型代码生成中的一种,无法将将两者集成使用,或集成的中间表示较难理解。如果能够将两项技术结合,即使用一套统一的模型进行形式化验证和代码生成,就能保证所生成的代码一定符合形式化验证通过的性质要求。这就要求形式化模型不仅能保持验证所需要的语义,还要能够具备代码生成的能力,并在此基础上抽象和简化,使模型的语义贴合用户的理解习惯。现有技术中,还没有能够实现使形式化验证和代码生成相统一的方法。

发明内容

基于此,有必要提供一种能够解决形式化验证和代码生成无法统一的问题的代码生成方法、计算机及存储介质。

本发明提供一种安全协议的代码生成方法,包括如下步骤:

获取用户数据;

构造统一表示;

扩展形式语义模型框架的数据;

基于扩展形式化语义模型框架,向形式化模型验证器集成并转换;

基于扩展形式化语义模型框架,向代码自动生成模型集成和转换。

优选地,基于扩展形式化语义模型框架,所述数据向形式化模型验证器集成并转换包括:

确定形式化语义模型框架上的数据类型表示,使用类图描述的统一数据类型模型,与形式化验证器内部模型的数据类型有统一的语义;

确定形式化语义模型框架上的公理限制,使用嵌套函数调用和等式关系描述的统一公理公式,与形式化验证器内部模型的公理表示有同等范围的表达能力;

确定形式化语义模型框架上的动作转换,使用数值运算与赋值操作描述的数据转化动作,与形式化验证器内部模型的状态迁移有统一的语义;

确定形式化语义模型框架上的条件控制,使用数值运算与偏序关系描述的数据比较操作,与形式化验证器内部模型的迁移条件有统一的语义。

优选地,使用类图来描述形式化语义模型框架的数据类型,所述数据类型声明变量的定义如下:Type Identifier;

使用数值运算与赋值操作描述形式化语义模型框架状态机上的迁移动作。

优选地,将所述数据规约到形式化模型上时,指定类型种类,或者,指定类型嵌套的最小单位是形式化验证模型所能处理的数据类型,使其能在统一模型框架中能够自洽,并且能够将状态机模型和形式化模型关联;使用嵌套函数调用和等式关系描述统一公理公式,统一公理公式的定义如下:F(G(params1),params2)=VAL。

优选地,使用数值运算与赋值操作描述形式化语义模型框架状态机上的迁移动作。

优选地,基于形式化语义模型框架,向代码自动生成模型集成和转换包括:

确定形式化语义模型框架上的变量和函数表示,使用类图和具体程序语言代码片段描述的统一模型,代码自动生成模型内部的变量和函数有统一的语义;

确定形式化语义模型框架上的状态机状态、迁移和多层嵌套结构向程序语言代码结构的转换方法。

优选地,使用类图来描述形式化语义模型框架上的数据类型,数据类型声明变量的定义如下:Type Identifier

优选地,使用嵌套状态机及迁移条件-动作来描述形式化语义模型上的协议进程行为,嵌套状态机是一个树状结构,每个结点时一个单层状态机结构。

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

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

由于本发明提供代码生成方法、计算机及存储介质能够解决形式化验证和代码生成无法统一的问题。

附图说明

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

图1为本发明安全协议的代码生成方法原理的架构图;

图2为本发明优选实施例的统一形式化语义模型框架中的数据类型;

图3为本发明优选实施例的统一形式化语义模型中的密码学相关公理;

图4为本发明优选实施例的统一形式化语义模型框架中的状态机模型。

具体实施方式

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

请参考图1至图4,本发明提供一种安全协议的代码生成方法,包括如下步骤:S1:用户数据;

S2:构造统一表示;

S3:获取扩展形式语义模型框架的数据;

S4:基于扩展形式化语义模型框架,向形式化模型验证器集成并转换;

使用类图来描述形式化语义模型框架上的数据类型,数据类型声明变量的定义如下:Type Identifier;

其中Type是数据类型,Identifier是变量的名称。对于状态机模型而言,该定义是可以引入的,需要在比较和赋值操作时做类型检查;对于形式化验证所需的模型而言,该定义的语义边界是大于形式化验证模型中有限的数据类型的,但只需要在实现时指定类型所能取的种类,或指定类型嵌套的最小单位是形式化验证模型中所能处理的数据类型,就可以将其规约到形式化模型上,因此该定义在统一模型框架中是自洽的,并且能够将状态机模型和形式化模型关联起来。

使用嵌套函数调用和等式关系描述统一公理公式,统一公理公式的定义如下:F(G(params1),params2)=VAL。

其中F和G是两个函数的名称,params1和params2是由前述的数据类型声明的变量组成的实参(代表)的列表,VAL是一个立即数,或是一个根据前述的约定定义的变量。通过这种方式能够成组地描述函数之间的作用语义。对于状态机而言,该定义是可以引入的,需要扩展状态机的转移动作的能力边界,使之支持函数调用;对于形式化验证所需的模型而言,函数描述的公理中必定涉及函数声明,因此可以忽略F和G的具体细节,则函数可以规约到形式化验证模型中所能处理的函数上。又由前述约定的数据类型定义的变量可以规约到形式模型的类型和变量上,因此该公理定义的语义与形式化验证模型中的函数描述的公理的语义是同一的,并且可以将该公里公式规约到形式化验证模型中的函数公理上。但应当注意,在具体实现时,需要针对公理公式提供支持解析其中的函数、参数列表和嵌套关系的能力。

使用数值运算与赋值操作描述形式化语义模型框架状态机上的迁移动作,其中赋值操作符在扩展形式化语义模型框架中的状态机模型上和在形式化验证模型上的同一性是显然成立的,下面讨论一元与二元数值运算,两者的定义如下:

unaryOPVAL

VAL binaryOPVAL

其中unaryOP是一个一元操作符,binaryOP是一个二元操作符,VAL是一个立即数,或是一个根据前述的约定定义的变量。对于扩展形式化语义模型框架中的状态机,首先当上式中VAL的是一个根据前述约定定义的变量时,已阐述它可以规约到形式化验证所需的模型语言上;当上式中的VAL是一个立即数时,可以将其当作一个无法被赋值的根据前述约定定义的变量来处理,因此也可以规约到形式化验证所需的模型语言上。对于一元操作和二元操作符,根据不同的验证器可以做不同的处理,最佳的方案是仅支持验证器支持的操作符,由于本发明引入了统一公理公式,因此可以对操作符及其逆操作添加公理公式。例如,inc和dec分别是扩展形式化语义模型框架中的加1操作和减1操作,假定要转换到的形式化验证模型不支持这两个一元操作,但支持函数定义公理,由前述的公理转化,可以在形式化语义模型框架中添加如下公理公式:dec(inc(a))=a。

其中a是期望这两个互逆操作符所支持的数据类型,这样就能够将操作符引入,只要同时引入其逆操作和相应的公理公式,就能够转换到形式化验证模型中,并支持其验证操作。

使用数值运算与偏序关系描述的比较操作描述形式化语义模型框架状态机上的迁移条件,其中数值运算的转换方式已经阐述过,对于偏序关系的比较,最佳方案是仅支持验证器支持的操作,由于本发明引入了统一公理公式,因此可以借助操作符和公理公式描述偏序关系。例如,有一偏序关系leq,含义为整数上的“小于等于”关系,引入已定义的整数上的自增操作inc和自减操作dec,则以下公理可以描述此偏序关系:

leq(a,inc(a))=true

leq(dec(a),a)=true

leq(a,a)=true

leq(inc(a),a)=false

leq(a,dec(a))=false

其中a是整数类型,这样就能够将偏序关系引入,只要同时引入其辅助运算和相应的公理公式,就能够转换到形式化验证模型中,并支持其验证操作。

S5:基于扩展形式化语义模型框架,向代码自动生成模型集成和转换。

其中Type是数据类型,Identifier是变量的名称,这和“(1)”中的描述是同一的。对于(非函数式)编程语言而言,变量声明的方式与该定义也是同一的,因此一定能够转换到代码自动生成模型中。“(1)”中描述的函数和赋值、运算都能在(非函数式)编程语言中找到对应的概念,因此相应的转换可以自然完成。考虑转换后在代码生成片段中的位置,对于形式化语义模型框架中的顶层声明,如果生成的编程语言中有全局变量的概念,则可以转换到全局变量;如果是纯面向对象的编程语言,则可以转换到公有类的静态字段上,供全局访问。

使用嵌套状态机及其上的迁移条件-动作来描述形式化语义模型上的协议进程行为,嵌套状态机是一个树状结构,每个结点时一个单层状态机结构。下面给出一个遍历状态机的递归算法,可以在访问过程中将其转换为自顶向下的程序语言结构。

在优选实施例中,基于扩展形式化语义模型框架,所述数据向形式化模型验证器集成并转换包括:

S41:确定形式化语义模型框架上的数据类型表示,使用类图描述的统一数据类型模型,与形式化验证器内部模型的数据类型有统一的语义;

S42:确定形式化语义模型框架上的公理限制,使用嵌套函数调用和等式关系描述的统一公理公式,与形式化验证器内部模型的公理表示有同等范围的表达能力;

S43:确定形式化语义模型框架上的动作转换,使用数值运算与赋值操作描述的数据转化动作,与形式化验证器内部模型的状态迁移有统一的语义;

S44:确定形式化语义模型框架上的条件控制,使用数值运算与偏序关系描述的数据比较操作,与形式化验证器内部模型的迁移条件有统一的语义。

在进一步优选实施例中,使用类图来描述形式化语义模型框架的数据类型,所述数据类型声明变量的定义如下:Type Identifier;使用数值运算与赋值操作描述形式化语义模型框架状态机上的迁移动作。

在进一步优选实施例中,将所述数据规约到形式化模型上时,指定类型种类,或者,指定类型嵌套的最小单位是形式化验证模型所能处理的数据类型,使其能在统一模型框架中能够自洽,并且能够将状态机模型和形式化模型关联;使用嵌套函数调用和等式关系描述统一公理公式,统一公理公式的定义如下:F(G(params1),params2)=VAL

在进一步优选实施例中,使用数值运算与赋值操作描述形式化语义模型框架状态机上的迁移动作。

在优选实施例中,基于形式化语义模型框架,向代码自动生成模型集成和转换包括:

S51:确定形式化语义模型框架上的变量和函数表示,使用类图和具体程序语言代码片段描述的统一模型,代码自动生成模型内部的变量和函数有统一的语义;

S52:确定形式化语义模型框架上的状态机状态、迁移和多层嵌套结构向程序语言代码结构的转换方法。

在进一步优选实施例中,使用类图来描述形式化语义模型框架上的数据类型,数据类型声明变量的定义如下:

Type Identifier。

在进一步优选实施例中,使用嵌套状态机及迁移条件-动作来描述形式化语义模型上的协议进程行为,嵌套状态机是一个树状结构,每个结点时一个单层状态机结构。

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

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

实施例一:

图2展示了使用类图定义的若干种数据类型,其中的数据类型又分为基本数据类型和复合数据类型,基本数据类型不带方法,复合数据类型可以定义方法,也可以将其它数据类型组合为自己的属性。

实施例二:

图3展示了使用公理描述的协议对称加密和对称解密、非对称加密和非对称解密、签名和验证的公理公式,使用函数嵌套的方式可以定义此类操作,使验证器能够获取其中的公理表示。

实施例三:

图4展示了使用状态机描述的一个计时器进程的形式化语义模型框架上的状态机模型,模型中转移关系的上的首行是转移的条件,剩余行是转移的动作。当转换到验证模型上时,根据每个状态向后的转移关系和后继状态设计转换。当转换到代码生成模型上时,每个转移条件对应一个分支语句,并根据转移后的状态是哪个,将这个分支语句内的语句设置为将当前状态变换为对应的状态。

使用为操作符及其逆操作添加公理公式的方式可以在形式化语义模型框架中添加操作运算。例如,inc和dec分别是扩展形式化语义模型框架中的加1操作和减1操作,假定要转换到的形式化验证模型不支持这两个一元操作,但支持函数定义公理,由前述的公理转化,可以在形式化语义模型框架中添加如下公理公式:dec(inc(a))=a。

其中a是期望这两个互逆操作符所支持的数据类型,这样就能够将操作符引入,只要同时引入其逆操作和相应的公理公式,就能够转换到形式化验证模型中,并支持其验证操作。

借助操作符和公理运算可以在形式化语义模型框架中添加偏序关系。例如,有一偏序关系leq,含义为整数上的“小于等于”关系,引入已定义的整数上的自增操作inc和自减操作dec,则以下公理可以描述此偏序关系:

leq(a,inc(a))=true

leq(dec(a),a)=true

leq(a,a)=true

leq(inc(a),a)=false

leq(a,dec(a))=false

其中a是整数类型,这样就能够将偏序关系引入,只要同时引入其辅助运算和相应的公理公式,就能够转换到形式化验证模型中,并支持其验证操作。

由于本发明提供代码生成方法、计算机及存储介质能够解决形式化验证和代码生成无法统一的问题。

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

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

相关技术
  • 一种安全协议的代码生成方法、计算机及存储介质
  • 安全传输层协议检测方法、装置、计算机设备和存储介质
技术分类

06120112481731