国密硬件加速
鲲鹏芯片支持国密算法加速,硬件实现SM2/3/4国密算法加解密。本章节主要介绍如何在机密虚拟机内使能鲲鹏芯片国密硬件加速功能。
约束与限制
- 当前virtCCA国密硬件加速不支持stage1 SMMU。
- BIOS需要使能SMMU,具体可参考2。
导入鲲鹏加速引擎(KAE)相关license
- 登录iBMC网页,选择 > 。
在未导入License的情况下,Kunpeng accelerator SEC Function、Kunpeng accelerator HPRE Function、Kunpeng accelerator RDE Function、Kunpeng accelerator ZIP Function均处于“已关闭”状态。如果需要申请TEE License,请联系华为业务负责人申请。
- 单击“安装”,选择获取的KAE License。
成功导入KAE License后,KAE相关特性处于“已开启”状态,并显示对应截止日期。
编译加速器驱动
在虚拟机中使能KAE
请参见启动虚拟机,在已启动的虚拟机的xml文件中作如下修改。
将<qemu:arg value='tmm-guest,id=tmm0,sve-vector-length=128,num-pmu-counters=1'/>修改为<qemu:arg value='tmm-guest,id=tmm0,sve-vector-length=128,num-pmu-counters=1,kae=4'/>

其中kae=4中的“4”表示通入机密虚拟机中VF数量,支持在[0,11]中取值。单个虚拟机最多支持通入11组VF,每个物理机最多支持通入虚拟机48组VF。
KAE驱动编译部署
- 执行以下命令拉取代码。
git clone https://gitee.com/openeuler/virtCCA_driver.git
- 执行以下命令切换至“virtCCA_driver”目录下并进行编译。
cd virtCCA_driver && make
- 执行以下命令将目录切换至“kae_driver”下,找到hisi_plat_qm.ko, hisi_plat_sec.ko, hisi_plat_hpre.ko并通过scp命令传到虚拟机中。
cd kae_driver scp hisi_plat_qm.ko root@xx.xx.xx.xx:/home/run scp hisi_plat_sec.ko root@xx.xx.xx.xx:/home/run scp hisi_plat_hpre.ko root@xx.xx.xx.xx:/home/run
使用时请按照虚拟机实际IP操作。
- 执行以下命令依次加载qm、sec、hpre驱动。
执行此步骤前须确保uacce.ko已成功加载。
insmod hisi_plat_qm.ko insmod hisi_plat_sec.ko insmod hisi_plat_hpre.ko
- 驱动加载完成后,执行以下命令查看驱动是否注册到uacce。
ll /sys/class/uacce/
部署UADK
- 安装依赖。
yum install gcc make kernel-devel libtool numactl-devel openssl-devel chrpath
OpenSSL支持版本为1.1.1以上,通过yum安装openssl-devel即可。如果测试SM2算法需要指定OpenSSL的版本为1.1.1。
- 执行以下命令在机密虚拟机中拉取KAE代码。
git clone -b v2.0.3 https://gitee.com/kunpengcompute/KAE.git
目前v2.0.3版本的kae不支持切换OpenSSL版本,如果需要切换OpenSSL版本请手动拉取kae最新代码。
git clone -b kae2 https://gitee.com/kunpengcompute/KAE.git
- 编译安装。
sh build.sh uadk sh build.sh engine
- 执行脚本进行测试,生成res.txt。
export OPENSSL_ENGINES=/usr/local/lib/engines-1.1 sh KAE/KAEOpensslEngine/test/perf_test/openssl_perf.sh
如果需要测试SM2算法,需要执行如下命令修改测试脚本来指定包长。
- 打开openssl_perf.sh脚本文件。
vim KAE/KAEOpensslEngine/test/perf_test/openssl_perf.sh
- 按“i”进入编辑在SM2算法测试函数function RSA_SYNC()中,将
SPEED=`taskset -c 0-63 $EXE speed -engine $ENGINE_NAME -elapsed -multi $MULTT I $ALG | tail -n 1 ` #hard
修改为
SPEED=`taskset -c 0-63 $EXE speed -engine $ENGINE_NAME -elapsed -bytes 512 -multi $MULTT I $ALG | tail -n 1 ` #hard
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。
- 打开openssl_perf.sh脚本文件。