[发明专利]一种针对嵌入式裸机系统的控制流验证方法与系统有效
申请号: | 202011253939.0 | 申请日: | 2020-11-11 |
公开(公告)号: | CN112287357B | 公开(公告)日: | 2022-08-12 |
发明(设计)人: | 霍冬冬;田琛;李宇;王瑜;周启惠;王雅哲 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 邓治平 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 嵌入式 裸机 系统 控制 验证 方法 | ||
1.一种针对嵌入式裸机系统的控制流验证方法,其特征在于,包括如下步骤:
步骤1、构建嵌入式裸机系统认证隔离空间,使用编译器对目标源程序插入预先准备好的跳板代码,利用代码静态分析识别出目标嵌入式裸机程序的各个函数,并根据预定的规则对程序以函数为粒度插入“跳板”代码,利用该代码把程序划分为若干个“认证分区”;
步骤2、对嵌入式裸机设备运行时程序动态路径特征白名单进行收集,在认证隔离空间的基础上,利用不同的输入生成不同的程序的控制流,最终形成程序的动态控制流图CFG,生成好的CFG将存放在验证端,其中,使用递归哈希计算控制流图的方式,最终某一个控制流将会表征为程序执行过程中控制流哈希值的叠加;
步骤3、对嵌入式裸机设备运行时程序动态路径进行收集,验证端发送指令请求给证明端,证明端在接受请求后运行处理过的目标程序,并在可信安全域中收集程序运行过程中的相应控制流转移指令,利用这些指令的信息来计算此次控制流图的哈希值,计算过程与步骤2中的哈希值计算相同;
步骤4、对嵌入式裸机设备运行时程序动态路径进行检验,证明端将收集的哈希值通过协议发送给验证端,验证端将接收到的哈希值与步骤2中数据库中存储的相应哈希值进行匹配,如果能够匹配上说明此次运行没有遭到控制流的攻击,否则此次运行可能遭受了控制流的攻击,完整性被破坏。
2.根据权利要求1所述的一种针对嵌入式裸机系统的控制流验证方法,其特征在于,所述步骤3中的可信安全域指的是MPU硬件隔离环境保证的,而哈希值计算拟采用BLAKE2算法。
3.根据权利要求1所述的一种针对嵌入式裸机系统的控制流验证方法,其特征在于,所述步骤1的对嵌入式裸机系统认证隔离空间的构建具体包括如下步骤:
步骤1.1、嵌入式裸机系统插桩,对编译器进行改造,即使用编译器对目标源程序插入预先准备好的跳板代码,使得其能够对嵌入式裸机系统源码中指定的函数位置添加额外的跳板代码,通过SVC的形式来触发;
步骤1.2、嵌入式裸机系统程序认证隔间建立,采用一种基于“访问相同硬件”的函数归类方式,即利用静态分析技术,分析出所有访问相同硬件的函数,这些函数将会被归为一类,把他们划分到同一个隔离空间去;从程序执行的角度,IOT设备从接收指令到最终控制硬件将形成一个完成的程序流,直接利用步骤1.1中已经使得编译器能够对程序的特定位置插入SVC,在建立若干认证隔间节约认证资源的同时,保证了每一个隔间中程序流执行的完整。
4.根据权利要求1所述的一种针对嵌入式裸机系统的控制流验证方法,其特征在于,所述步骤2的对嵌入式裸机设备运行时程序动态路径特征白名单收集具体包含如下步骤:
步骤2.1、动态路径特征白名单收集,验证端需要对待验证的嵌入式裸机系统发送不同的控制执行,获取该系统所有能够执行的控制流,这个过程从技术上称为“动态分析”;同时,采用函数的静态分析帮助对待测软件的控制流进行获取,获取后的流的哈希将被存储在验证端;
步骤2.2、动态路径的递归哈希计算,通过递归哈希计算获取程序流,具体包括,在动态记录程序运行轨迹的时候,程序执行的每一个函数,其函数名地址都将会作为参数进行一次哈希计算,而这个哈希计算的结果又会作为下一个函数在运行时的输入参数,与这个函数的地址共同计算出一个新的哈希。
5.根据权利要求1所述的一种针对嵌入式裸机系统的控制流验证方法,其特征在于,所述步骤3的对嵌入式裸机设备运行时程序动态路径的收集具体包含如下步骤:
步骤3.1、嵌入式裸机设备运行时动态路径收集的触发,根据步骤1.2中所述的认证隔间划分方案,同样利用编译器技术对每一个隔间内部的函数进行插桩,这样在函数间调用时候,将会触发一个SVC的异常,此时利用步骤2.2的递归哈希计算方式,逐步记录控制流,而控制流的内容将存储在MPU所划定的特殊区域中,受到保护;
步骤3.2、嵌入式裸机设备运行时动态路径收集结束后的上传,当认证隔间间需要进行跳转时,对步骤3.1所记录的递归控制流哈希h利用内置的密钥k进行签加,计算得到签名值r生成报告Auth。
6.根据权利要求1所述的一种针对嵌入式裸机系统的控制流验证方法,其特征在于,所述步骤4的动态路径的检验具体包含如下步骤:
步骤4.1、签名解密,验证端从证明端接收报告Auth,它利用已知的密钥k对Auth进行解密,验证签名值r并分解出哈希值h;
步骤4.2、将哈希值h与步骤2.2中得到的可信路径集进行比较,如果能够匹配,则说明此次运行没有遭受到控制流的攻击,否则此次运行可能遭受了控制流的攻击,完整性被破坏。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011253939.0/1.html,转载请声明来源钻瓜专利网。