尝试使用cryptsetup挂载用 truecrypt 加密的驱动器。
这样做:
sudo cryptsetup open --type tcrypt --readonly /dev/sdc1 encrypted_drive
Run Code Online (Sandbox Code Playgroud)
然后输入密码给我:
Activation is not supported for 4096 sector size.
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思,我如何挂载我的 truecrypt 卷?
有用的信息:
cryptsetup --version 产量 cryptsetup 1.6.1--readonly选项不会产生任何变化我觉得密钥文件和密码提供了不同的好处。它们不能以相同的方式获得(一种您需要实际获得,另一种您需要知道)。因此,我认为使用这两种方法加密我的数据有很大的好处。这样,如果有人受到损害,加密仍然完好无损。
在普通模式下使用 dm-crypt,我想同时使用两者。默认情况下,dm-crypt 使用密码短语,我可以轻松地将其更改为密钥文件。但它们似乎是同一种输入(例如,如果提供,密钥文件将成为您的密码)。因此,同时使用 --key-file 和 --verify-passphrase 不起作用。
这里有什么解决方法可以同时使用两者吗?
假设我想使用 cryptsetup 创建一个存储在文件中的大型加密驱动器,第一步是创建一个随机文件,假设它的大小应该为 3T:
dd if=/dev/urandom of=$FILE bs=1G count=3000
Run Code Online (Sandbox Code Playgroud)
上述过程可能需要很长时间。我想知道以下快捷方式是否有意义(从安全角度来看,请记住目标是创建存储在 $FILE 中的加密驱动器):
dd if=/dev/urandom of=$FILE bs=1G count=1000我猜这个过程没有那么严格,因为数据有点“少”随机,但从实用的角度来看,这是一个可行的解决方案(它会快3倍)?这比创建一个充满零的 3T 文件(使用/dev/zero)更好吗?
解锁新格式化的 LUKS 卷时,我在内核日志中收到警告:
kernel: device-mapper: table: 253:14: adding target device sdk1 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
Run Code Online (Sandbox Code Playgroud)
根据另一个问题,错误警告是可能的,所以我确认这是一个真正的警告:33553920 不能被 4096 整除。我进一步使用 luksDump 来确认:
cryptsetup luksDump /dev/sdk1 | grep 'Payload offset'
Payload offset: 65535
Run Code Online (Sandbox Code Playgroud)
不是 8 的倍数 (4096 ÷ 512 = 8)
lsblk -t /dev/sdk 确认 Linux 了解对齐要求:
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdk 0 4096 33553920 4096 512 1 cfq 128 128 32M
??sdk1 0 4096 33553920 4096 512 1 …Run Code Online (Sandbox Code Playgroud) 我正在设置一个加密的根文件系统,我之前已经这样做过,但这次我使用带有对称密码的 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 的实际参数的形式?
首先,我已经阅读了这个主题: 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-time到300.
这就是为什么我还有其他问题:
cryptsetup-reencrypt --keep-key -iter-time DEVICE今天的代码准确吗?/dev/nvme0n1p2,luks 分区是/dev/mapper/luks-xxxx,交换分区也一样。选择哪个设备:cryptsetup-reencrypt --keep-key -iter-time /dev/nvme0n1p2或cryptsetup-reencrypt --keep-key -iter-time /dev/mapper/luks-xxxx?非常感谢。
供参考 :
我的硬盘有一个映像备份文件,它由三个分区 ( sudo fdisk -l /mnt/hdd/19_02.img) 组成:
Device Start End Sectors Size Type
/mnt/hdd/19_02.img1 2048 1050623 1048576 512M EFI System
/mnt/hdd/19_02.img2 1050624 34686975 33636352 16G Linux swap
/mnt/hdd/19_02.img3 34686976 976773134 942086159 449.2G Linux filesystem
Run Code Online (Sandbox Code Playgroud)
第三个分区 ist 类型crypto_LUKS。如果它不会被加密,我可以用 挂载它sudo mount -o loop,offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img /mnt/img,这会导致mount: /mnt/img: unknown filesystem type 'crypto_LUKS'.
sudo cryptsetup luksOpen /mnt/hdd/19_02.img3 img 结果是 Device /mnt/hdd/19_02.img3 doesn't exist or access denied.
sudo cryptsetup plainOpen --offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img img …
我遵循此准则来加密目标分区:
cryptsetup -h sha256 -c aes-xts-plain64 -s 512 luksFormat /dev/nvme0n1p3
Run Code Online (Sandbox Code Playgroud)
然后,即使我之前卸载了主分区,也会出现错误: umount -l /home
使用-l -标志的原因是没有它它就无法工作。此外,为了到目前为止,我必须启动系统直到到达用户登录屏幕,然后按CTRL+ALT+F2进入tty2,通过“登录”和“密码”登录我的用户,然后卸载“/home” - 强力分区。
尽管我之前通过 gparted 检查过它是与 /home 相关的硬盘驱动器上的安装点,但它指出
“设备 /dev/nvme0n1p3 正在使用。无法继续格式化操作。”
尽管之前已经卸载了“/home”。
如何使用 LUKS (cryptsetup) 完成对“/home”分区的加密?由于与 Windows 10 并行安装,我无法加密整个 ubuntu 20.04 安装,我是否可以以相同的方式使用它来加密我的 swap、/temp 和 /var/temp?
它说这是一个可选步骤,但建议这样做,它改进了加密以用随机数据预填充分区。
是什么带来了充满随机数据的安全性?解密分区是否更困难?我不明白为什么它提供更好的安全性。这提供了更大的安全性。