APP下载

基于UEFI 规范的“三员”管理软硬件度量机制

2022-10-28古淳仁胡怀湘陈相宇

电子设计工程 2022年20期
关键词:存储设备固件度量

古淳仁,胡怀湘,陈相宇

(中国电子科技集团公司第十五研究所,北京 100083)

随着信息技术的不断发展,计算机广泛应用于各行各业,随之而来的信息安全问题也越来越受到关注[1-2]。例如私自插入、替换存储设备或篡改操作系统内核等重要文件可能会使计算机运行恶意代码,进而严重破坏计算机的信息安全[3-4]。

因此,该文提出了一种基于UEFI 的软硬件度量技术,在执行引导启动程序前对重要的软硬件进行度量,并将结果与预期度量值相比对,确定一致才允许启动。同时引入了“三员”管理机制,以约束系统管理员的行为,降低软硬件被篡改的风险,提高计算机系统的安全性。

1 功能设计

UEFI 是定义操作系统与固件之间软件界面的技术规范[5-7],它将计算机从启动到关机的全过程划分为安全验证、EFI 预初始化、驱动执行环境、启动设备选择、临时操作系统加载、运行操作系统、灾难恢复七个阶段[8-9]。该文依据规范在启动设备选择阶段以模块化的方式实现“三员”管理模式下的软硬件度量功能。

1.1 硬件度量设计

为明确硬件存储设备是否与上一次启动时保持一致,应获取存储设备的唯一标识,将其经过哈希运算后与预期度量值进行比较。若一致,则认为硬件设备度量成功,启动过程可以继续;反之若存在某一存储设备标识映射与所有的预期度量值都不一致,则认为是新插入的设备,记录并回显度量失败的具体设备。

需要说明的是,尽管设备的唯一标识已经可以区分不同的设备,但对唯一标识进行哈希的步骤仍是必要的,原因是不同厂商或不同型号的存储设备序列号一般为不同长度的字符串,直接存储会造成存储空间的浪费,将其无冲突地散列为64 位的整数,既节约存储空间又保持了数据长度的一致。

但仅通过设备唯一标识的哈希映射来识别存储设备仍不能认为设备中的软件是未篡改的。比如,硬盘通过其他计算机修改内核文件或导入不安全程序后再重新插回,由于硬盘唯一标识未改变,所以仍然可以度量成功。因此硬件度量功能应当与软件度量或硬盘加密技术配合使用。其中,硬盘加密技术已十分成熟[10-12],市面常见的通用兼容机固件普遍具备这项功能,因此该文只研究软件度量技术。

1.2 软件度量设计

区别于硬盘加密,软件度量功能的对象是可以选择的文件个体,而非某硬盘或某硬盘分区,并且仅对目标文件进行校验[13],不进行加密操作。为了防止重要的程序被替换或篡改,可以将其作为度量的目标文件,如引导程序、内核文件等二进制可执行文件和启动配置文件等。

读取目标文件并度量后,将实际度量结果与预期度量值进行比较,若所有目标文件的度量值均与预期度量值保持一致,则表示文件未改动,允许继续启动;否则记录并回显度量失败的具体文件,拒绝执行后续的启动步骤,最后提供更新预期度量值或关闭计算机的交互选项。

1.3 三员管理模式设计

通常情况下,计算机固件一般提供设置基本输入输出系统(Basic Input Output System,BIOS)密码功能[14],而不为BIOS 设置多个用户,单一系统管理员拥有全部管理权限。若仅单纯地加入软硬件度量功能,那么系统管插入或替换硬盘后更新预期度量值即可顺利启动,也就失去了度量功能存在的意义。单一管理员模式依赖绝对可信的管理员,这在具有保密需求的计算机系统中存在较大的安全隐患。因此该文引入了“三员”管理模式,建立了区别于系统管理员账户的安全管理员账户和审计管理员账户,将度量值的管理权限与日志的管理权限从系统管理员账户中剥离,并分别授予安全管理员和审计管理员,以充分发挥软硬件度量功能。

