一. 背景
可信计算场景下,证明一个系统是否可信的信息由系统自身产生,验证方需要判断系统哪一部分给出的答案才是值得相信的。返回可信信息的程序本身,以及运行这些程序的BIOS、内核,都是不可信的,因为它们都可能被篡改。
2004年,IBM在第13届 USENIX Security Symposium上发表论文《Design and Implementation of a TCG-based Integrity Measurement Architecture》,第一次提出了IMA(全称 Integrity Measurement Architecture,完整性度量架构)的概念。IMA将验证可信的重点放在了软件运行栈的完整性状态,而不是传统的基于数字签名做验证。
IMA作用下,所有加载进Linux系统的可执行文件,在执行前都要被度量,并且度量结果受TPM保护。IMA的加入,成功将TCG的可信度量从BIOS扩展到了应用层。
二. IMA简介
2.1
IMA的功能
1. 收集:在访问文件前对文件进行度量,计算文件的哈希值。
2. 存储:将度量结果存储到内核维护的度量列表中。
3. 证明:如果存在TPM,使用TPM密钥对IMA PCR签名,实现远程证明。
4. 评估:度量文件,并与一个存储在扩展属性中的参考值做比较,控制对本地文件的访问。
5. 保护:保护文件的安全扩展属性,防止离线攻击。
6. 审计:将度量结果写到系统日志中,用于审计。
保护的功能需要用到EVM(Extended Verification Module,扩展验证模块)。EVM能够检测到文件安全扩展属性的纂改,防止针对安全扩展属性的离线攻击。EVM利用一系列安全扩展属性计算HMAC-sha1哈希值,存为”security.evm“,后续在访问文件时利用该属性做验签操作,检测篡改。
2.2
IMA组件
1. IMA-measurement:内核完整性子系统的组件之一,提供度量能力。维护完整性度量列表,用于远程证明。
2. IMA-appraisal:提供评估能力,对本地文件进行完整性校验。对文件进行度量,并与一个存储在安全扩展属性”security.ima“中的参考值作比较,如果值不一致则拒绝访问。扩展了“安全引导”的概念,在允许系统访问文件前验证文件的完整性。
3. IMA-audit:提供审计能力。将文件度量值写入系统审计日志中,便于后续的分析。
度量和评估不同:度量只记录当前的状态,不会影响文件的使用。而评估会在发现文件度量值不一样的时候,拦截对文件的访问。
2.3
与TPM结合使用
在设备配备TPM的情况下,IMA在计算出文件度量结果后,可以将结果扩展到TPM的IMA PCR中。扩展是单向的hash操作,结合TPM的硬件安全性,使得存入到TPM PCR中的值不可被篡改,保证了度量结果的真实性。此后该结果可以用在远程证明中。
远程证明的目的是将硬件平台的可信传递到网络环境中。为了实现这个目标,TPM芯片在需要的时候,要能够对外证明当前设备和运行状态的完整性。
图1 ”挑战-应答“协议
远程证明的协议过程如图1。该协议称为”挑战-应答“协议。
挑战者(验证者V)向证明者(示证者A)发送一个挑战证明的消息以及一个随机数nonce。该随机数的存在可以防止重放攻击。
证明者把经过身份密钥或签名密钥加签的PCR结果、度量日志以及随机数返回给挑战者。挑战者拿到返回后,先用公钥对PCR值进行验签,验签通过后,将度量日志的每一项与预期值进行对比,以此判断平台是否可信。
在远程证明过程中,TPM可以对IMA PCR加签,将结果与内核中的度量列表一起发送给对方,以此验证平台的运行时完整性。
图2 基于TPM的完整性度量
图2展示了在TPM硬件基础上实现的完整性度量,以及基于该架构实现远程证明的过程。
度量代理(Measurement Agents)对文件做度量,获取度量值,将结果存入内核中的度量列表中,同时将结果存入TPM的PCR中。
挑战者向平台上的证明服务发起完整性挑战,请求获取度量列表和TPM签名的度量列表摘要。
证明服务接收到请求后,从TPM中取出TPM加签的摘要,以及内核中的度量列表,一起返回给挑战者。
挑战者利用返回的度量结果,验证当前平台的运行时完整性,确认是否可信。
三. IMA的局限性
IMA依赖在系统调用上加入钩子。只有当指定系统调用(如execve,open)触发的时候,才会进入到IMA完整性计算步骤。因此,在文件被加载到系统并运行前,恶意攻击者仍有机会实现篡改。在引入EVM后,这部分攻击可以被阻止。
完整性度量功能只对文件的状态做记录,而不做任何拦截。在仅启用该功能的情况下,无法有效得阻止攻击的发生,获取到文件写权限的攻击者完全可以篡改文件内容。只有当度量结果被报告并被检测到异常时,才能对当前系统上的未授权修改做出响应。
评估功能让文件加载前,文件的完整性被校验,能够有效拦截针对文件的修改导致的错误或者恶意代码执行。但是并不能阻止离线攻击(攻击者可以将硬盘取下,到其他设备上修改后,在重新装载)。这就导致有可能发生文件恶意修改,反向利用IMA评估阻止某些程序的运行,影响系统正常功能。
为了加强保护,可以结合硬盘加密。在硬盘被加密的情况下,即使攻击者通过物理方式接触到了硬盘,由于无法获取密钥解密硬盘,也就无法对其中的内容做针对性修改。
总体而言,IMA是针对可信计算完整性检测的一个增强安全能力,但为了确保足够的安全,配合使用其他安全策略是很有必要的。
四. 总结
IMA作为内核完整性子系统的一部分,强化了操作系统的运行时安全。未来,随着安全威胁的不断演变,IMA 将在抵御供应链攻击、保护固件安全、增强勒索软件防护、物联网安全、云安全、可信计算等领域发挥越来越重要的作用。
参考文献
https://sourceforge.net/p/linux-ima/wiki/Home/#features
Sailer, Reiner & Zhang, Xiaolan & Jaeger, Trent & van Doorn, Leendert. (2004). Design and Implementation of a TCG-based Integrity Measurement Architecture.. 223-238.
内容编辑:创新研究院 杨博杰
责任编辑:创新研究院 陈佛忠
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。
关于我们
绿盟科技研究通讯由绿盟科技创新研究院负责运营,绿盟科技创新研究院是绿盟科技的前沿技术研究部门,包括星云实验室、天枢实验室和孵化中心。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。
绿盟科技创新研究院作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。
我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。
长按上方二维码,即可关注我