磁盘加密

概述

磁盘加密是对重要数据存储机密性进行保护,按照给定加密算法对数据进行加密后写入磁盘,从而保障重要数据的机密性。该特性主要涉及用户态工具cryptsetup和内核态的dm-crypt模块。当前openEuler操作系统提供的磁盘加密特性已支持商密算法。相关参数如下:

  • 加密模式:支持luks2和plain两种模式;
  • 密钥长度:支持256位;
  • 摘要算法:支持商密SM3算法;
  • 加密算法:支持商密sm4-xts-plain64算法。

前置条件

  1. 内核大于或等于5.10.0-106版本:
$ rpm -qa kernel
kernel-5.10.0-106.1.0.55.oe2209.x86_64
  1. cryptsetup大于或等于2.4.1-1版本:
$ rpm -qa cryptsetup
cryptsetup-2.4.1-1.oe2209.x86_64

如何使用

通过将磁盘格式化成指定加密模式的磁盘,然后映射到/dev/mapper下作为dm设备,后续对磁盘的读写都通过该dm设备进行,数据的加解密过程由内核态完成,用户态不感知。参考步骤如下:

  1. 格式化磁盘,将磁盘映射为dm设备:

a. luks2模式

加密模式使用luks2,加密算法使用sm4-xts-plain64,密钥大小为256位,摘要算法使用sm3:

# cryptsetup luksFormat /dev/sdd -c sm4-xts-plain64 --key-size 256 --hash sm3

b. plain模式

加密模式使用plain,加密算法使用sm4-xts-plain64,密钥大小为256位,摘要算法使用sm3:

# cryptsetup plainOpen /dev/sdd crypt1 -c sm4-xts-plain64 --key-size 256 --hash sm3
  1. 映射成功后可通过lsblk查看设备信息:
# lsblk
NAME             MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
......
sdd                8:48   0   50G  0 disk
└─crypt1         253:3    0   50G  0 crypt
......
  1. 对加密后的设备进行IO读写:

直接对裸盘下发IO:

# dd if=/dev/random of=/dev/mapper/crypt1 bs=4k count=10240

通过文件系统下发IO:

# mkfs.ext4 /dev/mapper/crypt1
# mount /dev/mapper/crypt1 /mnt/crypt/
# dd if=/dev/random of=/mnt/crypt/tmp bs=4k count=10240
  1. 关闭设备映射:

如果挂载了文件系统,需要先卸载:

# umount /mnt/crypt

关闭设备:

# cryptsetup luksClose crypt1

文档捉虫

“有虫”文档片段

问题描述

提交类型 issue
有点复杂...
找人问问吧。
PR
小问题,全程线上修改...
一键搞定!
问题类型
规范和低错类

● 错别字或拼写错误;标点符号使用错误;

● 链接错误、空单元格、格式错误;

● 英文中包含中文字符;

● 界面和描述不一致,但不影响操作;

● 表述不通顺,但不影响理解;

● 版本号不匹配:如软件包名称、界面版本号;

易用性

● 关键步骤错误或缺失,无法指导用户完成任务;

● 缺少必要的前提条件、注意事项等;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

正确性

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 命令、命令参数等错误;

● 代码片段错误;

● 命令无法完成对应功能;

● 界面错误,无法指导操作;

风险提示

● 对重要数据或系统存在风险的操作,缺少安全提示;

内容合规

● 违反法律法规,涉及政治、领土主权等敏感词;

● 内容侵权;

您对文档的总体满意度

非常不满意
非常满意
提交
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。