[发明专利]一种基于Merkle树的Linux程序运行时验证与管控方法和系统有效
申请号: | 201811488026.X | 申请日: | 2018-12-06 |
公开(公告)号: | CN109766688B | 公开(公告)日: | 2021-05-18 |
发明(设计)人: | 吕志宁;宁柏锋;罗伟峰;刘威;邓巍;秦宇;初晓博;赵世军;冯伟;习伟;匡晓云;姚浩;于杨 | 申请(专利权)人: | 深圳供电局有限公司;中国科学院软件研究所;南方电网科学研究院有限责任公司 |
主分类号: | G06F21/51 | 分类号: | G06F21/51;G06F21/57;H04L9/32 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 邱晓锋 |
地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 merkle linux 程序 运行 验证 方法 系统 | ||
1.一种基于Merkle树的Linux程序运行时验证与管控方法,其步骤包括:
1)将Linux应用程序划分为与内存分页相同大小的分段,并以每个分段为叶子节点,为该应用程序的代码段生成Merkle哈希树的所有非叶子节点;
2)基于所述Merkle哈希树,将程序度量时机从可执行程序文件启动时推后至可执行程序文件实际载入内存时;
3)基于所述Merkle哈希树,将程序度量对象从可执行程序文件整体转化为真正需要载入内存的程序片段;
所述基于Merkle树的Linux程序运行时验证与管控方法包括准备阶段、系统引导阶段和系统运行阶段;
所述准备阶段包括:
a)计算机设备厂商、Linux操作系统厂商和应用程序厂商共同定义一个需要保护的程序集合,标记为TA={ta1,ta2,...,taN},其中tai表示一个程序,i=1,2,…N,另外协商一套公开的密码学参数;
b)计算机设备厂商根据步骤a)中的公开密码学参数,生成一个非对称密钥对PKC,SKC;使用支持UEFI接口的固件作为整机第一个启动设备,并在其中内置PKC,SKC的公钥部分PKC;
c)应用程序厂商生成应用程序时,在程序中增加一个扩展属性段,并在该扩展属性段中增加一个标记,标记该程序是否属于TA;对TA中的每个程序,将其划分为与系统内存分页相同大小的分段,然后以每个分段为叶子节点,为该应用程序的代码段生成Merkle哈希树的所有非叶子节点;
d)Linux操作系统厂商根据步骤a)中的公开密码学参数,生成一个非对称密钥对PKL,SKL;
e)Linux操作系统厂商利用SKL为上述应用程序的Merkle哈希树的根节点生成数字签名,以标识为tai的根节点为ROOTi为例,生成SigSKL(ROOTi);
f)Linux操作系统厂商在生成Linux操作系统镜像时,将TA中所有程序ta的数字签名SigSKL(ROOTi)以及Merkle树节点统一存储到内核文件系统的“签名区”;
g)Linux操作系统厂商在操作系统文件系统原有的inode节点数据结构中增加一个布尔型变量ta,用于记录程序是否为TA中的程序,对非TA中程序,ta==0,对TA中程序,ta==1;
h)Linux操作系统厂商在操作系统内核原有的内存映射mmap()系统调用中,增加对程序是否为TA中程序的判断逻辑;
i)Linux操作系统厂商在操作系统内核原有的缺页异常处理程序中,增加程序片段度量与验证逻辑;
j)计算机设备厂商利用SKC,为Linux操作系统厂商所提供的内核进行数字签名,得到SigSKC(KERNEL)。
2.如权利要求1所述的方法,其特征在于,所述系统引导阶段包括:在计算机系统启动时,在系统启动固件中内置数字签名和签名验证算法程序以及操作系统镜像验证程序,形成安全启动固件,对Linux操作系统内核镜像的数字签名进行验证,以安全方式启动操作系统内核以及系统应用程序,保证内核以及系统应用程序的可信性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳供电局有限公司;中国科学院软件研究所;南方电网科学研究院有限责任公司,未经深圳供电局有限公司;中国科学院软件研究所;南方电网科学研究院有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811488026.X/1.html,转载请声明来源钻瓜专利网。