一种基于模型检测的安全协议形式化验证方法与流程

文档序号:16514587发布日期:2019-01-05 09:33阅读:407来源:国知局
一种基于模型检测的安全协议形式化验证方法与流程

本发明涉及信息安全中安全协议形式化验证技术领域,特别是涉及一种基于模型检测的安全协议形式化验证方法。



背景技术:

当前,以internet为代表的国际互联网的热潮正在向社会的每一个角落渗透,因此网络安全成为目前人们关注的一个热点。安全协议是保障网络通信安全的基础,承担着保护通信数据的秘密性、完整性、一致性等性质。但是由于网络环境的复杂性,安全协议的安全性质往往难以得到有效保障。安全协议是网络安全的一个重要组成部分,因此,人们需要一种有效的途径来对安全协议进行严格的分析和验证。

面对安全挑战,相比较于其它分析方法,形式化方法的意义在于能够更加高效地发现网络通信中的安全威胁。对网络安全协议进行形式化分析主要有模型检测、定理证明与模态逻辑这三种方法。定理证明需要分析者拥有非常高的证明技巧来人工参与证明过程,因此限制其普及程度。模态逻辑中一些逻辑缺乏严谨的语法语义结构,并且其公理系统并不是很完善。而模型检测技术由于其自动化高、可在性质违反时给出反例的优势得到了广泛的应用。

在利用模型检测技术对网络安全协议形式化分析过程中,大致分为三步:协议建模、属性描述、安全验证。当利用模型检测工具对安全协议的状态空间进行检测时,由于协议的并发性使得状态空间往往呈指数级增长,引发状态爆炸问题。此外,在对安全协议的建模过程中,对入侵者的能力进行准确地形式化描述关系到协议建模的准确性。特别是针对某些复杂的安全协议建模时,如果分析者没有丰富的经验,要得到安全协议的精确模型是十分困难的。

因此,在使用模型检测技术在对安全协议进行形式化分析中,存在的明显缺陷是状态爆炸问题和协议模型无法准确建立。



技术实现要素:

针对当前模型检测技术中存在的问题,本发明提出一种降低建模复杂性且能够有效缓解模型检测中状态爆炸问题的安全协议形式化验证方法。

本发明的理论基础分析:

clarke、emerson和sifakis分别提出了模型检测,主要通过显式状态搜索或隐式不动点计算来验证有穷状态并发系统的模态/命题性质。该技术的基本思想是将并发系统转化为一个状态迁移系统,通过穷举搜索状态空间来判断预先定义的状态是否能够达到,以此检测出此系统是否满足预期的安全性质。模型检测器spin首先从描述系统模型规格开始,以promela为输入语言,可对网络协议设计中规格的逻辑一致性进行检验,并报告系统中出现的死锁、无效的循环、未定义的接收和标记不完全等情况,经分析没有语法错误后,对系统的交互进行模拟,直到确认系统拥有预期的行为。然后,spin从系统的高级规约中生成一个优化的on-the-fly验证程序,无需构建一个全局的状态图或者kripke结构,便可以根据需要就能生成系统自动机的部分状态,经检验器编译后被执行,执行中如果发现了违背正确性说明的任何反例,则返回到交互模拟执行状态再继续分析,确定产生反例的原因。

在对安全协议验证中,肖美华教授团队独立提出静态分析、语法重定序、偏序规约这些优化策略缓解用于其中存在的状态爆炸问题,经实验分析表明,这些优化策略对于减少协议状态空间具有显著意义。

本发明中的方案将相关优化策略与模型检测结合在一起,通过这些优化策略来减少并发系统中的冗余状态,从而达到缓解状态爆炸问题。同时提出协议形式化描述语言prodl,该语言可自动等价转换成模型检测器中可接受的promela语言,达到减少协议建模复杂性的目的。

