胡俊:如何理解和学习可信计算3.0
本文共分4部分内容: 可信计算3.0的基本概念和学习思路、重塑网络安全观、理解可信体系架构、在实际环境中应用可信3.0技术。
我国现在非常重视网络安全问题,网络安全已经被提到国家安全的高度。而我国网络安全的基本要求是安全可信。它并非一个抽象的概念,在我国的等级保护制度中,对安全可信有比较明确的定义。
在我国的等级保护制度中,对重要信息系统安全可信的要求是构造一个安全管理中心支持的三重(安全计算环境、安全区域边界和安全通信网络)防御框架,从技术和管理两个方面进行设计,做到系统的 “可信、可控,可管”。更具体一点说,可信是指针对可信计算资源构造保护环境,从可信计算基(TCB)开始层层扩充,对计算资源进行保护,确保系统服务安全;可控则是针对信息资源(数据和应用)构建业务流程控制链,以访问控制为核心,实现主体(用户)按策略规则访问客体(信息资源),确保业务信息安全;可管则是保证资源安全必须实行科学管理,强调最小权限管理,高等级系统实行三权分离管理体制,禁止设不受控的超级用户。
可信3.0也就是主动免疫可信,则是我国在网络安全领域长期研究之后提出的一种系统化的实现安全可信的方法,这一方法其核心特点为构造计算部件和安全部件分离的双系统体系架构,安全部件构建完整的信任链条以保证其自身可信,通过安全部件对计算部件的主动监控实现系统流程的可控,通过主动运作的安全部件来支撑对系统安全的管理。这一方法具有通用性,可以有效地实现系统的安全可信。我国的可信计算系列标准对这一方法的组成和各核心部件进行了描述。
可信3.0是基于我国网络安全实际情况,由我国相关科研人员自行研发,面向网络安全的创新体系架构。可信1.0主要考虑通过备份等机制增强系统可靠性,它是在系统中添加冗余,再通过一个实现容错算法的层来实现;可信2.0基于可信平台模块(TPM)等可信根,实现一个软硬件结合的被动组件,向系统硬件、操作系统和应用提供可信调用接口,系统可以使用这些接口实现特定的可信功能;可信3.0则构造一个逻辑上可以独立运行的可信子系统,通过这一可信子系统,以主动的方式监控宿主信息。从三种可信理论的概要结构图中,我们可以看到明显的区别和升级过程,这就是我们定义可信1.0、可信2.0和可信3.0的依据。
可信3.0理论的奠基人沈昌祥院士非常重视学生的基础是否扎实,包括密码学基础,操作系统基础和网络安全理论基础。但是在某次对话中,当我试着联系传统安全理论和可信3.0时,沈院士的指导则是“忘掉它!”。
院士当然不是让我彻底忘掉传统安全理论。我的理解是,我们要了解现有的信息安全理论是有局限性的,思路要跳出既有的安全技术,不要被当前的习惯性结论束缚,从更基础、更本源的角度理解安全,真正理解之后,就可以把传统的信息安全理论再捡起来,并且灵活应用了。
重塑网络安全观,是因为现有计算机理论体系并没有很好地把“安全”给包容起来,从原理和方法论角度来看,对网络安全并没有非常清晰的解读。我国网络安全正处于一个比较严峻的形式状态,网络安全必须要掌握在自己手里,想要做到这一点,必须要有科学的方法。另外,我国IT产业相对弱势,如果想要崛起,想要摆脱技术桎梏,就更需要采用科学的方法,不然网络安全很难发展起来。此外,科学的网络安全理论和方法是存在的,即使现在找不到完美的答案,也要努力保持正确的方向。
沈院士提出,网络空间安全极其脆弱,根本原因是网络安全有三个基本问题没有解决好。这三个问题是计算科学问题、体系结构问题和计算模式问题。前两个问题理论性比较强,我们不展开论述。我们简单讨论下第三个问题。
从软件工程角度,一个软件的开发过程要经过需求分析、概要设计、详细设计、然后集中测试、验收、部署,经过了完整的开发过程的软件,我们用起来是比较放心的,因为做了充分的测试。如果项目经理不走正常开发流程,要求强行更改功能,我们知道这是错误的,会对应用稳定性带来负面影响。但是,这个开发流程没有为安全留出位置,一旦发生了安全问题,该怎么办呢?常见方法是针对安全问题打个补丁,而打补丁这个行为像不像项目经理强行添加功能?我们知道这种行为既不能保证安全机制完整,也不能保证原应用的稳定可靠运行。那么以安全为名义,就能让原本不合理的行为变合理吗?打的补丁我们有能力对其进行归零测试吗?不能的话又怎么保证补丁的可靠性呢?
从“Wannacry病毒”发作的时间线上,我们可以看得更清楚些。这个病毒一开始出现时,很多人在网络上说,这就是你不打补丁的结果。其实这个病毒最早是在2016年8月由“影子经纪人”(Shadow Breakers)的黑客组织泄露的,但是他什么时候发现的呢?我们不知道。我们只知道是美国NSA公布的,所以在很早之前,如果NSA用这个漏洞攻击你,你是不知道的,到16年8月,我们知道了这个漏洞可以攻击网络,但是你没有任何防护办法,到2017年3月微软给出“永恒之蓝”补丁,打补丁可以防范基于永恒之蓝的攻击,5月份的时候,这个病毒发作。也就是说,我们打补丁的行为,其实只是保证了17年3月之后对wannacry病毒的抵抗能力,在此之前,打补丁不能抵抗基于“永恒之蓝”漏洞的攻击,在此之后,我们也不能保证系统对其它漏洞有抵抗能力。更糟糕的是,如果补丁因为测试不足而存在新漏洞,或者干脆存在后门,那么打补丁这个行为反而会带来新的问题。而这已经是现实发生过的事情。大家是否已经感觉WIN10越来越不好用?你打一个补丁,可能就影响了某些软件无法正常使用。我国等级保护标准已经明确要求,工控系统如果需要打补丁,在打补丁之前一定要有严格的安全测试。
所以说,现有的很多网络安全解决思路,像打补丁、防火墙、防病毒、入侵检测等“老三样”解决方法,追根溯源来看,是有局限性的,不能从根本上解决问题。要从根本上解决网络安全问题,就需要正本清源,这也就是重塑网络安全观的缘由。
可信3.0的网络安全观,就是从根源上考虑安全可信解决方法的网络安全观。我们叫它主动免疫机制,不是说它从生物免疫机制中借来了什么神奇技术,而是它借鉴生物免疫的思想,从体系架构上进行了的重构,我们考虑免疫系统具体是怎么运作的,第一,它属于独立运作,不受大脑控制;第二,免疫系统是识别自己与非己,并排斥非己部分。这些做法在网络安全架构中是有其合理性的,能够为网络信息系统培育“免疫能力”,对未知病毒和攻击手段产生抵抗力。可信3.0借鉴这一思想,从计算科学理论、体系架构和计算模式上提出了入手,构建了自己的安全观。
从计算科学理论上说,可信3.0认为网络安全的目标是确保为完成计算任务的逻辑组合不被篡改和破坏,实现正确计算。就是说我们不能靠着修修补补,或者是积累攻击特征来解决网络安全问题,这个不利于整体安全防护,我们要根据完成计算任务的逻辑组合自身的特点来区分“自己”和“非己”,保障“自己”的正确执行,禁止 “非己”。这决定了我们安全机制需要以定制的访问控制为核心,这个也符合经典的网络安全理论和网络安全的最新发展趋势。
从体系架构上说,它对传统冯诺依曼架构做了大手术,构造了独立于传统冯诺依曼架构的可信部件组成的子系统,传统架构则成为计算部件。但这样的架构解耦了计算部件和可信部件,反而减小了对传统架构的影响,让我们可以保持传统架构基本不变,同时,因为屏蔽了计算部件对可信部件的访问,保障可信部件的可信性也变得更容易了。
从计算模式上来说,实现双体系架构后,我们的安全可信体系就可以从系统中分离出来。我们可以从环境入手,具体就是从底层软/硬件、操作系统、网络的控制点入手,通过可信部件进行统一的组织管理,构造出安全管理中心集中管理的三重防御体系。有这个防御体系为基础,我们既可以根据应用安全需求和系统环境,定制系统安全可信策略,通过可信部件监控应用的行为,根据策略允许可信的行为,对不可信的行为采取对应措施。这样的安全机制具有通用性和灵活性,对应用影响更小,部署成本也更低。这就是等级保护中提出的 “一个中心,三重防御”的主动免疫防护框架。
做零信任的同志们,如果将来遇到这些问题,欢迎大家再来和我们交流讨论,可信3.0对这些问题有自己的解决思路,或许能够提供帮助。
网络安全等级保护制度已经是我国法律规定的,所以如果做重要信息系统安全的话,就应当遵循它。做非网络安全等级保护系统的安全方案时,也可以借鉴学习它,因为这个制度不仅仅是一个规范,也是一个体系化的安全框架,有详细的技术指导。国标GB/T 25070-2019《网络安全等级保护安全设计技术要求》其实就给出了一个设计方法的指南。
网络安全等级保护制度所提出的要求看起来很复杂,但是只要我们抓住核心,就能够理解这些要求。下面这个图是网络安全等级保护制度中各级别的核心要求,理解了这些核心要求,再去看别的,就比较好懂了,具体的要求都是为了实现核心要求而设置的,而每一级别的可信保障要求,又是来支撑我们每一级的访问控制要求的。可信保障一级是自主保护,二级则开始按照指导保护,保护级别是“审计”,就是说如果说有一些违规的操作,会把它记录下来,比如审计的对象是谁,这个能否验证?还有审计信息,是否会被篡改?等保要求的应用程序验证和实际保护就达到目的了,所以我们看到可信保障是用来支撑安全审计保护的。三级可信保障是动态度量的要求,是用来支持三级的基于安全标记的强制访问控制的。我要做强制访问,得确定访问的主体和客体是否被别人冒充了,这个是要验证的,不验证的话,被人冒充了强制访问控制机制就失去意义了。那四级呢,实时关联感知,我们稍好提一下。五级我们一般接触不到,暂时不用考虑。
等保里要求安全可信,从“安全可信”这个语境上来讲,有一些概念可能在别的地方也见过,但不一定是一回事儿。以四级里的“态势感知”为例,大家想的“态势感知”可能是一块大屏幕,各种PB级感势 ,但是我们四级里“态势感知”有个前提,就是主体和客体的全面标记、全覆盖的访问控制和审计,我们还有自己的信任链条,这时,我们要基于这些审计信息,不再估算,或者用概率计算,而是根据信息实时分析得到态势感知结果,应该是根据我的访控规则和审计状况推理出来的,这个要完整信任链条,严格而全面的访问控制机制以及系统结构化安全作为支撑的。否则要是布个态势感知系统就上四级,那么四级也太容易达到了。
可信3.0有一个很大的优点,就是可以应用于各种新型信息系统中。每一个新型信息系统都有一个对应的安全可信解决方案。比如云计算-可信云,工控系统-可信工控,物联网-可信物联网,区块链,大数据,5G等等虽然还没有形成标准,但是我们相信以后也会有的。那为什么可信3.0适用于这些系统呢?因为其实各式各样的新型信息系统在安全可信角度是类似的,再复杂的机制到可信计算这里无非就是拓扑结构、信息流,可能性能与安全属性不同,但都需要安全可信区域边界、安全可信计算环境和安全可信通信网络,依托定制的可信部件,提供各具特色而内核又相通的解决方案。
核心部件TPCM、TSB等:需要设计和开发全新、通用的基础软硬件部件;
与传统系统的对接:深入掌握传统系统基础上,为传统系统添加主动监控机制添加;
安全可信功能的实现:以组件化,自动化、智能化,可视化方式实现安全可信功能;
安全可信策略的制定:梳理应用流程,明确权限,量体裁衣。
可信3.0实现了计算部件与可信部件的解耦,这就给我们学习安全可信带来了新的方法。我们可以把复杂的应用抽象为不同安全属性的节点和其间的信息流,甚至可以基于可信组件将这个过程模拟出来,针对这一模拟的应用流程寻找安全解决方案。而这一方案又可以映射到实际的信息系统中。北京工业大学在网络空间安全教学中已经开始应用这一方法来设计系统安全实训课程和教授可信计算技术。我们还基于这一方法设计了新型的网络安全竞赛题目,在一些比赛中试用并得到好评。下面是我们设计的一个访问控制实训题目,展示了透明于应用添加标记和实施访问控制的过程。