[音乐]
[音乐]
好,同学们 今天我们介绍一下这个完整性度量、
存储和报告的机制 在TPM芯片里面,这种 度量、
存储和报告的机制呢,它主要是去允许这个平台 去进入任何状态的时候,把这个相关的状态都忠实地记录下来
那么记录下来以后呢才可以帮助这个平台去证明它的 可信性。
所以完整性度量呢就是去获得与平台完整性相关的 这个平台特性的这样的一些度量值的相关的方法
那么度量值的存储呢,其实我们前面在讲PCR寄存器的时候曾经提到过了
那么在TPM芯片里面,其实主要用PCR寄存器 来记录我们这些度量值
用SHA的算法,采用迭代这样度量的方式存在PCR的寄存器里面
那PCR寄存器的值呢是一个很重要的部分了
那么同时,这个TPM,在TPM芯片之外呢,还有一个叫SML,叫存储度量日志
这个度量日志其实记录的就是我这个值 度量的顺序,还有度量的这个产生的这个SHA的值
那么完整性度量需要同时保存在这个SML里
面,就是说在PCR寄存器,扩充到这个PCR寄存器里面 同时呢,要保存在SMR里面
当然这个SML这个寄存器,这个日志其实虽然是存放在TPM这个芯片之外的
它也应该做存储保护 那么完整性的这个报告
其实主要就是对完整性存储的这个值进行一个证实的过程
这个我们在后面会讲到相关的这个度量和验证的这个机制
我们这里简单,就是先说一下这个完整性度量它的主要的做法
和这个完整性报告的做法,以及度量值的这个存储的 内容。
所以完整性的度量和存储,还有它的报告,这是它的主要的三个机制
那么在这个系统起来的时候,这个TPM芯片 到底怎么样进行信任链的这样一个传递呢?就建立一个信任关系呢?
大家从这张图上可以看到,就是说在可信 在硬件上有了这个芯片的基础之上,就是通过
我们的可信构造根,根据我们刚才提到的这个存储 还有度量,还有这个报告的三个信任根
以及我们的可信构造模块TBB,在这个的信任的基础之上,我们需要对
每一个每一次的这样的一个引导过程都要进行一个度量
那比如说我们在这个 CRTM,就是我们的这个代码之前要
去对OS loader这个代码进行度量,度量完了以后如果它是
值得信赖的,或者说我们度量完了才可以去执行它 那么同样,对操作系统代码也是先要度量,才能执行
对应用程序也是先要度量,通过操作系统去度量,然后才能执行 所以它是这样一个信任链的一个过程,信任传递的这样一个过程
关于这个受保护的存储,就是前面提到的这个SR
K,SRK,在这里我们要专门提一下,就是说在TPM
如果一旦有了所有者,就是在第一次启用的时候,它拥有了所有者的同时
它除了生成就是,就是除了让所有者获得以外,它还同时会生成一个存储跟密钥 叫SRK。
那么这个SRK 和前面所提到的EK,都是保存在TPM的芯片里面 就是非一致性存储里面。
那么以SRK 为根,它主要是用来建立什么的呢?其实主要是来保护
这样的,就是我们存在TPM之外的一些数据的 安全。
那么我们来介绍一下这个SRK以及它的这个树状的存储结构
那么在SRK里面它是有一个信任,有这样一个根根存储密钥
那么在根存储密钥下又可以生成若干个 子结点和叶子结点,我们来看看它的这个
每一个子结点和叶子结点的概念
通常这个父结点需要对子结点进行一个封装的保护
那么封装呢事实上是要把这个平台的状态
和这个相关的密钥一起来做一个保护,做一个加密
那么加密以后,如果验证状态相同了,它才可以去授权,去可以拿到相关的值 这是关于封装的一个概念。
那么每一个结点呢都需要与两种PCR的值进行绑定
什么样的两种这个PCR的值进行绑定呢? 一种是结点所产生的PCR值
那么这个结点所产生的PCR的值其实记录的就是结点产生的时候它真正的PCR的值
那么通过这个结点呢,由此,这个结点的秘密,就是由这个结点
它的秘密的使用者,就是这个秘密的使用者可以判断这个结点产生时候的平台状态是否可信
还有一种叫秘密释放时的PCR值 就是说由秘密所有者来提供,表示这个秘密被释放的时候
对平台完整性状态的一个要求,那么只有满足了这个要求的这样的时候
秘密才可以被访问,所以一个是去验证这个平台的状态是否可信
一个是用来验证这个数据你是不是有权利 进行访问。
这张图说的是 受保护的这个存储的一个结构图,大家从这张图上可以看到
在TPM的这个芯片里面,放在这个存储 放在芯片里面不外放的,就是不会,就是输出到这个
TPM之外的这个关键的两对Key,一个是 这个EK的key,一个是我们的刚才说的SRK
此外呢就是SRK所生成的这个存储 结构。
在这个存储结构里面其实它所保护的是一些 数据还有一些密钥。
所以我们重点来看一下它所保护的数据和密钥是什么
那么密钥与数据,这里面提到的密钥其实就是指可信平台中要用到的
需要受到保护的存储机制 进行保护的那些非对称的密钥
这里所提的密钥都是指的非对称的密钥。
那么什么是数据呢? 在这里面所提到的这个数据是指受保护的这个存储结构
不对它的内容,就不需要理解它的内容,就不需要去解密这样的一些秘密
那么除了我们所说的一些真正的秘密数据我们要额外保护以外
这里面所提的数据还包括就是对称密钥
在这个密钥里面我们除了分成密钥和数据两种类型之外呢
还分成存储密钥与签名密钥这两种类型。
那么什么是存储密钥呢? 存储密钥就是用来进行加密的这个非对称性密钥
就是它主要是用来对这个数据进行加密的,比如说我们
刚才说的叶子结点和非叶子结点这个存储结构,那么它为了保护下面的这个非叶子结点
那么可以对这个密钥进行一个封装保护,就是用这个做非对称密钥进行封装保护
那么签名密钥主要是用来签名的这样的非对称性密钥
它只能够为受保护的这个存储结构的一些叶子结点
就是说这些签名密钥呢只能够是针对我们的这个叶子结点
此外还有就是特殊的一些签名密钥,就AIK 那么AIK就是作为SRK的一些直接的
叶子结点,就是它不会再有非叶子结点的子结点,这就是AIK
这就是我们事实上所说的这个受保护的存储机制里面密钥的一些类型 或者秘密的一些类型。
此外呢,大家可以看到在 这个TPM里面,其实它秘密,就是密钥呢其实也分成两大类
两种,就是按照这个可迁移和不可迁移,它又分成 三种类型。
第一种就是完全不可以迁移的密钥 就是说这种密钥只能在TPM里面放着,由TPM
控制,那么比如说我们刚才提到的这个 EK和SRK,对吧?这样的密钥是不可以
移出到这个外面的
当然了还有一些密钥是可以生成一些这样的密钥,把它 设置为非可移植的密钥。
此外呢,还有一些 可移植不可鉴定的密钥和可移植可鉴定的密钥这样两种类型
那么刚才我们提到的是密钥的这个存储 就是密钥的这个类型,秘密的类型,包括数据,包括密钥
那么以及密钥的这种划分类型。
那么密钥在使用 的时候呢,其实是,因为它是在,受
TPM 保护的 所以什么情况下你可以用这些密钥,其实 TPM 也做了一些规范
比如说你要使用受保护的这个存储结构里的秘密的时候 它需要满足一些条件。
满足什么条件呢?比如说需要对 SRK
到这个访问的这个秘密的路径上,所有结点进行逐级地解密 比如说你要拿到这个最终的密钥的时候,你要从根密钥
一直到你这个要,需要的这个密钥这个整个路径你都要有权限
第二呢,就是需要去拥有访问这个秘密的一个授权的数据 就是说你首先不光是要有解开这个的秘密
的这个能力,还需要就是有这样一个权限去读取它里面数据的一个授权 当然还需要凭它的环境满足这个定义的
PCR 环境,就说它的安全,因为是做的封装嘛 那么封装的时候还要求去验证它的
PCR 的状态值跟你的 访问之前的时候的那个期望的状态值是不是一致,是不是一致
这是我们这个密钥在使用的时候,需要做这样的一些严格的限制,严格的限制 那么
TPM 提供的机制呢,如果你要去修改相关的密钥
也是一样,就是要去 就除了要提交原有的这个,就是你所使用的这个秘密授权数据以外
还要提交这个上一级,父密,父密钥的这个授权的数据
你才拥有对这个下一级这个密钥进行修改,这样一个权限 这样一个权限。
当然另外就是 TPM 还提供了一些密钥的缓存的这样机制,因为大家知道这个密钥是一个树形的
这样的结构的管理,所以呢每一次都去编立整个路径所带来的开销是很大的,所以它也提供了- 一个缓存机制
最后呢,就是 TPM 提供了 TPM 密钥的一个 迁移机制和维护机制。
就是我们前面也提到过 就是说数据呢,它事实上是允许 跟所有者在一起的。
所以的话,如果这个数据从一个 TPM 平台要想迁到另一个TPM平台
那么应该允许它的密钥是可以迁移的,对吧?所以呢,在这里面也要提供相关的一些密钥迁移- 的一些机制
此外呢就是要有一些维护的机制,就是说允许 就是防止 TPM 的这个平台崩溃的时候
你还能够保存好,就是在我的相关的位置保存 一些相关的秘密数据,这些数据允许对这个
密钥进行备份,还有进行一些迁移 就防止这个系统某一天 down
掉,或者坏掉的时候 比如说我可以把一些之前生成的密钥,那么我做一个备份,或者说我把它迁移出来
那么迁移出来以后呢,万一这一个 TPM 芯片的平台整个 down 掉了,或者是崩溃了
那么我其实等它恢复以后我还可以用,把这个密钥导进去 可以让它把以前的数据给它恢复出来
可信平台的这个执行模型,其实强调的是可信平台
在使用的过程当中应该有一些机制能够来,让用户去
决定,就是这个所有者去决定这个功能要不要启用 比如说
TPM 的这个操作状态,它就分为 三种,一个叫 Enabled 和 Disabled,还有激活和
非激活的,还有这个拥有和非拥有这样的三个状态 这都可以由用户去设置。
此外呢,就是 TPM 还提供一些自己的机制,因为任何一个外设在系统起来之前 都要做字节。
那么 TPM 作为整个硬件平台的硬件,整个平台的这个组件之一 那么当然它也需要做一些字节。
那么平台做启动和初始化的时候 上电的时候,那么怎么样去重置它的这个寄存器,对吧? 还有睡眠状态、
恢复状态等等,这些它都要做一些规范和要求 这也是可信平台的这个执行模型。
好,这一部分我们先讲到这,谢谢