服务器

版本:25.03

安全启动

概述

安全启动(Secure Boot)就是利用公私钥对启动部件进行签名和验证。在启动过程中,前一个部件验证后一个部件的数字签名,如果能验证通过,则运行后一个部件;如果验证不通过,则暂停启动。通过安全启动可以保证系统启动过程中各个部件的完整性,防止没有经过认证的部件被加载运行,从而防止对系统及用户数据产生安全威胁。
安全启动涉及的验证组件: BIOS->shim->grub->vmlinuz(依次验签通过并加载),其中vmlinuz是内核镜像。
相关的EFI启动组件由openEuler签名平台采用signcode方式进行签名。公钥证书由BIOS集成到签名数据库DB中,启动过程中BIOS对shim进行验证,shim和grub组件从BIOS的签名数据库DB中获取公钥证书并对下一级组件进行验证。

背景和解决方案

前期openEuler版本中,安全启动相关组件没有签名,无法直接使用安全启动功能保障系统组件的完整性。
从22.03-LTS-SP3版本开始,openEuler使用社区签名平台对OS侧的相关组件进行签名,包括grub和vmlinuz组件,并将社区签名根证书内嵌于shim组件中。
对于shim组件,为了便于端到端实现安全启动功能,当前使用openEuler社区的签名平台进行签名。后续外部国产CA(如CFCA,中国金融认证中心)正式运营安全启动组件签名服务后,将计划在openEuler的shim模块中集成这些国产CA的签名。

使用方法

openEuler证书获取

openEuler根证书获取地址:https://www.openeuler.org/zh/security/security-bulletins/,进入“证书中心”目录下载。
网页上根证书识别名称为“openEuler Shim Default CA”,default-x509ca.cert。

BIOS侧操作

将openEuler根证书导入BIOS的db证书库中,并在BIOS中开启安全启动开关,可实现安全启动功能。
BIOS证书导入方法及安全启动开启方法可参考具体BIOS厂商提供的资料。

OS侧操作

查看db数据库中的证书信息:mokutil –db 说明:证书信息较多,截图中只显示部分重要信息
查看系统安全启动状态:mokutil --sb

  • SecureBoot disabled:安全启动关闭

  • SecureBoot enabled:安全启动开启

  • not supported:系统不支持安全启动

约束限制

  • 软件限制:OS系统需要采用UEFI启动
  • 架构限制:ARM/X86
  • 硬件约束:需要BIOS支持安全启动相关校验功能