分享自:

轻量化可信计算基础架构Flicker的设计与实现

期刊:eurosys’08DOI:10.1145/1352592.1352625

Flicker:一种实现最小化可信计算基(TCB)的执行架构

作者及机构
本文由Jonathan M. McCune、Bryan Parno、Adrian Perrig、Michael K. Reiter和Hiroshi Isozaki共同完成,作者单位包括卡内基梅隆大学(Carnegie Mellon University)、北卡罗来纳大学教堂山分校(University of North Carolina at Chapel Hill)以及东芝公司(Toshiba Corporation)。该研究发表于2008年的ACM EuroSys会议。

学术背景
Flicker的研究属于计算机安全领域,特别是可信计算(Trusted Computing)和隔离执行(Secure Execution)方向。当前操作系统在CPU最高特权模式下运行大量代码,这些代码中的漏洞使得系统易受攻击,恶意软件可能继承这些特权,威胁所有应用程序的完整性和机密性。为解决这一问题,Flicker提出了一种架构,能够在完全隔离的环境中执行安全敏感代码,同时仅需信任极少量(约250行)的额外代码。研究目标是通过硬件支持(如AMD的SVM和Intel的TXT技术)实现最小化TCB,并提供细粒度的远程证明(Attestation)。

研究流程
1. 硬件基础与背景技术
- Flicker利用了AMD的SVM(Secure Virtual Machine)和Intel的TXT(Trusted Execution Technology)技术,这些技术支持“延迟启动”(Late Launch)和动态证明。
- 研究还基于可信平台模块(TPM,Trusted Platform Module)的密封存储(Sealed Storage)和平台配置寄存器(PCR,Platform Configuration Register)功能,确保代码执行的完整性和可验证性。

  1. Flicker架构设计

    • 隔离执行:Flicker通过SKINIT指令暂停当前执行环境(如操作系统),加载并执行一个称为“安全加载块”(SLB,Secure Loader Block)的小型代码模块,随后恢复原始环境。SLB中包含“应用程序逻辑片段”(PAL,Piece of Application Logic),即需要保护的安全敏感代码。
    • 动态证明:Flicker利用TPM的PCR扩展功能,将PAL的哈希值、输入和输出扩展到PCR中,生成可验证的证明,确保远程方能够确认代码的正确执行。
    • 跨会话状态保护:通过TPM的密封存储功能,Flicker支持在多个会话之间保护状态的机密性和完整性,同时防止重放攻击(Replay Attack)。
  2. 实现与优化

    • Flicker在AMD平台上实现了完整原型,包括一个Linux内核模块(flicker-module)和SLB核心库(slb-core)。
    • 为简化开发,研究者提供了多个可选模块(如TPM驱动、加密库、内存管理等),开发者可根据需求将PAL与这些模块链接。
    • 通过工具链(如CIL)支持从现有应用程序中自动提取安全敏感代码,减少手动开发工作量。

主要结果
1. 性能评估
- SKINIT指令的执行时间与SLB大小线性相关,64KB SLB的加载耗时约177.5毫秒,但通过优化(如减少SLB大小)可降至14毫秒。
- TPM操作(如密封存储和证明生成)是主要性能瓶颈,例如生成TPM证明(Quote)耗时约972毫秒。

  1. 应用案例
    • Rootkit检测:Flicker保护下的Rootkit检测器能够验证内核代码的完整性,并通过远程证明确保结果可信。
    • 分布式计算:Flicker为BOINC框架提供结果完整性保护,避免冗余计算。
    • SSH密码处理:通过两次Flicker会话(密钥生成和密码解密),确保用户密码仅在隔离环境中处理,且远程客户端可验证其机密性。
    • 证书颁发机构(CA):Flicker保护CA私钥,仅允许授权代码访问,即使操作系统被攻破也不会泄露密钥。

结论与价值
Flicker通过硬件支持的隔离执行和最小化TCB,显著提升了安全敏感代码的可靠性和可验证性。其科学价值在于提出了一种新的可信计算范式,将TCB从传统操作系统的数百万行代码减少至数百行;应用价值则体现在多种实际场景(如密码处理、CA签名、分布式计算)中,为高安全性需求提供了可行解决方案。

研究亮点
1. 最小化TCB:Flicker的TCB仅需250行代码,远小于传统虚拟化方案(如Xen的5万行代码)。
2. 细粒度证明:支持对代码、输入和输出的精确证明,避免了传统可信启动(如IMA)的全系统测量。
3. 硬件兼容性:基于AMD和Intel的商用处理器,无需修改操作系统或虚拟机监控程序(VMM)。
4. 灵活开发支持:提供模块化工具链,简化PAL的开发和集成。

其他有价值内容
- Flicker对系统性能的影响较小(如Rootkit检测器的定期运行对内核编译时间无显著影响)。
- 研究者提出了未来硬件改进方向(如多核隔离执行),可进一步提升性能(参考作者同期工作[19])。
- 开源实现和工具链为后续研究提供了基础。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com