[发明专利]一种预链接机制下的动态链接库完整性度量方法有效
申请号: | 201510046876.4 | 申请日: | 2015-01-29 |
公开(公告)号: | CN104751048B | 公开(公告)日: | 2017-12-15 |
发明(设计)人: | 涂碧波;陈克;李艳昭;孟丹 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/51 | 分类号: | G06F21/51 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙)11200 | 代理人: | 司立彬 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 链接 机制 动态 完整性 度量 方法 | ||
技术领域
本发明涉及计算机操作系统完整性验证技术领域,具体涉及一种基于Linux系统预链接机制下的动态链接库完整性度量方法。
背景技术
随着计算机应用的普及,对计算机系统的完整性保护日益受到重视,出现了各种完整性保护的模型与实施方法。其中大部分都采取了度量的方法,即在某些特殊的时刻,对目标进行度量,得到目标的某些信息(通常是对文件内容的哈希值),将这些信息的值与事先记录的标准值进行比较,从而判断目标的完整性是否被破坏。目前在Linux系统中,保护完整性的方式基本采用度量的方法。例如Linux系统中安全模块中的IMA(Integrity Measurement Architecture),采用的就是先存储一些重要文件的正确哈希值,在需要使用这些文件之前先对其进行度量得到哈希值,然后与正确的哈希值比较,如果匹配成功就让其执行或使用,否则拒绝。
同时,在Linux系统中,为了减少程序的加载时间、缩短系统的启动时间,基本上都采用了Prelink机制,即预链接机制。Prelink的运行原理就是在程序的运行前就确定下来每个共享库文件在程序执行时在地址空间里的位置,包括每个函数的地址。但是使用了Prelink之后会对动态链接库的文件内容进行修改,并且每次对同一个动态链接库文件进行预链接的地址空间随机导致每次修改的结果不一样。这最终就导致了完整性度量方法不能适用于动态链接库文件。
目前针对这个问题主要有两种度量方法,第一种是不使用Prelink机制,将动态链接库也进行完整性度量,这样做的缺点是Linux系统中的程序启动时间加长;第二种是使用Prelink技术而不对动态链接库进行完整性度量,这样做的缺点是安全性能的降低,因为攻击者可以破坏或者替换系统中动态链接库而入侵系统。
发明内容
基于此,本发明提出了一种基于Linux系统预链接机制下动态链接库完整性度量方法,对动态库中的代码段进行完整性度量,因为预连接技术只会缓存符号表和函数地址而不会修改代码段的任何内容,同时大部分攻击者如果想通过篡改动态链接库内容达到入侵系统的目的也是篡改动态链接库中的代码段,让系统执行代码段中插入的恶意代码。因此本方法有效解决了传统Linux中度量方法的缺陷,能够在验证Linux动态链接库完整性同时也能进行预链接减少系统和程序的启动时间。
本发明的技术方案为:
一种预链接机制下的动态链接库完整性度量方法,其步骤为:
1)关闭Linux的完整性度量使能开关,进入Linux系统完整性维护模式,登录root用户,进行完整性度量基准值的生成和更新。通过用户层的度量工具,对系统中的所有满足度量策略的文件进行度量。其中度量策略可以是系统默认的也可以由系统管理员进行配置。
2)对于需要度量的文件,获取其绝对路径,打开文件获得其file结构体(文件结构体)。由于Linux系统中的动态链接库都是标准的ELF文件,则可通过判断ELF文件头结构中的魔数(magic)是否为7f454c46和类型(type)是否为ET_DYN来决定该文件是否为动态链接库文件。
3)如果步骤(2)中判断为非动态链接库文件,则将哈希函数中的偏移位置(offset)与长度(size)分别设置为0和文件长度,并跳到步骤(5);如果判断为动态链接库文件,则对ELF文件中段描述符进行解析,获取动态链接库文件中代码段在文件中的偏移位置(offset)和长度(size)。
4)将步骤(3)所得的偏移位置(offset)与长度(size)作为参数传递给哈希函数。
5)哈希函数根据传来的偏移位置(offset)与长度(size)两个参数进行哈希计算获得度量值,并将度量值存储起来作为该文件的度量基准值。
6)开启Linux的完整性度量使能开关,进入Linux系统完整性验证模式。在Linux内核启动过程中,会对完整性度量模块进行初始化。初始化的主要工作内容为初始化一些数据结构。
7)当系统需要加载使用一个文件时,首先经过度量策略的分析,如果分析结果是不需要度量则直接加载运行,不执行度量模块,否则进行度量。
8)获取需要度量文件的inode结构体(索引节点对象),按照ELF文件格式读出其ELF文件头结构,并比较文件头中的魔数(magic)是否为7f454c46和类型(type)是否为ET_DYN来决定该文件是否为动态链接库文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510046876.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种信息的处理方法及装置
- 下一篇:动态口令身份认证系统及方法