目录

  • 一、TPM组成结构
  • 二、TPM内部功能和特性
    • 1、密码学加速器引擎(非对称、对称、哈希)
    • 2、密钥生成(Key Gen)
    • 3、随机数生成器
    • 4、程序代码(管理模块、执行引擎模块、授权模块)
    • 5、非易失性存储(Non-Volatile Memory)
    • 6、易失性存储(Volatile Memory)
      • PCR(平台配置寄存器)
    • 7、电源管理
    • 8、输入输出I/O - 字节流通信

一、TPM组成结构

TPM 组成的功能单元如图所示:

主要组成结构:

  • 1、密码学加速器引擎(非对称、对称、哈希)
  • 2、密钥生成(Key Gen)
  • 3、随机数生成器(RNG)
  • 4、程序代码(管理模块、执行引擎模块、授权模块)
  • 5、非易失性存储(Non-Volatile Memory) - 平台种子、私钥种子、安全存储密钥种子、Counter
  • 6、易失性存储(Volatile Memory) - 平台配置寄存器PCR、临时密钥、会话
  • 7、电源管理
  • 8、输入输出I/O - 字节流通信

二、TPM内部功能和特性

1、密码学加速器引擎(非对称、对称、哈希)

TPM2.0规范允许TPM设备使用多种不同的算法。理论上TPM2.0设备可以使用任何哈希算法,而不是像之前仅仅是SHA-1。现在看来SHA-256是早期SHA-256使用最多的一种算法。同时新的规范增加了对称加密算法如AES和非对称加密算法如ECC的支持。

对称算法的引入实现了秘钥片外存储时使用对称加密而不是非对称加密,这一重要的密钥存储方式的改变使TPM2.0可以使用任何加密算法。所以即使将来有一种密码不再安全也不需要修改规范,替换它就可以了。

理想情况下,不同秘钥算法配合使用时需要有相互匹配的算法强度。下表列出了NIST认可的不同密码算法的强度。

现在对称加密算法通常使用AES。最常用的128位非对称加密算法是RSA2048或者是ECC256,RSA2048在算法强度上不如ECC256,并且速度慢,运行空间需求大。但是因为RSA的专利已经到期,而且兼容现有的大部分软件,所以很多人在使用它。事实上,很多人因为免费和软件兼容性好将RSA2048,SHA-1和AES-128组合在一起使用,尽管它们在算法强度上显然是不匹配的。本书中的大部分例子使用RSA或者ECC做加解密,而哈希算法我们只使用SHA-256。

NIST已经不提倡使用SHA-1,并且2014年之后就将不再应用于数字签名中(尽管大部分使用SHA-1的TPM1.2没有沦陷,但当前的密码分析能力使得攻击是非常有可能的)。因为SHA-1的密码强度要远远低于其他同类算法,所以除非是无法避免的兼容性问题,否则没有任何理由继续使用它。

TCG通过算法标识符列表来发布TPM设备中可以使用的一系列算法。这其中就包括可以在PCR中使用的哈希算法。当然这个列表是可以随着时间推移而变化的。

总结来说,算法灵活性让TPM具备以下非常好的特性:

  • 可以使用兼容旧应用的算法。
  • 可以使用兼容美国政府的B类机密算法。
  • 可以使用兼容美国政府的B类最高机密算法。
  • 可以使用兼容其他政府要求的算法。
  • 由SHA-1升级到SHA-256。

2、密钥生成(Key Gen)

借助上述非对称加速器或者随机数生成器,生成根密钥,再由根密钥派生工作密钥,根密钥持久化在NV RAM中。后续补充密钥介绍。

3、随机数生成器

随机数生成器是生成密钥必需的组件,但是早期的个人电脑通常没有一个质量很好的随机数生成器(随机程度也是有级别的,可以Google一下)。安全协议因为密钥质量不好而被破解的案例时有发生。不开玩笑,这是真的。所以第一代的TPM标准要求必须配备随机数生成器。

Anyone who considers arithmetical methods of producing random digits is, of course, in a state fo sin --Von Neuman

一个高质量的随机数生成器很多应用案例:

  • 为操作系统提供随机数种子
  • 为安全协议提供nonce(随机数)
  • 为文件加密提供临时密钥(一次性使用,用完就删,不过下次需要的时候还能根据相同的输入产生相同的密钥?)
  • 产生长期使用的密钥(例如存储密钥)

