近年来,网络安全形势日益严峻,各种攻击手段层出不穷。软件的构建、发布、安装、运行等环节都面临着安全威胁。对以开源软件为主的 openeuler 操作系统来说,软件组件的完整性保护至关重要。通过在社区建立以 pki (public key infrastructure,公钥基础设施)为基础的软件发布签名体系,结合从系统启动到运行的端到端完整性保护技术,可以有效防护各个环节的攻击,从而提升系统安全性。
安全启动(secure boot)是利用公私钥对启动部件进行签名和验证。在启动过程中,前一个部件验证后一个部件的数字签名,如果能验证通过,则运行后一个部件;如果验证不通过,则停止启动。通过安全启动可以保证系统启动过程中各个部件的完整性,防止没有经过认证的部件被加载运行,从而防止对系统及用户数据产生安全威胁。
openeuler 在支持安全启动的基础上,还通过支持内核模块签名、ima 文件完整性保护等机制,将基于数字签名的保护链路进一步延伸至内核模块和应用程序文件(广义安全启动),整个验证过程可包含如下四个部分:
启动阶段:bios->shim->grub->内核(efi 加载前进行签名校验);
运行阶段(模块加载):内核->内核模块(模块插入时进行签名校验);
运行阶段(文件访问):内核->文件(应用程序执行或普通文件访问时进行签名校验);
运行阶段(软件包安装):包管理组件->rpm 软件包(软件包安装时进行签名校验)。
为支持“开箱即用”的安全启动能力,核心是在 openeuler 社区建立以 pki 为基础的软件构建签名体系。在软件构建阶段,自动为目标文件添加数字签名,并在关键组件中预置公钥证书,从而在用户安装 openeuler 镜像后,可以直接开启相关的签名校验机制,提升系统安全性。
openeuler 签名平台生成并管理签名公私钥和证书,同时通过 signatrust 提供签名服务;
eulermaker 构建系统在执行软件包构建阶段,通过spec脚本调用 signatrust 签名接口为目标文件执行添加数字签名;
具备签名验证功能的组件(如 shim、kernel 等),在构建阶段预置相应的验签证书;
用户安装 openeuler 镜像后,开启安全启动、内核模块校验、ima、rpm 校验等按机制,在系统启动和运行阶段使能相应的签名验证功能,保障系统组件的真实性和完整性。
openeuler 24.03 lts 证书包含 x509 和 openpgp 两种体系,其中 x509 体系采用三级证书的形式进行管理(根证书、中间证书、签名证书):
各证书作用分别如下:
证书 | 类型 | 说明 |
---|---|---|
openeuler ca证书 | x509一级证书 | openeuler社区根证书,用于签发及校验二级证书 |
安全启动ica证书 | x509二级证书 | 安全启动二级证书,用于签发及校验安全启动签名证书 |
内核ica证书 | x509二级证书 | 预置在openeuler内核中的根证书,用于签发及校验内核签名证书 |
ima摘要列表ee证书 | x509三级证书 | 对rpm包中提供的ima摘要列表文件进行签名和校验 |
内核模块ee证书 | x509三级证书 | 对kernel中的内核模块文件进行签名和校验 |
openeuler rpm证书 | openpgp证书 | 对openeuler发布的rpm软件包进行签名和校验 |
注意:
efi文件(shim/grub/kernel 等)的签名信息包含二、三级证书,可以使用 openeuler ca证书进行签名验证;
ima 摘要列表和内核模块的签名信息包含三级证书,可以使用内核 ica 证书进行签名验证。
文件类型 | 文件格式 | 签名格式 |
---|---|---|
efi文件 | efi image | authenticode |
内核模块文件 | kernel module | cms |
ima摘要列表文件 | binary | cms |
rpm软件包文件 | rpm package | openpgp |
用户可开启对应的安全机制,如安全启动、内核模块校验、ima 等,开启后可使能签名校验功能。
openeuler 社区与 cfca(中国金融认证中心)进行合作,在 openeuler 24.03 lts 版本中提供基于 cfca 签名的 shim 组件,在预置 cfca 安全启动证书的服务器可实现安全启动。
-
在openeuler 社区版本中使能主流的 linux 安全特性,提供系统安全工具、库、基础设施等,提升系统的安全性。 -
改善现有安全技术的应用体验,帮助安全创造实际的价值。
[1] signatrust签名服务开源项目:https://gitee.com/openeuler/signatrust
发表评论