操作系统与虚拟化安全重点 2.3.TCG可信计算技术
可信计算技术: 核心概念:可信计算强调行为可预测与验证,建立信任传递机制,包含用户认证、平台验证、应用完整性及平台互证四个维度。 关键属性:TCG定义的可信计算三属性为可鉴别性(身份验证)、完整性(防篡改)和私密性(数据保密),形成信任基础三角。 技术实现: 完整性度量:通过PCR寄存器存储哈希链,配合SML日志实现双重验证。 远程证实:采用Nonce防重放,AIK签名保护隐私,支持Privacy
·
一、可信计算概念、涵义和属性
1. 可信计算概念
核心定义:如果针对某个特定目的,实体的行为与预期行为相符,则称该实体对这个目的是可信的。
延伸理解:
- 不是“绝对安全”,而是“行为可预测、可验证”
- 强调信任关系的建立和传递,而不仅仅是防御攻击
- 从传统的“访问控制”转向“行为验证”
2. 可信计算涵义(四个理解维度)
(1) 用户的身份认证
- 对使用者的信任
- 确保操作者身份真实可靠
(2) 平台软硬件配置的正确性
- 对运行环境的信任
- 确保操作系统、驱动等未被篡改
(3) 应用程序的完整性和合法性
- 对应用程序的信任
- 确保应用软件未被植入恶意代码
(4) 平台之间的可验证性
- 网络环境中的相互信任
- 支持远程验证平台状态
3. TCG定义的可信计算三属性
| 属性 | 含义 | 实现方式 |
|---|---|---|
| 可鉴别性 | 用户可以确定通信对象的身份 | AIK证书、DAA协议、Privacy CA |
| 完整性 | 信息能被正确传输,不被篡改 | PCR度量、哈希链、SML日志 |
| 私密性 | 系统能保证信息的保密性 | 密钥管理、数据封装、匿名认证 |
补充理解:
- 这三个属性形成了信任的基础三角:知道是谁(可鉴别)、确保没被改(完整性)、不让别人知道(私密性)
- 与传统安全的关系:可信计算补充而非替代传统安全,增加了“可验证”维度
二、完整性度量、远程证实、受保护的存储结构
1. 完整性度量机制
(1) 核心组件
-
PCR(平台配置寄存器)
- 160位(20字节)存储位置
- 共24个:0-7(系统启动)、8-15(OS使用)、16-23(动态可信根)
- 不是存储度量值本身,而是存储哈希链结果
-
度量操作原理
新PCR值 = SHA1(旧PCR值 || 新度量值)- 不可交换性:A→B和B→A结果不同
- 单向性:无法从PCR值反推出输入
- 累积性:无限度量项存入固定空间
(2) 度量链建立过程
BIOS → PCR[0]
MBR/引导程序 → PCR[1]
操作系统加载器 → PCR[2]
操作系统内核 → PCR[3-7]
驱动/应用程序 → PCR[8-23]
(3) 双重存储机制
- PCR:存储哈希链摘要(快,验证用)
- SML(存储度量日志):存储详细度量记录(日志,分析用)
- 验证时:重新计算SML的哈希链,与PCR值比对
2. 远程证实机制
(1) 基本流程
挑战方(Challenger) ←--- 随机数Nonce
↓
证实方(Attesting Party) ←--- 接收Nonce
↓
TPM签名(Sig{Nonce, PCR}) ←--- 用AIK签名
↓
发送签名+度量日志 ←--- 提供证据
↓
挑战方验证: ←--- 三步验证
1. 验证AIK证书合法性
2. 验证签名与Nonce匹配
3. 比对PCR与度量日志一致性
(2) 隐私保护方案对比
| 方案 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| Privacy CA | 可信第三方颁发AIK证书 | 实现简单,兼容性好 | 需要在线CA,隐私依赖CA |
| DAA | 零知识证明,直接匿名 | 无需在线CA,隐私性好 | 实现复杂,计算量大 |
(3) 关键技术点
- Nonce(一次性随机数):防止重放攻击
- AIK(身份认证密钥):保护EK隐私
- 证书链验证:EK→AIK→签名
3. 受保护的存储结构
(1) 存储层次结构
SRK(存储根密钥)
├── 平台迁移密钥(管理员)
│ ├── 用户1可迁移密钥
│ │ ├── 签名密钥1(叶子)
│ │ └── 绑定密钥(叶子)
│ └── 用户2可迁移密钥
└── 用户不可迁移密钥
└── 封装数据(绑定PCR)
(2) 密钥分类
| 类型 | 生成位置 | 是否可迁移 | 是否可鉴定 | 用途 |
|---|---|---|---|---|
| 不可迁移密钥 | TPM内部 | 否 | 是 | 根密钥、关键密钥 |
| 可迁移可鉴定密钥 | TPM内/外 | 是 | 是 | 用户数据密钥 |
| 可迁移不可鉴定密钥 | TPM外部 | 是 | 否 | 外部导入密钥 |
(3) 数据保护操作对比
| 操作 | 绑定(Binding) | 封装(Seal) |
|---|---|---|
| 保护方式 | 用密钥加密 | 用密钥加密+绑定PCR |
| 访问条件 | 拥有解密密钥 | 1.拥有密钥 2.PCR状态匹配 |
| 安全性 | 依赖密钥安全 | 密钥安全+系统完整性 |
| 灵活性 | 任何状态可用 | 仅特定状态可用 |
封装操作的双重PCR绑定:
- 创建时的PCR值:记录密钥生成时的系统状态
- 释放时的PCR值:指定密钥可用的系统状态条件
三、可信度量根、可信报告根、可信存储根
1. 三大信任根的功能定位
| 信任根 | 英文缩写 | 核心功能 | 实现位置 | 信任起点 |
|---|---|---|---|---|
| 可信度量根 | RTM | 初始度量执行者 | CRTM(BIOS中) | 系统启动第一段代码 |
| 可信报告根 | RTR | 平台状态签名者 | TPM内部 | 签名验证的起点 |
| 可信存储根 | RTS | 密钥数据保护者 | TPM内部 | 存储保护的起点 |
2. 可信度量根(RTM)
(1) 具体实现:CRTM
- 位置:主板Boot ROM中的一段不可修改代码
- 职责:度量BIOS后续代码,启动信任链
- 特性:
- 必须是物理防篡改的
- 代码量小,易于验证
- 最先执行,无法被绕过
(2) 信任传递机制
CRTM度量BIOS → BIOS度量OS加载器 → OS加载器度量内核 → ...
关键特性:上游度量下游,信任逐级传递
3. 可信报告根(RTR)
(1) 核心能力
- 签名能力:用AIK对PCR值签名
- 证书链:EK→AIK→签名,形成可验证链
- 防伪性:私钥永不离开TPM,签名不可伪造
(2) 报告类型
- 本地报告:Seal操作,绑定本地PCR状态
- 远程报告:Challenge-Response协议,向外部证明
4. 可信存储根(RTS)
(1) 核心组件:SRK
- 唯一性:每个TPM一个SRK
- 生成时机:TPM所有者获取所有权时
- 存储位置:永远在TPM内部,不导出
(2) 存储结构特性
- 树状结构:SRK为根,支持多级密钥封装
- 访问控制:每个节点有授权数据(密码)
- 状态绑定:支持PCR绑定,增强安全性
- 缓存机制:避免每次访问都遍历整棵树
5. 三根协同工作模式
启动阶段:
CRTM(RTM) → 度量 → BIOS → 扩展 → PCR
↓
TPM(RTS)存储度量值
报告阶段:
应用请求 → TPM(RTR)签名PCR → 发送报告
数据访问:
应用请求数据 → 检查PCR状态(RTM相关)
→ 验证授权(RTS管理)
→ 解密数据(RTS保护)
6. 重要补充说明
(1) 为什么需要三个根?
- 职责分离:度量、报告、存储各司其职
- 安全边界:一个被攻破不影响其他功能
- 灵活性:不同场景可使用不同组合
(2) 实际部署中的位置
主板:CRTM(RTM) → 启动BIOS
TPM芯片: → RTR(签名引擎)
→ RTS(存储引擎+SRK)
(3) 与信任链的关系
信任起点:CRTM(RTM)
信任传递:PCR扩展链
信任验证:TPM(RTR)签名
信任保护:TPM(RTS)存储
更多推荐

所有评论(0)