428 Star 1.6K Fork 1.6K

GVPopenEuler/kernel

 / 详情

【OLK-5.10】EVM支持国密算法

待办的
任务
创建于  
2023-08-07 21:01

背景

密评要求支持文件安全属性的完整性保护,现在为需要为evm模块添加sm3算法选项。

测试步骤

详细步骤可参考文件完整性保护文档的场景二内容。

  1. 内核预置国密根证书(参考国密文件完整性保护文档)
  2. 安装digest-list-tools和ima-evm-utils软件包,且大于或等于指定版本
$yum install -y ima-evm-utils digest-list-tools
  1. 生成IMA/EVM二级证书(需要为内核预置的商密根证书的子证书):
# 创建证书配置文件
echo 'subjectKeyIdentifier=hash' > ima.cfg
echo 'authorityKeyIdentifier=keyid,issuer' >> ima.cfg
# 生成私钥
openssl ecparam -genkey -name SM2 -out ima.key
# 生成签名请求
openssl req -new -sm3 -key ima.key -out ima.csr
# 基于一级证书生成二级证书
openssl x509 -req -sm3 -CAcreateserial -CA ca.crt -CAkey ca.key -extfile ima.cfg -in ima.csr -out ima.crt
# 转换为DER格式
openssl x509 -outform DER -in ima.crt -out x509_ima.der
openssl x509 -outform DER -in ima.crt -out x509_evm.der
  1. 生成SM3摘要列表
gen_digest_lists -a sm3 -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/bash -d <output_dir> -i i:
gen_digest_lists -a sm3 -t metadata -f compact -i l:policy -o add -p -1 -m immutable -i I:/usr/bin/bash -d <output_dir> -i i: -T
  1. 将IMA证书放置在/etc/keys目录下,执行dracut重新制作initrd
mkdir -p /etc/keys
cp x509_ima.der /etc/keys
cp x509_evm.der /etc/keys
echo 'install_items+=" /etc/keys/x509_ima.der /etc/keys/x509_evm.der "' >> /etc/dracut.conf
dracut -f -e xattr
  1. 设置启动参数,开启IMA摘要列表功能。
# log模式
ima_template=ima-sig ima_policy="exec_tcb|appraise_exec_tcb|appraise_exec_immutable" initramtmpfs ima_hash=sm3 ima_appraise=log evm=allow_metadata_writes evm=x509 ima_digest_list_pcr=11 ima_appraise_digest_list=digest
# enforce模式
ima_template=ima-sig ima_policy="exec_tcb|appraise_exec_tcb|appraise_exec_immutable" initramtmpfs ima_hash=sm3 ima_appraise=enforce-evm evm=allow_metadata_writes evm=x509 ima_digest_list_pcr=11 ima_appraise_digest_list=digest
  1. 将IMA摘要列表使用IMA/EVM证书对应的私钥进行签名,签名后可被正常导入内核:
# 使用evmctl对摘要列表进行签名
evmctl ima_sign  --key /path/to/ima.key -a sm3 0-metadata_list-compact-tree-1.8.0-2.oe2209.x86_64
# 检查签名后的扩展属性
getfattr -m - -d 0-metadata_list-compact-tree-1.8.0-2.oe2209.x86_64 
# 将签名后的摘要列表文件导入内核
echo /root/tree/etc/ima/digest_lists/0-metadata_list-compact-tree-1.8.0-2.oe2209.x86_64 > /sys/kernel/security/ima/digest_list_data

测试结果

cat /sys/kernel/security/ima/ascii_runtime_measurements
11 43b6981f84ba2725d05e91f19577cedb004adffb ima-sig sm3:b9430bbde2b7f30e935d91e29ab6778b6a825a2c3e5e7255895effb8747b7c1a /root/tree/etc/ima/digest_lists/0-metadata_list-compact-tree-1.8.0-2.oe2209.x86_64 0302113491640500473045022100b374a556771c35868566f6581907ab25facc5aa69b5414d8ea1ede57643f3b86022004cb99a8176b70d9bb7d7abfade430eebcd8fd137f5173eb20ec6b56fa53a2ec

评论 (2)

Hi ZhouShuiQing, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers.

zhoushuiqing 创建了任务 2年前
openeuler-ci-bot 添加了
 
sig/Kernel
标签
2年前
zhoushuiqing 修改了描述 2年前
zhoushuiqing 修改了标题 2年前
zhoushuiqing 修改了描述 2年前
展开全部操作日志

安装测试步骤复现,目前系统启动会存在起不来问题,原因是EVM未支持sm3算法选项。
修改方案:为evm模块添加sm3算法选项。

登录 后才可以发表评论

状态
负责人
项目
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
预计工期 (小时)
开始日期   -   截止日期
-
置顶选项
优先级
分支
参与者(2)
5329419 openeuler ci bot 1632792936 zhoushuiqing-ZhouShuiQing
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助