本发明提供一种高效的基于模型检测的安全协议形式化验证方法,在本发明中提供了协议文本编辑器和协议辅助生成向导两种方式生成协议描述文本,以满足不同用户的需求。具体地说,首先用户既能够通过直观的图形用户界面对安全协议进行输入,也可使用协议描述语言prodl(protocoldescriptionlanguage)对协议进行描述;然后调用建模分析模块完成对协议建模和规约,并生成相应的promela代码;接着用线性时态逻辑ltl中□、x、u、○这四个时间描述符号及自定义的变量对期望的安全性质进行形式化描述;最后系统通过内部接口调用spin进行验证并给出运行结果。如果发现漏洞,系统将以图形化方式显示此攻击序列。本方法具有扩展性,能够有效分析多种类型的安全协议,对于给定协议,用户直接输入promela代码进行形式化描述,然后对此promela代码进行验证,并在发现漏洞时以图形化方式显示攻击序列图。

网络安全协议自动分析系统包括以下几个部分:

(1)建模分析模块

由于网络环境的复杂性以及多样性,造成安全协议中主体数目以及交互步骤数目的复杂多样性,使得安全协议的建模越来越困难。本系统根据用户需求,提供了协议文本编辑器和协议辅助生成向导两种方式生成协议描述文本。用户可以采取prodl语言对协议进行建模,如果协议类型属于所处理的范围内,则用户可以分别采用静态分析、语法重定序以及偏序归约这些优化策略,用于解决安全协议模型检测过程中的状态爆炸问题,同时自动生成完整的promela代码,显示到用户界面上。否则,用户可以通过友好的界面窗口,完成promela代码的输入。

(2)自动验证模块

自动验证模块基于模型检测工具spin,能够对协议的建模结果进行自动验证,如果验证结果发现违反路径,即表明安全协议存在攻击漏洞且同时给出图形化的攻击序列图。自动验证模块通过相关接口调用spin工具,根据模型检测算法对安全协议的状态空间进行搜索,检测是否有违反路径存在,如果有违反路径则表明攻击漏洞存在,同时以图形化序列图的方式输出。

为了实现本发明的目的,采用的技术方案包括以下步骤:

步骤1,在设定的网络环境下,给定一个所需要分析的安全协议;

步骤2,将所选取的协议用协议描述语言prodl进行形式化描述,将编写的prodl代码输入到协议建模模块;

步骤3,在对协议的promela建模中,基于算法知识逻辑对入侵者能力进行描述,其中采用程序枚举法用于构建攻击者知识库;

步骤4,用线性时态逻辑ltl对用户所期望的安全性质进行描述;

步骤5,根据分析的需要选取所需要的优化策略,所述优化策略包括语法重定序,偏序规约,静态分析;

步骤6,在自动验证模块对安全协议进行形式化验证,系统自动调取spin对安全协议进行自动验证,验证结果所产生的攻击序列图将以图形化界面展示。

根据本发明提供的安全协议形式化验证方法,与现有技术相比,具有以下

有益效果:

1.本发明提出一种更加高效的协议描述语言prodl,该语言可以高效自动转换成模型检测器spin中的可接受输入语言promela,有效减少了协议建模的复杂度;

2.本发明在对安全协议入侵者能力采用了算法知识逻辑进行精确描述,其中入侵者知识库由程序枚举法进行构建。

3.本发明在对安全协议的形式化验证过程中,加入了偏序规约、语法重定序、静态分析多种优化策略,在不影响验证结果的前提下,极大地削减了检测过程中状态空间的规模,能够有效地缓解模型检测中存在的状态爆炸问题;

另外,根据本发明上述的安全协议形式化验证方法,还可以具有如下附加的技术特征:

进一步地,所述步骤2中,在协议建模模块中,将编写的prodl代码自动转换成promela语言,且在建模过程中,采用算法知识逻辑对入侵者的能力进行描述,并且协议的prodl语言描述与promela语言描述是等价的。

进一步地,所述步骤3中,利用算法知识逻辑对安全协议中入侵者能力进行形式化描述,该描述基于dolev-yao模型,同时在对攻击者的知识库构建中,通过程序枚举法对攻击者接收到的消息与学习到的消息进行分析,从而得到攻击者最终的知识库。

