LUKS加密

LUKS简介

https://linux.cn/article-16068-1.html
LUKS 是 Linux 用户中流行的磁盘加密机制。在 Linux 上,LUKS 是最常用的磁盘加密方式。
LUKS的功能直接内置于内核中。
LUKS 有两个版本,LUKS2 具有更强的头部损坏抗击性,并默认使用 Argon2[4] 加密算法(LUKS1 使用 PBKDF2[5])。在某些情况下,可以在两个版本之间进行转换,但是 LUKS1 可能不支持某些功能。

LUKS结构示意图:
image.png


LUKS术语


卷Volume:

卷是一个逻辑存储区域,可用于存储数据。在磁盘加密的场景中卷指的是已加密以保护其内容的磁盘部分。


参数Parameters:

参数是控制加密算法运行方式的设置。参数可能包括所使用的加密算法、密钥大小以及有关如何执行加密的其他详细信息。


加密类型Cipher type**:

它是指用于加密的数学算法。它指的是用于保护加密卷上数据的具体加密算法。


密钥大小Key size:

密钥大小是衡量加密算法强度的指标:密钥大小越大,加密强度越高。通常以位数表示,例如 128 位加密或 256 位加密。


头部Header:

头部是加密卷开头的特殊区域,包含有关加密的信息,例如所使用的加密算法和加密密钥。
下一个定义对于新手来说可能有些棘手,但了解它还是很重要的,尤其在处理 LUKS 时,这会非常有用。


容器Container:

容器是一个特殊的文件,类似于虚拟加密卷。它可以用于存储加密数据,就像加密分区一样。不同之处在于容器是一个文件,可以存储在未加密的分区上,而加密分区是整个磁盘的一部分,已经完全加密。因此,容器是 充当虚拟加密卷的文件


安装Cryptsetup

https://linuxconfig.org/basic-guide-to-encrypting-linux-partitions-with-luks?ref=its-foss

# Debian/Ubuntu安装
apt install -y cryptsetup

# CentOS安装
yum install -y cryptsetup crypto-utils cryptsetup-luks cryptsetup-luks-devel cryptsetup-luks-libs

# Fedora安装
dnf install -y crypto-utils cryptsetup cryptsetup-luks

# opensuse安装
zypper in cryptsetup

LUKS基本用法

基本选项如下:

参数解释
–cypher这确定分区上使用的加密密码,默认选项是 aes-xts-plain64
–key-size使用的密钥的长度,默认值为 256
–hash选择用于派生密钥的哈希算法,默认为 sha256
–time密码处理所用的时间,默认值为 2000 毫秒
–use-random/–use-urandom确定使用的随机数生成器,默认值为–use-random

创建一个加密容器

# 在设备/dev/sdb1上创建一个新的LUKS(Linux Unified Key Setup)加密容器
cryptsetup luksFormat /dev/sdb1

# 在指定的设备上创建一个新的LUKS加密容器
cryptsetup luksFormat <device>

配置加密容器的加密算法和参数

# 配置加密容器的加密算法和参数
## 指定了使用AES-XTS加密算法
## 密钥大小为512位
## 哈希算法为SHA-512
## 迭代次数为5000次
## 使用/dev/urandom生成随机数
cryptsetup -c aes-xts-plain64 --key-size 512 --hash sha512 --time 5000 --use-urandom /dev/sdb1

打开新加密设备

# 在LUKS加密容器上打开加密设备/dev/sdb1,并指定设备的名称为encrypted
## 将创建一个名为/dev/mapper/encrypted的虚拟块设备
cryptsetup open /dev/sdb1 encrypted

查看加密容器

# 显示LUKS加密容器的详细信息,包括密钥槽、加密算法和哈希算法等
cryptsetup luksDump <device>

# 显示LUKS加密容器的UUID(通用唯一标识符)
cryptsetup luksUUID <device>

# 显示指定名称的加密设备的状态信息,包括是否已打开和已使用的密钥槽等
cryptsetup status <name>: 

更改密码或密钥

# 更改指定名称的加密设备的密码或密钥
cryptsetup change-key <name>

调整加密设备容量

# 调整已打开加密设备的大小,适用于扩展或缩小设备的容量
cryptsetup resize <name>

重新加密

# 对现有的LUKS加密容器进行重新加密,可以更改加密算法、密码等参数
cryptsetup reencrypt <device>

格式化加密盘

# 格式化加密盘
mkfs.ext4 /dev/mapper/encrypted

打开指定加密容器类型为LUKS

# 在加密容器/dev/sdb1上打开一个新的加密设备,指定加密容器类型为LUKS
cryptsetup --type luks open /dev/sdb1 encrypted

挂载加密盘

# 挂载磁盘
mount -t ext4 /dev/mapper/encrypted /place/to/mount

运行加密性能基准测试

# 运行一个加密性能基准测试,以评估系统的加密速度和效率
cryptsetup benchmark

关闭加密盘

# 先取消挂载
umount /place/to/mount

# 关闭指定名称的加密设备。
## 它会解除与加密设备的连接,并释放相关的资源和虚拟设备
cryptsetup close encrypted

LUKS完整用法


打开/关闭设备:

# 以指定名称的映射方式打开设备
cryptsetup open <device> [--type <type>] [<name>]

# 关闭指定名称的加密设备
cryptsetup close <name> 

设备管理和操作:

# 调整已打开加密设备的大小
cryptsetup resize <name>

# 显示加密设备的状态信息
cryptsetup status <name>

# 对密码算法进行基准测试
cryptsetup benchmark [--cipher <cipher>]

# 尝试修复磁盘上的元数据
cryptsetup repair <device>

# 擦除所有密钥槽,移除加密密钥
cryptsetup erase <device>

LUKS(Linux Unified Key Setup)相关操作:

# 格式化一个LUKS设备
cryptsetup luksFormat <device> [<new key file>]

# 向LUKS设备添加密钥
cryptsetup luksAddKey <device> [<new key file>]

# 从LUKS设备中移除指定的密钥或密钥文件
cryptsetup luksRemoveKey <device> [<key file>]

# 更改LUKS设备中的指定密钥或密钥文件
cryptsetup luksChangeKey <device> [<key file>]

# 将密钥转换为新的pbkdf参数
cryptsetup luksConvertKey <device> [<key file>]

# 清除LUKS设备中指定编号的密钥槽
cryptsetup luksKillSlot <device> <key slot>

# 打印LUKS设备的UUID
cryptsetup luksUUID <device>

# 测试设备是否为LUKS分区头
cryptsetup isLuks <device>

# 显示LUKS分区的详细信息
cryptsetup luksDump <device>

其他操作:

# 显示TCRYPT设备的信息
cryptsetup tcryptDump <device>

# 暂停LUKS设备并擦除密钥
cryptsetup luksSuspend <device>

# 恢复被暂停的LUKS设备
cryptsetup luksResume <device>

# 备份LUKS设备的头和密钥槽
cryptsetup luksHeaderBackup <device>

# 恢复LUKS设备的头和密钥槽
cryptsetup luksHeaderRestore <device>

# 添加或移除密钥环令牌
cryptsetup token <add|remove> <device>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值