【技术实现步骤摘要】
本专利技术涉及可信操作系统内核,特别涉及一种基于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 ...
【技术保护点】
一种基于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内核的完整性度...
【专利技术属性】
技术研发人员:薛栋梁,高云伟,杨鹏斐,展旭升,孙毓忠,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。