[音乐]
[音乐]
同学们好 上次课呢,我们把这个可信计算的相关的一些背景知识
以及 TPM 的核心的一些设计思想,做了一些介绍
那么下面我们来了解一下就可信计算国内外的一些研究的现状 可信计算呢目前在国内外
的研究呢其实主要覆盖的是三大,三个领域啊 第一个是关于可信计算的体系结构的研究,第二个呢是关于可信计算的这个
基于可信计算芯片的这样的一些相关的安全机制的一些研究 以及我们基于可信计算的一些应用的研究
在这几个方面的研究呢,我们其实这里面我们会简单提到这四个方面
第一个是关于完整性的度量,第二个是关于远程证实 第三个是体系结构,第四个我们会提到可信计算的测评和相关的应用
那么,完整性的度量其实我们也前面在讲到 TPM 芯片的时候其实提到过
它其实是非常重要的一个环节,就是证明我这个平台的可信性 是非常重要的一环。
我们这里特别值得一提的就是 最经典的就是 IBM 研究院做的一个
IMA 的这样一个 完整性度量的一个体系结构,这个体系结构呢目前已经在
Linux 内核里面进行了实现 并且已经作为默认的这样的加载的一个模块,已经可以在
2.6 以后的内核里面都支持 都支持。
那么这个 IMA 的这个架构主要是支持操作系统如何去度量
上层的这个应用程序的,因为前面我们 看到过这个
TCG 里面所支持的这个信任关系 是通过一层一层往上度量的,对吧,所以我们前面所,早期的这个可信计算
其实只支持到度量到这个操作系统,就是说从 OS
loader 可以度量到操作系统,但操作系统往上的到 app
的这个度量其实 刚开始的时候是并没有相关的这个支持的 所以 IBM
研究院在这个方面提出了一个很好的一个 这样的体系结构。
我们看一下它这个体系结构图 这个体系结构图其实就是在我们的 kernel
这一层,呃,kernel 层,那么提供了相关的这样的一个度量架构 呃,度量架构。
那么它度量的东西呢,一会我们会提到啊 那么 IMA
度量架构它的主要作用其实 也是要对我们上面所加载的这个应用程序
还有这个运行库里面的内核模块以及其它的一些配置文件,我们要进行相关的一些度量
同时要生成相关的度量列表,叫 ML,
ML 呃,我们看这张图,这就是 IBM 所提出的这个
IMA 的完整性度量架构 这张图上,我们看底层这块是我们的
TPM 的芯片 在这个芯片里面,跟完整性度量最相关的当然是我们这里所看到的几个寄存器了
就 PCR 的 0 到 PCR , PCR 的这个 n 那么我们现在所看到的这个
IMA 的度量,其实它很多的这个度量值是写在
默认的是写在 PCR 寄存器的 10 上面的 这个大家可以去参考一下这个论文。
那么大家 看一下我们这里所提到的这个完整性度量是在操作系统内核里面
其实是增加了几个组件 第一个就是这个证实的一个服务,还有这个
就是度量的 list 以及一个度量的一个代理,代理
那么在度量的过程当中呢,它需要把每一次 通过度量代理把度量的值呢,不光是要存在这个
Measurement List 里面,还要报告给我们的 PCR
寄存器 这是在度量的时候它采取的一个方案。
那么 用户就是我们的挑战方如果想要去证实这个平台的完整性的时候呢
他需要发出一个完整性的一个挑战,其实这个挑战方其实就是要通过这个 证实服务去
TPM 的芯片里面去拿到它所要获取的这个平台的状态
那么这个 TPM 芯片呢会通过这个 AIK 的签名 把这个它所取到的这个
PCR 寄存器的值返回给 这个证实服务,那么这个签好名给它
当然也要获取这个度量列表,也要签上名,一起返回给这个 Challenger 那么
Challenger 通过公钥把它解开 然后跟它的指纹库做一个比对,如果验证合理,它就认为这是一个 平台是可信的。
这就是 IMA 的度量架构,那么它主要就是在内核级 增加了这样一些组件。
那么 IMA 的这个 组成呢就是刚才我们提到了,就是包括了这个一个度量机制
还有一个完整性的一个挑战机制,还有一个完整性的验证机制 这是它的主要组成部分,那么
IMA 的度量结果其实就是 我们刚才所看到的,就是
PCR 的寄存器里面所存放的 它们这个哈希的值。
那么 IMA 度量,它度量的这个目标和实体 也就说 IMA 这个度量机制它所度量的内容是什么?
刚才我们前面提到了,就是主要是为了保证这个信任链一直往上,就是从操作系统一直往 app
但事实上这个操作系统除了度量我们所说的上层的 app
应用程序之外 它还可以度量就是,就是这边我们看到它有五类型的这个度量目标
第一个当然是我们的初始的内核
还有我们要加载的内核模块,就是你要新增加一个内核模块它也可以度量
那么进程每,就是操作系统每次加载一个可执行文件,就是运行一个程序的时候它也会度量
那么我们的程序或者我们的操作系统每次,或者进程加载一个动态库的时候 它也要做度量。
还有一些就是进程的一些输入,比如说一些配置文件等等 它也会被度量。
这就是 IMA 它所度量的一些实体 那么 IMA
度量机制和验证机制,这个其实刚才我在讲这个 IMA 那个架构的时候,曾经也提到了
当然这张图更清楚地来说明了它的这个度量的一个过程 这是 IMA
的这个挑战认证的协议 大家可以看到它是两方了,就是我们刚才所看到的
就是挑战方和这个验证方 那么挑战方先要发一个这个
Nonce 过去,一个新鲜值给它 那么然后通过对方从
TPM 芯片 里面取出 PCR 值做上签名加上 Nonce
一起签名 把这个度量列表也一起传过来,那么这边要去验证这个签名和验证这个 Nonce
这个值 如果是正确的,然后就用这个度量列表
和这个 PCR 值进行验证 那么验证跟指纹库里面的值进行比对
这是这个 IMA 的体系框架 呃,那么此外呢,除了 IMA
提出以后呢 人们对这个体系结构呢也做了一些,其实提出了一些新的一些改进的方案
比如说他们认为,就是有些文章认为,就是这个 IMA 呢是存在了一些问题
比如说这样的两个问题,它只在加载的时候 就说只在这个应用程序或者是这个动态库在加载的时候
才进行度量,他说这样其实并不能准确反映这个运行时的行为
这是第一个问题,第二个问题呢就是说现在的方法是要求
整个系统是可信的,即使远程方只要求特定的应用程序 就是说现在的这种方法,
IMA 的方法呢,是强调的是整个系统是可信的,那么事实上呢这个
远程方它挑战这个平台的时候,它觉得只要我,我请求 的那个应用程序是可信的就可以了,所以目前这个
IMA 的度量其实是 它是一个整体解决方案,但它没有就是一些,针对特定的一些需求做一些
做一些可以灵活的做一些配置或者是 方案,所以这个 PRIMA
呢其实就提出了自己的一个解决方案 希望对这个上面所提到的两个问题进行解决
这个方案我就具体不说了,建议同学们去参考这样一个论文去仔细阅读一下
那么事实上刚才所说的这个完整性度量里面很重要的 一个技术就是关于这个远程证,远程证实,呃,远程证实
那么远程证实这个技术呢,其实就是我们刚才所说的这个挑战方跟这个
平台做这个证实的这个过程,呃,这个过程
那么这个证实的方案里面,目前有很多的一些研究就是说 我在挑战对方做这样的一些证实的时候
我到底是如何去让对方提供什么样的属性给我
就是对方应该给我提供什么样的属性,我才可以去证明,快速地去证明这个平台的可信性
那目前的研究呢有这样一些类型,比如说,一个基于 基于二进制代码的远程证实方法。
就是对方呢只去度量, 就是度量呢这个目标就是这可实行代码,并不度量它的源代码。
第二种就是基于属性的远程证实。
就是说只度量这些 平台上的某一些特定的一些属性,比如说这些程序所属的用户、
它的配置等等,对吧?还有基于行为的远程证实。
就是根据它的这个运行的这个 运行或者说这些程序的运行情况来进行度量。
当然也有这些作者提出了基于源代码的远程证实。
就是说在这个源代码的,对源代码本身 就可以是不是我们也可以进行证实。
那么关于这些方案呢,具体的一些
研究内容我就不在这一一展开,那么有兴趣的同学呢欢迎去、 去参考一些相关的文献。
那么,可信计算的体系,这个是我们在整个这个可信计算建立的过程当中非常重要的一环。
那么这个体系里面除了我们刚才所提到的这个远程证实和这个
完整性度量,其实也是为了把整个信任链 从下往上建立一个完整的信任链。
那么,在这个完整的信任链的过程当中,其实除了我们 提的前面的内容,还有很多底层的东西也是需要做的。
比如说我们需要去做这个 Trusted LILO 或者 Trusted Grub 这样的一些软件。
比如说对 LILO 或者 Grub这样的软件我们要去增加怎么样对上层的 这个操作系统进行度量的这样的一部分的源码。
此外呢,就是我们还要考虑就是可信计算,比如说跟虚拟化怎么结合?
如果之前的这个可信计算的技术呢,可能度量的是 OS Loader
就直接去度量了我们的这个操作系统,但是呢在 一个物理平台上面,现在由于虚拟化的技术的发展,所以在物理
在硬件之上可能跑的不是操作系统,而是跑的虚拟化软件。
那么虚拟化软件之上才跑的是操作系统。
所以这样就考虑到就是我们在这个 BootLoader 这一层
到这个怎么样对上层的虚拟化软件进行度量,那么虚拟化软件如何对操作系统进行度量? 这样一些考虑,那么都需要去考虑。
另外呢,就是在虚拟化的平台上面它可能跑了 N 个的虚拟机, N
个虚拟机,比如说我们看这张图上有 N 个虚拟机,那么虚拟机
一个平台上有就是相当于 1 对多, 1 个 TPM 对多个
物理平台,多、 多个虚拟机的时候就存在 N 对 1 的问题。
那么怎么样去建立这样一个 N 对 1 的这样一个信任关系? 也是目前研究领域大家很关注的一个方向。
这是一个 OpenTC 的一个体系结构,它事实上,事实上想做的就是怎么样在虚拟化的平台上
建立这样一个信任关系?尤其是对这个 TPM、 VTPM
之间的映射关系 以及它的迁移的问题做一些研究。
此外呢就是可信计算的测评、 可信计算的测评。
可信计算的测评工作呢, 目前主要是在 TCG 的推动之下,
那么它制定了一个 TPM 的一个保护轮廓,保护轮廓。
有了这样的一个保护轮廓 PP ,就是我们所说的 CC 标准, 前面我们提到过的
CC 标准,其实是要求制定一个 PP 的框架,对吧?就是我们说的保护轮廓。
所以 TCG 呢其实已经出了这样一个保护轮廓,
那么有了这个保护轮廓以后就会存在,就是我的这个 TPM 产品跟这个
PP 是不是 符合,对吧?是不是符合,那么要做符合性的测试、 符合性的测试。
那么在国际上呢, TPM 测评工作事实上目前已经有
很多在做,那么我们国内 也、
也开始在做一些相关的工作,比如说我们国内现在也有一些产品嘛。
比如说最初的时候联想有,那么后来这个朝日、 瑞达,那么现在我们的国民技术也会在生产
这样的一些芯片,那么这种芯片生产出来以后怎么样做这种符合性的测试, 那么这是一个有很多值得研究的一些内容。
好,这部分内容呢我们后面还有一些关于这个 TPM 和 TPM1.2
和 TPM 这个 .next, 包括现在 TPM.2 的一些这个区别,
那么这些内容呢我们会在后面跟这个相关专家做这种访谈的时候会提到, 在这儿我就不再展开了。
那么 TPM 芯片目前在国外 也有一些应用,包括我们在这个
PC 就和 Server 上面有应用,那么之后
现在也有一些产品在这个我们的移动终端上面有一些应用, 所以 TPM
的应用呢它的前景非常好, 那么所以希望同学们在以后的学习当中能够关注这样一个技术,
这里后面我们还提供了一些可信计算一些相关的一些资源、 开放资源,
还有一些参考书目,建议同学们有空的时候多去看一看。
好,这次课我们就讲到这,谢谢!