Anolis商密OS最佳实践之内核模块签名商密化

简介: 本文实践内核模块签名商密化。商密软件栈将持续致力于国内商密基础设施建设,做大商用密码的软硬件生态。

商密软件栈SIG :基于 Anolis OS,在整个系统软件层面(包括硬件,固件,bootloader,内核以及 OS)实现以国密算法为主的全栈国密操作系统,结束一直以来国密算法生态碎片化的状况,在技术方面打造社区和生态,在资质合规方面致力于为行业提供基于国密的信息安全标准。

作者:李艺林(伯纪),商密软件栈SIG核心成员


欢迎更多开发者加入商密软件栈SIG:

网址:https://openanolis.cn/sig/crypto

邮件列表:tc@lists.openanolis.cn

商密.png

接回上文,我们体验了 IMA 的商密化后,今天我们继续实践内核模块签名商密化。

开始之前,我们仍然需要准备与 IMA 类似的环境,配置 ShangMi 源,下载内核源码,生成商密密钥和证书。不过这次生成的密钥是用于签名内核模块,在内核模块签名我们选择使用根证书 ca.crt 直接签名,因此可以不需要生成 cert.pem 证书。

内核模块签名简介

Linux 支持只加载认证了的内核模块,开启这个功能时,可以阻止来源不明和没有认证的内核模块加载到内核,用以保护系统的安全性,这个认证也是通过数字签名来保证的,不同于 IMA 的签名,Linux 内核模块的签名是以特定的数据格式追加在文件结尾的,使用的算法通常是国际算法。涉及到签名的场景就可以使用商密算法来替换掉国际算法,要使内核模块签名支持使用商密算法,也需对签名工具和内核本身做修改,签名工具和内核同时需要支持解析使用商密算法的 PKCS#7 数字签名,同样的,应用层商密基础能力由 BabaSSL 提供,sign-file 调用 BabaSSL 完成使用商密算法的签名。

编译内核

生成了 CA 证书之后,我们同样需要把 CA 根证书内置到内核,这就需要重新编译内核。

下载Anolis OS的ANCK内核源码

首先下载 Anolis OS 的 ANCK 内核代码,其开发分支为devel-4.19

git clone git@codeup.openanolis.cn:codeup/kernel/cloud-kernel.git -b devel-4.19

编译内核

按如下方法编译并安装集成了商密 CA 证书的内核:

# 安装编译依赖
yum install -y bison flex elfutils-libelf-devel bc make gcc
# 用上一步生成好的ca.crt作为sm2_cert.pem,使用默认配置编译内核
cp -f ca.crt <kernel_src>/certs/sm2_cert.pem
# 进入内核源码目录,使用默认配置编译内核
cd <kernel_src>
# 如果您是arm的镜像,请将arch/arm64/configs/anolis_defconfig作为.config;
# 如果是x86的,请将arch/x86/configs/anolis_defconfig作为.config。以x86为例
cp -f arch/x86/configs/anolis_defconfig  .config
# 配置系统的可信跟证书为/certs/sm2_cert.pem
sed -i 's/CONFIG_SYSTEM_TRUSTED_KEYS=\"\"/CONFIG_SYSTEM_TRUSTED_KEYS=\"certs\/sm2_cert.pem\"/' .config
make
# 安装modules
make modules_install
# 安装内核,这一步也会自动生成initramfs并更新grub.cfg
make install
# 查看vmlinuz
ls -l /boot/vmlinuz*
# 将新内核(比如vmlinuz-4.19.91+ )设置为缺省的启动内核
grubby --set-default /boot/vmlinuz-4.19.91+
reboot

内核模块签名商密实践

签名

接下来我们使用内核提供的sign-file工具,给一个内核模块ko文件加上商密签名,命令如下:

${kernel_src}/scripts/sign-file sm3 ca.key ca.crt ${kmod}.ko ${kmod}.ko.signed

验证签名

通过tail ${kmod}.ko.signed看到~Module signature appended~字样说明模块已经有了签名。然后你可以insmod你签名后的内核模块,来判断签名是否正确。通过cat /proc/modules来查看加载的内核模块是否签名。

  • O: Out-of-tree module has been loaded
  • E: Unsigned module has been loaded

如果你的模块签名正确,则通过cat /proc/modules可以看到对应的模块没有E标记,以 Out-of-tree 的 hello 为例,正确签名后是这样的:


# cat /proc/modules
hello 262144 0 - Live 0xffff000003520000 (O)

如果你的模块签名失败(包括未签名),则在cat /proc/modules可以看到E标记,比如:

# cat /proc/modules
nft_fib_inet 262144 1 - Live 0xffff0000034a0000 (E)

