标签: luks

cryptopts 和 crypttab 之间的区别

我正在设置一个加密的根文件系统,我之前已经这样做过,但这次我使用带有对称密码的 PGP 加密密钥文件来熟悉该过程。

有两个地方似乎会发生加密根的配置,在cryptopts和下的内核 init 选项中/etc/crypttab,这似乎用于mkinitramfs将某些内容烘焙到 initramfs 中。

两个地方都更新有点麻烦;毕竟,如果一个地方就足够了,那么把它放在两个地方又有什么意义呢?我确实看到了将东西放在 中的价值/etc/crypttab,因为如果存在 LUKS 卷,则可以使用不同的挂钩和脚本以不同的方式生成 initramfs。

使用之前针对此问题修正的示例,这是我的 crypttab:

picrypt /dev/mmcblk0p2 /boot/diskkey.gpg luks,keyscript=/lib/cryptsetup/scripts/decrypt_gnupg
Run Code Online (Sandbox Code Playgroud)

据推测,这告诉 initramfs/dev/mmcblk0p2应该解密以使用 name picrypt,指定我们要使用该文件luks并将其传递/boot/diskkey.gpg/lib/cryptsetup/scripts/decrypt_gnupg脚本以生成卷的密码。

接下来,这是我的内核 init 行中的加密选项:

cryptopts=target=picrypt,source=/dev/mmcblk0p2,lvm=pi
Run Code Online (Sandbox Code Playgroud)

再次,我们重新指定/dev/mmcblk0p2create picrypt,在这种情况下,我们还告诉它内部有一个名为 call 的 LVM 卷,pi在尝试挂载内核参数指定的根文件系统之前,它应该等待该卷root=/dev/mapper/pi-root

奇怪的是,这个设置不起作用,因为它似乎忽略了 crypttab 的密钥文件和密钥脚本参数,并且不提示输入 GPG 对称密钥密码,而是直接输入密钥。我将修改我的脚本以包含keyscriptand keyfilein cryptopts,但为什么我必须这样做呢?

有没有一种方法可以将所有这些(或至少大部分)包含在内核初始化行中/etc/crypttab,并且不重复内核初始化行中的所有内容?必须将所有内容更改两次,这有点荒谬。这些不同的源是否只是提供不同的功能,crypttab 以钩子的形式,cryptopts 以 cryptsetup 的实际参数的形式?

luks cryptsetup crypttab

4
推荐指数
1
解决办法
5279
查看次数

initramfs、LUKS 和 dm_mod 升级后无法启动

我的Raspberry Pi(现在距离我10,000公里)的工作原理如下:

  • 它运行的是 Raspbian(2016 年 7 月的版本)
  • SD 卡包含/boot
  • 加密的硬盘驱动器(使用 LUKS cryptsetup)包含/
  • 当 Pi 启动时,我可以通过 SSH 远程解锁 HDD dropbear。它要求输入 HDD 的密码,然后启动顺序将正常继续。

有关我如何完成这一切的更多信息,请阅读http://blog.romainpellerin.eu/raspberry-pi-the-ultimate-guide.html
TL;DR这是一个简化版本:

apt-get install busybox cryptsetup rsync
echo "initramfs initramfs.gz 0x00f00000" >> /boot/config.txt
sed -e "s|root=/dev/mmcblk0p2|root=/dev/mapper/hddcrypt cryptdevice=/dev/sda1:hddcrypt|" -i /boot/cmdline.txt
sed -e "s|/dev/mmcblk0p2|/dev/mapper/hddcrypt|" -i /etc/fstab
echo -e "hddcrypt\t/dev/sda1\tnone\tluks" >> /etc/crypttab
cryptsetup --verify-passphrase -c aes-xts-plain64 -s 512 -h sha256 luksFormat /dev/sda1
mkinitramfs -o /boot/initramfs.gz $(uname -r)
aptitude install dropbear
// Configuring the SSH access …
Run Code Online (Sandbox Code Playgroud)

kernel debian initramfs luks dropbear

