可信3.0是什么?

  信息安全

沈院士的可信计算3.0和他提的旧可信计算并没有本质区别,仍旧是两大主要特征:双系统体系架构以及主动免疫机制。而可信计算3.0这个名字则是方滨兴院士的建议。

为什么要起这么一个名字呢?原因是可信计算在概念理解上有很大的混乱。提起可信计算,有人理解为软件可靠性方面的知识,有人理解为国际上TCG组织相关的标准,每次沈院士团队给人讲解可信计算时,还先得说明下自己和别人有何不同。因此,方院士就提出通过分代的概念来区分不同的可信计算,软件可靠性相关的可信计算定义为可信1.0,TCG的可信计算定义为可信2.0,而沈院士的可信理念则定义为可信3.0。

这个定义并非拍脑袋提出的。实际上,软件可靠性相关的可信理念是上世纪七十年代提出的,TCG组织的前身TPCA虽然成立于1997年,但是采用可信链之类的概念构造系统的方法在军队领域早就开始使用了,国外我不知道具体时间,国内是上世纪90年代初,有些系统现在还在使用,开发者正是沈昌祥院士。而沈院士的双系统体系架构和主动可信监控的思想则是在2010年左右提出的,差不多二十年一代。

怎么理解1.0,2.0和3.0的关系呢?其实,我们可以把它们理解成随着技术进步,针对不同的安全威胁而在应对措施上的进化。

上世纪70年代时,大型系统为了提高稳定性,需要使用冗余备份机制以对抗随机错误。这时的安全威胁是随机发生的错误,冗余机制足以对抗。

上世纪90年代时,人们担心的不再是随机目标,而是来自黑客和病毒的恶意攻击行为,这时使用冗余备份机制是没有意义的,原系统有漏洞,备份系统也有漏洞,攻击者用同样的攻击方法,可以攻破所有备份系统。因此,人们提出了以物理保护,有可信密码支撑机制的可信根(一般为芯片)为起点,通过一环套一环的可信扩展,构建完整可信链的方式,实现一个攻击者难以插进来的可信度量机制。这就是TCG的可信机制,也是所谓的可信2.0。

但是注意,可信2.0有一个前提,就是它需要CPU、操作系统和应用程序的自律。其实可信2.0并不能证明机器是可信的,它只是证明了机器中的部分关键硬件、软件没有被篡改,这些硬件、软件的可信性依赖于用户对于硬软件开发商的信任。而这种信任方式对于高安全要求的敏感信息系统而言,是不可接受的。中国政府不可能无条件信任Intel CPU和Windows操作系统。

可信2.0还有另外两个问题,就是开发的复杂和不兼容,以及信任管理的困难,特别是云计算等环境,信任几乎没法做。这两个问题才是阻碍可信计算推广的最主要原因。

而可信3.0提出的背景就是希望利用可信计算为国内重要信息系统的安全提供支撑。注意这个词:支撑。可信3.0是辅助安全机制,为安全机制提供服务的,而并非代替安全机制的。为安全提供支撑首先要解决自主自控问题,因此,可信3.0期望把可信作为安全的共性部分,抽出来独立实现。用这个独立实现的可信子系统并行运行于原系统中,以一个监控者的身份管理安全。监控的方式是利用钩子机制在系统中引入监视点和控制点,由安全机制处理监视点和控制点的行为。这个监视点和控制点在一个完整的信息系统中一般是跨层次、跨节点而存在的,而可信机制则用来把监控这些点的安全机制组合成一个完整的安全体系,并提供可信保障。换言之,可信计算3.0在这里起的是安全机制的粘合剂和加固梁的作用。

怎么实现粘合和加固呢?每个安全机制都可以抽象成一个接收安全策略(谁是好人,谁是坏蛋的预设),实施控制,并返回审计信息(系统发生了什么事,我允许了谁,禁止了谁)的引用监视器。那可信计算3.0就是构造一个可信子系统,与安全机制的策略部分和审计部分对接,处理策略和审计信息的调度,保证这些信息传输过程的可靠性,并且利用密码机制向外界证明这些安全机制是否有效运作。而这些功能几乎是操作系统无关的,这也就意味着它能够以比较通用、独立于系统的方式实现,它的实现就是可信3.0中的可信软件基,一种定制的分布式、可信协议支撑的消息驱动模式系统。而这个系统的实现又可以回归信息安全中最传统的理念:独立性、最小化。

目前,可以说并没有真正意义上的可信软件基实现。《可信计算3.0工程开发初步》一书的工程支撑,就是北京工业大学可信计算实验室实现的可信软件基原型,它在功能上满足了可信软件基的大多数要求,但是还没有彻底实现独立性、最小化等要求。不过它在可信计算应用上确实已经呈现了很多不一样的效果。最明显的效果就是可信开发难度大大简化了。

Hiro Wang的解答,应该说是看到了可信2.0和可信3.0的主要区别点,但是可信3.0的双系统体系架构和TEE还是有比较大的区别的。TEE只是一种隔离机制,作用在为信息系统提供一个比较安全的独立执行环境,而可信3.0的则是想通过一个与系统深度解耦的可信软件基反过来调度管理系统中的安全机制。

下面这张图是我关于可信计算学术报告的一页,用来说明三种可信机制的区别。注意可信3.0是一个独立系统通过安全机制作用于宿主信息系统。可信3.0里的“主动可信监控”是指可信系统对安全机制的主动作用。

至于Hiro Wang提出的单个可信上升到系统级的可靠性问题,可信3.0认为可信子系统特别是可信软件基,其内部逻辑几乎是与系统无关的,并且可以遵循独立性、最小化原则进行开发。因此,对于这一系统的升级和排错,处理的是一个相对固化的有限集合(相当于一个特殊的小型操作系统),只要持续进行改进,可靠性总能提升到很高的程度。而可信子系统与原系统的松耦合特征则大幅减少了原系统添加可信功能的复杂程度。因此,可信3.0下可信计算的开发,实际上是把复杂的工作合并并且封装到可信软件基里面,对用户来说反而是简化了。因此从发展的角度来看,可信3.0比可信2.0在性能、稳定性和易用性角度更有竞争力。毕竟TCG标准已经提出快20年了,可信计算还是雷声大雨点小,我们不妨看看新的思路能否解决问题。毕竟可信3.0现在不是纯炒概念,而是核心源码都端出来了。