认识证书和签名
概述
为了保护系统文件的完整性,需要使用密码学上的数字签名技术。 文件使用前,通常在软件构建或者发布阶段,使用私钥对文件进行签名。在运行软件时,使用证书中的公钥对签名进行验证。验证通过则说明文件没有被篡改,验证不通过则说明文件已损坏或者被篡改。
在上述验证过程中,私钥需要被安全妥善地管理和保存,一旦私钥泄露,则可能被用于恶意文件的签名,无法达到保护原始原始文件完整性的目的。
对文件签名进行校验的证书,通常预置在系统中,或者在软件运行时,由管理员将证书导入到系统中。
背景
开源社区普遍存在私钥难以管理的特点,所以社区相应的组件通常缺少签名。要使用签名验签功能需要OSV厂商或者用户自己对文件进行签名后,才可以使用,这样增加了功能的使用成本并降低了易用性。
社区中RPM软件包等部分组件目前已有签名,但是通常私钥被公开或者由社区构建工程进行管理,存在泄漏和滥用风险。
解决方案
从当前版本开始,openEuler使用社区签名平台进行公私钥对的生成和管理,并对社区文件提供签名服务。这样通过签名平台解决了社区秘钥管理的难点。
当前社区签名平台支持签名的文件类型有:安全启动功能相关的EFI启动文件类型和RPM软件包类型。后续可以进一步支持内核驱动文件ko, 应用程序,虚机镜像,容器镜像,ISO等类型的签名。
22.03-LTS-SP4版本中的工程发布件支持RPM软件包通过签名平台进行签名的能力,后续在部署使用22.03-LTS-SP4版本的工程发布件后,则可以使用签名平台对RPM进行签名。
约束限制
当前社区签名平台功能只支持对openEuler社区内部构建的组件进行签名,暂不支持对外部工程构建的文件及客户文件进行签名。
对外提供签名服务功能正在规划中。