RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法技术

技术编号:19056611 阅读:73 留言:0更新日期:2018-09-29 12:08
本发明专利技术属于计算机软件分析技术领域,公开了一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,从RFC中提取并更新规则;对规则进行分类,进一步对消费者规则和共享规则分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试。本发明专利技术对被测试程序进行高效的差异测试;应用于SSL/TLS实现中数字证书验证模块的测试,发现潜在的软件缺陷或安全漏洞,提高SSL/TLS实现的正确性和安全性。

【技术实现步骤摘要】
RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法
本专利技术属于计算机软件分析
,尤其涉及一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法。
技术介绍
目前,业内常用的现有技术是这样的:随着计算机网络技术的快速发展,互联网与人们的工作、生活和学习联系日益紧密,互联网安全的重要性也日益凸显。为增强安全性,互联网的超文本传输协议(HypertextTransferProtocol,HTTP)升级为超文本传输安全协议(HypertextTransferProtocolSecure,HTTPS)。相对于HTTP,HTTPS使用安全套接字层(SecureSocketsLayer,SSL)/传输层安全协议(TransportLayerSecurity,TLS)保障互联网通讯的安全性。SSL/TLS在握手阶段通过验证服务器或客户端的数字证书以实现对服务器或客户端进行身份认证。对服务器进行身份认证时,服务器将其持有的数字证书发送给客户端,客户端通过验证接收到的数字证书来判断此服务器是否为真正的目标服务器。对客户端进行身份认证的过程与此类似。只有服务器或客户端通过了身份认证,后续的密钥形成和加密通讯才可以继续进行。身份认证能否正确执行非常重要:如果身份认证错误地接收恶意服务器或恶意客户端的非法证书,则会导致后续的通讯陷入不安全的境地;如果身份认证错误地拒绝正常服务器或正常客户端的合法证书,则会导致合法的通讯请求无法完成。因此,SSL/TLS实现中数字证书验证模块的正确性对互联网的安全是至关重要的,对SSL/TLS实现中数字证书验证模块进行有效测试是保障其正确性的必要手段。现有技术中Frankencert方法对数字证书进行变异后用于SSL/TLS实现中数字证书验证模块的差异测试。首先,Frankencert方法从互联网上收集了243246个数字证书;然后,通过对这些数字证书的组件进行组合生成了8127600个数字证书并用于15个SSL/TLS实现的差异测试,产生了208个差异,这些差异进一步规约为9个不同的差异。为提高差异测试的效率,Mucert方法以代码覆盖率为导向,使用37个变异算子对1005个数字证书进行变异并对变异后的数字证书采用马尔可夫链蒙特卡洛(MarkovChainMonteCarlo,MCMC)采样。变异后的数字证书用于9个SSL/TLS实现的差异测试,得到了27个不同的差异。虽然Frankencert和Mucert方法对SSL/TLS实现中的数字证书验证模块进行差异测试取得了一定的成功,但仍存在一些问题:首先,差异测试得到的差异本身既不能解释差异产生的原因也不能解释哪些SSL/TLS实现存在缺陷;其次,某些变异后的证书不能被现有的工具所解析,造成分析其结构和内容的困难性;最后,差异测试得到的差异是否总是有效的仍是一个待解决的问题。因此,提出一种能解决这些问题并且更高效的测试方法是非常必要的。综上所述,现有技术存在的问题是:(1)差异测试得到的差异本身既不能解释差异产生的原因也不能解释哪些SSL/TLS实现存在缺陷。差异测试中用于测试的数字证书由变异得到,而如果变异的数字证书导致了差异,那么产生差异的原因是无法直接解释的。无论对于测试工程师还是SSL/TLS开发工程师,只有对变异的数字证书的结构和内容进行进行充分的分析后,才能解释差异产生的原因,才能进一步判断哪些SSL/TLS实现中存在缺陷。如果分析工作由人工完成,对变异的数字证书进行结构和内容的分析需要分析人员熟悉数字证书的结构和约束,具体的分析工作中容易出现分析错误;如果分析工作由程序完成,可减少人工分析中的错误,但这一方面的工作迄今未见公开成果,需要从头开始构造这种针对变异数字证书的分析程序。(2)某些变异后的证书不能被现有的工具所解析,造成分析其结构和内容的困难性。如果要分析这些变异证书的结构和内容,一种方法是改造既有的工具,另一种方法是构造新的工具。改造既有的工具需要熟悉其功能和代码并且不能影响其余的功能;构造新的工具则需要进行功能设计并编制相关代码。无论改造既有的工具还是构造新的工具都涉及数字证书结构的解析、加密、解密和签名算法,具有较大的困难性。如果不改造既有工具也不构造新的工具,则没有工具可分析这些数字证书。(3)差异测试得到的差异不总是有效的。由于差异测试中使用的数字证书是由变异得到的,不能保证变异后造成差异的原因是违背了数字证书必须遵守的规则。而对于具有一定灵活度的规则,不同的SSL/TLS实现可能会有差异,这种差异是无效的。现有方法无法直接甄别无效差异,对无效差异的分析会造成人工的浪费、工作效率的降低。解决上述技术问题的难度和意义:如果通过对现有方法进行改造以解决上述技术问题,则具有较大的困难:一方面,如果对现有方法添加人工工作,会导致工作效率低下而且容易出错;另一方面,如果对现有方法添加自动化程序,则需要熟悉现有系统的功能与代码或设计并实现新的系统,还需要涉及复杂的加密、解密和签名算法,设计和实现的困难较大。如果通过专利技术新的方法解决上述问题,通过自动化解释差异出现的原因及哪些SSL/TLS实现中存在缺陷可以避免人工分析或分析程序的构造,帮助SSL/TLS开发人员有效地甄别和解决SSL/TLS中存在的缺陷;通过组装有效的数字证书以实现测试用例能被现有的工具所载入和分析,避免改造或构造新的分析工具所需的代价;通过自动甄别无效差异,避免相关的分析等工作,提高工作效率。
技术实现思路
针对现有技术存在的问题,本专利技术提供了一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法。本专利技术是这样实现的,一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,所述RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法从RFC中提取并更新规则;对规则进行分类,进一步对消费者规则和共享规则分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试。进一步,所述RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法包括以下步骤:步骤一,根据RFC2119规定的关键字集合从RFC5280和6818中提取数字证书的规则,根据RFC6818对RFC5280的规则进行更新;步骤二,对更新后的规则分为3类即生产者规则、消费者规则和共享规则,对消费者规则和共享规则进一步分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;步骤三,对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;步骤四,使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试,基于数字证书的信息计算测试结果中的差异数、不同差异数、缺陷数、RFC遵守率。进一步,所述步骤一具体包括:(1)根据RFC2119中规定的书写RFC所需遵守的关键字集合从RFC5280和6818中提取数字证书的规则。把RFC5280或RFC6818文本即rf本文档来自技高网
...

