内容简介
第1章 TPM的历史
1.1 为什么是TPM
1.2 TPM规范:从1.1b到1.2的发展史
1.3 从TPM 1.2发展而来的TPM 2.0
1.4 TPM 2.0规范的发展历史
1.5 小结
第2章 基础安全概念
2.1 密码攻击
2.1.1 穷举攻击
2.1.2 针对算法本身的攻击
2.2 安全相关定义
2.3 密码大家族
2.3.1 安全哈希(或摘要)
2.3.2 哈希扩展
2.3.3 HMAC:消息认证码
2.3.4 KDF:密钥派生函数
2.3.5 认证或授权票据
2.3.6 对称密钥
2.3.7 nonce
2.3.8 非对称密钥
2.4 公钥认证
2.5 小结
第3章 TPM 2.0快速教程
3.1 TPM 1.2的使用场景
3.1.1 身份识别
3.1.2 加密
3.1.3 密钥存储
3.1.4 随机数生成器
3.1.5 NVRAM存储
3.1.6 平台配置寄存器
3.1.7 隐私启用
3.2 TPM 2.0额外功能的使用场景
3.2.1 算法灵活性(TPM 2.0新功能)
3.2.2 增强授权(TPM 2.0新功能)
3.2.3 密钥快速加载(TPM 2.0新功能)
3.2.4 非脆性PCR(TPM 2.0新功能)
3.2.5 灵活管理(TPM 2.0新功能)
3.2.6 按名称识别资源(TPM 2.0新功能)
3.3 小结
第4章 使用TPM的现有应用程序
4.1 与TPM交互的应用程序接口
4.2 TPM管理和WMI
4.2.1 平台加密程序
4.2.2 虚拟智能卡
4.3 使用TPM的应用程序
4.4 应该使用但还未使用TPM的应用程序
4.5 构建TPM 1.2应用程序
4.6 TSS.Net和TSS.C++
4.7 Wave Systems Embassy套件
4.8 开发TPM时应该要注意的问题
4.8.1 Microsoft BitLocker
4.8.2 IBM文件/文件夹加密
4.9 TPM 2.0中新的可管理解决方案
4.10 小结
第5章 规范指南
5.1 TPM 2.0库规范
5.2 一些定义
5.2.1 常规定义
5.2.2 命令字节流的主要字段定义
5.2.3 响应字节流的主要字段定义
5.3 第三部分:命令
5.4 数据细节
5.4.1 常用数据结构体
5.4.2 联合体
5.4.3 规范化数据(canonicalization)
5.4.4 字节顺序(endianness)
5.5 第二部分:符号语法
5.6 第三部分:表格修饰符
5.7 规范中的常用部分
5.8 如何在规范中寻找信息
5.9 加强对TPM 2.0规范的理解
5.9.1 Will
5.9.2 Ken
5.9.3 David
5.10 其他TPM 2.0规范
5.11 小结
第6章 执行环境
6.1 设置TPM
6.1.1 Microsoft模拟器
6.1.2 用源码构建模拟器
6.1.3 设置模拟器的二进制文件版本
6.1.4 运行模拟器
6.1.5 测试模拟器
6.2 设置软件栈
6.2.1 TSS 2.0
6.2.2 TSS.net
6.3 小结
第7章 TPM软件栈
7.1 TSS概述
7.2 FAPI
7.3 SAPI
7.3.1 命令上下文分配函数
7.3.2 命令准备函数
7.3.3 命令执行函数
7.3.4 命令完成函数
7.3.5 简单代码示例
7.3.6 SAPI测试代码
7.4 TCTI
7.5 TAB
7.6 RM
7.7 设备驱动
7.8 小结
第8章 TPM实体
8.1 永久性实体
8.1.1 持久性hierarchy
8.1.2 临时性hierarchy
8.1.3 重置词典攻击锁定
8.1.4 PCR
8.1.5 保留句柄
8.1.6 口令授权会话
8.1.7 平台NV启用
8.2 NV索引
8.3 对象
8.4 非持久性实体
8.5 持久性实体
8.6 实体名称
8.7 小结
第9章 hierarchy
9.1 三个持久性hierarchy
9.1.1 平台hierarchy
9.1.2 存储hierarchy
9.1.3 背书hierarchy
9.2 隐私
9.2.1 激活证书
9.2.2 其他隐私考虑
9.3 空hierarchy
9.4 密码原语
9.4.1 随机数生成器
9.4.2 摘要原语
9.4.3 HMAC原语
9.4.4 RSA原语
9.4.5 对称密钥原语
9.5 小结
第10章 密钥
10.1 密钥命令
10.2 密钥生成器
10.3 主密钥和种子
10.4 密钥持久存留
10.5 密钥缓存
10.6 密钥授权
10.7 密钥销毁
10.8 密钥hierarchy
10.9 密钥类型和属性
10.9.1 对称和非对称密钥属性
10.9.2 复制属性
10.9.3 受限的签名密钥
10.9.4 受限的解密密钥
10.10 上下文管理与加载
10.11 空hierarchy
10.12 认证
10.13 密钥解析
10.14 小结
第11章 非易失性索引
11.1 NV普通索引
11.1.1 NV计数器索引
11.1.2 NV位字段索引
11.1.3 NV扩展索引
11.1.4 混合索引
11.1.5 NV访问控制
11.1.6 NV写入
11.1.7 NV索引句柄值
11.1.8 NV名称
11.1.9 NV口令
11.2 专用命令
11.3 小结
第12章 平台配置寄存器
12.1 PCR值
12.1.1 PCR数量
12.1.2 PCR命令
12.1.3 PCR授权
12.2 PCR验证
12.2.1 PCR quote操作的细节
12.2.2 PCR属性
12.2.3 PCR授权与策略
12.2.4 PCR算法
12.3 小结
第13章 授权与会话
13.1 会话相关的定义
13.2 口令、HMAC和策略会话
13.3 会话与授权
13.4 授权角色
13.5 命令和响应授权域细节
13.5.1 命令授权域
13.5.2 命令授权结构
13.5.3 响应授权结构
13.6 口令授权:最简单的授权方式
13.6.1 口令授权生命周期
13.6.2 创建一个口令授权实体
13.6.3 更改已创建的实体的口令授权
13.6.4 使用口令授权
13.6.5 代码示例:口令会话
13.7 开启HMAC和策略会话
13.7.1 TPM2 StartAuthSession命令
13.7.2 会话密钥和HMAC密钥的细节
13.7.3 TPM2 StartAuthSession句柄和参数
13.7.4 会话变体
13.8 HMAC和策略会话的区别
13.9 HMAC授权
13.9.1 HMAC授权的生命周期
13.9.2 HMAC与策略会话代码示例
13.9.3 使用HMAC会话发送多命令(滚动随机数)
13.9.4 HMAC会话安全
13.9.5 HMAC会话数据结构
13.10 策略授权
13.10.1 EA的工作原理
13.10.2 策略授权中的时间间隔
13.10.3 策略授权的生命周期
13.11 组合授权生命周期
13.12 小结
第14章 扩展授权策略
14.1 策略和密码
14.2 扩展授权的原因
14.2.1 多种认证方式
14.2.2 多因素认证
14.3 EA的工作步骤
14.4 创建策略
14.5 基于命令的断言
14.6 多因素认证
14.6.1 实例1:智能卡和口令
14.6.2 实例2:基于口令的仅用于签名的密钥策略
14.6.3 实例3:PC状态、口令和指纹
14.6.4 实例4:适用于一次引导周期的策略
14.6.5 实例5:灵活的PCR策略
14.6.6 实例6:组权限策略
14.6.7 实例7:1~100的NVRAM策略
14.7 复合策略:在策略中使用OR逻辑
14.7.1 制定复合策略
14.7.2 实例:工作或家用计算机的策略
14.8 创建策略时的注意事项
14.8.1 终端用户角色
14.8.2 管理员角色
14.8.3 替补角色
14.8.4 办公室角色
14.8.5 家庭角色
14.9 使用策略授权命令
14.9.1 启动策略
14.9.2 满足策略
14.9.3 如果策略是复合的
14.9.4 如果策略是灵活的(使用通配符)
14.10 认证的策略
14.11 小结
第15章 密钥管理
15.1 密钥生成
15.2 密钥树:使用相同算法集的密钥在一棵树里
15.3 复制
15.4 密钥分发
15.5 密钥激活
15.6 密钥销毁
15.7 综合
15.7.1 实例1:简单密钥管理
15.7.2 实例2:启用了TPM 2.0Windows系统的IT企业
15.8 小结
第16章 TPM命令审计
16.1 为什么要审计
16.2 审计命令
16.3 审计类型
16.3.1 命令审计
16.3.2 会话审计
16.4 审计日志
16.5 审计数据
16.6 专属审计
16.7 小结
第17章 解密和加密会话
17.1 加密和解密会话的作用
17.2 实际用例
17.3 解密和加密的限制
17.4 解密和加密设置
17.4.1 伪代码流
17.4.2 示例代码
17.5 小结
第18章 上下文管理
18.1 TAB和RM:一个高层次的说明
18.1.1 TAB
18.1.2 RM
18.1.3 RM操作
18.2 对象、会话和序列的管理
18.2.1 TPM上下文管理特性
18.2.2 上电和关机事件的特殊规则
18.2.3 状态转换图
18.3 小结
第19章 启动、关机和配置
19.1 启动和关机
19.2 配置
19.2.1 TPM制造商配置
19.2.2 平台OEM配置
19.2.3 终端用户配置
19.2.4 解除配置
19.3 小结
第20章 调试
20.1 底层应用程序调试
20.1.1 问题
20.1.2 分析错误码
20.1.3 调试跟踪分析
20.1.4 更复杂的错误
20.1.5 最后一招
20.2 常见的错误
20.3 调试高级应用程序
20.3.1 调试过程
20.3.2 典型的错误
20.4 小结
第21章 利用TPM 2.0解决更复杂的问题
21.1 使用基于EK生成的IDevID对PC进行远程配置
21.1.1 方案1
21.1.2 方案2
21.1.3 方案3
21.2 数据备份
21.3 特权分离
21.4 服务器登录保护
21.5 在嵌入式系统中锁定固件,但允许更新
21.6 小结
第22章 基于TPM 2.0的平台安全技术
22.1 三种技术
22.2 Intel可信执行技术
22.2.1 概述
22.2.2 如何使用TPM 2.0设备
22.2.3 ARM TrustZone
22.3.1 概述
22.3.2 TrustZone的实现
22.4 AMD安全技术
22.4.1 硬件验证引导
22.4.2 AMD平台上的TPM
22.4.3 SKINIT
22.5 小结
附录A 中国可信云社区
附录B 相关开源合作项目和升级