一种基于TPM的Linux内核初始化中的数据结构保护方法及系统技术方案

技术编号:8533349 阅读:278 留言:0更新日期:2013-04-04 16:40
本发明专利技术提供了一种基于TPM的Linux内核初始化中的数据结构保护方法及系统,通过对Linux内核镜像本身以及Linux内核初始化过程中加载的内核页表、GDT表、IDT表(包含系统调用表)进行了基于TPM的可信验证、可信数据绑定、可信数字签名等保护操作,避免了一些常见的RootKit对Linux内核在初始化过程中加载的机会,非常适合Linux内核的可信初始化以及当前云计算环境下虚拟机的可信初始化,对于构造可信云平台具有重要的实际意义,具有良好的市场前景和应用价值。

【技术实现步骤摘要】

本专利技术涉及可信操作系统内核,特别涉及一种基于TPM的Linux内核初始化中的 数据结构保护方法及系统。
技术介绍
在云计算模式下,Linux操作系统以镜像的形式在客服端为用户提供了大量的服 务,但与此同时,Linux内核本身的关键数据结构比以往更多的受到恶意RootKit的攻击, 并且这些RootKit本身具有隐蔽性、持续性、简洁性,所以,检查和彻底清除这些RootKit将 更加困难。Linux操作系统本身为了正常的工作,Linux内核必须跟踪几千个对象,这些对象 本身以队列,链表,树等数据结构错综复杂的交织在一起,其中有大量的表格存储了这些对 象的一些固定属性,因此,对于RootKit的攻击者来说,修改Linux内核中这些表格及组织 这些表格的数据结构是比较经常的选择,而要对这些数据结构进行修改的主要手段有I)通过可加载Linux内核模块机制LKM的方式进入Linux内核对关键数据结构进 行修改;2)将中断描述符表IDT中已经注册的中断响应函数替换为恶意的RootKit Jnkad 提出工具方法、窃听个人银行密码信息的击键记录程序属于此类。作为IDT的一种特殊形 式系统调用表system call table也是Linux内核级RootKit攻击的主要手段,这种类型 的 RootKit 典型代表是 knark、lvtes、override ;3)通过调用门技术进入Linux内核修改用于保存描述内存区域的地址和特权的 段描述符的全局描述符表GDT或局部描述符表LDT ;4)对动态库、模块、可执行程序注入恶意代码,如tOrn是这类程序的典型代表。针对4)的攻击手段,已有专利已经很好的解决。针对上述1)、2)、3)对Linux内 核数据结构的主要攻击手段,当前已有的检测工具有kern_check、checkidt和StMichael, 这些检测工具的共同特性是对文件的完整性进行检查,检测的时候通过比较文件的当前信 息和保存的基准信息,如果不匹配说明攻击发生。这些检测工具存在的弊端是实时性差,工 具本身的代码量庞大,对于运行时恶意代码注入或动态修改数据结构不能及时发现,且所 有的检测都是基于软件,也不利于防止重放攻击。
技术实现思路
本专利技术的目的是提供一种基于TPM的Linux内核初始化中的数据结构保护方法 及系统,动态保护了 Linux内核在初始化阶段的完整性,有效阻止了各种攻击手段,并动态 保护了 Linux内核在初始化阶段页表、IDT表、⑶T表的完整性。为此,本专利技术提供了一种基于TPM的Linux内核初始化中的数据结构保护方法,其 特征在于,包括步骤1,在启动加载器后计算Linux内核的完整性度量值记为 Kernel-1ntegrity-Valuel ;步骤2,对所述Kernel-1ntegrity-Valuel进行数字签名并初始化数据结构记为 Loader_Secure_Data ;步骤3,将所述Loader_Secure_Data发送到Linux内核中;步骤4,认证Linux内核的完整性,并对Linux内核进行解压缩;步骤5,分别对首次初始化页表、初始化GDT表、初始化IDT表进行基于TPM的数据绑定操作;步骤6,分别对第二次初始化页表、读取GDT表、第二次初始化IDT表进行基于TPM 的数据解除绑定操作。所述步骤I包括步骤11,使用TPM的随机数产生器产生一个随机数记为Loader-Random-Valuel ;步骤12,把Linux内核加载到内存,用BIOS中断的方法调用TPM的SHA-1弓丨擎计算Linux内核的度量值记为Loader-Measure-Valuel,使用TPM扩展功能将该 Loader-Measure-valuel扩展到PCR寄存器中,使用TPM读取功能将该PCR寄存器的内容读到内存变量中记为Mem_PcrValue ;步骤13,使用 SHA-1 算法计算 Loader-Random-Valuel 和 Mem_PcrValue 的连接后的度量值,得到Kernel-1ntegrity-Valuel并将其存储在内存变量中。所述步骤2包括步骤21,使用TPM的RSA引擎产生一个公钥记为RSA_Pubkey和一个私钥记为RSA_ Prvikey ;步骤22,将签名操作后的结果保存在内存变量中记为 Signed-Kernel-1ntegrity-Valuel ; 步骤23, 定义所述Loader_Secure_Data, 其内包含 Signed-Kernel-1ntegrity-Valuel、RSA_Pubkey> Loader-Random-ValueI 三个域。所述步骤3包括步骤31,在Linux内核空间预先设置一个特殊的空间标志并记为 Integrity-Secure-Flag,在这个空间标志后定义一个大小为sizeof的数据结构;步骤32,采用内存扫描的方法查找到该Integrity-Secure-Flag后,将所述 Loader_Secure_Data 拷贝到所述 Integrity-Secure-Flag 后并记为 Kernel_Secure_data。所述步骤4包括步骤41,使用扫描内存的方法查找所述Integrity-Secure-Flag后,取出所述 Kernel_Secure_data ;步骤42,釆用BIOS中断的方法调用TPM的SHA-1引擎计算Linux内核的度量值记为 Kernel-Measure_Value2,然后使用 SHA-1 算法计算 SHA-1 ((Kernel— Secure—data 一 Loader-Random-ValueI)||Kernel-Measure_Value2)后的结果记为 Soft-Kerne1-Measure-Value2 ;步骤43,用所述 Kernel—Secure—data 的第二个域 Kernel—Secure—data — RSA— Pubkey 对 Kerne l_Secure_data 的第一个域 Kernel_Secure_data — Signed-Kernel-1ntegrity-Valuel 进行签名的认证后记为 Decrypted_Signed-Kernel_Integrity-Valuel ;步骤44,比较所述 Soft-Kernel-Measure_Value2 与所述 Decrypted_ Signed-Kernel-1ntegrity-Valuel是否一致,若一致,继续解压Iinux内核,若不一致,贝丨J停机。所述步骤5包括若Linux内核进入到初始化内核页表,则将页目录记为swapper_pg_dir采用TPM_ Bind绑定,绑定操作使用Kernel_Secure_data — RSA_Pubkey作为密钥;若Linux内核进入到初始化⑶T表,则将全局描述符记为gdt_table采用TPM_ Bind绑定,绑定操作使用作为Kernel_Secure_data — RSA_Pubkey作为密钥;若将中断描述表记为idt_table采用TPM_Bind绑定,则绑定操作使用Kernel_ Secure_data — RSA_Pubkey 作为密钥。所述步骤6具体包括若内核函数p本文档来自技高网
...

