TPM核心功能
参考资料:TPM功能介绍 - Cache One
1)TPM的1.0版本和1.2版本分别有多少个PCRs?
TPM1.0版本16个,1.2版本有24个。(喵酱也不确定)
2)TPM是如何报告平台状态的?
两种报告方式:远程报告和本地报告。
远程报告:
被证明平台将TPM中完整度量值报告给远程挑战者。远程挑战者获取到可信平台用自身AIK密钥签名的PCR值,可信平台除了发送已签名的PCR外,还包括有度量日志和AIK证书,通过验证AIK证书、AIK签名和nonce的合法性证实平台的身份。挑战者将PCR值与期望值比较可以验证被证明平台的可信性。
本地报告:
当挑战者要判断本地机器是否被攻陷,意味着本机有可能是不可信的。如果本机已经被攻击者控制,那么可信判断所得到的结果就会被攻击者篡改,挑战者就会受到欺骗。
①可以将一个机密信息绑定到PCR值来标志一个可信的启动过程。
②当要判断及其的启动过程是否可信,用户可以要求TPM对这条秘密信息执行Unseal操作。如果这条Seal的机密信息能够被释放,那么就表示相应的PCR值都符合期望值,进而说明启动过程是安全的。
③删除口令,破坏PCR的值。
3)描述TPM可迁移密钥和不可签名密钥的定义,哪种密钥更安全,为什么?能否相互转换?
可迁移密钥 并不局限某个特定平台,可以由平台用户的控制下在平台之间迁移。不可迁移密钥永久地与某个指定平台关联,不可迁移密钥不会以明文形式离开TPM,不可迁移密钥对TPM中产生的数据进行签名。
不可迁移密钥更安全。不可迁移密钥能够用来加密保护可迁移密钥,反之不行。
不可迁移密钥可以转换为可迁移密钥,但不可逆。
4)描述TPM什么时候谁可以执行PCR Reset操作和PCR Extend操作?
Reset操作:发生在机器断电或者重新启动之后,PCR的值自动重新清零。
Extend操作:在系统运行过程中,只能通过扩展操作来改变PCR的内容。
P
C
R
[
i
]
=
S
H
A
−
1
(
P
C
R
[
i
]
∣
∣
n
e
w
M
e
a
s
u
r
e
m
e
n
t
)
PCR[i] = SHA-1(PCR[i] || newMeasurement)
PCR[i]=SHA−1(PCR[i]∣∣newMeasurement)
5)为什么PCR Extend操作可以抵御攻击?
1、扩展操作不可逆,先扩展度量值A再扩展度量值B得到的PCR的值跟先扩展B再扩展A的结果不同。
2、通过扩展,PCR能够记录一个无限长的度量值序列,这一系列度量值组成的序列反应了系统状态的变迁。
3、扩展序列中的某一个度量值被改变,之后的度量序列都会收到影响。
6)CRTM是什么?为什么是不可修改的?假如修改会产生何种攻击?
CRTM是core root of trust for measurement可信度量根的核心
因为:对所有度量的信任都基于CRTM的完整性。
CRTM一旦被修改,则整个平台的安全性就丧失了
7)为什么TPM支持多个AIK?
隐私保护,为了尽量减少隐私泄露,TCG规定不能使用EK来做身份认证,而使用AIK,TPM使用EK生成AIK,然后通过PCA签发AIK证书完成身份认证。
平台支持多用户,每个用户都需要一个AIK来证明自己的身份。
8)PCR是什么
平台状态寄存器PCR是用来记录系统运行状态的寄存器
9)如何进行可信的本地报告
①可以将一个机密信息绑定到PCR值来标志一个可信的启动过程。
②当要判断及其的启动过程是否可信,用户可以要求TPM对这条秘密信息执行Unseal操作。如果这条Seal的机密信息能够被释放,那么就表示相应的PCR值都符合期望值,进而说明启动过程是安全的。
③删除口令,破坏PCR的值。
10)描述一下信任链的产生过程?日志的作用,以及为什么日志不需要防篡改?
信任传递机制:在信任当前某一环节的前提下,由该环节去评估下一个环节的安全性,确定下一环节可信之后再将控制权转交给下一环节,然后依次向后推进。整个启动序列中都遵循“先度量,再执行”的原则,当前阶段的代码负责度量下一阶段即将要执行的代码,然后再将度量值扩展到PCR寄存器中,这样循环往复,这就构成了信任链。
各阶段代码的详细配置信息和对PCR值扩展的操作的历史记录是保存在度量日志中的,度量日志存储在磁盘上,而磁盘属于不可信的外存,因此度量日志是可能被攻击者篡改的。对保存在磁盘上的度量日志并不需要进行额外的保护,攻击者即使篡改了度量日志,但由于PCR中记录的度量值是不可伪造的,用户对度量日志进行摘要就会发现与度量值不匹配。
基于TPM的可信启动并不能强制保证启动过程是可信的,而只是忠实的记录启动过程的完整性状态,交由用户在启动完成之后做可信判断,TPM本身并不能够控制CPU的执行过程。对启动过程完成了度量记录之后,就必须将记录的状态信息安全地报告给要做可信判断的挑战者,以供进一步根据状态判断启动过程是否可信状态信息包括度量日志和相应的PCR值。
11)EK是什么?主要用途是什么?可迁移密钥还是不可迁移密钥?
背书密钥
主要用途:代表每个平台的真实身份,生成身份证明密钥AIK和建立TPM平台的所有者,由TPM的所有者来生成SRK
不可迁移密钥
12)AIK是什么?主要用途是什么?可迁移密钥还是不可迁移密钥?
平台身份认证密钥
主要用途:用于对TPM产生数据进行签名,用来证明平台的身份和平台的环境配置。
不可迁移密钥
13)SRK是什么?主要用途是什么?可迁移密钥还是不可迁移密钥?
存储根密钥
主要用途:在用户创建时生成,管理用户的所有数据。
不可迁移密钥,一个TPM仅存在唯一一个。
14)Sealing Key是什么?主要用途是什么?可迁移密钥还是不可迁移密钥?
密封密钥:内置了TPM的计算机可以创建一个密钥,该密钥不仅被绑定,而且还被连接到特定硬件或软件条件。首次创建密封密钥时,TPM将记录配置值和文件哈希的快照,仅在这些当前系统值与快照中的值相匹配时才解封或释放密封密钥。148、158
主要用途:将秘密数据密封到平台。
(喵酱猜不到)可迁移密钥?不可迁移密钥?
15)如何借助Seal功能保护数据安全?
密封加密的过程:
- 设 M M M是一份信息, K K K是一个对称密钥, V P C R − x V_{PCR-x} VPCR−x是某TPM的一组PCR寄存器 G P C R − x G_{PCR-x} GPCR−x的值
- TPM的一对密钥的公钥和私钥分别为 K P U B − S K_{PUB-S} KPUB−S和 K P R I − X K_{PRI-X} KPRI−X
- 密封算法: K P U B − S { V P C R − x , K { M } } K_{PUB-S}\{V_{PCR-x},K\{M\}\} KPUB−S{VPCR−x,K{M}}
密封的解密过程:
- 由TPM用 K P R I − S K_{PRI-S} KPRI−S对 K P U B − S { V P C R − x , K } K_{PUB-S}\{V_{PCR-x},K\} KPUB−S{VPCR−x,K}进行解密
- TPM检查 G P C R − x G_{PCR-x} GPCR−x的值是否与 V P C R − x V_{PCR-x} VPCR−x相等,如果相等,TPM提供 K K K,否则不提供。
在密封中,把信息M与TPM的一个状态关联起来,只有当TPM的状态与密封时的状态相同时,才有可能把密封过的信息恢复到原来的信息。换言之,当且仅当密封时的TPM状态与解密封时的TPM状态相同时,解密封操作才能成功。
16)什么是Binding Keys?主要用途是什么?
绑定密钥用于在一个平台中加密小规模数据,然后再另一个TPM平台上进行解密。由于使用平台所特有的密钥加密,所以与该平台绑定。
这个密钥的用法同传统非对称密钥加密相同。文章来源:https://www.toymoban.com/news/detail-445338.html
(喵酱猜的)可迁移密钥文章来源地址https://www.toymoban.com/news/detail-445338.html
17)描述一下远程证明的过程?
到了这里,关于【可信计算】TPM核心功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!