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参数,重启生效。
加密分区/磁盘
- 在系统根目录下生成keyfile文件。
| dd if=/dev/random of=/home/EncryptKeyFile bs=4k count=1
|
显示结果为:
| 0+1 records in
0+1 records out
115 bytes copied, 0.00010976 s, 1.0 MB/s
|
- 加密分区/磁盘。
| cryptsetup --batch-mode --cipher sm4-xts-plain64 --key-size 256 --hash sha256 --sector-size=4096 --type=luks2 --key-file /home/EncryptKeyFile luksFormat /dev/sdb
|
- 映射分区/磁盘。
| cryptsetup --key-file /home/EncryptKeyFile luksOpen /dev/sdb sx_disk
|
- 查看分区/磁盘是否加密。
显示crypt表明分区/磁盘已加密。
| 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
|
- 格式化分区/磁盘。
| mkfs.xfs /dev/mapper/sx_disk
|
显示结果为:
| 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
|
- 创建挂载点目录。
- 挂载分区/磁盘到目录。
| mount /dev/mapper/sx_disk /home/sec_test/
df -h
|
显示结果为:
| 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
|
- 确认目录可正常访问。
- 在“/home/sec_test”目录下查看分区/磁盘是否已加密,并且和目录是否正确对应。
显示结果为:
| 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
|
- “/home”目录下查看分区/磁盘加密详细信息。
| cryptsetup status /dev/mapper/sx_disk
|
显示结果如下:
| /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
|
- 执行2到10,对多个分区/磁盘进行加密。
删除加密的分区/磁盘
- 卸载分区/磁盘的挂载目录。
执行指令前,用户必须先退出挂载目录。
当有多个分区/磁盘挂载时,需要多次执行该命令进行目录卸载。
- 执行lsblk命令,确认已卸载分区/磁盘的挂载目录。
显示结果为:
| 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
|
- 关闭映射。
| cryptsetup luksClose sx_disk
|
- 查看映射是否关闭。
显示结果如下:
| 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
|