【技术保护点】
一种基于TPM的Linux内核初始化中的数据结构保护方法,其特征在于,包括:步骤1,在启动加载器后计算Linux内核的完整性度量值记为Kernel?Integrity?Value1;步骤2,对所述Kernel?Integrity?Value1进行数字签名并初始化数据结构记为Loader_Secure_Data;步骤3,将所述Loader_Secure_Data发送到Linux内核中;步骤4,认证Linux内核的完整性,并对Linux内核进行解压缩;步骤5,分别对首次初始化页表、初始化GDT表、初始化IDT表的进行基于TPM的数据绑定操作;步骤6,分别对第二次初始化页表、读取GDT表、第二次初始化IDT表进行基于TPM的数据解除绑定操作。

【技术特征摘要】
1.一种基于TPM的Linux内核初始化中的数据结构保护方法,其特征在于,包括 步骤1,在启动加载器后计算Linux内核的完整性度量值记为Kernel-1ntegrity-Valuel ; 步骤2,对所述Kernel-1ntegrity-Valuel进行数字签名并初始化数据结构记为Loader_Secure_Data ; 步骤3,将所述Loader_Secure_Data发送到Linux内核中; 步骤4,认证Linux内核的完整性,并对Linux内核进行解压缩; 步骤5,分别对首次初始化页表、初始化GDT表、初始化IDT表的进行基于TPM的数据绑定操作; 步骤6,分别对第二次初始化页表、读取GDT表、第二次初始化IDT表进行基于TPM的数据解除绑定操作。2.一种如权利要求1所述的数据结构保护方法,其特征在于,所述步骤I包括 步骤11,使用TPM的随机数产生器产生一个随机数记为Loader-Random-Valuel ; 步骤12,把Linux内核加载到内存,用BIOS中断的方法调用TPM的SHA-1引擎计算Linux内核的度量值记为Loader-Measure-Valuel,使用TPM扩展功能将该Loader-Measure-valuel扩展到PCR寄存器中,使用TPM读取功能将该PCR寄存器的内容读到内存变量中记为Mem_PcrValue ; 步骤13,使用SHA-1算法计算Loader-Random-Valuel和Mem_PcrValue的连接后的度量值,得到Kernel-1ntegrity-Valuel并将存储在内存变量中。3.—种如权利要求2所述的数据结构保护方法,其特征在于,所述步骤2包括 步骤21,使用TPM的RSA引擎产生一个公钥记为RSA_Pubkey和一个私钥记为RSA_Prvikey ; 步骤22,将签名操作后的结果保存在内存变量中记为Signed-Kernel-1ntegrity-Valuel ; 步骤23, 定义所述Loader_Secure_Data, 其内包含Signed-Kernel-1ntegrity-Valuel、RSA_Pubkey> Loader-Random-ValueI 三个域。4.一种如权利要求3所述的数据结构保护方法,其特征在于,所述步骤3包括 步骤31,在Linux内核空间预先设置一个特殊的空间标志并记为Integrity-Secure-Flag,在这个空间标志后定义一个大小为sizeof的数据结构; 步骤32,采用内存扫描的方法查找到该Integrity-Secure-Flag后,将所述Loader_Secure_Data 拷贝到所述 Integrity-Secure-Flag 后并记为 Kernel_Secure_data。5.一种如权利要求4所述的数据结构保护方法,其特征在于,所述步骤4包括 步骤41,使用扫描内存的方法查找所述Integrity-Secure-Flag后,取出所述Kernel_Secure_data ; 步骤42,采用BIOS中断的方法调用TPM的SHA-1引擎计算Linux内核的度量值记为 Kernel-Measure_Value2,然后使用 SHA-1 算法计算 SHA-1 ((Kerne1_Secure_data — Loader-Random-Valuel)||Kernel-Measure_Value2)后的结果记为Soft-Kerne1-Measure-Value2 ; 步骤 43,用所述 Kernel_Secure_data 的第二个域 Kernel_Secure_data — RSA_Pubkey对Kernel_Secure_data 的第一个域Kernel_Secure_data — Signed-Kernel-1ntegrity-VaIuel 进行签名的认证后的结果记为 Decrypted_Signed-Kernel_Integrity-Valuel ; 步骤 44,比较所述 Soft-Kernel-Measure_Value2 与所述 Decrypted_Signed-Kernel-1ntegrity-Valuel是否一致,若一致,继续解压Linux内核,若不一致,贝丨J停机。6.一种如权利要求5所述的数据结构保护方法,其特征在于,所述步骤5包括 若Linux内核进入到初始化内核页表,则将页目录记为swapper_pg_dir采用TPM_Bind绑定,绑定操作使用Kernel_Secure_data — RSA_Pubkey作为密钥; 若Linux内核进入到初始化⑶T表,则将全局描述符记为gdt_table采用TPM_Bind绑定,绑定操作使用Kernel_Secure_data — RSA_Pubkey作为密钥; 若将中断描述表记为idt_table采用TPM_Bind绑定,则绑定操作使用Kernel_Secure_data — RSA_Pubkey 作为密钥。7.—种如权利要求6所述的数据结构保护方法,其特征在于,所述步骤6具体包括 若内核函数paging_init()对所述swapper_pg_dir进行写操作,则先进行Bind_pg_data的解除绑定操作,解除绑定使用所述RSA_Pubkey作为解密密钥,若解除绑定操作错误,禁止对swapper_pg_dir的进一步初始化,系统岩机,否则继续初始化; 若内核函数 do_basic_setup O 中对 gdt_table 使用函数 get_cpu_gdt_table O 读取,则先进行Bind_gdt_data的解除绑定操作,解除绑定使用RSA_Pubkey作为解密密钥,若解除绑定操作错误,禁止获取gdt_table,系统宕机,否则继续初始化; 若内核函数trap_init O和init_IRQ()中对idt_table进行写操作,贝U先进行Bind_idt_data的解除绑定操作,解除绑定使用RSA_Pubkey作为解密密钥,若解除绑定操作错误,禁止对idt_table的进一步初始化,系统岩机,否则继续初始化。8.一种基于TPM的Linux内核初始化中的数据结构保护系统,其特征在于,包括 完整度量值计算模块,用于在启动加载器后计算Linux内核的完整性度...

【专利技术属性】
技术研发人员:薛栋梁高云伟杨鹏斐展旭升孙毓忠
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1