国密硬件加速

鲲鹏芯片支持国密算法加速,硬件实现SM2/3/4国密算法加解密。本章节主要介绍如何在机密虚机内使能鲲鹏芯片国密硬件加速功能。

约束与限制

导入鲲鹏加速引擎(KAE)相关license

  1. 登录iBMC网页,选择iBMC管理>许可证管理

    在未导入License的情况下,Kunpeng accelerator SEC FunctionKunpeng accelerator HPRE FunctionKunpeng accelerator RDE FunctionKunpeng accelerator ZIP Function均处于“已关闭”状态。如果需要申请TEE License,请联系华为业务负责人申请。

  2. 单击“安装”,选择获取的KAE License。

    成功导入KAE License后,KAE相关特性处于“已开启”状态,并显示对应截止日期。

编译guest kernel

  1. 参考编译Guest Kernel获取Guest OS代码。
  2. 编译内核。

    make Image -j64

  3. 编译完成后在“arch/arm64/boot”目录下获取Image,在“drivers/misc/uacce”目录下获取uacce.ko

在虚机中使能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驱动编译部署

  1. 执行以下命令拉取代码。

    git clone https://gitee.com/openeuler/virtCCA_driver.git

  2. 执行以下命令切换至“virtCCA_driver”目录下并进行编译。

    cd virtCCA_driver && make

  3. 执行以下命令将目录切换至“kae_driver”下,找到hisi_plat_qm.ko, hisi_plat_sec.ko, hisi_plat_hpre.ko并通过scp命令传到虚机中。

    cd kae_driver
    scp hisi_plat_qm.ko root@192.168.47.1:/home/run
    scp hisi_plat_sec.ko root@192.168.47.1:/home/run
    scp hisi_plat_hpre.ko root@192.168.47.1:/home/run

    192.168.47.1仅为虚机示例IP,使用时请按照实际IP操作。

  4. 执行以下命令依次加载qm、sec、hpre驱动。

    执行此步骤前须确保uacce.ko已成功加载。

    insmod hisi_plat_qm.ko
    insmod hisi_plat_sec.ko
    insmod hisi_plat_hpre.ko

  5. 驱动加载完成后,执行以下命令查看驱动是否注册到uacce。

    ll /sys/class/uacce/

部署UADK

  1. 安装依赖。

    yum install gcc make kernel-devel libtool numactl-devel  openssl-devel chrpath

    OpenSSL支持版本为1.1.1以上,通过yum安装openssl-devel即可。如果测试SM2算法需要指定OpenSSL的版本为1.1.1。

  2. 执行以下命令在机密虚机中拉取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

  3. 编译安装。

    sh build.sh uadk
    sh build.sh engine

  4. 执行脚本进行测试,生成res.txt。

    sh KAE/KAEOpensslEngine/test/perf_test/openssl_perf.sh

    如果需要测试SM2算法,需要执行如下命令修改测试脚本来指定包长。

    1. 打开openssl_perf.sh脚本文件。
      vim KAE/KAEOpensslEngine/test/perf_test/openssl_perf.sh
    2. “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

    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件。