一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种网络安全协议脆弱性分析方法与流程

2022-02-22 22:25:31 来源:中国专利 TAG:
一种网络安全协议脆弱性分析方法与流程

本发明涉及一种网络安全协议脆弱性分析方法,属于网络安全自动化分析技术领域。

背景技术

随着信息革命的不断推进,网络成为人们生活中不可或缺的一部分。敏感信息在网络上的安全传输问题关系着个人、企业乃至国家的发展。安全协议以密码算法为基础在互联网络中为用户提供信息保护服务,是信息安全领域的一项重要内容。网络安全协议是营造网络安全环境的基础,是构建安全网络的关键技术。设计并保证网络安全协议的安全性和正确性能够从基础上保证网络安全,避免因网络安全等级不够而导致网络数据信息丢失或文件损坏等信息泄露问题。在计算机网络应用中,人们对计算机通信的安全协议进行了大量的研究,以提高网络信息传输的安全性。

以应用最为广泛的TLS协议为例,TLS协议先后遭受了降级攻击、重协商攻击、POODLE攻击、DROWN攻击、ROBOT攻击等各类攻击。近年来,针对TLS协议的攻击以其实现安全性分析为主流方向,出现了CCS中间人攻击,HeartBleed攻击等针对TLS协议实现的攻击方法。

常用的协议实现的分析方法有模糊测试、符号执行、模型学习等,这些方法从代码或执行行为分析协议实现的安全性。上述方法首先从协议代码或执行行为中提取抽象模型,然后对模型进行检查,寻找违反规范的情形,从而找出隐藏的漏洞。模型学习凭借其思路直观、自动化程度高的优势已经成为当前主流的协议分析方法。协议的模型学习是一种黑盒测试方法,通过发送不同消息序列到目标系统,并观察相应的输出从而推导协议状态机,进而对得到的状态机进行分析,检测是否存在逻辑漏洞或者其它冗余的状态。

模型学习理论最早由Angluin在1987年提出,其主要思想是通过著名的MAT(Minimally Adequate Teacher)框架使用成员查询与等价查询学习系统的有限状态机。Peled等人发现MAT框架可以用于学习软件或是硬件的黑盒模型。近年来,模型学习被应用在网络协议安全性分析领域。2015年,Joeri de Ruiter等人通过协议状态模糊测试对TLS协议实现了较高程度的自动化分析,从协议实现层面自动提取9个TLS协议实现的状态机,并找到3个违反规范的行为。而后模型学习被应用于各种协议的状态机推断。

已有的研究对状态机分析多依赖人工分析,对于复杂的状态机分析效率较低且分析效果不够理想。虽然有研究者将模型检测的方法引入到协议的状态机分析之中,但模型检测仅能够验证状态机的合规性,无法对协议实现的安全性进行有效的分析。协议的形式化分析是对协议逻辑设计层面安全性分析的重要方法,它将协议抽象成数学模型,通过程式化的推演计算,以检查协议是否满足其预期的安全目标。近年来出现了较为有效的自动化验证工具,如ProVerif、Tarmain等,在安全协议的设计和分析中发挥了重要的作用。但自动化验证工具目前仅适用于协议逻辑设计分析,由于协议实现拥有比协议标准更为复杂多样的状态空间与执行路径,难以抽象成固定的符号模型,很难对其进行自动化分析。



技术实现要素:

本发明的目的是提供一种网络安全协议脆弱性分析方法,以解决目前网络安全协议脆弱性分析存在的效率低、自动化程度低的问题。

本发明为解决上述问题提供了一种网络安全协议脆弱性分析方法,该方法包括以下步骤:

1)获取目标协议,对目标协议进行状态机推断;

2)对推断出目标协议状态机进行路径搜索,提取出目标协议状态转移路径;

3)对提取出的状态转移路径进行形式化建模;

4)根据目标协议特点和目标协议状态机对目标协议中的组件进行形式化建模;

5)根据形式化建模组件利用形式化分析工具对形式化建模的路径进行分析,确定目标协议的攻击路径,实现对目标协议的安全性分析。