这时候可以通过dmesg查看对应的失败原因,比如PKCS#7signature not signed with a trusted key等。Anolis 商密软件栈将持续致力于国内商密基础设施建设,做大商用密码的软硬件生态,打造如丝般顺滑的商密应用体验,为国内数据和网络安全保驾护航。

—— 完 ——

关于龙蜥SIG

SIG是开放的,并争取让交付成果成为社区发行的一部分,由组内核心成员主导治理,可通过邮件列表和组内的成员进行交流。龙蜥社区SIG目前已超20个,包括硬件兼容性测试 SIG、商密软件栈、高性能存储技术 SIG、Java语言与虚拟机SIG、Cloud Kernel、OceanBase SIG等。

sig截图.png

SIG网址:https://openanolis.cn/sig

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】拉你入群;加入钉钉群:扫描下方钉钉群二维码。欢迎开发者/用户加入龙蜥社区(OpenAnolis)交流,共同推进龙蜥社区的发展,一起打造一个活跃的、健康的开源操作系统生态!

_home_uos_Desktop_OpenAnolis_图_二维码_钉钉&商密.png

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
3月前
|
安全 Linux 网络安全
龙蜥Anolis OS:国产操作系统的逆袭之路,它将如何引领中国IT业翻天覆地的变化?揭秘未来数字世界的心脏!
【8月更文挑战第13天】在信息化时代,操作系统作为软硬件桥梁至关重要。国产操作系统如龙蜥Anolis OS,凭借其开源、灵活与安全特性,成为了探索未来发展的重要样本。基于Linux内核的Anolis OS不仅技术先进,生态完善,还针对国内用户习惯进行了优化,并通过如SELinux等安全技术确保系统稳固。其开源属性促进了社区的活跃发展与技术创新。随着政策支持和产业链成熟,Anolis OS正引领国产操作系统走向更广阔的应用领域,加速软硬件生态系统的成型,展现出无限发展潜力。
217 2
|
2月前
|
安全 Linux 网络安全
龙蜥Anolis OS:国产操作系统的逆袭之路,它将如何引领中国IT业翻天覆地的变化?揭秘未来数字世界的心脏!
【9月更文挑战第4天】在信息化时代,操作系统作为计算机系统的核心,连接着上层软件与底层硬件。随着全球化及地缘政治的影响,国产操作系统愈发重要。龙蜥Anolis OS作为佼佼者,基于Linux内核,兼具开源、灵活与安全特性,针对国内用户优化,支持多种编码标准和汉字输入法,提升中文用户体验。其采用角色访问控制、SELinux等技术,保障系统安全。Anolis OS还拥有活跃的开源社区,促进功能完善与创新。随着国家政策扶持和产业链协同,Anolis OS正引领国产操作系统迈向更广阔的应用领域,推动软硬件生态系统的成熟,成为全球多元化计算生态的重要组成部分。
90 0
|
4月前
|
Anolis
免费延保四年!Anolis OS 7 延保计划通知
在 2024 年 6 月 30 日 EOL 的基础上为用户提供免费四年时间的 ELS 延保服务,即延保至 2028 年 6 月 30 日。延保结束后,龙蜥社区将停止对 Anolis OS 7 的维护更新及技术支持。
免费延保四年!Anolis OS 7 延保计划通知
|
4月前
|
人工智能 运维 自然语言处理
|
5月前
|
安全 开发工具 虚拟化
6 大亮点!全新 Anolis OS 23.1 GA 版正式发布,满足多样化平台支持
结合新时代技术发展需求,龙蜥正式发布全新发行版 Anolis OS 23.1。
|
6月前
|
存储 算法 固态存储
半导体存储品牌企业江波龙加入龙蜥社区,完成与 Anolis OS 适配
江波龙与 Anolis OS 的成功适配,进一步验证了 Anolis OS 能满足对存储容量灵活性和系统整体稳定性的高标准要求,可以为广大用户提供优质、高性能产品。
|
6月前
|
安全 Linux Anolis
centos停止更新?这篇博客教会你CentOS 7转化系统为阿里龙蜥Anolis OS 7
centos停止更新?这篇博客教会你CentOS 7转化系统为阿里龙蜥Anolis OS 7
694 0
|
6月前
|
存储 安全 Linux
Centos停止更新?这篇博客教会你安装平替Centos的操作系统安装Anolis
Centos停止更新?这篇博客教会你安装平替Centos的操作系统安装Anolis
516 0
|
20天前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
41 0
Vanilla OS:下一代安全 Linux 发行版
|
23天前
|
人工智能 安全 Linux
下一篇
无影云桌面