完整性度量架构(IMA)介绍与分析

前言: 2004年,IBM在13th USENIXSecurity Symposium上发表文章《Design and Implementation of a TCG-based Integrity MeasurementArchitecture》,第一次提出了IMA架构。该架构通过在内核中进行patch,实现当应用程序运行、动态链接库加载、内核模块加载时,将用到的代码和关键数据(如配置文件和结构化数据)做一次度量,将度量结果扩展到PCR10,并创建与维护一个度量列表ML。当挑战者发起挑战时,将度量列表与TPM签名的PCR度量值发送给挑战者,以此来判断平台是否可信。

第1章           完整性度量介绍

可信计算的实现方案依赖于TPM。TPM拥有三个可信根:

1)可信度量根:负责对平台进行度量;

2)可信存储根:负责密钥等的存储;

3)可信报告根:将度量的结果与日志反馈给挑战者,挑战者在收到度量结果与度量日志后可进行重新计算并与预期做对比,进而验证平台是否可信。

可信计算方案的一个重要环节就是对系统平台进行完整性度量,从系统启动开始,对BIOS、grub、kernel以及操作系统启动后的应用程序等均需进行度量。TPM中使用PCR(Platform Configure Register)对度量结果进行记录。

PCR主要操作有两种:重置与扩展。在系统上电时对24个PCR(TPM1.2版本)进行清零,此后每次度量结果的存储均依靠扩展运算SHA1(PCR|| new measurement)实现,同时将度量的文件名称、路径以及度量结果存入度量日志/列表(Measurement Log/List)这样从理论上来说,PCR能够度量无限次,但会导致ML过大。

第2章           IMA的三个机制

2.1           Measurement Mechanism

IMA的度量机制依靠TPM的PCR(重置与扩展)完成,每个PCR有160bit,IMA采用的是PCR10,其运算如下:

SHA1(..SHA1(SHA1(0|| m1)|| m2)..|| mi)

TPM的PCR寄存器只支持重置与扩展,因此恶意代码无法进行“任意”的篡改。而在执行恶意操作前,系统已经将恶意代码的度量值写入到PCR中,因此恶意代码是无法绕过度量机制的。

2.2           Integrity Challenge Mechanism

2.2.1       Integrity Challenge Protocol(文中提出的)

完整性挑战协议:

用于挑战者与平台之间传输数据,最主要的数据就是ML和TPM Aggregate,该协议通过TPM和密码学理论保证传输的数据是机密的、完整的。该协议号称能够阻止:1)重放攻击;2)篡改攻击;3)假面攻击。

目前该部分现在通常称为“远程证实”。

远程证实包括两种方式:1)隐私签证机构PCA;2)直接匿名认证DAA。比较让人不太理解的是,文章中并没有提到PCA或者DAA,也许是由于文章行文时间较早,还没有考虑相关问题。

完整性挑战协议时序:(C为挑战者,AS:为证实服务端)

C :create non-predictable 160bit nonce
2. C → AS : ChReq(nonce)
3a. AS : load protected AIKpriv into TPM
3b. AS : retrieve Quote = sig{P CR, nonce}AIKpriv
3c. AS : retrieve Measurement List ML
4. AS → C: ChRes(Quote, ML)
5a. C : determine trusted cert(AIKpub)
5b. C : validate sig{P CR, nonce}AIKpriv
5c. C : validate nonce and ML using P CR

2.2.2       远程证实

在IMA能够对应用程序运行时加载的模块、动态链接库及程序本身进行度量,以及TPM能够实现可信启动(将平台上电到操作系统启动进行度量并写入度量日志)的条件下,挑战者由远程挑战平台是否可信的过程称为远程证实。TCG对远程证实提供两种方案,一种借助隐私签证机构PCA(Privacy CA),通过PCA对TPM身份验证、颁发证书AIK,并且对网内的TPM密钥管理分发、注销等等,然而,由于TCG组织假定PCA为完全可信的第三方,在PCA与平台串通后,挑战者无法知道挑战的平台是否已经被篡改,PCA与挑战者串通后,远程证实也失去存在的意义。另一种做法称为直接匿名认证(DAA),根据零知识证明技术进行TPM身份的认证。

远程证实流程:

1)平台向PCA申请AIK证书

2)PCA颁发AIK证书

3)平台响应挑战者

2.3           Integrity Validation Mechanism

挑战者通过完整性挑战协议获得了平台的TPM Aggregate和ML,可以实施很多策略来验证平台的信息是否可信。如通过与可信的度量值进行比较,就是一种最简单的验证策略。

更复杂的验证策略包括:多测量值评估等。

新的程序版本、未知程序、修改后的恶意程序都会产生未知指纹,位置指纹会被挑战者发现,从而判断该平台不可信。

第3章           原型实现

1)实验环境:

在Redhat 9.0基础上基于LSM实现,内核版本为2.6.5。

2)时间效率:

采用度量缓存技术,缓存命中率为99.9%,因此总的开销非常小。

3)防绕过安全措施:

1)加入检查点来防止文件系统的卸载后篡改;

