白话TPM

TPM,可信平台模块,是一种加密协处理器,很多PC上都配有TPM芯片,主要是用来保护个人计算机的安全;


国际标准组织是可信计算组织TCG(Trusted Computer Group,TCG),经历了1.1b,1.2和2.0版本三个阶段;


对TPM的理解,普通用户可以理解成每台计算机都有的保险箱,那么有没有保护你计算机里面贵重的资源呢?


计算机最宝贵的是操作系统,然后是其上运行的应用软件,TPM如何保证操作系统的安全呢?应用软件的安全性又是如何保证的呢?


可信和安全的关系,两者是相辅相成的,可信是安全的基础,了解可信才能更好地了解安全,才能为构建更稳固的安全体系,所以首先需要解决硬件上运行对象是否可信的问题,可信了,就有了安全的基础;


那么如何证明计算机是可信的呢?身份证明?


TPM可以进行度量,对运行在计算机上的程序(包括操作系统)进行体检,生成度量报告,证明计算机是可信的,并具备远程证明的能力;


信任如何证明呢?通过信任链,信任具备可传递性,比方曹操是可信的,所以他的儿子也是可信的,他的孙子也必然是可信的,尽管可信的不一定是安全的;这里涉及到信任根的问题,国外使用的可信根是TPM芯片,其中保存的是国际认证通过的算法能力、国外机构认证过的EK背书密钥,根证书等信息,这也是为什么国内发展自己的可信标准,并推进支持国家密码算法的可信密码模块作为可信根的初衷,毕竟可信根掌握在别人手中多少是不放心的,因为可信根(Root of trust)是无条件被信任的,系统并不检测可信根的行为,因此可信根是否真正值得信任,是系统可信的关键。


TPM有什么用?

ThinkPad笔记本中的TPM安全芯片可以与指纹识别模块一起使用,普通笔记本中的指纹识别技术一般是把指纹验证信息储存在硬盘中,而ThinkPad中的TPM安全芯片则是直接将指纹识别信息置于安全芯片中。一旦遭到暴力破解,安全芯片就启动自毀功能,这样保证了您的个人信息资料不会泄密。其他用途可以参考: 国外的TPM和国内的TCM安全芯片


安全形式和概念:

消息:在双方间传送的字节序列;

机密性:防止未授权方查看消息内容;

认证:将消息关联到创建者,使接收方可以确定只有创建者能发送这条消息;

授权:证明用户被允许执行这个操作;

抗重放:防止攻击者对有效消息进行再利用;

不可否认性:防止发送方否认其发送了消息;

 


更进一步理解TPM、以及TPM的接口TSS协议栈能力:

TPM实体

TPM实体是一个可以通过句柄直接索引到的项目;

实体不只是对象,这里实体类型包括:永久性实体(hierarchy、字典攻击锁定机制和PCR);非易失性实体(NV索引),对象(密钥和数据);易失性实体(各种类型的会话)


特别是对象的概念容易混淆,TPM对象要么是密钥,要么是数据,它有一个公开部分,也可能有一个私有部分,例如非对称私钥,对称密钥或者是加密后的数据。对象隶属于一个hierarchy。所有对象都有相应的授权数据和授权策略,与NV索引一样,对象的策略在创建后就不能被修改。当一个对象在命令中使用时,对象创建时,由用户决定哪些命令可以使用授权数据知晓,哪些命令只能使用策略来执行。

通常情况下,大部分的对象都是密钥。


hierarchy有四种:平台hierarchy、存储hierarchy、背书hierarchy或者空hierarchy。



Hierarchy是一个实体的集合,其相互关联,并作为一个组来被管理。

Hierarchy的实体包括永久性实体(hierarchy句柄)、在树根的主对象和其他对象,如树中的密钥。

NV索引属于一个hierarchy,但不在树中。


TSS简称TPM软件栈,允许应用程序以一种便携额方式调用栈中各层的API,TSS主要包含几层:特征API(Feature API、FAPI)、增强系统API(ESAPI)、系统API(SAPI)、TPM命令传输接口(TCTI)、TPM访问代理(TAB)、资源管理器(RM)和设备驱动。


FAPI层的API能够符合80%的用例场景,确实对简化使用TPM的功能和提升开发效率很有帮助。


近期看了一段时间的TSS协议栈代码,应用层面如果没有FAPI的封装,使用起来确实会相当困难,并且也没法解决对单个TPM设备的互斥访问和冲突问题!


呱牛笔记

请先登录后发表评论
  • 最新评论
  • 总共0条评论