一种基于概率预测的嵌入式可变粒度控制流验证方法及系统技术方案

技术编号:22186572 阅读:42 留言:0更新日期:2019-09-25 03:45
本发明专利技术涉及一种基于概率预测的嵌入式可变粒度控制流验证方法及系统,分为验证端和证明端。可信路径特征集构建,对目标源程序中的每个函数进行漏洞概率预测,然后对函数进行粗细粒度的插桩预处理,再在验证端中用不同的输入获取目标程序所有可能的动态控制流图,这些控制流图使用哈希值代替并存储在数据库中;动态路径的收集,证明端在接收到验证端发送的请求后运行处理过的目标程序,并在安全世界中计算此次控制流图的哈希值并签名;动态路径的检验,证明端发送签名给验证端,验证端将解密签名得到的哈希值在数据库中进行匹配,如果能够匹配上说明此次运行的控制流是完整的,否则控制流完整性遭到了破坏。

An Embedded Variable Granularity Control Flow Verification Method and System Based on Probability Prediction

【技术实现步骤摘要】
一种基于概率预测的嵌入式可变粒度控制流验证方法及系统
本专利技术涉及一种在嵌入式平台上验证软件控制流完整性的方法系统及方法,属于嵌入式终端关键应用的动态度量领域。
技术介绍
随着嵌入式设备的快速发展,特别是物联网(InternetofThings,IoT)的出现,嵌入式终端关键应用的完整性保护日益受到重视,各种完整性保护的模型和实施方法相应的被提出。在系统和应用运行的过程中,攻击者可以通过各种各样的手段来对系统或者应用进行攻击,破坏这些软件的完整性。例如,控制流攻击(Control-FlowAttack)就是其中一种攻击手段,这种攻击手段非常常见而且能够造成比较大的威胁。控制流攻击会影响程序的运行时行为,表现在于它会劫持程序的控制流到任意的地址空间,从而破坏程序的完整性。对于资源有限的嵌入式设备而言,实时的保护会造成过大的开销,所以远程的验证手段是常用的一种方法。当前针对嵌入式平台的控制流完整性验证要么是细粒度的验证或者是粗粒度的验证。前者的验证方案会检查程序中所有的控制流转移指令,包括分支指令,函数的调用和返回事件,这种粒度的验证能够保证安全但是会造成较大的开销。而后者的运行开销较小,它只检查函数之间的调用关系(即函数的调用和返回事件),但是它不够安全。
技术实现思路
本专利技术的技术解决问题为:克服现有技术的不足,一种基于概率预测的嵌入式可变粒度控制流验证方法及系统,利用机器学习的概率模型来结合这两种不同粒度的验证方法,能够在运行时性能和安全保障之间达到相对的平衡。本专利技术的技术解决方案为:一种在嵌入式平台中使用远程证明架构对软件完整性的验证方法和系统,利用TrustZone硬件隔离来对应用的执行进行动态完整性度量,包括粗粒度的函数级别验证以及细粒度的控制流指令级别验证。该专利技术在提高了验证效率的同时,也保障了一定的安全性。按照本专利技术所提供的设计方案,本专利技术的主要目的是针对当前嵌入式平台上软件的控制流完整性验证手段要么是开销过大的细粒度或者不够安全的粗粒度问题,利用机器学习的概率模型来有效结合这两种粒度的验证方法,从而在嵌入式平台上进行完整性验证时能够达到在运行时性能和安全保障之间的相对平衡。控制流完整性(Control-FlowIntegrity,CFI)是一种保护或者验证控制流完整性的有效方案,它的思想是利用控制流图(Control-FlowGraph,CFG)来限制程序的运行目标范围。本方案提出了基于概率预测的嵌入式可变粒度控制流验证系统,该系统利用远程证明的架构对嵌入式平台的控制流完整性进行验证,该验证需要嵌入式平台带有一个可信的隔离环境,比如ARM的TrustZone,这样才能够实现可信的动态完整性度量。控制流攻击,是一种能够劫持原有程序控制流的技术,包括代码注入攻击,代码复用攻击,还有近些年来提出的非控制数据攻击。这些攻击的方法能够改变原有的控制流,从而实现攻击者的攻击意图。远程证明,是一种有效验证嵌入式平台完整性的系统方案。它包括两个部分:验证端和证明端。验证端通常是一个资源丰富的第三方可信平台(如PC),它主要向证明端发起验证并且对最后的验证报告进行有效性检查。而证明端是一个资源有限的平台,在本方案中指的就是嵌入式平台。它们之间通过一定的协议进行通信,从而达到验证证明端完整性的目的。插桩,是指在保持程序原有逻辑完整性的基础上在程序中插入一些探针,这些探针的目的是采集函数及代码段的信息。插桩技术可用于记录程序运行时代码的执行路径,从而了解代码的执行情况。动态度量,就是通过静态分析技术或者动态执行提取应用的行为特征,然后在应用实际运行过程中实时监控应用行为并与行为特征进行匹配,匹配成功则表示应用是可信的,匹配不成功则判定应用行为不可信。ARMTrustZone硬件隔离技术,在嵌入式终端构建普通世界和安全世界两个独立的运行环境,并利用处理器的监控模式提供两个环境的切换与数据传输。普通世界与安全世界相互隔离,保证了安全世界中操作的安全性,有效实现应用系统高敏感业务与普通业务的隔离。控制流图,表示函数内部基本块之间的执行先后关系和控制流关系,每个函数都有一个控制流图,而控制流图是由代码基本块组成。本专利技术的一种基于概率预测的嵌入式可变粒度控制流验证系统,包含如下步骤:步骤1、可信路径特征集构建,对目标源程序中的每个函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理,接着在验证端利用不同的输入Ip获取目标程序所有可能的动态控制流图,在嵌入式中这种动态控制流图的获取是可行的,因为大部分嵌入式软件特点是专用而且比较简单。本专利技术使用BLAKE2算法计算的哈希值来代替某一个动态的控制流图,不同的控制流图对应不同的哈希值,这些哈希值hs被存储在数据库中。这一步骤在远程证明的验证端进行。步骤2、动态路径的收集,验证端发送请求c请求给证明端,证明端在接受请求后在正常世界中特定的输入Is下运行处理过的目标程序,并在安全世界中收集程序运行过程中的相应控制流转移指令,利用这些指令的信息来计算此次控制流图的哈希值h,计算过程与步骤1中的哈希值计算相同,最后证明端利用密钥k对哈希值进行加密得到签名r并发送给验证端。步骤3、动态路径的检验,证明端将通过一定的协议将签名发送给验证端,验证端将获得的签名r用密钥k解密得到哈希值h,该哈希值与步骤1中数据库中存储的相应哈希值hs进行匹配,如果能够匹配上说明此次运行正常,否则说明此次运行的控制流遭到了攻击,完整性被破坏。上述步骤中的安全世界指的是TrustZone硬件隔离环境保证的,BLAKE2算法是一种高效而且安全的哈希值算法,从专利技术至今,还没有人提出破解它的方法。BLAKE2的内部基于的是ChaCha,而ChaCha是高度可信任的,它不太可能被破解。(注:ChaCha是一种由DanielJ.Bernstein设计的流密码,它是TLS1.3所使用的三大密码之一,并且符合新的TLS标准。)所述步骤1的可信路径特征集构建具体包含如下步骤:步骤1.1、概率预测,在这里使用有漏洞的函数和正常函数作为数据,函数特征作为特征来训练得到一个机器学习模型,该模型会对目标程序中的所有函数进行漏洞的概率预测。当然这一步中的训练过程是不需要重复进行的,平常的使用中只需对目标程序中的函数进行概率预测即可。步骤1.2、粗细粒度插桩,在步骤1.1中,得到了目标程序中所有函数的概率。接下来需要验证端指定一个概率阈值p,这个概率阈值的指定可以根据实际情况来调整。利用这个阈值p对函数进行分类,对于一个函数来说,如果它在步骤1.1中得到的漏洞概率pf≥p,那么这个函数就会被认为是有漏洞的,这一类的函数会被细粒度插桩从而更好的保证它的完整性不被破坏。而如果函数的漏洞概率pf<p,那么它会被认为是正常的函数而被粗粒度插桩,这种粒度牺牲了一定的安全性来保证运行时的性能。通过概率预测的模型将粗细粒度很好的进行了结合。步骤1.3、可信路径特征集安全存储,经过处理的目标程序在所有可能的输入Ip下运行,计算其合法的控制流图的哈希值hs,并将这些哈希值存储在数据库中来构建可信路径特征集。所述步骤2的动态路径采集具体包含如下步骤:步骤2.1、动态路径收集,当嵌入式平台接收到验证端发来的请求c后(该请求c包含了目标程本文档来自技高网...

【技术保护点】
1.一种基于概率预测的嵌入式可变粒度控制流验证方法,其特征在于,包括如下步骤:步骤1、可信路径特征集构建,对目标源程序中的函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理,再在验证端中利用不同的输入Ip获取目标程序所有可能的可信动态控制流图,这些动态的控制流图使用BLAKE2哈希算法计算,不同的控制流图对应不同的哈希值,这些可信控制流图哈希值hs被存储在数据库中,构成了可信路径特征集;步骤2、动态路径收集,验证端发送指令请求给证明端,证明端在接受请求c后在正常世界中的一定输入下Is运行处理过的目标程序,并在安全世界中收集程序运行过程中的相应控制流转移指令,利用这些控制流转移指令的信息计算此次控制流图的哈希值h,最后将这个哈希值h用密钥k进行签名发送给验证端进行验证;步骤3、动态路径检验,证明端将步骤2得到的签名发送给验证端,验证端在接收到签名后利用已知的密钥k对签名进行解密,获取哈希值h,该哈希值h与步骤1中数据库中存储的哈希值hs进行匹配,如果能够匹配上,则说明此次运行正常,否则的话说明此次运行的控制流完整性遭到了破坏。

【技术特征摘要】
1.一种基于概率预测的嵌入式可变粒度控制流验证方法,其特征在于,包括如下步骤:步骤1、可信路径特征集构建,对目标源程序中的函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理,再在验证端中利用不同的输入Ip获取目标程序所有可能的可信动态控制流图,这些动态的控制流图使用BLAKE2哈希算法计算,不同的控制流图对应不同的哈希值,这些可信控制流图哈希值hs被存储在数据库中,构成了可信路径特征集;步骤2、动态路径收集,验证端发送指令请求给证明端,证明端在接受请求c后在正常世界中的一定输入下Is运行处理过的目标程序,并在安全世界中收集程序运行过程中的相应控制流转移指令,利用这些控制流转移指令的信息计算此次控制流图的哈希值h,最后将这个哈希值h用密钥k进行签名发送给验证端进行验证;步骤3、动态路径检验,证明端将步骤2得到的签名发送给验证端,验证端在接收到签名后利用已知的密钥k对签名进行解密,获取哈希值h,该哈希值h与步骤1中数据库中存储的哈希值hs进行匹配,如果能够匹配上,则说明此次运行正常,否则的话说明此次运行的控制流完整性遭到了破坏。2.根据权利要求1所述的基于概率预测的嵌入式可变粒度控制流验证方法,其特征在于:所述步骤1中,对目标源程序中的每个函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理具体包含如下步骤:步骤1.1、概率预测,使用有漏洞的函数和正常函数作为数据,函数特征作为特征训练得到一个机器学习模型,该机器学习模型会对目标程序中的所有函数进行漏洞的概率预测,得到目标程序中所有函数的漏洞概率;步骤1.2、粗细粒度插桩,基于步骤1.1中得到的目标程序中所有函数的漏洞概率,在验证端指定一个概率阈值p,利用这个概率阈值p对函数进行分类,对于一个函数,如果在步骤1.1中得到的漏洞概率pf≥p,则这个函数就会被认为是有漏洞的,这一类的函数会被细粒度插桩从而更好的保证它的完整性不被破坏,而如果函数的漏洞概率pf<p,则它被认为是正常的函数而被粗粒度插桩;步骤1.3、可信路径特征集安全存储,经过处理的目标程序在所可能的输入Ip下运行,计算其合法的控制流图的哈希值,并将这些哈希值存储在数据库中来构建可信路径特征集。3.根据权利要求1所述的基于概率预测的嵌入式可变粒度控制流验证...

【专利技术属性】
技术研发人员:霍冬冬胡建行李宇田琛王瑜王雅哲
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1