2)度量失败会直接使TPMAggregate无效化;

3)利用度量计数器来防止ToC-ToU攻击;

4)利用busy lock防止sysfs文件系统被卸载;

5)加入检查点来防止篡改dirtyflag。

时间: 2024-08-29 15:55:55

完整性度量架构(IMA)介绍与分析的相关文章

扩展Linux完整性度量IMA/EVM到Android

1. 完整性度量概述 运行时的系统完整性由系统的访问控制机制保证,如DAC(Discrete Access Control, 间接访问控制)/MAC(Mandatory Access Control, 强制访问控制,如SELinux, Smack). DAC/MAC无法检测文件的离线修改:加密文件系统可以保护非法访问,但开销大,效率相对较低. 完整性度量,将文件内容和文件的属性/扩展属性,通过加密哈希生成对应的ima/evm串,以扩展属性方式保存在文件系统节点中:系统运行时在文件被访问前,内核I

libnet介绍与分析

当前,基于socket的网络编程已成为当今不可替代的编程方法,它将网络通讯当作文件描述符进行处理,把对这个“网络文件”(即socket套接字)的操作抽象成一种类似于文件操作的方式进行.从实现细节上,这种工作方式根据TCP/IP的网络通讯模型,封装了一系列的实现,使得我们只需要使用一个指定的参数,就可以实现在基于所需协议的数据的发送和接收. 但是,如果我们对那些系统自动给我们做的工作感兴趣,希望与发送的数据作“面对面”的接触,libnet则会是一个不错的选择. libnet是UNIX系统同台上网络

Tomcat 学习进阶历程之Tomcat架构与核心类分析

前面的http及socket两部分内容,主要是为了后面看Tomcat源码而学习的一些网络基础.从这章开始,就开始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源码之前,准备先看一下Tomcat的架构与一些核心类的简单分析,并简单介绍一下Tomcat是如何处理一次Http请求的.这部分内容有相当一部分来源于网络,在此,感谢原作者的贡献. Tomcat的总体架构 Tomcat的架构关系可以从Tomcat的配置文件server.xml中看到端倪. 从上图中可以看出Tomcat 的心脏

MyBatis架构设计及源代码分析系列(一):MyBatis架构

如果不太熟悉MyBatis使用的请先参见MyBatis官方文档,这对理解其架构设计和源码分析有很大好处. 一.概述 MyBatis并不是一个完整的ORM框架,其官方首页是这么介绍自己 The MyBatis data mapper framework makes it easier to use a relational database with object-oriented applications. MyBatis couples objects with stored procedur

MVVM架构简单介绍

MVVM架构简单介绍 1 程序为什么要架构:便于程序员开发和维护代码. 2 常见的架构思想: MVC M:模型 V:视图 C:控制器 MVVM M:模型 V:视图+控制器 VM:视图模型 MVCS M:模型 V:视图 C:控制器 C:服务类 VIPER V:视图 I:交互器 P:展示器 E:实体 R:路由 (http://www.cocoachina.com/ios/20140703/9016.html) 3 MVVM介绍 模型(M):保存视图数据. 视图+控制器(V):展示内容 + 如何展示

Oracle数据库HA架构方案介绍

摘要:Oracle数据库在各类应用系统中负责存储平台所有的用户数据,数据库的可靠性及安全性直接影响平台的安全运行,目前采用的Oracle Replication方式来实现的数据库高可靠性已经显示出了弊端,本文介绍并分析了目前比较流行的几种数据库高可用性的架构:Oracle Replication.Oracle Rac.Oracle 主机HA等,希望给大家一个参考. 1 什么是高可用性(High  Availability) 高可用(HA)性有两种不同的含义,在广义环境中是指整个系统的高可用性,在

LNMP架构结介绍,MySQL和PHP的安装以及Nginx介绍

一.LNMP架构结介绍 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Nginx中的PHP是以fastcgi的方式结合Nginx的,可以理解为Nginx代理了PHP的fastcgi. 详细介绍可参考:http://blog.csdn.net/u013592371/article/details/73729892 二.LNMP架构-安装MySQL LNMP中MySQL的安装步骤与LAMP中安装一样,这里简单写一下安装过程: [email protected]

nginx web日志介绍和分析

nginx web日志介绍和分析 Nginx访问日志打印的格式可以自定义,例如Nginx日志打印格式配置如下,Log_format 用来设置日志格式,Name(模块名) Type(日志类型),可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用: log_format log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                   '$status $body_b

cocos2d-x on wp8架构简单介绍

1,基于C++的开发架构 支持3大移动平台以及3大桌面平台. 分为图形,声音,物理3大模块,另外还有脚本的导出. 在wp8/win32上的图形是基于d3d的,而在其它平台是基于opengl/opengl es的 下载地址: http://www.cocos2d-x.org/download 2,基础概念 Director类,管理.切换全部场景 Scene类,场景,cocos2d中将全部游戏流工作都抽象成Scene,场景中包括各种对象. Layer类,对象管理层,可透明,可包括Sprite和Lab