【技术保护点】
1.一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,其特征在于,所述RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法中消费者规则和共享规则分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试。

【技术特征摘要】
1.一种RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,其特征在于,所述RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法中消费者规则和共享规则分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试。2.如权利要求1所述的RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,其特征在于,所述RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法包括以下步骤:步骤一,根据RFC2119规定的关键字集合从RFC5280和6818中提取数字证书的规则,根据RFC6818对RFC5280的规则进行更新;步骤二,对更新后的规则分为3类即生产者规则、消费者规则和共享规则,对消费者规则和共享规则进一步分为可打破规则和不可打破规则,规则转换为规则变量并生成动态符号执行技术中的输入即符号化程序;步骤三,对符号化程序使用动态符号执行技术生成低级测试用例;根据低级测试用例组装高级测试用例即数字证书;步骤四,使用组装的数字证书对SSL/TLS实现中的数字证书验证模块进行差异测试,基于数字证书的信息计算测试结果中的差异数、不同差异数、缺陷数、RFC遵守率。3.如权利要求2所述的RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,其特征在于,所述步骤一具体包括:(1)根据RFC2119中规定的书写RFC所需遵守的关键字集合从RFC5280和6818中提取数字证书的规则;把RFC5280或RFC6818文本即rfc5280.txt或rfc6818.txt中的换页符、页眉、页脚和空行删除得到的文本记为R;把R根据一级标题分割为节;对于RFC5280中的第4至第8节、RFC6818中第2至第8节中的每一节,首先置规则集合变量ruleSet为空集、规则编号ruleNum为0;然后对于RFC5280任意j级标题(1≤j≤5)、RFC6818任意j级标题(1≤j≤2)和下一个标题之间的内容根据“.\n”和“.”提取英文语句,根据“::=”、“::={ln。。。}ln”和“::={ln。。。}ln’”提取AbstractSyntaxNotationOne(ASN.1)表示的结构,其中“::=”、“::={ln。。。}ln”和“::={ln。。。}ln’”分别表示ASN.1结构定义中没有左右大括号、有左右大括号并且在同一行、有左右大括号并且不在同一行;对于每个英文语句和ASN.1结构判断其是否包含RFC2119中规定的关键字,如果包含则说明该语句或结构是一条规则记为s,此时ruleNum增加1,由ruleNum、第j级标题和该规则s形成3元组s′=ruleNum,Titlej,s),将s′加入ruleSet;最后把ruleSet保存为文本文件;(2)根据RFC6818对RFC5280的规则进行更新,根据RFC6818中“…says:”、“…replacedwith:”和“add(ed)…”分别指示废弃的、更新的和附加的段落的特点把该节中的规则分别添加到废弃的规则集合obRuleSet和更新的规则集合upRuleSet中;然后,对每条规则r计算构成该规则的单词集合wordSetr,计算任意2条规则r1和r2的单词集合之差即Matrix[r1,r2]=[wordSetr1-wordSetr2];最后,对于obRuleSet中的每条规则o做如下计算:对于upRuleSet中的每条规则u计算使得Matrix[o,u]最小的u并赋给表示规则o更新后的规则记为Updateo,如果不存在这样的Matrix[o,u]则说明规则o被丢弃即Updateo=discarded,否则如果Matrix[o,u]=Matrix[u,o]=0则说明规则o没有变化即Updateo=unchanged,否则应该用规则u更新规则o即Updateo=u,对RFC5280的规则o用Updateo进行更新。4.如权利要求2所述的RFC制导的SSL/TLS实现中数字证书验证模块的差异测试方法,其特征在于,所述步骤二具体包括:(1)把更新后的规则分为3类:生产者规则、消费者规则和共享规则;把生产者规则集合producerRuleSet、消费者规则集合consumerRuleSet和共享规则集合sharedRuleSet分别设置为空集;对于RFC5280更新后的规则集合updatedRuleSet中的每条规则r,对于生产者规则的模式集合中任意一个模式m,如果r匹配m则把r加入到producerRuleSet;对于消费者规则的模式集合中任意一个模式m′,如果r匹配m′则把r加入到consumerRuleSet;共享规则集合为生产者规则集合与消费者规则集合的交集即sharedRuleSet=producerRuleSet∩consumerRuleSet;从生产者规则集合和消费者规则集合中分别去除共享规则集合即sharedRuleSet:producerRuleSet-=sharedRuleSet和consumerRuleSet-=sharedRuleSet;最后收集生产者规则和消费者规则外的规则即updatedRuleSet-producerRuleSet-consumerRuleSet作为共享规则;(2)对消费者规则和共享规则进一步分为:可打破规则和不可打破规则;把可打破规则集合breakableRuleSet、不可打破规则集合unbreakableRuleSet和不可打破规则的模式集合patternSet分别设置为空集;对于RFC2119规定的关键字集合中任何一个关键字m,对于任意一个不可打破规则模式u,把添加到patternSet;对于消费者规则和共享规则集合csrSet中任意一个规则r,对于patternSet中任意一个模式p,如果r匹配p则把r加入到unbreakableRuleSet中;计算可打破规则集合breakableRuleSet=csrSet-unbreakableRuleSet;(3)把可打破规则和不可打破规则转换为规则变量;设置响应集合responseSet、其它保留字集合otherSet和规则变量集合varSet为空集;把RFC2119规定的关键字加入到关键字集合modalKeywordSet,把表示句子...

【专利技术属性】
技术研发人员:田聪陈矗段振华
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1