,,,*
(1.清华大学微电子学研究所,北京10084;2.澜起科技股份有限公司,上海200233)
网络空间的发展带来大数据的爆发,海量数据的存储与处理离不开高性能服务器的支持。作为网络空间的重要节点,服务器一直是网络攻击者的攻击目标和安全问题的重灾区。层出不穷的计算机病毒、木马程序、软件后门、间谍软件、系统文件恶意篡改、破坏访问权限等安全问题,严重威胁服务器的安全运行。
中央处理器是服务器中最核心、最重要,也是最复杂的元器件。2018年1月,媒体披露了熔断[1]和幽灵[2]漏洞,该漏洞已经在处理器中存在了20年,利用的是现代高速处理器在性能提升时普遍使用的一种技术,包括高速缓存、乱序执行和推测执行。尤其是幽灵,其影响范围几乎涵盖市场上所有微处理器厂商。随着时间的发展,业界的共识是:彻底解决该漏洞需要重新设计并更换处理器。这个事件说明,处理器硬件设计中的漏洞一直存在,将来也会存在于系统中。这些漏洞无法依靠软件来解决,软件只能增加漏洞被利用的难度,彻底解决需要处理器架构颠覆性革新。但是,处理器结构颠覆性革新并不容易,且大规模的存量服务器也不可能一朝一夕之间全部更新换代。更为突出的是,以处理器为代表的芯片生产过程存在严重的安全隐患[3-9],尤其是处理器芯片的设计、制造、封装及测试等过程已变得极其复杂,不可避免地要借助全球化分工与协作才能完成。在这个背景下,设计制造的每个环节甚至每个具体的步骤都有可能会引入以恶意硬件为代表的安全威胁。在处理器芯片设计阶段,采用形式化验证手段可使恶意硬件的插入变得困难[10-13],但需要处理器黄金模型和恶意硬件模型等先验知识的导入,而这些先验知识极难获得。在CPU芯片制造阶段,依靠光学检查[14]和功能测试[15-19]来查找恶意硬件费用高昂、覆盖率低,实现全面的安全监控是非常困难的[20]。熔断和幽灵等漏洞,以及硬件木马的威胁,让处理器硬件安全可信问题从学术研究领域或者小众领域走入主流大众的视野。
在这样复杂严峻的软硬件安全形势下,必须从处理器芯片、服务器硬件结构和操作系统等方面综合采取措施,从根本上提高处理器及其服务器的安全性。清华大学经过多年深耕,在可重构技术基础上提出了CPU硬件安全动态监测管控(DSC)技术,与当前可信计算技术结合,从硬件层面保证处理器芯片行为的可信,从系统层面保证服务器软件行为的可信,为服务器的可信框架提供了新的思路。
本文通过对现有的处理器芯片安全风险的分析,探讨了硬件安全面临的风险,指出基于可信处理器芯片的服务器软硬件可信框架和应用价值,最后对可信处理器芯片及其服务器可信框架的意义和价值进行了探讨。
本节将介绍当前处理器芯片的特征,并对其硬件漏洞和安全风险做出分析,最后给出可信处理器芯片的实现原理和设计思路。
处理器芯片遵循芯片设计的规范流程,全生命周期包括设计、验证、生产、封装、测试、应用等众多环节,其复杂度和集成度极高,电路规模庞大(约10亿~200亿颗晶体管),是整个服务器的“大脑”。
处理器芯片的安全决定了整个服务器的安全,也是由服务器构成的信息系统、网络系统的安全基础。目前我国高端处理器芯片的全生命周期严重依赖国外技术和厂家,存在巨大的安全风险和不稳定因素。
根据上述特征,处理器芯片主要面临如下安全风险:
①在竞争激烈的处理器市场,更高性能的处理器芯片意味着更高的市场份额和利润,处理器厂商在性能上大做文章,却有意或无意地忽视了对处理器安全性的保障。同时,处理器厂商为便于后期升级与维护,通常会在处理器芯片中遗留后门,扮演“全知全能的上帝”,却为用户带来了极大的安全隐患。
②芯片设计中涉及到的环节众多、流程复杂,设计人员的疏忽所带来的硬件漏洞或者前门,或别有用心者故意设计的硬件木马,再或者不可信的程序代码造成的敏感信息泄露,都会带来潜在的系统安全风险。
③处理器芯片的硬件风险行为不受监管,不留痕迹,且操作系统、杀毒软件毫不知情。对处理器芯片的硬件行为不了解、不清楚、不控制,存在巨大的安全隐患。
可信处理器芯片的设计思路是将通用处理器芯片与清华大学可重构计算处理器(RCP)芯片紧密耦合,利用RCP芯片的安全特性与可信属性,对处理器芯片的硬件行为进行监测与管控,为服务器上的可信计算环境构建标准软硬件可信根。具体来说,可信处理器芯片的实现原理可以分为以下3部分:
①通过集成RCP安全芯片作为TPCM,实现对处理器芯片的直接控制,使TPCM成为服务器上电后第一个执行部件,对其他部件进行度量。只有每一环节都度量通过,服务器才会正常启动。
②通过集成RCP安全芯片,跟踪监测处理器芯片所有数据出入和运行状态,一旦发现风险行为,即刻执行预定安全策略,直至停止处理器芯片的运行。
③通过控制处理器芯片的微码更新,实现对处理器芯片微码的安全管控。
基于可信处理器芯片的服务器软硬件可信框架集成了清华大学CPU硬件安全动态监测管控(DSC)技术和现有的可信计算设计思想,针对服务器的各个主要软件部件以及处理器芯片硬件部件提出了一整套可信解决方案,构建了从软件到硬件的全方位可信计算环境。同时,集成的RCP芯片也可以提供高性能的国密算法分载服务,内部的可重构硬件单元可灵活配置,支持用户自定义算法。DSC技术同时可以管理BIOS/微码等关键固件的更新,配合软件漏洞防护机制,可以有效防止利用ME/熔断/幽灵等漏洞的攻击手段。可信框架组成如图1所示。
图1 基于可信处理器芯片的服务器软硬件可信框架Fig.1 Server software and hardware trusted framework based on trusted CPU chip
基于可信处理器芯片的服务器区别于其他通用服务器的特征之一是依托国密SM2/3/4算法,采用可信计算TPCM设计思想,并将RCP安全芯片作为TPCM创新性的与处理器芯片紧密耦合。此方案为TPCM创造了可以直接控制处理器芯片、直接访问处理器数据通道的独特优势。
基于可信处理器芯片的服务器上电后,可信处理器芯片中的RCP安全芯片最先获得执行权,先于CPU启动。依托国密算法的安全启动流程采用“环环相扣”的安全设计理念,以RCP内部的BootLoader启动为起点,OTP(one time programmable)数据为黄金标准,依次完成后续各项数据的验证与启动,最终达到安全启动操作系统的目的。
BootLoader是固化在RCP内部ROM中的启动程序,ROM数据不可修改的特性保证了它的安全可靠性。BootLoader的任务是启动RCP Firmware,启动前需要进行解密和验签过程。RCP Firmware存储在主板的闪存芯片中。该闪存芯片是可多次擦写的存储器,为保证Firmware不被篡改与剖析,其上所有的数据均使用国密算法签名后加密存储。
RCP固件校验通过后会启动度量BIOS过程。BIOS作为底层系统固件,是通用服务器上电后首个运行程序,极易受到攻击。未经可信性验证的BIOS固件,是极大的系统安全隐患。攻击者可通过执行特定的BIOS代码,启动非法设备,在操作系统未启动的情况下获取硬盘敏感数据,干扰服务器正常运行。基于可信处理器芯片的服务器BIOS固件经过安全化改造,内置标准X.509格式的证书,配合标准的商业级CA系统与签名系统,可实现国密验签以及对CA身份的鉴别。同时,BIOS支持主备分区度量,任意分区BIOS度量可信后,RCP安全芯片将释放处理器,处理器执行可信BIOS代码。此时,度量失败的BIOS固件分区,会被自动强制恢复。
BIOS执行的最后阶段会强制启动对系统引导程序的度量。系统引导程序首先要经过CA的签名认证,然后与证书一起被写入存储介质。BIOS通过预先存储的CA信息库可以对证书及系统引导程序进行校验和度量,实现国密验签以及对CA身份的鉴别。若度量成功,则说明该系统引导程序是CA认证过的可信的数据,信任链继续传递。
系统引导程序执行对系统程序、重要配置参数和可信计算应用执行环境进行度量,度量通过会自动启动系统程序。若度量失败,会暂停启动,向用户告警此时可信计算运行环境出现异常,用户可自行选择是否进入系统。
可信计算应用执行环境会依据预先配置好的可信策略,确认应用程序、可执行文件、系统内核、文件系统、程序进程等是否正常运行。一旦检测到非可信应用程序执行或者非可信行为,即阻断异常状态,上报异常情况,必要时可以挂起系统或强行关机。需要强调的是,可信计算应用执行环境采用了RCP安全芯片提供的硬件国密SM2/3/4算法服务和标准可信密码模块接口,与处理器芯片紧密耦合,用户无需再为服务器另行配置TCM或者密码卡。RCP安全芯片与处理器芯片紧密耦合,大大降低了可信根被替换、硬件密码模块被攻击的可能性,具备极高的安全性和稳定性。
处理器运行时硬件安全关乎信息系统安全,确保处理器芯片的硬件安全一直是学术界和产业界都难以解决的问题。2018年初大量出现的CPU安全漏洞“熔断”、“幽灵”和至今无法解决的后续影响就印证了这一困境。为打破这一困局,清华大学提出“CPU硬件安全动态监测管控(DSC)技术”,有效应对处理器硬件漏洞威胁,首次实现了片内第3方硅监控的处理器硬件安全解决方案,大幅提升处理器芯片的硬件安全性。该技术能够在处理器芯片运行过程中快速检测出由于遭受恶意硬件攻击或者由于硬件漏洞、前门、后门被非法利用而引起的处理器芯片非预期行为。在此基础上,再根据用户需要对处理器芯片进行技术管控。
该技术将处理器从逻辑上分为2部分:一是处理器运算引擎,二是处理器监测管控电路,其中,运算引擎用于完成通常的运算任务,而监测控制电路则借助可重构计算逻辑,在不影响运算引擎正常工作的情况下,通过对比处理器运行时硬件的实际行为与指令集给出的预期行为的差异来实时判断处理器是否产生了非预期的操作,进而判定其是否存在硬件安全威胁。该技术不完全依赖硬件漏洞、前门、后门的先验知识,能够在处理器部署后的真实运行场景中检测出硬件安全威胁并消除其危害,具有优异的动态重构、局部重构和白片特性,相对于传统计算电路,具有很高的硬件安全性。在芯片制造后还能够被重新编程配置,使得同一监测管控电路能够适配多种处理器芯片运算引擎。
基于可信处理器芯片的服务器依托于RCP安全芯片的独特优势,以及清华大学最新的DSC技术,实现了处理器动态监测管控功能,重点解决处理器硬件行为是否可信的问题。
在处理器动态监测管控方案中,采用处理器动态安全检查模块对一个或多个处理器的行为进行实时的监视和判断,以保证正在运行的处理器的功能行为符合处理器厂商公布的运行基准,比如处理器的软件运行规格说明书(software developing manual/specification),保证“处理器的非预期行为(unexpected behavior)”可以被快速检测出来。
处理器动态安全检查模块对目标处理器行为的实时监控和判断发生且仅发生在一些离散的时间片内,将这些离散的时间片称为监控区间(monitor interval),每个监控区间的开始与结束,均由处理器动态安全检查模块控制。
在监控区间内,处理器动态安全检查模块对目标处理器的执行过程进行监控,对执行过程中的有效行为进行判断,判断目标处理器的行为是否完全并严格遵守处理器厂商公布的运行基准。执行过程中的有效行为指的是在监控区间内导致处理器状态、内存、I/O发生改变的行为。
在DSC方案中,目标处理器正常运行时,处理器动态安全监控模块按照设定的检查点进行周期性的采集、回放分析与验证,对检测出来的“处理器的非预期行为”进行报告,并根据用户需求对处理器进行安全控制。
基于可信处理器芯片的服务器算法分载是指将加解密运算的任务从处理器芯片中卸载到RCP安全芯片硬件密码模块上执行,可以实现对密码算法的加速,同时降低处理器芯片的占用率。RCP安全芯片内部集成的可重构硬件单元具有优异的动态重构、局部重构和白片特性[21-22],相对于传统计算电路,如指令驱动处理器、专用集成电路、可编程逻辑门阵列等,具有很高的硬件安全性。此外,可重构硬件单元兼具高能效性和高灵活性,在芯片制造后还能够被重新编程配置,能够适配多种密码算法。
基于可信处理器芯片的服务器算法分载支持公钥、分组、摘要、消息算法和流算法在内的多种主流密码算法和工作模式,支持国密SM2/3/4算法和国际上流行的密码算法或用户自定义算法,支持Library/SDK/IDE 3种使用方式。Library方式对用户而言是最便利的。DSC提供的密码算法驱动模块中已经实现了OpenSSL引擎,因此,对于基于OpenSSL开发的用户应用程序,无需修改代码或重新编译,即可以直接通过OpenSSL引擎调用算法分载模块提供的高速硬件密码算法,享受高性能的计算加速功能。SDK方式可以让用户基于DSC算法分载模块提供的密码算法库来做二次开发。SDK封装了DSC算法分载模块的硬件驱动,用户可基于SDK提供的密码算法API进行编程,只需要关心密码算法的使用,极大地简化了开发工作。算法分载模块还提供可视化的IDE集成开发环境,基于内部集成的高性能的可重构运算单元。用户可以通过IDE,针对可重构运算单元开发自定义的密码或安全算法,并进行在线调试。
在处理器安全领域,有一类威胁来自厂商提供的、用于处理器和主板相关的功能管理的子系统,比如:Intel板载主动管理技术的载体ME(management engine)。对于处理器来说,ME是独立的子系统,ME软件和BIOS固件打包在一起,带有网络接口,处理器厂商会用来给用户提供类似远程管理功能。ME运行在非常底层的系统,这决定了ME可以控制处理器运行状态,任意获取系统信息,一旦被非法利用,就是一个功能强大的后门[23]。
基于可信处理器芯片的服务器可针对ME功能进行管理,仅允许启动Mini ME。相比于全功能ME,Mini ME禁用了容易引入漏洞的远程管理和访问功能,阻断了ME访问用户运算空间的逻辑路径,仅保留基本的南桥芯片管理功能,如芯片初始化和上电时序设置,上电时序相关的功能控制和更新等,规避了ME引发的安全风险。ME的固件将和BIOS一起进行签名。同时,ME固件升级也和BIOS镜像一起,必须通过验签,确保是安全的ME固件才允许被更新至服务器。此外,透过ME等子系统对系统的访问都可以被DSC技术捕获,并且发出预警。
微码更新(microcode update)是由处理器厂商制定的一种基于微码补丁文件,修复处理器芯片漏洞和升级的机制。处理器厂商会根据发现的漏洞以及更新需要,定期发布微码文件,同BIOS、OEM厂商、OS协作对处理器进行漏洞修复和升级。
微码设计用于修补处理器漏洞和升级,如果不使用最新的微码,部分硬件设计问题可能无法得到修复,给系统带来风险。一个典型的例子是:在已有解决方案中,“幽灵” 的部分变种必须通过微码的更新来进行修复,如果没有修复那么虚拟机的隔离性可能存在漏洞,虚拟机用户可以轻松获取主机内存中的敏感信息。而贸然使用未经长时间认证的微码也会存在问题,例如2018年“幽灵”和“熔断”事件中,某些CPU厂商提供微码更新后不久就进行了召回,原因是更新的微码存在导致系统稳定性的问题。
综合起来,作为对安全性要求较高的用户,微码更新在用户端首先需要能够受控,以满足安全可控的要求;其次需要提供对微码的验证机制。传统的处理器在使用过程中微码被更新,不同途径更新的微码仅仅能够保证微码来自于厂商,但是用户并没有足够的手段对系统中处理器核心的微码进行管控。
基于可信处理器芯片的服务器设计了微码更新安全管理机制,只有经过安全认证的微码才允许升级,增加了微码升级的安全可控性和微码更新文件的可追溯性。
在微码更新的BIOS路径中,服务器通过安全启动的功能对BIOS进行签名,作为BIOS一部分的处理器微码版本可以得到管控。而在运行时,面临多种来源的微码更新途径和需求,DSC服务层由于工作在用户操作系统底层与硬件层之间,除了提供正常的处理器检查功能以外,可以对微码更新的操作进行过滤:仅用户指定的微码可以被更新到处理器中,用户指定这一操作是通过对微码文件进行的签名来完成的。
经过用户特殊签名后的微码文件,可以像正常的微码一样被用户操作系统所识别,并被尝试写入到处理器中。写入微码的操作会被DSC服务层拦截,DSC服务层可以进一步检测该微码的特殊签名是否正确,这一步骤是通过使用预制的证书来完成,如果签名认证通过,那么微码更新流程将会继续进行,物理处理器中的微码得到升级;如果签名认证未能够通过,或者微码本身不包含用户的特殊签名(例如:直接从处理器厂商拿到的微码文件),该微码更新将会被拒绝,从根本上保障了微码更新的各种途径都是可控的。
澜起科技发布的津逮处理器平台[24]为基于可信处理器芯片的服务器软硬件可信框架提供了验证平台与应用环境。津逮处理器将Intel至强处理器与RCP安全芯片在硅级别集成互联,统一封装。津逮处理器结构示意图如图2所示。
图2 津逮处理器结构示意图Fig.2 Structure diagram of Jintide CPU
津逮处理器平台集成了目前成熟的可信计算技术,并且在清华大学DSC技术的基础上,实现了处理器动态监测管控、国密/自定义算法分载、漏洞防护和固件管理等安全功能,为服务器安全可信提供了从硬件到软件的一揽子安全可信解决方案。
处理器芯片的硬件安全是计算系统的安全根基,若无法确保处理器的硬件安全可信,则无法保证运行其上的软件的安全,与之紧密关联的系统安全和网络安全也会受到严重威胁。基于可信处理器芯片的服务器可信框架集成了现有可信计算的成熟技术,实现了清华大学的DSC技术,并提供高性能算法分载功能、漏洞防护和固件管理功能,从硬件安全、软件安全、系统安全、密码服务支持、可信服务支持等各方面提供了整套的解决方案。服务器可信框架的可信根源于可信处理器芯片集成的安全模块,即RCP安全芯片,安全性更高,终端用户无需在通用服务器上再次配置可信计算环境。
基于可信处理器芯片的服务器可信框架不局限于处理器芯片的运行原理、架构,不与现有的安全可信框架冲突,相反,处理器动态监测管控功能从硬件安全角度出发,在不影响处理器正常工作的前提下,对处理器芯片的硬件行为进行监测和管控,具有良好的生态兼容性安全互补性。
在高安全性应用场景下,可信处理器芯片集成的安全模块具有对处理器芯片完全的控制权,并支持动态配置的硬件安全监测颗粒度,在必要时可以直接停止处理器的运行。
目前,基于可信处理器芯片的服务器可信框架正处于研发阶段,其主要功能已在澜起科技发布的津逮处理器平台上得到了验证。本文分析了现有的处理器芯片安全风险,给出了可信处理器芯片的定义和实现原理,并对基于可信处理器芯片的服务器软硬件可信框架的安全功能进行逐一分析,阐明了基于可信处理器芯片的服务器可信框架的意义和价值。