概述
码字不易,求求点个赞呗
第一章 TPM的历史
可信平台模块(TPM)是一种加密协处理器。
可信计算组织(TCG)
直接匿名认证(DAA)
认证可迁移密钥(Certified Migratable Key,CMK)
隐私证书认证中心(CA)
平台配置寄存器(PCR)是TPM中的动态内存区,用来保持系统的引导序列度量结果的完整性。PCR可与身份密钥一起用于证明系统引导顺序是否正常。
第二章 基础安全概念
2.1 密码攻击
- 穷举攻击
- 针对算法本身的攻击
密码算法应该避免以下缺陷:
- 算法弱点:选择被认可的算法
- 穷举攻击:扩大密钥长度,让用户选择需要的密钥长度
2.2 安全相关定义
消息:在双方间传送的字节序列
机密性:防止未授权方查看消息neir
共享秘密:双方都知道的一个值
完整性:消息在储存及传输的过程中没有被修改
认证:将消息关联到创建者,使接收方可以确定只有创建者能发送这条消息
授权:证明用户被允许执行这个操作
抗重放:防止攻击者对有效消息进行再利用
不可否认性:防止发送方否认其发送了消息
2.3 密码大家族
- 安全哈希(摘要)
密码哈希比普通哈希要复杂,能接收一条任意长度的消息并将它压缩成固定长度的哈希序列。安全哈希用于哈希扩展操作、HMAC、票据、非对称密钥数字签名和密钥派生函数。为保证机密性,安全哈希有以下重要特征:- 对于给定的消息,构造另一条与它有同样哈希的消息是不可行的
- 构造两条有同样哈希值的消息是不可行的
- 由哈希值解出原消息是不可行的
- 哈希扩展
一旦消息被扩展,就不能通过逆运算取消操作或删除历史记录。- 扩展机制用于更新平台配置寄存器(PCR)的值,扩展入PCR的值能够表示平台状态
- 也可用于审计日志种,审计日志记录了TPM的请求及回复信息
- HMAC:消息认证码
它将消息同一个共享密钥一起哈希之后得出- 可用于向TPM证明用户已经掌握了TPM实体授权数据
- 用于存储在外部的结构的完整性,即证明没有被攻击者篡改
- 也可用于生成密钥,这时就需要密钥派生函数
- KDF:密钥派生函数
TPM需要支持由单一秘密生成多种密钥,这个秘密称为种子密钥,而由种子密钥生成多种秘密的算法称为密钥派生函数(FDF)。TPM使用一种特殊算法使HMAC可作为KDF用,通常它使用种子密钥作为HMAC密钥去将一些变化的数据HMAC化来生成密钥。(这体现一个基本的密码学原则:不能对两个不同的应用使用相同的密钥) - 认证或授权票据
票据是一种包含许多数据的HMAC的数据结构,票据允许TPM延迟验证其执行的操作。因为票据容量有限无法装下整套数据,有时会用消息的摘要取代原本的数据。票据中用于生成HMAC的HMAC密钥不是共享秘密,它只有TPM知道。 - 对称密钥
在以下三种情况下会使用:TPM数据对外部保密、TPM通信加密、使用TPM来协同处理密码- 对称密钥算法模式 :
- 电子密码本(ECB):只是简单加密,相同数据分组产生相同密文
- 密码分组链接(CBC)
- 密码反馈(CFB)
- 输出反馈(OFB)
- 计数器(CTR)
- 对称密钥算法模式 :
加密可保证保密性,但并不能提供完整性及认证机制。
加密信息无法证明消息是否是近期产生的,这个功能由nonce实现
- nonce
是一种在密码操作中只会使用一次的数字,常用于防止重放攻击。为确保消息没有被重放,接收方会生成一个nonce并将其发送给发送方。发送方把nonce放入消息之中。通常TPM nonce会与一个请求消息一起参与HMAC的计算,在消息使用完毕后,TPM会更改nonce,若请求方仍使用旧的nonce,则会验证失败。nonce许保证足够大,不会出现循环。 - 非对称密钥
- RSA,使用大数质数分解作为单向函数。一般数字签名不是直接对数据签名,而是由数据生成摘要,对摘要签名。
- ECC,基于有限域的椭圆曲线。同等强度下ECC密钥比RSA密钥短小很多。
- ECDH(Diffie-Hellman)实现密钥传递:ECC和RSA的不同是,ECC需要两步,而RSA只需要一步。在TPM上需要使用ECDH时,首先(在软件中)生成另一个ECDH密钥,第二步,用新生成的ECDH密钥中的私钥和TPM ECDH密钥种的公钥生成一个临时随机数,将随机数输入到KDF中生成一个对称密钥。简单来说,RSA可直接提供对称密钥,而ECDH需要自己生成。
- ECDSA(椭圆曲线数字签名算法):同RSA区别是,由于ECC密钥很小,所以必须保证正在签名的消息的哈希值不会过大。
2.4 公钥认证
如何确保公钥可信,可以创建数字证书,证书包括用户的公钥部分及密钥的属性,证书由CA的密钥签名。
第3章 TPM 2.0 快速教程
TPM1.2 规范主要想要解决以下问题:
- 设备识别
- 密钥安全生成
- 密钥安全存储
- NVRAM存储
- 设备健康证明:证明系统的健康情况,若系统受到破坏,则可能不可信
TPM 2.0 还拓展了以下功能:
- 算法灵活性
- 增强授权:多因素和多用户身份认证授权策略
- 密钥快速加载:通过对称密钥算法加载密钥
- 非脆弱性PCR:过去密钥与设备状态锁定时会导致管理问题,因为通常情况下,设备状态必须由授权状态更改时,密钥也必须更改,现在不是这样了。
- 灵活管理:不同种类授权可以分开
- 按名称识别资源
3.1 TPM 1.2 的使用场景
- 身份识别
- 加密
- 密钥存储
- 随机数发生器(RNG)
- NVRAM存储:带有限制访问属性,它可以存储密钥,一旦PC关闭,密钥则不可用,这保证了可以向用户提供一些数据,而不用担心由于意外或者恶意的意图而被擦除,NVRAM提供以下功能:
- 存储用于证书链的根密钥:他们不能被修改
- 存储背书密钥(EK):EK由制造商存储,用于在产品交付期间解密证书并将密码传递给TPM,设计目的是保护敏感隐私。
- 存储用于表示机器状态的:例如在统一可扩展固件接口UEFI安全启动实现种使用。
- 在磁盘可用之前使用的解密密钥的存储:如用于自加密驱动的密钥
- 平台配置寄存器(PCR):可将TPM中PCR视为引导过程中度量的结果存储的地方。
- 隐私启用:EK不能直接用于标识特定的TPM,相反TPM提供了一个协议用来生成身份证明密钥(AIK),这个密钥可以作为TPM平台的伪身份密钥。提供使用隐私CA的协议意味着EK可以用于证明AIK源于TPM,而不会证明AIK源自哪个TPM。
3.2 TPM 2.0 额外的使用场景
- 算法灵活性
- 增强授权
新的EA允许存在许多新的情况:多因素多用户认证、资源仅使用n次、资源仅在某些时间段使用、撤销使用资源、资源被不同的人使用的方法。- 密码(明文)
- HMAC密钥(也在TPM 1.2中)
- 签名(例如,通过智能卡)
- 使用附加数据签名
- 至少在启动时,PCR值作为系统状态的代理
- 位置作为特定命令来源地点的代理
- 时间
- 内部计数器值
- NV索引值
- NV索引:可以基于NV索引是否已写入来授权
- 物理存在
- 密钥快速加载(TPM 2.0新功能)
TPM 1.2 中,当一个密钥初始化加载时,它必须使用密钥的父密钥私钥进行耗时的私钥解密。这段话有点绕,我的理解是,在1.2中每次计算的密钥在加电断电周期内会存在,断电就删除,但是TPM 2.0 可以将密钥存储在外部存储器中,这样每次加电断电都可以读取了,而不用再次计算。 - 非脆弱性PCR(TPM 2.0 新功能)
PCR值通常表示机器的状态,较小编号的PCR表示系统的引导过程,较高的PCR表示内核启动后的事件。**密钥和数据都可以锁定到具有特定值的特定PCR,这种行为叫做密封。**但如果密钥或数据被锁定到代表BIOS的PCR,则升级BIOS则很难,这就是脆弱性PCR。在TPM 2.0 中,可以将事项密封为由特定签名者批准的PCR值,而不是特定的PCR值,即只有当PCR处于被特定机构批准(通过数字签名)的状态时,才能让TPM发布一个秘密。 - 灵活管理
TPM 1.0 规范中,在同一时间,TPM只存在两个授权:所有者授权和存储根密钥(SRK)授权,所有者授权用于许多目的- 重置字典攻击计数器
- 将TPM重置为出厂设置
- 防止SRK被了解众所周知的秘密的人修改
- 防止创建AIK,为除了TPM所有者的终端用户提供隐私
- 通过防止创建和删除NVRAM索引,避免NVRAM受到除了了解所有者授权的用户之外的人威胁
TPM2.0 中,所有者授权的各种用途所代表的角色在规范中被分开了,这是通过给予角色不同的授权和策略,以及使它们在TPM中具有不同的hierarchy来实现的。
- 按名称识别资源(TPM2.0新功能)
TPM1.0中,资源通过句柄而不是加密名称来识别,因此,若两个资源有相同的授权,低级软件可能被欺骗而改变识别资源的句柄,于是用户可能被欺骗,对不同的行为授予预期不同的授权。TPM2.0中,资源通过名称标识,密码与名称绑定,从而消除了这种攻击。在名称中包含了密钥策略,所以名称可以用作证明授权使用密钥意味着什么。
最后
以上就是忧郁小懒猪为你收集整理的【TPM2.0原理及应用指南】 1-3章第一章 TPM的历史第二章 基础安全概念第3章 TPM 2.0 快速教程的全部内容,希望文章能够帮你解决【TPM2.0原理及应用指南】 1-3章第一章 TPM的历史第二章 基础安全概念第3章 TPM 2.0 快速教程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复