【Security】可信计算
一、概念
可信:如果第二个实体完全按照第一个实体的预期行动时,则第一个实体认为第二个实体是可信的;其强调实体行为的预期性,强调系统的安全与可靠。
可信计算(TrustedComputing):一项由TCG(可信计算组)推动和开发的技术,是一种基于密码的运算与防护并存的计算机体系安全技术,保证全程可检测可监控。可信计算的原理是出击,整个链路都经过可信认证,所以无论从应用、操作系统还是硬件,必须经过授权才能使用,这无疑降低了病毒、网络攻击的概率。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。
信任根:可信计算机系统可信的基点,分为可信度量根(RTM,平台启动时首先被执行的一段软件)、可信存储根(RTS,是可信平台模块芯片中的一组被称为平台配置寄存器的存储器和存储根密钥)、可信报告根(RTR,是可信平台模块芯片中的平台配置寄存器和签注密钥)
信任链:信任度量模型的实施技术方案,通过信任链把信任关系从信任根扩展到整个计算机系统。
可信计算基本思想:利用远程证明数字版权保证安全性:在计算机系统中,首先构建一个信任根,再建立一条信任链,从信任根开始到硬件平台、到操作系统、再到应用,一级度量认证一级,一级信任一级,把这种信任扩展到整个计算机系统,从而确保整个计算机系统的可信。
(此处后续部分待学习后补充,相关知识可查看引用的其他几篇文章,推荐一本书《可信计算3.0工程初步》)
二、
三、
四、开源项目
了解了可信计算的思想和原理,如果不从实际上体验一把可信计算的功能也是很痛苦的。而现在在国内使用TPM的芯片很困难,TCM芯片在很多方面可能与国际主流用法不一致。因此,为了实际使用可信计算功能,这里推荐一些开源项目。
(1)TPM Emulator
开源地址:https://github.com/PeterHuewe/tpm-emulator
不需要实际TPM芯片就可以通过软件提供可信平台模块的功能,可以在Windows和Linux上进行编译后使用,建议和可信软件栈TROUSERS一起使用。
(2)可信软件栈TROUSERS
开源地址:http://sourceforge.net/projects/trousers
IBM实现的一套开源软件栈,是Linux下进行可信计算应用开发的主要接口。
(3)IBM Software TPM
开源地址:http://ibmswtpm.sourceforge.net/
提供了一全套实践可信计算的软件工具:包含软件TPM模拟器、libtpm库(类似可信软件栈TSS)、实例命令(用C语言写,可以直接访问TPM命令接口,测试可信计算的功能),而且通过提供的TPM Proxy代理可以去实际TPM芯片、以及其他软件模拟的TPM Emulator进行通信。
(4)OpenTC项目
开源网址:www.opentc.net
是欧盟赞助的一个可信计算项目,目标是开发一套完整的可信操作系统,出了很多成果,包含Trusted XEN Virtualisation OS,Trusted Linux以及Trusted Microkernel for small and embedded systems等。
(5)Trusted JAVA项目
开源网址:http://trustedjava.sourceforge.net/
是OpenTC项目的一部分,显示了如何使用Java来使用TPM和TSS的功能,由IAIK开发,可以支持跨平台的使用可信计算功能。
(6)TPM4JAVA
开源网址:http://tpm4java.datenzone.de/trac
另一个可信Java工程,不过主要由Technical University of Darmstadt大学主持。
(7)内核完整性度量IMA
开源网址:http://sourceforge.net/p/linux-ima/wiki/Home/
结合TPM安全芯片,在Linux内核实现了可信计算的完整性度量体系,对所有可执行程序进行了度量。
(8)EMSCB项目
开源网址:http://www.emscb.com/content/pages/49241.htm
由德国政府赞助,基于对TPM的使用开发一些典型的安全应用(如加密等)。可以基于它们的代码理解可信应用开发的思路,以及嵌入到其它应用开发中。