网络协议安全建模方法

文档序号:7855988阅读:189来源:国知局
专利名称:网络协议安全建模方法
技术领域
本发明涉及网络安全技术领域;特别是涉及一种对网络协议的安全缺陷建模技术。
背景技术
随着Internet的不断发展,人们对互联网的依赖已经变得越来越重要。互联网作为信息技术革命的一个重要环节,已经深深的影响着每个人的工作,学习和生活。互联网更
多的涉及到了金钱利益,隐私,版权专利,是绝大多数机关企业单位正常运维的关键砝码。与此同时,安全问题也越来越得到重视。作为Internet的通信基础,许多协议在设计过程中仅仅考虑到了通信而忽略了安全问题。因此攻击者可以利用协议中存在的缺陷来攻击系统,从而对用户造成危害。因此,只有协议的安全得到保证,才能确保互联网的可靠,才能保证用户的利益。网络协议的开发过程包括分析、设计、实现、测试与维护等阶段,设计一个安全的协议非常困难,主要原因在于协议本身所具有的微妙性,还有协议所存在环境的复杂性,攻击者模型的复杂性以及协议的高并发性。现在对网络协议的形式化建模主要有有限状态自动机(FSM)建模,Petri网建模,时态逻辑建模和通信进程演算。有限状态自动机的建模方式是目前最流行的,基本思想是对协议中的组件状态及其状态转换进行分析,在此基础上进行安全的分析和验证。通过对FSM模型的扩展,加入特定属性来完成协议信息的补充以达到特性的建模目的。Petri网是一种描述分布式系统的数学建模语言,通常以位置和迁移形式来表述系统所具有的状态及状态之间的迁移条件。时态逻辑的网络协议建模是模态逻辑的扩展,它涉及含有时间信息的时间、状态及其关系的命题、谓词和演算。通信进程演算是计算机通信系统的基本理论模型,它是许多形式化语言的基础。现有的方法主要集中于特定安全协议与一些特定系统,因此这些方法具有一定的局限性。本发明针对网络协议,提出了一种基于协议定义分析与建模的方法。运用通信顺序进程CSP描述协议本身与所处环境(用入侵者所表示),并运用自动化的验证工具对所建立的模型进行安全验证。

发明内容
基于上述现有技术存在的问题,本发明提出了一种网络协议安全建模方法,针对网络协议的安全缺陷,基于协议规格描述与进程代数CSP,提出了一种对网络协议分析及其建模的方法。运用模型检测工具对其验证,以便发现协议所存在的缺陷。本发明提出了一种网络协议安全建模方法,包括以下步骤步骤一、针对网络协议的定义包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到网络协议基本模型;步骤二、针对入侵者的内容包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到入侵者模型;
步骤三、由所述网络协议基本模型与所述入侵者模型,经过SpecModel=Pl | P2. · · · | Pn并行运算得到相互关联的协议模型,其中| |为CSP并行运算算子;P1、P2 Pn分别表示协议运行中各个主体进程与入侵者进程;步骤四、运用验证工具FDR2对上述步骤三所获得的协议模型进行协议性质的验
证,协议性质是协议需要满足的约束,表示为CSP进程property=Psl Ps2----| Psn ;(其
中Psl、Ps2>sn分别描述约束的进程);FDR通过验证specModel的状态迁移系统是否是property的一个模型来判断约束性质是否满足;如果不满足性质,得出一个反例路径,该路径即是协议的缺陷。与现有技术相比,本发明通过在设计阶段对网络协议进行形式化的建模,可以准确的描述协议,进而对协议模型进行验证,可以提早发现协议的缺陷。


