前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可信计算之可信平台模块介绍

可信计算之可信平台模块介绍

作者头像
绿盟科技研究通讯
发布2024-04-17 19:12:27
1800
发布2024-04-17 19:12:27
举报
一. 背景

早期计算机安全主要依赖于杀毒软件,然而,这种纯软件防御存在明显缺陷。一旦恶意软件获得与杀毒软件相同的权限,它可以轻易关闭防护程序并悄悄隐藏自身。更甚的是,一旦恶意软件针对固件和引导程序发起攻击,杀毒软件的查杀难度进一步增加。针对这些挑战,可信平台模块(Trusted Platform Module,TPM)应运而生。

TPM是安全密码处理器的国际标准,旨在通过设备内置的专用微控制器(即安全硬件)来处理设备中的加密密钥。该标准已于2009年被国际标准化组织(ISO)和国际电工委员会(IEC)规范为ISO/IEC 11889。

TPM的发展经历了几个阶段,从最初的TPM1.1b的大规模部署开始,经历了TPM1.2和TPM2.0版本。TPM1.2在TPM1.1b的基础上增加和整合了功能,一方面弥补了之前版本的不足,但也导致规范变得相当复杂。后来,TPM2.0以解决SHA-1算法弱点为契机,重新设计了更加集成和统一的架构,使得对算法的支持更加灵活。

二. TPM介绍

2.1

组成

一个标准的可信平台模块如图1所示,通常由以下部分组成:

输入输出(I/O):管理TPM内不同组件间的数据流传递,同时作为TPM与外部总线交互的接口。

非易失性存储:用于存储关键数据,主要包括密钥(背书密钥EK和存储根密钥SRK)以及所有者授权数据。

平台身份认证密钥(AIK):作为TPM中特殊用途的RSA密钥,与EK有数学上的关联,用于平台签名认证。

平台配置寄存器(PCR):提供一种密码学的方式记录软件的状态,用于存储系统启动过程中系统状态测量值。

程序代码:用于初始化设备的固件。

执行引擎:负责运行程序代码。

密码学加速器引擎:用于进行高速的密码学运算,包括对称、非对称和哈希算法等。

随机数生成器:生成密钥所需的高质量随机数,符合TPM标准的要求。

密钥生成器:借助密码学加速引擎和随机数生成器,生成根密钥。

图1.TPM组成结构

2.2

功能

2.2.1

身份认证

TPM芯片的一个重要能力是安全密钥存储。通过在芯片中植入设备私钥,可以给设备分配唯一标识,方便组织对设备资产进行管理,当然也可以存放用户私钥,标识用户的身份。一些典型的例子包括:

(1)VPN认证身份:设备用TPM中的私钥签名消息,后台用公钥验证签名,从而确保内部网络资源只有特定的设备和用户可以访问;

(2)信息交互中的身份确认:使用TPM中存储的私钥对数据做签名,确保消息来源的可靠性。

2.2.2

加解密

TPM可以用于加密密钥,被加密的密钥则用于加密文件或者解密收到的文件。基于此能力,可以实现:

(1)加密文件、文件夹;

(2)磁盘加密;

(3)加密远程存储的文件。

2.2.3

密钥存储

TPM可以使用自己内部生成的非对称密钥,将需要保护的密钥用公钥加密后存储在外部,需要使用时再用私钥解密,理论上可以实现任意数量密钥的安全存储,让TPM本身可以使用不限量的密钥。由此带来的一些优势包括:

(1)更多的密钥意味着针对不同的数据可以使用不同的密钥来加密。在隐私保护的场景下,针对不同的信息使用不同的密钥加密,细化隐私保护的粒度,增强安全性;

(2)针对不同安全级别的数据,使用不同的密钥;

(3)可以将加密后的密钥存放在服务器上,需要时再从服务器获取,使用更灵活。

2.2.4

随机数生成

随机数是密码学应用中很重要的一部分。高质量的随机数生成器可以降低安全协议被被破解的几率。TPM要求配备高质量的随机数生成器,可以认为是比软件更可信的随机数生成源,随机数生成器常用于:

(1)为操作系统提供随机数种子

(2)为安全协议提供nonce(随机数)

(3)生成密钥

2.2.5

可信度量

TPM在系统启动时,会根据系统状态,由软件算出一系列哈希值,并存储在平台配置寄存器(PCR)中,后续可以使用特定私钥签名这一系列测量值,然后向外部报告。PCR基于其单项存储特性,保证内容不被纂改,因此如果PCR中的值与预期值相同,这些值就被认为是可信的。这一测量过程可用于验证系统的完整性和安全性,防止系统被恶意软件感染。

三. TPM2软件栈

TPM2软件栈(Trusted Platform Module 2.0 Software Stack,TPM2-TSS)是为了方便应用程序与TPM2.0设备交互而设计的一系列软件。这个软件栈实现了TPM2.0规范,提供了一系列工具和库,方便开发者接入。

核心特点:

(1)跨平台。整体设计不依赖操作系统,可以在不同的操作系统和环境下使用,可移植性好。

(2)完全开源。作为开源项目,依托开源社区,在开发者的帮助下不断优化。此外,由于它是开源项目,开发者和企业可以根据自己的需求对其进行定制和扩展,以适应特定的应用场景和安全需求。

(3)标准化。项目遵循TPM 2.0规范,提供一套标准的API,允许软件开发者和系统集成者以标准化的方式与TPM 2.0设备进行交互。

TPM2-TSS提供如下几个不同层次的框架:

(1)TPM Command Transmission Interface

(TCTI):传输/接收TPM命令和结果的标准API,定义了如何与TPM硬件通信,是TPM2-TSS中最底层的接口。

(2)Marshaling/Unmarshaling (MU):用于编码和解码TPM数据结构的函数库。

(3)System API (SAPI, sometimes SYS):TPM2命令的一比一映射,是较低层次的接口。使用SAPI需要开发者对TPM命令有较深的理解,包括命令的参数、状态、错误处理等。

(4)Enhanced System API (ESAPI, sometimes ESYS):在System API的基础上做了封装,意在降低编程复杂性,简化了利用安全上下文实现的HMAC计算、参数加解密、TPM命令审核等。即使相较于SAPI更加简单,但使用时仍需要对TPM2.0接口定义有深入了解,因此官方仅推荐专业人士在专业应用中使用。对于常规应用,则推荐使用更高级接口(FAPI)。

(5)Feature API(FPAI):更高级别的抽象,比SAPI和ESAPI更加简洁易用。旨在让不了解TPM的开发者也能使用TPM的安全能力。在保证安全性的基础上,减少了必须编写和维护的代码量。开发者不必关心复杂的TPM2.0规范,提高了开发效率,降低了实现安全解决方案的门槛。

图2.TPM2软件栈

四. 总结

TPM作为独立硬件,能够提高计算机系统的安全性,有效防止恶意软件入侵和数据泄露。同时也是可信计算的核心技术之一,为可信计算平台提供基本的验证机制和安全防护。随着可信计算的蓬勃发展,TPM的功能和性能也在进一步得到提升和完善。

参考文献

https://en.wikipedia.org/wiki/Trusted_Platform_Module

Will, Arthur and Challener, David and Goldman, Kenneth (1015). A Practical Guide to TPM 2.0. Apress Open, Springer New York, 2015

Tomlinson, Allan. "Introduction to the TPM." Smart Cards, Tokens, Security and Applications (2017): 173-191.

https://tpm2-software.github.io/

内容编辑:创新研究院 杨博杰 责任编辑:创新研究院 陈佛忠

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 绿盟科技研究通讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档