中文
注册

使用KAE提升SM4-XTS算法性能

KAE支持对称加密算法SM4的XTS模式,用以提高算法能力。该模式仅支持内核态使用,具体使用方法是基于dm-crypt的透明分区/磁盘加密。

dm-crypt向上呈现为一个device mapper机制的target device,经过映射挂载后就可以作为透明加密分区/磁盘使用。

dm-crypt算法注册在Crypto模块中,hisi_sec2驱动安装后,SM4-XTS算法会注册到Crypto模块中,使用LUKS(Linux Unified Key Setup,Linux统一秘钥设置)进行配置即可实现硬件加解密。

一个加密盘操作要占用24个队列,当前加速器限制开放256*2的队列数,如果需要操作更多数量的加密盘,需要先开启所有1024*2的加速器队列。开启方法:修改/etc/modprobe.d/hisi_sec2.conf配置文件中pf_q_num参数,重启生效。

环境要求

  • 已安装hisi_sec2驱动,安装方法请参见安装KAE
  • 为提升SM4-XTS算法性能,请将LUKS工具Cryptsetup升级至2.2.0版本。

    操作系统自带cryptsetup软件可能无法正在使用SM4-XTS算法加密磁盘,需要进行升级,请下载cryptsetup-2.2.0源码到环境中,以EulerOS2.8为例,升级cryptsetup步骤如下。

    1. 依次安装cryptsetup-2.2.0的依赖包:libuuid-devel、device-mapper-devel、popt-devel、json-c-devel、libblkid-devel。
      1
      2
      3
      4
      5
      yum install libuuid-devel
      yum install device-mapper-devel
      yum install popt-devel
      yum install json-c-devel
      yum install libblkid-devel
      
    2. 在cryptsetup-2.2.0源码目录下编译安装。
      1
      2
      ./configure 
      make && make install
      

    其中,libuuid-devel、device-mapper-devel、popt-devel、json-c-devel、libblkid-devel为cryptsetup依赖软件包。

加密分区/磁盘

  1. 在系统根目录下生成keyfile文件。
    1
    dd if=/dev/random of=/home/EncryptKeyFile bs=4k count=1
    
    显示结果为:
    1
    2
    3
    0+1 records in
    0+1 records out
    115 bytes copied, 0.00010976 s, 1.0 MB/s
    
  2. 加密分区/磁盘。
    1
    cryptsetup --batch-mode --cipher sm4-xts-plain64 --key-size 256 --hash sha256 --sector-size=4096 --type=luks2 --key-file /home/EncryptKeyFile luksFormat /dev/sdb
    
  3. 映射分区/磁盘。
    1
    cryptsetup --key-file /home/EncryptKeyFile luksOpen /dev/sdb sx_disk
    
  4. 查看分区/磁盘是否加密。
    1
    lsblk
    
    显示crypt表明分区/磁盘已加密。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    loop0            7:0    0   5.5G  1 loop  /os_lhl
    sda              8:0    0   2.2T  0 disk
    ├─sda1           8:1    0     1G  0 part  /boot/efi
    └─sda2           8:2    0   2.2T  0 part
      ├─vg_os-swap 254:0    0    20G  0 lvm   [SWAP]
      └─vg_os-root 254:1    0   2.2T  0 lvm   /
    sdb              8:16   0 278.5G  0 disk
    └─sx_disk      254:2    0 278.5G  0 crypt
    
  5. 格式化分区/磁盘。
    1
    mkfs.xfs /dev/mapper/sx_disk
    
    显示结果为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    meta-data=/dev/mapper/sx_disk    isize=512    agcount=16, agsize=4562368 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
    data     =                       bsize=4096   blocks=72997376, imaxpct=25
             =                       sunit=64     swidth=64 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=35648, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
  6. 创建挂载点目录。
    1
    mkdir /home/sec_test
    
  7. 挂载分区/磁盘到目录。
    1
    2
    mount /dev/mapper/sx_disk /home/sec_test/
    df -h
    
    显示结果为:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    Filesystem              Size  Used Avail Use% Mounted on
    devtmpfs                 63G     0   63G   0% /dev
    tmpfs                    63G     0   63G   0% /dev/shm
    tmpfs                    63G   28M   63G   1% /run
    tmpfs                    63G     0   63G   0% /sys/fs/cgroup
    /dev/mapper/vg_os-root  2.2T   18G  2.1T   1% /
    /dev/sda1              1022M  172K 1022M   1% /boot/efi
    tmpfs                    13G   20K   13G   1% /run/user/472
    tmpfs                    13G     0   13G   0% /run/user/0
    /dev/loop0              5.5G  5.5G     0 100% /os_lhl
    /dev/mapper/sx_disk     279G  317M  279G   1% /home/sec_test
    
  8. 确认目录可正常访问。
    1
    cd /home/sec_test/;ll
    
  9. “/home/sec_test”目录下查看分区/磁盘是否已加密,并且和目录是否正确对应。
    1
    lsblk
    
    显示结果为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    loop0            7:0    0   5.5G  1 loop  /os_lhl
    sda              8:0    0   2.2T  0 disk
    ├─sda1           8:1    0     1G  0 part  /boot/efi
    └─sda2           8:2    0   2.2T  0 part
      ├─vg_os-swap 254:0    0    20G  0 lvm   [SWAP]
      └─vg_os-root 254:1    0   2.2T  0 lvm   /
    sdb              8:16   0 278.5G  0 disk
    └─sx_disk      254:2    0 278.5G  0 crypt /home/sec_test    
    
  10. “/home”目录下查看分区/磁盘加密详细信息。
    1
    cryptsetup status /dev/mapper/sx_disk
    
    显示结果如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    /dev/mapper/sx_disk is active and is in use.
      type:    LUKS1
      cipher:  sm4-xts-plain64
      keysize: 256 bits
      key location: dm-crypt
      device:  /dev/sdb
      sector size:  512
      offset:  4096 sectors
      size:    583979008 sectors
      mode:    read/write
    
  11. 执行210,对多个分区/磁盘进行加密。

删除加密的分区/磁盘

  1. 卸载分区/磁盘的挂载目录。

    执行指令前,用户必须先退出挂载目录。

    当有多个分区/磁盘挂载时,需要多次执行该命令进行目录卸载。

    1
    umount -l /home/sec_test
    
  2. 执行lsblk命令,确认已卸载分区/磁盘的挂载目录。
    1
    lsblk
    
    显示结果为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
    loop0            7:0    0   5.5G  1 loop  /os_lhl
    sda              8:0    0   2.2T  0 disk
    ├─sda1           8:1    0     1G  0 part  /boot/efi
    └─sda2           8:2    0   2.2T  0 part
      ├─vg_os-swap 254:0    0    20G  0 lvm   [SWAP]
      └─vg_os-root 254:1    0   2.2T  0 lvm   /
    sdb              8:16   0 278.5G  0 disk
    └─sx_disk      254:2    0 278.5G  0 crypt
    
  3. 关闭映射。

    需要多次执行该命令关闭所有映射。

    1
    cryptsetup luksClose sx_disk
    
  4. 查看映射是否关闭。
    1
    ll /dev/mapper/
    
    显示结果如下:
    1
    2
    3
    4
    total 0                       
    crw---- 1 root root 10, 236 Jul 31 22:27 control
    lrwxrwxrwx 1 root root       7 Jul 31 22:27 vg_os-root -> ../dm-1
    lrwxrwxrwx 1 root root       7 Jul 31 22:27 vg_os-swap -> ../dm-0
    
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词