4、程序代码(管理模块、执行引擎模块、授权模块)

后续章节详细介绍。

5、非易失性存储(Non-Volatile Memory)

一些具有访问控制属性的NVRAM存储区域对于PC来说是非常有用的。它们可以用来存储密钥,当关机时密钥不可访问,但是访问密钥时,速度比用公私密钥对解密密钥数据的方法快很多,因为它就是直接数据访问。同时它可以用来为一个系统不同部分提供新传递的功能。TPM中NVRAM的读写属性是可以单独控制的,这也就意味着用户不需要担心因为意外或者恶意攻击造成数据被擦除(不可写)。初次之外,系统在启动初期没办法访问硬盘,这时NVRAM就可以用来存储这个时候必须要使用的密钥。一个明显的例子是,系统在启动时在访问自加密硬盘之前必须输入口令才能读写。

具备NVRAM能够提供以下常见功能:

  • 存储证书链的根密钥:一般是每个人都可以访问的公钥,但是必须保证公钥不能被修改。
  • 存储背书密钥(EndorsementKey):背书密钥用于TPM在出厂配置阶段解密证书和传递口令。EK是很隐私的数据,不要相信网络上误导性的宣传。
    存储机器已知的好的状态(一些列的系统测量(HASH extend)值):INTELCPU有一个可信计算技术(TXT),其中的启动控制策略(LaunchControlPolicy)就用到了TPM NVRAM的这个作用。与UEFI(现在的BIOS,UnifiedExtensibleFirmwareInterface)的安全启动技术所使用的根公钥类似,这些值用于系统所有者控制系统在启动虚拟机(或者OS)之前应该处于什么样的状态。在TXT中,用户对NVRAM的内容有绝对的控制权,而UEFI的安全启动并非如此。
  • 存储硬盘可用之前的解密密钥

6、易失性存储(Volatile Memory)

PCR(平台配置寄存器)

相对于智能卡来说,TPM一个独一无二的优势是,可以保证它和主板在物理上绑定,并且在系统开始启动之前就可以使用了。因此,TPM就可以用于保存系统启动过程中系统状态测量值。PCR就用于实现这个功能。PCR中存储了由软件算出的一系列哈希值,TPM可以通过使用一个特定的私钥签名这些测量值,然后向外部报告。本书的后续章节我们会详细描述PCR是怎样工作的,现在我们只需要知道它有一个单向存储的特性可以保证内容不被篡改(HashExtend)。因此,如果PCR中的值与预期的可信值相同,那这些值就被认为是可信的。

PCR的另外一个巧妙的用处是,它们可以被用于认证。正如一个银行账户只能在有效的交易时间段内被打开一样,我们可以在TPM中创建密钥或者其他的状态。创建的同时让它们的授权配置与PCR某一个值绑定,只有PCR的值是某一个预期的状态时才可以使用它们。这样一来就出现了很多有意思的应用场景:

VPN只有在确认PC已经运行了所有IT允许的软件后才授权设备访问网络,如果是不被允许的软件,PCR值会不同,认证会失败。
文件系统服务只有在确认MBR正常以及硬盘确实存在时才会得到解密密钥。

7、电源管理

后续章节详细介绍。

8、输入输出I/O - 字节流通信

后续章节详细介绍。