图I为现有技术的协议入侵模型示意图;图2为本发明的网络协议安全建模方法的验证和分析步骤流程示意图;图3为本发明具体实施例的BGP协议分析步骤流程示意图;图4为本发明的网络协议安全建模方法的基于规则库的的攻击路径发现步骤流程不意图;图5为本发明的网络协议安全建模方法的BGP验证结果示意图。
具体实施例方式以下结合附图及较佳实施例,对依据本发明提供的具体实施方式
、结构、特征及其功效,详细说明如下。下面结合附图对本发明中的编码实现和验证小果进行详述。如图I所示,包括协议的基本模型与入侵者模型。如图2所示,在获得协议模型后,结合要验证协议的安全属性,利用模型检查技术来对协议进行验证,可得到相应的检验结果,从而发现相应的缺陷问题。具体的检验过程是结合协议模型及其安全属性进行模型检查,输出检查结果,分析得出协议安全问题。因此,技术方案主要涉及三个步骤1)协议基本模型抽象2)协议入侵者模型抽象3)对协议模型进行自动化验证。有关内容详细说明如下首先是关于网络协议基本结构的说明结构1,网络协议描述为一个三元组,Protocol= (G, S,R);其中G是语法的基本内容,S是基于G描述的语义内容,R描述了协议的通信规则。结构2,协议的语法元素是由一个二元组组成,Grammar= (D, C);其中D是协议基本数据集合,包括协议消息,协议状态以及协议内部事件。C是协议运行交互的通道集合。因此语法是由基本数据与通道描述。结构3,语义是基于语法,代表协议的内部事件。SemSet= (SP1, SP2, SP3. . . . SPn);其中SP=C. DE. Di. . . Di是一个内部事件,Di是输入输出报文或者协议的状态。结构4,规则描述了协议通信事件的顺序。Rule= (Rl, R2. . . . Rn);其中R=SPl — SP2 — SP3···— SPn,SP是由结构3获得的语法事件。R代表了事件顺序。
结构5,进程是由以上基本结构通过相应的算子来得到。多个进程按照一定的联系也可以构成一个进程。步骤一、协议基本模型抽象协议基本模型从协议基本定义(语法、语义与规则)获得,从定义中抽象协议的基本结构。协议基本模型是由多个CSP子进程组成的进程,每个部分被描述为一出多个CSP进程,通过进程代数算子来得到整个协议的基本模型。即,抽象出网络协议基本模型,网络协议的基本要素包括语法、语义和同步;基本模型从网络协议的最初设计得来,语法即是数据与控制信息的结构或格式,包括协议的不同报文、协议的基本状态以及其他事件。语义是需要发出何种控制信息,完成何种动作以及做出何种响应,同步是事件实现顺序的详细说明。将协议规格描述的各个部分都准确、完整的抽象出来。步骤二、协议入侵者模型抽象入侵者也被描述为一个CSP进程,该进程由多个子进程构成。结合Dolev-Yao攻击者模型的内容分析协议,可以得到攻击者可能具有的能力,用同样的方法得到攻击者的三元组(G,S,R),运用这些元素即可得到入侵者的CSP进程。即,抽象出攻击者模型。本发明运用攻击者来代表协议所处的现实环境,要求能够准确的描述协议的能力,结合著名的Dolev-Yao攻击模型来描述攻击者攻击者有发送任意报文、阻止报文的传递以及修改报文的能力。步骤三、获得协议模型协议模型是由基本模型与入侵者模型并行获得。因此可以得到SpecModel=Pl | P2. ... Pn0其中| |为CSP并行运算算子。即,运用CSP将协议模型的各个部分描述为CSP进程。一个进程是一序列的动作,由相互影响的不同成分组成,CSP的进程通过通道与其它进程或者环境进行交互。通过将协议的基本模型与攻击者模型用CSP进程来表示,从而获得相互联系的协议系统。步骤四、协议验证运用验证工具FDR2对协议进行验证,需要协议模型以及要验证的性质描述。协议性质是协议需要满足的约束。协议性质也要通过协议三元组(G,S,R)描述为CSP进程property=Psl | Ps2. . . . |Psn。然后利用 FDR2 来验证 specModel 与 property 是否满足。用验证工具FDR2对协议模型进行自动化验证,从而发现协议的缺陷。针对BGP协议的建模和验证分析案例详细说明如下I)整体分析如图3所示,是对BGP协议的整体分析包括两个主机,Route A和Route B,每个主机运行独立的BGP协议,协议之间通过TCP协议连接实现协议通讯。主机应用层与BGP协议之间通过cmd与get通道来通信,而BGP协议通过通道OpenCon来建立TCP连接,继而通过TCP协议通道来进行报文的传递。报文传递内容如下datatype Hosts=A | B ;A 与 B 分别为 Route A 和 Route Bdatatype Packet=OPEN | KEEPALIVE | UPDATE | NOTIFICATION | NONE ;分别代表了 BGP的四种报文,其中NONE不表示任何报文,在这里是虚构的一个,为了 CSP的语法正确,后面会进行介绍。datatype BgpState=Idle|Connect|Active|OpenSent|OpenConfirm|Established ;分别代表BGP协议的六种状态。datatype Command=Start|Stop|TcpConnected|TcpConFailed|TcpConErr|StartTcpConnection | Ready | ProcessUp | Error ;表示主机应用层向协议发送与接收的一些命令,包括启动、停止事件。由于BGP协议中不侧重于TCP协议的建立,忽略了 TCP的三次握手建模,因此在BGP协议报文增加用TcpConnected来表示连接成功,TcpConFailed表示连接失败,TcpConErr表示连接出错,StartTcpConnection表示发起一个连接,Ready是一种虚拟事件,表示直接进入Active状态。channel cmd:Command. Hosts. Hostschannel get: Command. Hosts. Hosts ;通道 cmd 与 get 表不主机的一条命令,或发起的一个事件。以上数据类型区别不同。Hosts通信之间的事件,例如Start. A.B表示A与B通信过程中的Start事件,而不是A与其他主机。当然在本文中只有A与B两个。 channel tcp:Hosts. Hosts. Packet. PacketState ;TCP 是建立 TCP 连接的两个主机之间发送报文的通道,PacketState表示该报文是否正确,例如A. B. UPDATE, correct,则表示A向B发送了一条没有错误的UPDATE报文。channel OpenCon:Command. Hosts. Hosts ;0penCon 是用来建立连接的通道。表不一个主机向另一个主机发送了条命令,建立TCP连接。2) BGP进程建模如图4所示的基于规则库的攻击路径发现方法,BGP协议的有限状态机包括六个状态Idle状态、Connect状态,Active状态,OpenSent状态,OpenConfirm状态,Established状态。它们之间的转换代表了协议进程的联系。因此可以将BGP进程建模为BGP—P(id,initstate)=let otherhost=diff(Hosts, {id})BGP (id, state, param)=state==Idle&((cmd x y z->(if (X==Start) then OpenCon! StartTcpConnection. id. z->BGP (id, Connect, z)else if (X==Ready) then BGP (id, Active, param) else BGP (id, Idle, param))))[]state==Connect& (. · ·)[]state==Active&(. ...)[]state==0penSent& (. · · ·)[]State==OpenConf irm& (. · · ·)[]state==Established&(. · · ·)within BGP (id,init—state,id)
其中,id代表着不同的主机,initState表示初始状态,param表示另一个主机,State表示当前状态。3)主机进程主机进程可以描述为hPl(i)=starting->cmd!Start. A. B_>get TcpConnected. B. A_>hoslhosl=get ProcessUp. B. A->routeprocessing->hoslhP2 (i)=get TcpConnected x z_>hos2hos2=get ProcessUp. A. B->routeprocessing->hos2sender (A) = (hostI (A) [ {| cmd, get |} ]BGP_P (A, Idle))receiver (B) = (host2 (B) [ | { cmd, get } | ] BGP_P (B, Active))4)入侵者模型入侵者可以描述为ATTACKER (me s) = I | x:Hosts, y :Hosts, x! =y, m:Packet, d〈_mes,z :PacketState@(tcp x y m z->ATTACKER(union(mes, {m})))[](tcp!x. y. d. incorrect->ATTACKER(mes))其中mes入侵者所掌握的消息集合。5)整体模型最终的模型为两个主体与攻击者之间的并行System=((sender(A)[| { tcp, OpenCon|} |]receiver (B)) [ | { tcp|} |]ATTACKER({NONE}))\{Icmd, get, tcp, OpenCon, attacked |}6)验证我们验证BGP的两个性质Spe=Starting->connected->SpSp=routeprocessing->Sp与NoErr=CHAOS(diff(Events, {attackRoute}))7)检验结果图5显示了验证结果。从图中可以看出第一条性质得到满足,而第二条未满足。对约束NoErr我们得到其反例〈cmd. Start. A. B, OpenCon. StartTcpConnection. A. B, OpenCon. TcpConnected.B. A, get. TcpConnected. A. B, tcp. B. A. OPEN, correct, tcp. A. B. OPEN, correct, tcp.B. A. KEEPALIVE, correct, tcp. A. B. KEEPALIVE, correct, tcp. A. B. UPDATE,correct, routeprocessing, tcp. B. A. UPDATE, incorrect, errRoute>分析该反例,得到实际运行中的对应步骤I、RouteA启动开始事件,向Route B发起连接2、连接建立成功,Route B向RouteA发送OPEN报文3、Route A 向 Route B 发送 OPEN 报文4、Route B 向 Route A 发送 KEEPALIVE 报文5、Route A 向 Route B 发送 KEEPALIVE 报文6、此时双方完成准备工作。Route A向Route B发送UPDATE报文,Route B进行路由处理7、攻击者截获之前的所有报文,构建虚假UPDATE报文,冒充Route B发送给RouteA8、最终广生错误的路由处理。由此可以获知,利用该缺陷,攻击者可以运用IP欺骗来与两个主机建立TCP连接,然后可以发起中间人攻击,从而窃取与修改相应的消息。本发明通过对协议规格说明进行全面分析,从中抽象协议的基本结构,并在此基础上获得协议的基本模型与攻击者模型。使用该方法可以以统一的方法来对协议进行分析,可以形式化的描述协议,可以对协议进行验证并发现协议的缺陷。预期的效果有I、可以以统一的方法对协议进行分析。由于本方法是基于协议的定义来分析,每 个协议都会有语法语义与规则,通过对该协议每个元素的抽取,即可得到相应的基本结构。2、可以形式化的描述协议。本发明在对协议分析后,利用CSP来对协议与入侵者进行描述,对每个元素进行形式化。形式化具有严格的语法和语义定义,更准确简明的描述系统特征,具有自动化的验证工具支持。3、可以对协议进行验证并发现相应的缺陷。通过对协议建模,可以运用模型检测工具如FDR2,PAT来对其进行验证。从而获得协议的缺陷,并可得到相应的反例。
权利要求
1.一种网络协议安全建模方法,其特征在于,该方法包括以下步骤 步骤一、针对网络协议的定义包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到网络协议基本模型; 步骤二、针对入侵者的内容包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到入侵者模型; 步骤三、由所述网络协议基本模型与所述入侵者模型,经过SpecModel=PlI IP2.... | Pn并行运算得到相互关联的协议模型,其中| |为CSP并行运算算子;Ρ1、Ρ2 Ρη分别表示协议运行中各个主体进程与入侵者进程; 步骤四、运用验证工具FDR2对上述步骤三所获得的协议模型进行协议性质的验证,协议性质是协议需要满足的约束,表示为CSP进程property=Psl I Ps2---- Psn ;(其中Psl、Ps2 Psn分别描述约束的进程);FDR通过验证specModel的状态迁移系统是否是property的一个模型来判断约束性质是否满足;如果不满足性质,得出一个反例路径,该路径即是协议的缺陷。
全文摘要
本发明公开了一种网络协议安全建模方法,包括以下步骤步骤一、针对网络协议的定义包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到网络协议基本模型;步骤二、针对入侵者的内容包括语法、语义与规则进行抽象得到多个CSP进程,由所述进程通过进程代数算子得到入侵者模型;步骤三、由所述网络协议基本模型与所述入侵者模型得到相互关联的协议模型;步骤四,进行验证和分析,得到缺陷。与现有技术相比,本发明通过在设计阶段对网络协议进行形式化的建模,可以准确的描述协议,进而对协议模型进行验证,可以提早发现协议的缺陷。
文档编号H04M1/725GK102780817SQ20121024542
公开日2012年11月14日 申请日期2012年7月16日 优先权日2012年7月16日
发明者曹坤宇, 李晓红, 谢肖飞, 陈世展, 韩卓冰, 饶国政 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1