想要学习和理解可信计算技术的入门者,经常不知道从哪里下手,下面根据个人经验总结一些资源供参考(不一定全,欢迎补充):
规范
通过规范的研究可以理解可信计算的基本概念和思想,方便阅读更多的书籍和论文。
早期可信计算的研究主要以TCG(国际可信计算工作组http://www.trustedcomputinggroup.org/resources/tpm_main_specification )组织为主,国内开展可信计算研究的思路基本也是跟着TCG的步伐。可信计算最核心的就是TPM硬件芯片,其TPM 1.2规范是比较经典的,大多数厂家的芯片都以TPM 1.2为标准。不过,现在该规范已经升级到TPM 2.0,也称为“Trusted Platform Module Library Specification”,而且遵循该规范的新芯片也已经面世。
国内对应的是TCM芯片,可以参考“可信计算密码支撑平台功能与接口规范”,而且已经成为国家标准,即GB/T 29829-2013。
而随着可信计算的发展,可信平台模块不一定再是硬件芯片的形式,特别是在资源比较受限的移动和嵌入式环境中,可信执行环境(TEE,Trusted Execution Environment)的研究比较热,如基于ARM TrustZone、智能卡等可以实现可信计算环境。另一个热点是物理不可克隆函数PUF(Physical Unclonable Functions),其可以为可信计算提供物理安全特征,实现密钥安全存储、认证、信任根等功能,而且对应用到物联网、可穿戴设备、BYOD等场景中具有很好的优势。关于这方面的标准可以参考“GlobalPlatform”,一个开放式联盟,定义了关于卡、设备、系统等各个方面的规范,其中包含与可信计算联系比较紧密的GP-TEE规范。
书籍与论文
中文书籍推荐冯登国教授的“可信计算理论与实践”,其对可信计算的研究历史、现状和技术有比较全面和深入的理解。还有张焕国教授的“可信计算”一书。另外推荐综述论文“可信计算技术研究”(发表在计算机研究与发展期刊上)和“The Theory and Practice in the Evolution of Trusted Computing”(发表在科学通报CSB上)。
如果想对可信计算有比较原汁原味的深入理解,推荐阅读一些经典的英文原版书籍:
ü S.W. Smith. Trusted Computing Platforms: Design and Applications. 2005 关于设计和使用安全协处理器的早期工作的总结
ü D. Grawrock. Dynamics of a Trusted Platform. 2008 包含TPM的动机与设计,以及Intel的Latelaunch和虚拟化支持技术的描述
ü D. Challener, K. Yoder, R. Catherman, D. Safford, and L. Van Doorn. A Practical Guide to Trusted Computing. IBM Press 2008. 从一个开发者的角度介绍了可信计算平台的各个方面,包含设备驱动的撰写,以及可信软件栈的应用接口,值得一读(这本书有中文翻译的版本,不过还是推荐最好读英文原版)
另外推荐阅读CMU学者的综述论文“Bootstrapping Trust in Commodity Computers”,发表在信息安全顶会IEEE S&P 2010上面,对可信计算的理解比较到位。
最后推荐Mark Ryan在访问TCG后综述了一篇关于TPM 1.2的论文“Introduction to the TPM 1.2”,适合初学者阅读,能比较快速准确的抓住TPM的本质。
会议与研究机构
如果四大顶级安全会议(CCS、IEEE S&P、USENIX Security、NDSS)等有关于可信计算的文章,自然值得一读。
另外推荐可信计算领域比较专业的会议Trust(International Conference on Trust & Trustworthy Computing),由欧洲研究可信计算的几个主流机构举办,每年上半年在欧洲开会,每年只录用十篇左右文章,如Trust 2014年的网址为http://www.ics.forth.gr/trust2014/。
另外推荐CCS会议的WorkShop,TrustED(International Workshop on Trustworthy Embedded Devices),其前身为CCS-STC,每年与顶会CCS一起举办,只收录几篇文章,也比较专业,主要关注可信计算在嵌入式和移动等方面的新型成果。
如果做学术研究的话,跟踪国际上前沿组织与机构的研究成果是很好的选择,可信计算方面的机构有:CMU Cylab实验室, ETH Zurich系统安全实验室,Intel&HP实验室(代表人物Ernie Brickell, Liqun Chen, Jiangtao Li,代表成果DAA),TU Darmstadt CASED,IAIK of Graz等。
开源项目
了解了可信计算的思想和原理,如果不从实际上体验一把可信计算的功能也是很痛苦的。而现在在国内使用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的使用开发一些典型的安全应用(如加密等)。可以基于它们的代码理解可信应用开发的思路,以及嵌入到其它应用开发中。