本发明通过对目标协议进行状态机推断,并对其进行形式化建模;然后从复杂的状态机中提取出目标状态转移路径;将目标协议和状态转移路径自动转化为可用于形式化分析的符号模型,实现协议状态机到形式化分析脚本的自动化转化;最后,利用形式化分析工具对抽取路径的符号模型进行形式化分析,实现对网络安全协议脆弱性的自动分析,可以有效检测协议状态机的安全性问题。本发明避免了人工依赖,大大提高了分析效率,保证了分析效果。

进一步地,为了准确得到目标协议的状态机,所述步骤1)中的状态机推断包括成员查询过程和等价查询过程;所述成员查询过程指的是在成员查询阶段,Learner根据给定的字母表利用有限状态机学习算法生成一轮测试消息,由Mapper将测试消息转化为SUL能够接收的消息并发送给SUL,SUL对接收到的消息进行响应;通过多轮消息查询与重置,根据从SUL收到的响应提出假设;所述等价查询过程指的是检查成员查询过程中提出的假设与实际状态机是否一致,若不一致,则返回一个反例,供成员查询过程重新提出假设,若一致,则认为当前状态机推断近似等价于真实实现。

进一步地,所述成员查询过程中采用的有限状态机学习算法为L*算法或者TTT算法。

进一步地,所述等价查询过程中采用W算法。

进一步地,为了快速抽取有效路径,减少冗余分析,所述步骤2)中采用启发式广度优先搜索算法对推断出的状态机进行路径搜索。

进一步地,所述步骤3)中的形式化建模采用Pi演算实现。

进一步地,在采用Pi演算对状态转移路径进行建模时,将每一次状态转换建模成为子进程,整条状态转移路径为子进程的组合。

进一步地,所述的形式化分析工具采用ProVerif、AVISPA、SPIN或Tamarin。

进一步地,所述步骤4)中的组件包括有数据类型&常量、消息、密码原语、时间、查询和辅助进程。

进一步地,所述步骤4)中采用Pi演算和形式化分析工具实现对组件的建模。

附图说明

图1是本发明网络安全协议脆弱性分析方法的流程图;

图2是本发明网络安全协议脆弱性分析方法的原理图;

图3是本发明实施例中的测试用例TLS协议流程图;

图4是本发明实施例中所采用的模型学习原理示意图;

图5是本发明实施例中推断TLS协议状态机示意图;

图6是本发明得到的一条状态转移路径及对应协议会话示例;

图7是本发明实施例中的测试用例TLS协议实现存在的安全问题;

图8是本发明实施例中的测试用例TLS使用ProVerif分析的结果图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步地说明。

本发明通过搭建模型学习框架,使用L*学习算进行成员查询、使用W方法进行等价查询,实现目标协议的状态机推断;基于广度优先搜索算法提取状态机的有效执行路径方案,根据网络安全协议状态机的特点,自动提取目标状态机的有效执行路径;基于应用Pi演算的状态转移路径形式化建模方案,采用应用Pi演算详细说明协议参与者的行为与交互,通过对状态机每一步状态转移进行形式化建模,完成对安全协议程序实现的状态机转移路径的自动化建模;最后利用形式化分析工具(如ProVerif)对协议实现进行脆弱性自动化分析挖掘。该方法的实现流程如图1所示,原理如图2所示,下面以TLS协议作为目标协议,具体实现过程如下。

1.获取目标协议,对目标协议进行状态机推断。

本发明对目标协议进行状态机学习,学习的具体过程主要包括两部分:成员查询与等价查询,如图4所示。在成员查询阶段,Learner使用L*算法、TTT算法等经典的有限状态机学习算法,根据给定的字母表I,学习算法生成每一轮测试消息,Mapper将其转化为SUL可以接收的具体的消息,然后发送给SUL,SUL对其做出反应,每进行完一次查询会发送重置查询;通过多轮消息查询与重置,学习算法可以根据从SUL收到的响应提出假设,一旦完成该假设,就将其传递给等价算法,进行等价查询。

