动态度量 linux,扩展Linux完整性度量IMA/EVM到Android

1. 完整性度量概述

运行时的系统完整性由系统的访问控制机制保证,如DAC(Discrete Access Control, 间接访问控制)/MAC(Mandatory Access Control, 强制访问控制,如SELinux, Smack)。

DAC/MAC无法检测文件的离线修改;加密文件系统可以保护非法访问,但开销大,效率相对较低。

完整性度量,将文件内容和文件的属性/扩展属性,通过加密哈希生成对应的ima/evm串,以扩展属性方式保存在文件系统节点中;系统运行时在文件被访问前,内核IMA/EVM模块通过校验文件的ima/evm串,判断文件是否被离线非法篡改过;如果有,返回非法结果给selinux,从而阻止访问或运行该文件。

Linux的完整性子系统(引自Dmitry的PPT):

动态度量 linux,扩展Linux完整性度量IMA/EVM到Android_第1张图片

IMA

对文件内容做加密哈希(HMAC),将结果存在文件的扩展属性security.ima,并以此校验文件内容是否被非法篡改过。

创建并自动更新一个所有被访问文件的完整性度量表(/sys/kernel/security/ima/ascii_runtime_measurements),远程或本地读取该表可以判断哪些文件被改过。

如果系统中有TPM硬件模块,IMA会将度量表扩展到TPM中,以保证度量表本身无法被篡改。

支持本地评估(IMA Appraisal),即系统运行时在文件被访问前,内核IMA模块通过校验文件的ima串,判断文件是否被离线篡改过。

EVM

EVM用来检测文件的属性(ino/uid/gid/mode)/扩展属性(security.ima/selinux/smack64)是否被离线篡改过。

被保护的

你可能感兴趣的:(动态度量,linux)