4
推荐指数
1
解决办法
3334
查看次数

如何使用LUKS加密解密硬盘?

今天我在外部硬盘驱动器上安装 ubuntu,在初始设置中我标记了“加密安装”选项并单击了安装按钮,但我没有注意到我的内部硬盘驱动器(其中有 Windows 10)是已选择。

当我点击安装时,出现一个弹出窗口,说 3 个分区将被删除,所以在那一刻我注意到我选择了错误的驱动器,我取消了安装,返回,选择正确的驱动器,然后继续安装(这次我禁用了加密选项)。

到目前为止,ubuntu 运行得很好,但是当我无法从 Windows 启动时,我意识到我加密了整个驱动器!

我需要拿回文件,我不知道下一步该怎么做!请帮助,我读到我需要进行备份,但我什至不知道如何访问驱动器。我们欢迎任何意见或建议。

ubuntu luks disk-encryption

4
推荐指数
1
解决办法
3万
查看次数

是否可以确定哪个 luks 插槽已用于解锁加密分区?

我处于一种(糟糕的)情况,我有多个正确的密码并使用了 luks 插槽,但我无法分辨哪个密码属于哪个插槽

解密(在启动期间感谢 crypttab)效果很好,但我无法判断哪个插槽已被使用。为了合理化这种情况,有没有办法确定哪个luks槽被使用了呢?

这个问题我读到:

如果您忘记了其中一个密码,那么您只能通过消除来找到它所在的位置,而如果您忘记了其中两个密码,则无法区分哪个是哪个(否则密码哈希将被破坏)。

...所以我有点害怕测试每个密码的每个插槽,即使我没有在手册页中找到任何损坏的密码哈希的参考。

注意:幸运的是,第一个 luks 插槽是已知的,所以我可以通过重置其他插槽来重新站起来。

luks

4
推荐指数
1
解决办法
2678
查看次数

运行 luksDump 时显示的 LUKS 时代是什么?

当您luksDump在 LUKS 设备上运行时,我得到以下信息:

$ sudo cryptsetup luksDump /dev/sda1 
LUKS header information
Version:        2
Epoch:          3
Metadata area:  16384 [bytes]
Keyslots area:  16744448 [bytes]
UUID:           4640c6e4-[…]
Label:          (no label)
Subsystem:      (no subsystem)
Flags:          (no flags)
[…]
Run Code Online (Sandbox Code Playgroud)

我很清楚“版本”指的是什么(当前最好的是 v2,所以这就是你的目标),我已经看到了Epoch3 到 5 的值。

然而,究竟Epoch指的是什么?我应该瞄准什么价值?那里声明的数字是否重要(安全方面)?如果它仍然是 Epoch 3 是不是很糟糕,例如?可以升级那个时代吗?

我已经在网络和常见问题解答中搜索信息,但epoch那里没有提到这个词。

encryption luks disk-encryption

4
推荐指数
1
解决办法
207
查看次数

LUKS + TPM2 + PIN

我目前知道两种将 LUKS 加密根分区绑定到 TPM2 的最新方法:systemd-cryptenrollclevis. 在成功检查密钥密封的 PCR 后,他们似乎都释放了加密密钥。

但我不喜欢在没有用户交互的情况下解密卷的想法。我宁愿有一个类似于 BitLocker for Windows 提供的解决方案:TPM 和额外的 PIN 或恢复密钥。

尽管我在网上进行了详尽的搜索,但我无法找到这方面的任何提示。有人知道解决方案吗?

编辑:有一个--recovery-key选项systemd-cryptenroll。我只关心如何在使用 TPM 时获得额外的 PIN 要求的问题。

systemd luks secure-boot tpm disk-encryption

4
推荐指数
1
解决办法
3738
查看次数

缩小 LUKS2 btrfs 根分区上的根 LVM 以扩大交换分区

这是我的设置