“三员”指系统管理员、安全管理员和审计管理员[15]。三类管理员权限划分如表1 所示,系统管理员保管机箱钥匙,负责维护计算机设备,拥有变更存储硬件和调整启动选项的权限,但以上操作会导致开机后度量结果不符合预期度量值,因此计算机无法顺利启动;安全管理员具有修改预期度量值的权限,若系统管理员对系统作出的软硬件调整为合规操作,则可以向安全管理员提出申请,由安全管理员更新预期度量值,更新后实际度量值与预期值一致,计算机可以顺利启动;审计管理员拥有管理系统日志的权限,更新预期度量值的操作会在系统中留下记录日志,这些日志只允许被审计管理员查看和修改,用于对管理员行为的跟踪和审查。

表1 管理员类别与相应权限

三类管理员的权限相互分离,相互制约,可以有效地规避单一管理员模式引起的安全风险。

2 度量流程分析

文中引入“三员”管理模式后的软硬件度量流程如下:

步骤1:系统上电开机后,UEFI 运行至启动设备选择阶段末期,所有必要的设备驱动均已加载完成,即将执行预设启动项。此时进行软硬件度量,并临时保存实际度量值。在开机交互界面用户会面临两个选择:按热键主动进入UEFI 固件设置界面或跳过设置直接根据默认启动项引导操作系统。若按下热键,则进入步骤2,否则进入步骤6。

步骤2:输入管理员账户和密码。输入系统管理员账户和密码进入步骤3;或输入安全管理员账户和密码进入步骤4;或输入正确的审计管理员账户和密码进入步骤5。

步骤3:可以调整计算机系统启动选项。退出后进入步骤6。

步骤4:可以更新存储设备和目标文件的预期度量值,若更新预期度量值则记录操作日志。退出后进入步骤6。

步骤5:可以查看和删除操作日志。退出后进入步骤6。

步骤6:退出固件设置界面,比较所有项目的实际度量值是否与预期度量值一致,若所有项目度量成功则进入步骤7,否则记录度量失败的项目并进入步骤8。

步骤7:向用户回显软硬件度量成功,继续执行启动流程,加载并运行操作系统。

步骤8:向用户回显度量失败的项目,并提供交互选项:登录安全管理员账户以更新度量值,或放弃启动并关机。若选择前者则进入步骤2,若选择后者则关闭计算机。

以上流程如图1 所示。

图1 “三员”管理模式下的软硬件度量流程

3 功能实现与验证

为验证软硬件度量功能和“三员”管理机制,该文采用EDK2[16]完成固件原型的开发,在开放虚拟机固件[17](Open Virtual Machine Firmware,OVMF)的基础上进行改造,增加软硬件度量功能并引入“三员”管理机制。

3.1 硬件度量实现

UEFI BIOS 调用硬件度量过程时,首先遍历所有外部设备,通过读取EFI_DEVICE_PATH_PROTO COL 结构体中的Type 和SubType 成员判断是否为PCI、SATA 或USB 存储设备,若为存储设备则调用GetDeviceDescriptor 函数获取设备描述符,读取其VendorID、ProductID 以及SerialNumber。其中Serial Number 为长度不均的字符串类型,而VendorID 和ProductID 都是两个字节长的整数类型,将它们均转化为字符串类型拼接在SerialNumber 之后,形成未经哈希映射的唯一标识字符串。为尽可能地降低冲突率,采用BKDRHash[18]函数将唯一标识字符串映射为64 位宽的整数,作为存储设备的度量值。

3.2 软件度量实现

软件度量即是对目标文件的度量,该文将目标文件指定为boot 分区中的引导加载程序、启动配置文件和操作系统内核。通过EFI_SIMPLE_FILE_SY STEM_PROTOCO 依次取 得bootx64.efi 文件、grub.cfg文件和以vmlinuz 为前缀的文件的句柄,然后调用信息摘要算法(Message-Digest Algorithm 5,MDA5)对目标文件依次度量,其中efi 文件与内核文件以二进制文件只读的方式打开,而cfg 文件以文本文件只读的方式打开,每一个文件都将生成一个长度为32 的16 进制数值字符串,即目标文件的度量值。

