一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种可信计算软件完整性度量系统和方法与流程

2022-02-20 07:08:03 来源:中国专利 TAG:


1.本发明涉及计算机主动防御技术,特别是涉及一种可信计算软件完整性度量方法。


背景技术:

2.计算机安全技术主要有被动防御与主动防御,针对日趋严峻的计算机安全形势,被动防御存在漏洞库更新滞后,难以取得良好的防护效果;而主动防御可以有效解决该问题,在主动防御中,软件完整性度量可以有效阻止不可信软件在系统中执行。
3.常见的软件完整性度量方法有:1.度量软件占用cpu的一个core,在桌面环境中cpu的core数量比较少,会极大的损耗系统性能;2.外接度量硬件设备,这会增加硬件成本;3.度量时需要频繁计算应用软件、动态库文件等完整性,需要占用非常多的cpu计算资源。
4.但上述方法往往存在占据cpu的缺陷,使得这样的防御方式很大程度上影响系统的性能。


技术实现要素:

5.基于此,有必要针对上述问题,提供一种可信计算软件完整性度量系统和方法。本发明主要基于tee及linux系统(包括国产linux系统)提供软件完整性度量的方法,且不独占cpu核,对系统性能影响极低。
6.一种可信计算软件完整性度量方法,所用的软件度量系统构成包括以下模块:度量对象、系统内核、安全固件和安全硬件,依次对应于用户态、内核态、安全态和可信根;其中,
7.度量对象:被度量的对象是指的ree系统启动后,用户及其他软件需要运行或加载的可执行程序、动态库、内核模块
8.tee-ca:tee的用户应用,也是被度量对象之一,提供白名单初始化、用户态白名单访问相关接口
9.系统内核包括lsm、度量模块和tee内核驱动;lsm:linux安全模块,当被度量对象需要运行或加载时,会触发对应的lsm hook;度量模块:实施度量的内核模块,注册了lsm hook;tee内核驱动:提供ree访问tee功能支持。
10.安全固件包括tee;tee:可信执行环境,工作在cpu的安全态,安全保存数据,提供度量值验证;
11.安全硬件包括tcm;tcm:安全硬件,提供可信根;
12.一种可信计算软件完整性度量方法,本方法的流程如下。
13.第一步,tee/ree系统启动;(1)启动时会加载tee内核驱动以及度量模块;(2)启动完成后,tee-ta加载白名单以及白名单状态,此时若白名单未初始化,tee-ta会通知tee-ca,此时ca会进行白名单初始化;(3)初始化完成之后,即可进行正常的软件完整性度量;(4)当不可信软件尝试加载或允许时,其hash值不在白名单中,度量失败;若添加到白名单
的软件被篡改,其hash值会变化,度量失败度量失败时lsm会返回失败,此时内核会拦截软件,不允许加载或运行。
14.第二步,软件白名单初始化;(1)白名单为文件sm3 hash值,存储在tee文件中,同时tee在文件中存储了初始化标记;
15.(2)当tee-ta运行时检查初始化标记,若未初始化,度量模块、tee-ca访问接口时都会通知白名单未初始化;
16.(3)未初始化时,度量模块会默认返回度量成功;而tee-ca会自动启动初始化;
17.①
此时设备应该处于安全可控环境中,如厂家生产线等;
18.②
tee-ca会根据既定的os文件系统结构,启动多个扫描进程,并行扫描文件系统目录;
19.③
扫描目录时,解析文件属性,查找目标类型的文件:elf文件、脚本文件、有可执行权限的文件;
20.④
找到目标类型的文件后,调用openssl接口计算文件的sm3 hash;
21.⑤
tee-ca将hash通过tee-ta提供的接口添加到白名单中;
22.⑥
扫描完成后,tee-ta更新白名单初始化标记,并存储到文件中,该标记只可从未初始化变为初始化;
23.(4)白名单初始化完成后,系统即处于可信保护状态。
24.白名单数据通过tee加密保存在ree的文件系统中,仅tee可以解密访问;
25.第三步,tee元数据保护;
26.(1)tee的元数据中加密存储了白名单初始化标记、白名单属性等关键数据;(而os管理员用户可以删除该文件,因此必须对该文件进行保护);
27.(2)度量模块与tee约定元数据文件的路径;
28.(3)度量模块注册lsm inode_unlink hook,当存在文件删除操作时,比对文件路径,若路径为tee元数据文件,则返回无权限;
29.(4)通过这种方式,任何用户(包括root)都无法删除元数据文件,而tee可以修改;ree篡改元数据文件会导元数据损坏,度量模块将拦截所有软件以保护用户数据;
30.第四步,软件完整性度量;(1)tee不独占cpu核,仅在需要更新白名单数据或者度量模块调用白名单验证服务时,度量模块会调用tee内核驱动,此时内核会通过smc指令进入到安全态,将cpu核的权限转交给tee;
31.(2)度量模块注册了lsm hook:bprm_check_security、mmap_file、kernel_module_request、kernel_read_file、kernel_load_data;
32.(3)当有软件需要运行或加载时,会触发lsm相关hook调用度量模块对软件进行度量,度量模块计算软件的hash值,并调用tee的内核驱动接口验证该hash是否这白名单中;
33.(4)若验证失败,则移除软件可信标记,禁止软件运行,通知用户无权限;
34.(5)若验证通过,则标记软件为可信,标记中保存本次成功度量的时间戳,下次度量时,若可信标记及其时间戳有效,则允许运行;
35.(6)可信标记存储于文件的security xattr中,若进行写软件文件操作,内核度量模块移除该软件可信标记,再允许用户写文件;
36.(7)可信标记保护通过file_permission、inode_permission两个lsm hook进行,
若有文件写操作时,度量模块会移除可信标记;
37.(8)通过可信标记及其时间戳机制,在有效时间内软件不会重复度量,极大的降低了hash计算的工作量,在性能损失极低的情况下,同时又保证了系统安全性;
38.通过使用本方法,可以达到以上优点:
39.①
通过tee元数据保护,确保白名单初始化不可逆。
40.②
不占用cpu核,只在需要度量时运行tee,性能损耗低;
41.③
通过可信标记,无需频繁的计算文件hash,进一步降低cpu性能损耗,保护了可信标记,管理员用户无法修改,保证了可信标记的安全性。
附图说明
42.图1为软件度量系统构成示意图;
43.图2为软件完整度量流程示意图;
44.图3为软件完整性度量具体流程示意图。
具体实施方式
45.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本发明的公开内容理解的更加透彻全面。
46.一种可信计算软件完整性度量方法,所用的软件度量系统构成包括以下模块:度量对象、系统内核、安全固件和安全硬件,依次对应于用户态、内核态、安全态和可信根;其中,
47.度量对象:被度量的对象是指的ree系统启动后,用户及其他软件需要运行或加载的可执行程序、动态库、内核模块;
48.tee-ca:tee的用户应用,也是被度量对象之一,提供白名单初始化、用户态白名单访问相关接口;
49.系统内核包括lsm、度量模块和tee内核驱动;lsm:linux安全模块,当被度量对象需要运行或加载时,会触发对应的lsm hook;度量模块:实施度量的内核模块,注册了lsm hook;tee内核驱动:提供ree访问tee功能支持。
50.安全固件包括tee;tee:可信执行环境,工作在cpu的安全态,安全保存数据,提供度量值验证;
51.安全硬件包括tcm;tcm:安全硬件,提供可信根;
52.一种可信计算软件完整性度量方法,本方法的流程如下。
53.第一步,tee/ree系统启动;(1)启动时会加载tee内核驱动以及度量模块;(2)启动完成后,tee-ta加载白名单以及白名单状态,此时若白名单未初始化,tee-ta会通知tee-ca,此时ca会进行白名单初始化;(3)初始化完成之后,即可进行正常的软件完整性度量;(4)当不可信软件尝试加载或允许时,其hash值不在白名单中,度量失败;若添加到白名单的软件被篡改,其hash值会变化,度量失败度量失败时lsm会返回失败,此时内核会拦截软件,不允许加载或运行。
54.第二步,软件白名单初始化;(1)白名单为文件sm3 hash值,存储在tee文件中,同时tee在文件中存储了初始化标记;
55.(2)当tee-ta运行时检查初始化标记,若未初始化,度量模块、tee-ca访问接口时都会通知白名单未初始化;
56.(3)未初始化时,度量模块会默认返回度量成功;而tee-ca会自动启动初始化:
57.①
此时设备应该处于安全可控环境中,如厂家生产线等;
58.②
tee-ca会根据既定的os文件系统结构,启动多个扫描进程,并行扫描文件系统目录;
59.③
扫描目录时,解析文件属性,查找目标类型的文件:elf文件、脚本文件、有可执行权限的文件;
60.④
找到目标类型的文件后,调用openssl接口计算文件的sm3 hash;
61.⑤
tee-ca将hash通过tee-ta提供的接口添加到白名单中;
62.⑥
扫描完成后,tee-ta更新白名单初始化标记,并存储到文件中,该标记只可从未初始化变为初始化;
63.(4)白名单初始化完成后,系统即处于可信保护状态。
64.白名单数据通过tee加密保存在ree的文件系统中,仅tee可以解密访问;
65.第三步,tee元数据保护;
66.(1)tee的元数据中加密存储了白名单初始化标记、白名单属性等关键数据;(而os管理员用户可以删除该文件,因此必须对该文件进行保护);
67.(2)度量模块与tee约定元数据文件的路径;
68.(3)度量模块注册lsm inode_unlink hook,当存在文件删除操作时,比对文件路径,若路径为tee元数据文件,则返回无权限;
69.(4)通过这种方式,任何用户(包括root)都无法删除元数据文件,而tee可以修改;ree篡改元数据文件会导元数据损坏,度量模块将拦截所有软件以保护用户数据;
70.因此,通过tee元数据保护,确保白名单初始化不可逆。
71.如图3所示,第四步,软件完整性度量;(1)tee不独占cpu核,仅在需要更新白名单数据或者度量模块调用白名单验证服务时,度量模块会调用tee内核驱动,此时内核会通过smc指令进入到安全态,将cpu核的权限转交给tee;
72.(2)度量模块注册了lsm hook:bprm_check_security、mmap_file、kernel_module_request、kernel_read_file、kernel_load_data;
73.(3)当有软件需要运行或加载时,会触发lsm相关hook调用度量模块对软件进行度量,度量模块计算软件的hash值,并调用tee的内核驱动接口验证该hash是否这白名单中;
74.(4)若验证失败,则移除软件可信标记,禁止软件运行,通知用户无权限;
75.(5)若验证通过,则标记软件为可信,标记中保存本次成功度量的时间戳,下次度量时,若可信标记及其时间戳有效,则允许运行;
76.(6)可信标记存储于文件的security xattr中,若进行写软件文件操作,内核度量模块移除该软件可信标记,再允许用户写文件;
77.(7)可信标记保护通过file_permission、inode_permission两个lsm hook进行,若有文件写操作时,度量模块会移除可信标记;
78.(8)通过可信标记及其时间戳机制,在有效时间内软件不会重复度量,极大的降低了hash计算的工作量,在性能损失极低的情况下,同时又保证了系统安全性;
79.通过使用本方法,可以达到以上优点:
80.①
不占用cpu核,只在需要度量时运行tee,性能损耗低;
81.②
通过可信标记,无需频繁的计算文件hash,进一步降低cpu性能损耗,保护了可信标记,管理员用户无法修改,保证了可信标记的安全性。
82.具体工作原理如下:当有软件启动、动态库加载或者内核模块加载时,会触发lsm相关hook调用度量模块对软件进行度量,主要度量文件可信标记,若该可信标记为有效,则允许加载或运行,若该可信标记为无效的,则度量模块开始计算文件的hash值,调用tee的内核驱动接口验证该hash是否这白名单中,如果是在白名单中,则度量模块更新文件完整性标记,如果不在这白名单中,则禁止运行或加载。
83.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献