$ lsblk
NAME                   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1                259:0    0 238.5G  0 disk
??nvme0n1p1            259:1    0   100M  0 part  /boot/efi
??nvme0n1p2            259:2    0   250M  0 part  /boot
??nvme0n1p3            259:3    0 238.1G  0 part
  ??Be-Water-My-Friend 254:0    0 238.1G  0 crypt
    ??Arch-swap        254:1    0     2G  0 lvm   [SWAP]
    ??Arch-root        254:2    0 236.1G  0 lvm   /
Run Code Online (Sandbox Code Playgroud)

我有一个主要的 LUKS2 加密分区 ( nvme0n1p3),一个 LVM 卷组 ( Be-Water-My-Friend) 包含两个逻辑卷Arch-swapArch-root.

Arch-root是一个btrfs

当我设置它时,我只选择了 2GB 的交换空间,这不足以满足我的需求。我想将其增加到 …

arch-linux lvm btrfs luks

4
推荐指数
2
解决办法
168
查看次数

如何修改现有 luks 分区上的 -iter-time

首先,我已经阅读了这个主题: How to change the hash-spec and iter-time of an existing dm-crypt LUKS device?

其中建议是以下命令:

cryptsetup-reencrypt --keep-key
Run Code Online (Sandbox Code Playgroud)

然而,这个答案是 7 年前的,并且被认为是实验性的。就我而言,我在安装过程中从加密磁盘上的实时 USB 滴答声安装了 Debian 。因此,当我启动设备时,我必须直接从 grub 解密。解密时间太长,因为--iter-time即使我的密码正确,似乎默认也在 30 秒左右,因此有人建议减少--iter-time300.

这就是为什么我还有其他问题:

  1. cryptsetup-reencrypt --keep-key -iter-time DEVICE今天的代码准确吗?
  2. 上面有 Luks 的分区是/dev/nvme0n1p2,luks 分区是/dev/mapper/luks-xxxx,交换分区也一样。选择哪个设备:cryptsetup-reencrypt --keep-key -iter-time /dev/nvme0n1p2cryptsetup-reencrypt --keep-key -iter-time /dev/mapper/luks-xxxx
  3. 我应该从 grub 菜单中的命令还是从实时 USB 中使用它?
  4. 它会格式化我的数据吗?(最好问两遍)

非常感谢。

供参考 :

  • 操作系统: Debian
  • 安装Luks的方式:通过live USB(只需勾选“加密磁盘”)
  • 卢克斯版本:卢克斯 1
  • SLOTS:启用键槽 0 …

grub debian grub2 luks cryptsetup

4
推荐指数
1
解决办法
2502
查看次数

/etc/crypttab 未在 initramfs 中更新

我新安装了 ubuntu 22.04,并从 ubuntu 安装程序选项中选择了全磁盘加密 (LUKS) 和 ZFS。

我需要进行一些编辑,/etc/crypttab以便以自动方式解锁我的驱动器(花式 USB 自动解锁),但我所做的编辑/etc/crypttab不会保留到 initramfs 中。

我正在做的是:

  • 编辑/etc/crypttab
  • 跑步update-initramfs -u
  • 重新启动我的机器进入要求输入 LUKS 密码的系统 (initramfs)
  • 检查内容,/etc/但不存在 cryptotab。

我对它的工作原理的理解是否错误?我需要将某些版本的 crypttab 保留到加载程序,但它不起作用。

有任何指示我做错了什么吗?

zfs ubuntu initramfs luks crypttab

4
推荐指数
1
解决办法
5832
查看次数

如何访问根文件系统以启动 cryptsetup 以允许访问根文件系统?

我有带全盘加密的笔记本电脑。有一个未加密的 /boot 分区,另一个分区 /dev/sda5 是。

为了解密,它要求我输入密码,然后将其传递给命令 /sbin/cryptsetup luksOpen ${name} ${device}。

如果命令 /sbin/cryptsetup 在加密分区上,它如何解密分区,这是不可访问的。我想也许 /boot 分区中有该命令的副本,但我没有找到。

有人可以对此有所了解吗?

luks

3
推荐指数
1
解决办法
407
查看次数