文档首页 > > 加解密库> 开发指南(KAE加解密)> 使用案例> 加速引擎的应用>

基于dm-crypt的透明分区/磁盘加密

基于dm-crypt的透明分区/磁盘加密

分享
更新时间:2021/01/29 GMT+08:00

dm-crypt向上呈现为一个device mapper机制的target device,经过映射挂载后就可以作为透明加密分区/磁盘使用。dm-crypt算法注册在Crypto模块中,hisi_sec2驱动安装后,SM4-XTS算法会注册到Crypto模块中,使用LUKS(Linux Unified Key Setup)进行配置即可实现硬件加解密。一个加密盘操作要占用24个队列, 当前加速器限制开放256*2的队列数, 如果需要操作更多数量的加密盘,需要先开启所有1024*2的加速器队列,开启方法,修改/etc/modprobe.d/hisi_sec2.conf配置文件中pf_q_num参数,重启生效。

环境要求

  • 已安装hisi_sec2驱动,安装方法请参考安装加速引擎软件
  • 为提升SM4-XTS算法性能,请将LUKS工具Cryptsetup升级至2.2.0版本。

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

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

    其中,libuuid-devel、device-mapper-devel、popt-devel、popt-devel、libblkid-develup2.2.0为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
    mount /dev/mapper/sx_disk /home/sec_test/
    
    1
    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
    

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问
{{site}}{{lan}}
{{site}}{{language}}