[发明专利]一种基于概率预测的嵌入式可变粒度控制流验证方法及系统有效

专利信息
申请号: 201910513155.8 申请日: 2019-06-14
公开(公告)号: CN110276198B 公开(公告)日: 2021-04-20
发明(设计)人: 霍冬冬;胡建行;李宇;田琛;王瑜;王雅哲 申请(专利权)人: 中国科学院信息工程研究所
主分类号: G06F21/56 分类号: G06F21/56
代理公司: 北京科迪生专利代理有限责任公司 11251 代理人: 安丽;邓治平
地址: 100093 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 概率 预测 嵌入式 可变 粒度 控制 验证 方法 系统
【权利要求书】:

1.一种基于概率预测的嵌入式可变粒度控制流验证方法,其特征在于,包括如下步骤:

步骤1、可信路径特征集构建,对目标源程序中的函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理,再在验证端中利用不同的输入Ip获取目标程序所有可能的可信动态控制流图,这些动态的控制流图使用BLAKE2哈希算法计算,不同的控制流图对应不同的哈希值,这些可信控制流图哈希值hs被存储在数据库中,构成了可信路径特征集;

步骤2、动态路径收集,验证端发送指令请求给证明端,证明端在接受请求c后在正常世界中的一定输入Is下运行处理过的目标程序,并在安全世界中收集程序运行过程中的相应控制流转移指令,利用这些控制流转移指令的信息计算此次控制流图的哈希值h,最后将这个哈希值h用密钥k进行签名发送给验证端进行验证;

步骤3、动态路径检验,证明端将步骤2得到的签名发送给验证端,验证端在接收到签名后利用已知的密钥k对签名进行解密,获取哈希值h,该哈希值h与步骤1中数据库中存储的哈希值hs进行匹配,如果能够匹配上,则说明此次运行正常,否则的话说明此次运行的控制流完整性遭到了破坏;

所述步骤1中,对目标源程序中的每个函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理具体包含如下步骤:

步骤1.1、概率预测,使用有漏洞的函数和正常函数作为数据,函数特征作为特征训练得到一个机器学习模型,该机器学习模型会对目标程序中的所有函数进行漏洞的概率预测,得到目标程序中所有函数的漏洞概率;

步骤1.2、粗细粒度插桩,基于步骤1.1中得到的目标程序中所有函数的漏洞概率,在验证端指定一个概率阈值p,利用这个概率阈值p对函数进行分类,对于一个函数,如果在步骤1.1中得到的漏洞概率pf≥ p,则这个函数就会被认为是有漏洞的,这一类的函数会被细粒度插桩从而更好的保证它的完整性不被破坏,而如果函数的漏洞概率pf p,则它被认为是正常的函数而被粗粒度插桩;

步骤1.3、可信路径特征集安全存储,经过处理的目标程序在所可能的输入Ip下运行,计算其合法的控制流图的哈希值,并将这些哈希值存储在数据库中来构建可信路径特征集;

所述步骤2中,动态路径收集具体包含如下步骤:

步骤2.1、动态路径收集时,当嵌入式平台接收到验证端发来的请求c后,该请求c包含了目标程序的标识符和随机令牌,随机令牌的作用是为了防止重放攻击,嵌入式平台接收到请求后会在正常世界中特定的输入Is下运行指定的目标程序,在运行过程中,被插桩或者重写的控制流指令被重定向到指定空间进行哈希值的计算,计算结束控制流将返回源程序,当源程序运行结束后,证明端得到一个控制流图哈希值h

步骤2.2、哈希值签名,为了防止哈希值被破坏或者篡改,证明端利用存储在安全域的密钥k对哈希值h进行加密,连同请求c,计算得到签名值r,并发送给验证端进行验证;

所述步骤3,动态路径检验具体包含如下步骤:

步骤3.1、签名解密,验证端从证明端接收签名r,它利用已知的密钥k对其进行解密,分解出哈希值h和请求c

步骤3.2、将步骤3.1中得到的哈希值h与存储在数据库的可信路径特征集进行比较,如果能够匹配,则说明此次运行正常,否则此次运行可能遭受了控制流的攻击,完整性被破坏。

2.一种实现权利要求1所述基于概率预测的嵌入式可变粒度控制流验证方法的系统,其特征在于,包括:可信路径特征集构建、动态路径收集模块和动态路径检验模块,其中:

可信路径特征集构建模块,对目标源程序中的每个函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理,再在验证端中利用不同的输入获取目标程序所有可能的动态控制流图,控制流图使用BLAKE2算法计算的哈希值来代替,不同控制流图对应不同的哈希值,这些哈希值hs会被存储在数据库中来构建可信路径特征集;

动态路径收集模块,验证端发送请求c请求给证明端,证明端在接受请求后在正常世界中运行处理过的目标程序,并在安全世界中收集程序运行过程中的相应控制流转移指令,利用这些控制流转移指令的信息计算此次控制流图的哈希值,最后将这个哈希值h用密钥k进行签名发送给验证端进行验证;

动态路径检验模块,证明端将得到的签名通过一定的协议发送给验证端,验证端接收到签名后用密钥k解密,将解密后将得到的哈希值h与数据库中存储的相应哈希值hs进行匹配,如果能够匹配上说明此次运行正常,否则这次运行遭到了控制流的攻击,控制流完整性被破坏;

所述对目标源程序中的每个函数进行概率预测,然后对不同概率的函数进行粗细粒度的插桩预处理具体包含如下步骤:

步骤1.1、概率预测,使用有漏洞的函数和正常函数作为数据,函数特征作为特征训练得到一个机器学习模型,该机器学习模型会对目标程序中的所有函数进行漏洞的概率预测,得到目标程序中所有函数的漏洞概率;

步骤1.2、粗细粒度插桩,基于步骤1.1中得到的目标程序中所有函数的漏洞概率,在验证端指定一个概率阈值p,利用这个概率阈值p对函数进行分类,对于一个函数,如果在步骤1.1中得到的漏洞概率pf≥ p,则这个函数就会被认为是有漏洞的,这一类的函数会被细粒度插桩从而更好的保证它的完整性不被破坏,而如果函数的漏洞概率pf p,则它被认为是正常的函数而被粗粒度插桩;

步骤1.3、可信路径特征集安全存储,经过处理的目标程序在所可能的输入Ip下运行,计算其合法的控制流图的哈希值,并将这些哈希值存储在数据库中来构建可信路径特征集;

动态路径收集具体包含如下步骤:

步骤1.4、动态路径收集时,当嵌入式平台接收到验证端发来的请求c后,该请求c包含了目标程序的标识符和随机令牌,随机令牌的作用是为了防止重放攻击,嵌入式平台接收到请求后会在正常世界中特定的输入Is下运行指定的目标程序,在运行过程中,被插桩或者重写的控制流指令被重定向到指定空间进行哈希值的计算,计算结束控制流将返回源程序,当源程序运行结束后,证明端得到一个控制流图哈希值h

步骤1.5、哈希值签名,为了防止哈希值被破坏或者篡改,证明端利用存储在安全域的密钥k对哈希值h进行加密,连同请求c,计算得到签名值r,并发送给验证端进行验证;

动态路径检验具体包含如下步骤:

步骤1.6、签名解密,验证端从证明端接收签名r,它利用已知的密钥k对其进行解密,分解出哈希值h和请求c

步骤1.7、将步骤1.6中得到的哈希值h与存储在数据库的可信路径特征集进行比较,如果能够匹配,则说明此次运行正常,否则此次运行可能遭受了控制流的攻击,完整性被破坏。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910513155.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top