TPM分析笔记(五)TPM Architecture规范之TPM架构(第11章)相关推荐

  1. TPM分析笔记(十)TPM 组织架构(TPM hierarchy)

    目录 一.TPM组织架构 1.1 三种持续性组织架构 1.1.1 平台hierarchy 1.1.2 存储hierarchy 1.1.3 背书hierarchy 1.2 非持久性组织架构 1.2.1 ...

  2. TPM分析笔记(十一)TPM 密钥组织架构(TPM Key Hierarchy)

    目录 一.Key hierarchies 1.1 EK密钥 1.2 SRK 1.3 Attesting keys 二.密钥作用介绍 接上文TPM分析笔记(十)TPM 组织架构(TPM hierarch ...

  3. ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 第7章)

    上一篇:ECMA-335(CLI)标准 读书笔记(第一部:概念和架构 1~6章) 7.       CLS 7.1   介绍 CLS是一套倾向于提高语言互操作性的一套规则.我们应当遵循这些规则.11章 ...

  4. TPM分析笔记(三)TPM Architecture规范之Trusted Platforms(第9章)

    目录 一.可信 1.可信计算基础思想 二.可信计算概念 1.信任根&信任边界 2.传递信任(Transitive Trust)& 信托机构(Trust Authority) 1.信托机 ...

  5. TPM分析笔记(九)TPM资源实体-句柄

    目录 一.永久实体 1.1 固定的组织架构 1.2 临时的组织架构 1.3 字典攻击复位 1.4 平台配置寄存器(PCR) 1.5 保留的handle 1.6 口令授权会话 1.7 平台NV使能 二. ...

  6. TPM分析笔记(一) TPM历史

    目录 TPM的历史 为什么选择用TPM? TPM 1.1b到1.2的发展历史 TPM由1.2发展到2.0版本 TPM2.0规范的开发历程 发展历程小结 TPM标准 TPM常见用途 TPM的规范其描述文 ...

  7. TPM分析笔记(七)TPM 模块中的密码算法家族。

    目录 密码攻击 暴力破解 根据类型来计算算法强度 针对算法本身的攻击 安全的定义 密码家族 哈希(摘要) 哈希扩展(HashExtend) 基于哈希的消息认证码(HashedMessageAuthen ...

  8. TPM分析笔记(十二)TPM PCR操作

    目录 一.PCR初始化(Initializing PCR) 二.PCR的扩展(Extend of a PCR) 2.1 其他PCR命令 三.使用PCR Banks进行扩展(Using Extend w ...

  9. TPM分析笔记(四)TPM-TSS协议栈

    目录 TPM-TSS文档下载路径 开源软件工程 TPM-TSS 协议栈 TSS2.0软件栈结构 SAPI 软件栈结构 TPM TSS SAPI关键API分析(持续完善中) 命令上下文申请函数 命令执行 ...

最新文章

  1. 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
  2. Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行
  3. 服务器性能指标有哪些
  4. ubuntu网络配置
  5. java语音开源_号外!号外!百度语音开源库更新了
  6. motionVFX mRevealer Glitch Mac(fcpx插件:30个故障干扰马赛克毛刺失真特效)
  7. 【C++探索之旅】第一部分第四课:内存,变量和引用
  8. 文件操作(上传,下载,限制)
  9. 软件工程之系统建模篇【设计接口类模型】
  10. 秋风荷桂香 晚风拂夕阳
  11. element audio 标签 不显示_不闪屏,HDR,带鱼屏全都有,LG 29WK600宽屏显示器测评...
  12. Week2 Assignment - Princeton-Algorithms-PartI
  13. 支持向量机 SVM 算法推导优缺点 代码实现 in Python
  14. 麻烦你先搞懂这几个问题,简历再写熟悉数据库!!!
  15. 图书馆座位预约系统,图书馆座位管理系统,图书馆座位预约毕业设计
  16. mysql支持ASCII_MySQL ASCII()函数返回字符的ASCII码值
  17. 网站301跳转问题的探讨和用法,网站做301跳转的相关问题
  18. ShareLatex+Overflow:PDF Rendering Error Something went wrong while rendering this PDF问题解决
  19. java制作霓虹灯_Vegas教你用超简单方法制作霓虹灯效果
  20. oracle公司的crm有哪些主要模块,CRM主要功能模块有哪些

热门文章

  1. 软件测试方法和技术,朱少民,第三章习题答案
  2. Oracle dataset 工具,[Oracle] 32-bit ODAC 與 Visual Studio工具 (.NET)
  3. AI自动写文章_免费在线原创文章生成器
  4. WINDOWS自带的扫雷游戏作弊方法
  5. 三分钟让你看懂共模电感如何选型?
  6. n%i==0在c语言作用,在C语言中,if(n%i==0,)是什么意思?n和i分别为一个数、 , c语言中 if(n%i==0) break 什么意思...
  7. 10/15/2022
  8. WIN10 注册表winlogon乱删除后果及系统恢复
  9. 基于Android的校园综合服务App平台毕业设计源码181042
  10. 序列比对(alignment)