◆蒲 江 田 楠 周 跃 温太行
基于保护环模型的可信固件安全策略研究
◆蒲 江1田 楠1周 跃1温太行2
(1.中国人民解放军91977部队 北京 100841;2.中国人民解放军91911部队 浙江 316000)
目前计算机中广泛使用的传统BIOS产品存在较大的安全风险。BIOS产品存在安全漏洞,可能被恶意者利用实施对计算机系统的攻击;恶意者也可能通过网络综合利用各种手段,将恶意代码植入计算机BIOS中。因此要实现信息安全各个环节的可控和可信,设计和开发自主可信的安全固件系统就成为必需的环节和必经之路。本文分析了安全固件的安全需求,设计了一种适合于安全固件系统开发的可信固件保护环策略模型。
固件系统;可信固件;保护环
计算机固件在系统安全防护中处于一种基础地位,对于计算终端和操作系统的安全能够起到重要的保护作用。然而计算机固件安全的重要性在过去很长一段时间内却长期被忽视[1]。伴随计算机固件安全威胁事件的逐渐增加,安全向硬件和固件延伸的趋势及可信计算的发展,重新审视计算机固件的安全地位,对计算机固件安全问题进行系统性的研究是非常有必要的。
传统BIOS的设计和实现从一开始就没有考虑安全问题,其设计和生产完全是从应用需求出发,导致现有的BIOS产品存在较大的安全风险。因此需要研究基于EFI/UEFI规范的新一代安全BIOS产品开发的理论和方法。针对可信计算需求,准确定位BIOS在可信计算终端中的作用和地位,研究基于保护环模型的计算机固件系统安全策略,以实现可信BIOS产品。
定义:
CVE(Common Vulnerabilities and Exposures)是全球信息安全界对计算机安全漏洞和脆弱性统一命名的权威知识库。
CVE文档中对漏洞的定义是:存在于软件中的错误,这种错误能够被攻击者直接利用以获取对系统或网络的访问权限。
CVE文档中对脆弱性的定义是:存在于软件中的系统配置选项或配置错误,该配置选项或错误能够被攻击者用于非法访问系统信息,或作为进一步获取访问或进入主机和网络系统的跳板。
文献[2]给出一种外延更宽的安全漏洞定义。安全漏洞是存在于计算机系统、网络系统的硬件、软件或与系统相关的安全过程和控制方式中的设计或实现缺陷,可被有意或无意地利用从而危害组织或个人的财产或操作过程。
本文所指的固件漏洞采用文献[2]给出的安全漏洞概念。固件BIOS安全威胁是指利用固件BIOS系统存在的漏洞,从而导致对计算机BIOS、操作系统等软件以及硬件设备和数据实施破坏的可能情形和事件。固件系统安全威胁可指来自固件系统的威胁,也可指对固件系统构成的威胁。
针对BIOS的安全威胁具有一个共同特征,即都是通过破坏BIOS代码或数据的完整性实现对BIOS系统和计算机系统的攻击或破坏[2]。
(1)固件安全需求1:固件系统代码和数据的完整性保护要求。
TCG可信计算要求从可信硬件开始,从底层到上层软件,每一步骤的执行都通过信任传递,建立可信链。信任传递是通过完整性度量来实现的。完整性度量能够阻止内部、外部的非可信代码的加载执行,保证BIOS只执行来自可信任的BIOS厂商、设备驱动厂商或可信任用户的代码。
(2)固件安全需求2:作为可信计算的核心测量根,完成对操作系统执行前环境的可信度量过程。
当遭遇不可预知的故障或攻击导致BIOS部分代码或数据完整性被破坏时,BIOS系统自身必须具备安全可靠的自恢复机制。恢复过程中同样需要对所提供的恢复内容进行可信度量,这个过程称为可信恢复。
(3)固件安全需求3:固件的可信恢复能力的要求。
可信固件是指能够提供自身完整性保护能力,包含可信计算的核心度量根,负责完成操作系统执行前环境的可信度量过程,并具有对自身进行可信恢复操作能力的固件系统。
对固件系统的保护,综前所述主要是固件系统的完整性保护。因此针对固件系统的代码和数据类型特点,对其代码和数据划分了完整性级别,提出了对固件的代码和数据进行完整性保护的可信固件保护环模型[3]。
保护环模型中,划分了两类数据项:受保护数据项(PDI)和不受保护数据项(NDI)。数据集合DATA为:
PDS = Set of PDI
NDS = Set of NDI
DATA = PDS ∪ NDS
固件中的代码划分为3类:核心可信代码(CTC)、普通可信代码(OTC)和非可信代码(UTC)。代码集合CODE为:
CTS = Set of CTC
OTS = Set of OTC
UTS = Set of UTC
CODE= CTS ∪ OTS ∪ UTS
其中,PDS是固件运行所需的最小数据集合,CTS是固件运行所需的最小代码集合,CTS和PDS构成一个最小可执行的固件系统。
定义允许的操作集合为:
OPERATION = {r,m,e}
操作r允许对数据读取,操作m允许对数据修改,操作e允许代码执行。
定义代码完整性认证函数、代码可执行函数和代码类属认证函数:
AI(c) = 0,c ∈ CODE 且c是不完整的;
AI(c) = 1,c ∈ CODE 且c是完整的;
AE(c) = e,c ∈ CODE 且c是允许执行的;
AE(c) = ┓e,c ∈ CODE 且c是禁止执行的;
AC(c) = CT,c ∈ CTS;
AC(c) = OT,c ∈ OTS;
AC(c) = UT,c ∈ UTS;
可信固件的保护环模型核心策略是通过保护固件系统运行所需的关键代码和数据的完整性,保证有一个最小可用的固件系统。模型策略是通过以下强制实施规则来保障的。
(1)MER1:只有完整的可信代码才允许加载执行,即
c∈CODE AE(c)=e=>AI(c)=1 and (AC(c)=CT or AC(c)=OT)
(2)MER2:只有核心可信代码才允许修改受保护的数据项,即c∈CODE d∈PDS c m d=>AC(c)=CT and AI(c)=1
(3)MER3:用户必须经过认证才能使用CTC或OTC访问或修改数据。
(4)MER4:在保证最小系统可用性的前提下,允许安全管理员对CTC、OTC、UTC进行转换,或对PDI、NDI转换。
(5)MER5:系统中所有对代码的可信测量、对用户的认证和对PDI的修改操作必须记录。
(6)MER6:CTC负责提供对PDI修改访问的仲裁保护,并在PDI完整性受到破坏时,启动可信恢复过程。
如图1是保护环模型的环结构示意图。
CTS和PDS构成第一层环,是固件系统的最小可执行系统。OTS和NDI构成第二层环,其中NDI不受保护,即使被破坏也不影响固件系统的正常运行;OTC完整性被破坏,会影响部分非关键或附加功能的正常应用,但不妨碍BIOS的正常运行和引导操作系统。环外的UTC由于不可信,即使嵌入BIOS中也不会加载执行。
图1 可信固件保护环模型环结构
假设保护环模型的初始状态是可信的。在系统执行过程中MER1~6能够保护代码和数据的完整性不受到破坏,因此固件系统运行的随后状态都是可信的。
[1]陈文钦.BIOS Inside:BIOS研发技术剖析[M].台湾地区:旗标出版股份有限公司,2001.
[2]Adelstein F, illerman M, Kozen D. Malicious Code Detection for Open Firmware[C]. Computer Security Applications Conference, 2002, Proceedings 18th Annual 9-13 Dec.2002.
[3]袁新哲,胡昌振,戴斌.Windows NT/2000 典型漏洞特征分析及知识表达方法[J].探测与控制学报,2003.