等价查询用于检查这些假设与实际状态机是否一致,如果不一致,则返回一个反例,学习算法将使用其重新定义假设,进行模型修正,如果没有找到反例,则认为当前状态机推断近似等价于真实实现,得到协议实现的状态机;等价查询可采用W算法。

当目标协议为TLS协议时,TLS协议的流程如图3所示,其中[m]表示消息m可选,{m}表示消息m加密。按照上述推断过程,推断出的TLS协议状态机如图5所示。

2.对推断出目标协议状态机进行路径搜索,提取出目标协议状态转移路径。

对于复杂的协议或者冗余状态较多的协议,其状态空间会很大,如果对每条路径都进行分析,需要耗费大量时间且无实际意义。因此本发明采用启发式广度优先搜索算法对推断出的状态机进行路径搜索,提取出有效路径,以减少冗余的分析。搜索的流程如表1所示。

表1

对本实施例而言,对于图5中的状态机,采用上述搜索算法抽取的状态转移路径如下:

路径1:图中

路径2:图中

路径3:图中

3.对目标协议状态转移路径的形式化建模。

由于协议实现拥有比协议标准更为复杂多样的状态空间与执行路径,难以抽象成固定的符号模型。因此,本发明采用形式化建模将状态转移路径转换成形式化分析工具能够识别的符号模型。

在分析协议状态机时,以协议的一条转移路径作为分析对象,如图6所示。每一个协议参与者的行为可以由一条状态转移路径表示,例如当前路径状态s1在接收以及发送特定消息后到达s2,但是在协议的执行过程中不只含有消息的收发,还有其它操作,如计算与验证,用函数fi表示,i=1,2,...,n。而状态转移路径有时可以没有收到或者没有发送消息,此时,我们用ε表示形式上的一致。

那么一条状态转移路径:对应逻辑语义为

即在状态q下,收到消息x,若执行相应操作以及满足相应约束,则状态迁移到q′。用应用Pi演算进行形式化建模可以表示为:

在对状态转移路径使用应用Pi演算进行建模时,将每一次状态转换建模成为子进程,而整条状态转移路径可以看做是子进程的组合。那么图6可以表示如下:

那么上述会话可以建模如下

通过添加各类密码原语安全目标,query以及event,即可在使用ProVerif自动化验证,并且上述建模方式不受不同的协议状态机影响,通过建模各个子进程对其进行级联,可以拓展到任意协议状态机分析。

对本实施例而言,Pi演算对TLS协议进行形式化建模的过程如下:

在ClientHello中,客户端生成随机数randomC与支持的密码套件paramsC,并发送给服务器。

在ServerHello中,服务器生成随机数randomS与协商好的密码套件paramsS。

接下来服务器发送自己的证书给客户端。

如果采用DHE作为密钥交换方式,则服务器还需要根据DH群组确定生成元g,选取私钥y,计算gy,使用私钥对其签名得到sg,将g,gy以及sg发送给客户端:

对于客户端,在DHE模式下,它随机产生x,计算gx,将gx发送给服务器:

而在RSA模式下中则选取一个随机数,使用服务器公钥进行加密得到epms:

双方发送ChangeCipherSpec用以启用加密,此消息通常和Finish一起发送:

客户端与服务器分别发送Finish消息:

P′以及Q′分别表示后续进程,而后双方计算会话密钥。

let ck=prf(ms,client_key_expansion,(randomC,randomS))in

let sk=prf(ms,server_key_expansion,(randomC,randomS))in

4.自动生成应用Pi演算模型与ProVerif脚本。

根据步骤3的建模与目标协议的特点,结合形式化分析工具对组件进行建模,其中涉及的组件主要包括有数据类型&常量、消息、密码原语、事件、查询和辅助进程。常用的形式化分析工具有AVISPA、SPIN、ProVerif、Tamarin等,其中AVISPA使用HLPSL作为其输入,SPIN以Promela语言作为其输入,ProVerif以Pi演算模型,而Tamarin基于多重集合改写规则描述协议流程作为其输入,由于输入语言的不同,不同工具在在攻击搜索、运行效率、所支持的安全模型也会有所差异。本发明以Pi演算为例,下面阐述如何使用形式化分析工具自动化分析协议实现模型。