进一步地,所述步骤4中,将安全协议期望的性质用线性时态逻辑中描述时间的符号(具体是□、x、u、○这四个描述时间的符号)及自定义的变量进行形式化描述,

进一步地,所述步骤5中,在静态分析中利用atomic、d_step语句使得局部计算原子化;在语法重定序中,当系统的下一个行为可能是send也可能是recv时,给send行为更高的优先级;在偏序规约中,优先考虑某些操作的组合顺序以此来减少协议的状态空间。

进一步地,所述步骤6中,使用基于模型检测技术对安全协议进行自动化验证,判断协议是否满足期望性质。

进一步地,首先使用prodl语言对安全协议进行建模,其中攻击者能力由算法知识逻辑进行形式化描述,攻击者知识库由程序枚举法进行自动获取;接着使用线性时态逻辑对安全性质进行刻画;最后基于模型检测技术给出验证结果,并且在验证过程中加入了静态分析、语法重定序、偏序规约的优化策略。

本发明的附加方面和优点将在下面的描述中部分给出,或通过本发明的实施例了解到。

附图说明

本发明实施例的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明方法的流程图;

图2是本发明实施例提供的方法在具体实施过程中各层次之间的逻辑关系图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下将结合附图和具体实施方式对本发明的方法进行详细说明。

如图1及图2所示,对于一个具体给定的安全协议,本发明的验证方法流程包括:协议建模、安全性质描述、优化策略选择以及协议验证四个步骤。

1)协议建模是为了将安全协议从非形式化描述转换成形式化描述过程,协议的非形式化描述主要使用自然语言对协议内容进行说明,但该方式存在语义二义性,不能完全准确描述协议内容。因此,采用自定义的协议描述语言prodl对安全协议的交互过程进行形式化描述,该语言采用数学符号对安全协议中的基本密码原语进行严谨表达,不会产生歧义性。入侵者能力的强弱关乎到安全协议安全可靠的程度,采用算法知识逻辑对入侵者能力进行刻画,该逻辑基于dolev-yao模型,既不会强化入侵者能力,也不会削减入侵者能力。

2)利用线序时态逻辑ltl描述协议应具备的安全性质。不同的安全协议实现的性质各有不同,有的安全协议能够实现不同主体之间的身份认证,有的安全协议能够实现客户端和服务器之间密钥的分配,因此需要利用线性时态逻辑对所期望的性质进行形式化描述。

3)状态空间会随着协议数目的增多而呈指数级增长,优化策略的作用就是为了降低在验证过程中协议的状态空间大小。在本发明中加入了静态分析、语法重定序、偏序规约这些优化策略后,经过实验分析表明可以大幅减少协议的状态空间、状态迁移数目及内存消耗。

4)协议验证即系统直接调用模型检测工具spin对协议进行自动化验证,若发现协议验证过程中出现违反路径,那么本发明将以图形化界面直观地给出协议攻击序列图。

本发明的方法有效解决了使用模型检测技术分析安全协议的两个难题,一是有效降低协议建模复杂度,二是有效缓解模型检测中状态爆炸问题。以ns协议为例,若使用传统的promela代码进行协议建模,需要400多行代码对协议进行形式化描述,而采用我们自定义的语言prodl,只需要20多行就能对协议进行精确形式化描述,大大降低了协议建模难度。此外在建模过程中我们采用算法知识逻辑来精确描述入侵者能力,既不会夸大入侵者能力也不会削减入侵者能力。在对攻击者的知识库构建中,程序枚举法通过对攻击者接收到的消息与学习到的消息进行分析,从而得到攻击者最终的知识库。同时在验证过程中加入了静态分析、语法重定序和偏序规约这些优化策略。仍然以ns协议为例,如果不添加这些优化策略,协议的状态数、迁移数、内存峰值分别是133,236,2.195mbytes,当加入这些优化策略后,这三个数值分别减少为28,41,1.219mbytes。与原有的不加优化策略的技术方案相比,该方法能够大幅减少协议状态空间,缓解模型检测中的状态爆炸问题。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

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