3.3 “三员”管理与交互界面实现

OVMF 的交互界面通过人机接口架构(Human Interface Infrastructure,HII)来实现。其中前端部分修改vfr 文件中的formset 以增加预期度量值管理、日志管理选项标签以及相应的子结构,并对不同管理员用户frontpage 中的可选标签加以动态区分,以设定不同管理员的权限。后端通过实现EFI_HII_CO NFIG_ACCESS_PROTOCOL 接口获取HiiHandle,即预先在HII 数据库中注册的句柄,从而实现触发与前端操作相对应的函数调用。

3.4 功能验证

首先注册模块并编译为efi 文件,将新生成的efi文件封装入fd 文件。然后配置QEMU 虚拟机,启用关联fd 文件的flash,以物理磁盘作为硬盘,输出重定向至控制台。最后进行验证前的准备工作,以物理机为媒介在虚拟机硬盘的boot 分区建立目录结构,写入文件bootx64.efi、grub.cfg 和vmlinuz-4.18.0-348.x86_64,启动虚拟机后登录安全管理员账户,在固件设置界面更新所有软硬件预期度量值,保存并关闭虚拟机。配置另一块启动磁盘,建立同样的目录结构,并写入bootx64.efi、grub.cfg 和vmlinuz-4.15.0-142.x86_64,即更换了硬盘和操作系统内核。

启动虚拟机,登录系统管理员账户,触发热键进入固件设置界面,如图2 所示,系统管理员无法选中预期度量值管理和日志管理选项卡。

图2 系统管理员界面

将光标移动到Continue,按下回车键继续启动。如图3 所示,硬盘和操作系统内核已更换,因此度量失败,用户选择登录安全管理员账户以更新预期度量值或放弃启动。

图3 软硬件度量失败

选择重新登录,以安全管理员账户登录固件设置界面,安全管理员只拥有管理预期度量值的权限。分别进入Expected Measurement of Hardware 选项卡和Expected Measurement of Software 选项卡,看到硬盘和操作系统内核的实际度量值的确与预期度量值不符,如图4 和图5,分别更新它们的预期度量值。

图4 硬件预期度量值管理

更新预期度量值后保存并退出,将重新比较实际度量值与预期度量值,此时二者一致,度量结果如图6 所示。

图6 软硬件度量成功

最后重启虚拟机,以审计管理员账户登录固件设置界面,审计管理员只拥有管理日志的权限。进入日志管理选项卡,查看和删除由于安全管理员账户更新预期度量值而产生的日志,如图7 所示。

图7 日志管理

对比第三部分所分析的流程,上述操作验证了固件原型中“三员”管理模式下的软硬件度量功能。

4 结束语

为防止计算机内重要的存储设备和软件程序被篡改,该文提出了一种基于UEFI 规范的软硬件度量技术,保护了计算机系统的数据安全。同时,引入了“三员”管理机制,有效规避了单一管理员模式下系统管理员违规操作的风险。但是,该文提出的策略还不十分完善,后续的研究中可以在软硬件度量的基础上增加对硬盘分区哈希码的检查以及配合硬盘加密技术等其他策略,共同保护计算机的信息安全。

猜你喜欢

存储设备固件度量
鲍文慧《度量空间之一》
一种使用LoRa通信的OTA差分升级方法
尼康旗舰Z9升级新固件延长高速连拍时间
不欣赏自己的人,难以快乐
突出知识本质 关注知识结构提升思维能力
三参数射影平坦芬斯勒度量的构造
浅析计算机硬件发展史
浅析铁路视频监控存储设备设计
英特尔发布免费固件引擎
提取ROM固件中的APP