数据类型&常量:主要包括协议涉及的数据类型、列表以及常量,如信道、随机数、密码元素(如密钥、DH群元素)等。

消息:将每条消息视为一个符号构造函数,同时将消息建模与此符号构造匹配,正确的消息构造是消息序列化解析正确性的前提。

密码原语:将各种密码原语(如公钥加密,对称加密,哈希等)建模为符号模型。

事件:设计指示协议交互进度以及协议安全属性的事件,用于ProVerif查询事件的可达性。

查询:通过设计相应的安全目标,针对目标协议进行安全属性查询。

辅助进程:根据确立的安全目标,可以设置其它进程,如创建分发用户公私钥对用来辅助进行安全性分析。

然后根据不同的协议实现制定不同的时序逻辑规则,以保证形式化脚本自动转化与生成。

以密码原语组件为例:

(1)对称加密:密钥同时用于加密与解密,通常用于大量消息的加密。

fun symenc(enc_alg,enc_key,bitstring,bitstring,bitstring):bitstring.

fun symdec(enc_alg,enc_key,bitstring,bitstring,bitstring):bitstring

reduc forall a:enc_alg,k:enc_key,nonce:bitstring,ad:bitstring,plaintext:bitstring;

symdec(a,k,nonce,ad,aeadenc(a,k,nonce,ad,plaintext))=plaintext.

(2)公钥加密:密钥分为公私钥,加解密使用不同的密钥。

fun rsa_enc(rsa_alg,pubkey,bitstring):bitstring.

fun rsa_dec(rsa_alg,privkey,bitstring):bitstring

reduc forall a:rsa_alg,k:privkey,x:bitstring;

rsa_dec(rsa_alg,k,rsa_enc(rsa_alg,pk(k),x))=x.

(3)数字签名:主要用于身份认证

fun sign(privkey,bitstring):bitstring.

fun verify(pubkey,bitstring,bitstring):bool

reduc forall k:privkey,x:bitstring;

verify(pk(k),x,sign(k,x))=true.

(4)单向哈希函数:单向哈希函数,用于对数据进行哈希

fun hash(hash_alg,bitstring):bitstring

(5)类型转换函数:ProVerif中定义了类型转换函数,其目的是将数据从一种类型转化为另一种类型,以保证参数的正常传递,从而减少工作量。

fun msg2bytes(msg):bitstring[data,typeConverter].

上述为部分密码原语,在实际的建模过程中还包括DH群操作,DH密钥交换,HMAC,prf等密码原语的建模,剩余模型组件类似,在这里不再赘述。

5.利用形式化分析工具对目标协议进行自动化分析。

根据步骤3、4的建模与步骤2抽取的目标路径,实现目标协议的脚本自动化生成,在输入形式化分析工具进行分析,发现目标协议是否存在安全问题。

对于本实施例中的TLS协议而言,采用形式化分析工具ProVerif对其进行分析发现,OpenSSL1.0.1g中存在客户端密钥泄露的情况,其原因是在发送CCS之后,服务器并未及时终止会话,默认会话继续进行,因此双方预主密钥使用的是空字符。而对于其它协议版本的状态机,如果提前发送CCS则会终止会话,CCS攻击流程如图7所示,对TLS协议的分析结果如图8所示,从中可以发现ProVerif找到1条攻击路径对应图7,黑色线框框起来的部分表明发现新路径。

在了解本发明的原理之后,专业的学者可以相应的构建其它形式化模型,并使用AVISPA、SPIN、Scyther、Tamarin等工具进行分析,但究其本质,仍然是使用形式化的思想对协议实现的模型进行自动化分析,并未改变本发明的思想。

以上描述只是对本发明的具体阐述,不构成对本发明的任何限制。显然对于本领域的专业学者来说,在了解本发明的原理后,可以在不违背原理的情况下,进行内容细节上的各种改变,但是这些基于本发明思想的改变仍在本发明的权利要求保护范围之内。

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献