在我的 Debian Linux 系统上,安装期间我决定使用磁盘加密(常规 Debian 安装期间提供的加密)。当系统启动时,我需要输入密码,然后“真正的”启动开始。
有人可以解释一下这种加密是如何执行的吗?它发生在文件系统布局之前还是之后?我可以使用任何可用于 Linux 的文件系统进行磁盘加密吗?
这/etc/mtab/比我在 Linux 上使用的更复杂,我认为它与磁盘加密有关,但我真的不确定。这是(我认为是)我的相关内容/etc/mtab:
/dev/sda1 /boot ext2 rw,relatime,errors=continue 0
/dev/mapper/archon-root / ext4 rw,noatime,errors=remount-ro,user_xattr,commit=300,barrier=1,data=ordered 0 0
rootfs / rootfs rw 0 0
我真的不明白为什么 /boot 是 ext2,为什么 / 是 ext-4 并使用/dev/映射器。
/boot 本身可以使用 ext4 吗?
可以/正在使用 ZFS 并且仍然提供加密吗?
答案1
/boot
未加密(BIOS 无法解密它...)。它可能是 ext4,但实际上没有必要。它通常不会被写入。 BIOS 从 MBR 读取 GRUB,然后 GRUB 从 /boot 读取自身的其余部分、内核和 initramfs。 initramfs 会提示您输入密码。 (大概是它的 usingcryptsetup
和 LUKS 标头。)。
加密是在一层进行的以下文件系统。您正在使用名为 dm-crypt 的东西(这是 cryptsetup 使用的低级内核后端),其中“dm”表示“Device Mapper”。您似乎也在使用 LVM,它也是由内核设备映射器层实现的。基本上,你有一个看起来像这样的存储堆栈:
1. /dev/sda2 (guessing it's 2, could be any partition other than 1)
2. /dev/mapper/sda2_crypt (dm-crypt layer; used as a PV for VG archon)
3. LVM (volume group archon)
4. /dev/mapper/archon-root (logical volume in group archon)
5. ext4
您可以使用命令找到所有这些dmsetup
。例如,dmsetup ls
将告诉您列表中的Device Mapper设备。dmsetup info
将提供一些细节,并将dmsetup table
提供映射层正在执行的转换的技术细节。
它的工作方式是 dm-crypt 层(上面#2)通过执行加密来“映射”数据。因此,写入 /dev/mapper/sda2_crypt 的任何内容在传递到 /dev/sda2 (实际硬盘)之前都会被加密。来自 /dev/sda2 的任何内容在传出 /dev/mapper/sda2_crypt 之前都会被解密。
因此任何上层都透明地使用该加密。首先使用它的上层是 LVM。您正在使用 LVM 将磁盘划分为多个逻辑卷。您(至少)有一个名为 root 的文件系统,用于根文件系统。它是一个普通的块设备,因此您可以像使用其他设备一样使用它 - 您可以将任何您想要的文件系统放在那里,甚至可以放置原始数据。数据被传递下来,因此它将被加密。
需要了解的内容(检查联机帮助页等):
/etc/crypttab
- LVM(一些重要命令:
lvs
,pvs
,lvcreate
,lvextend
) cryptsetup
答案2
您的 Debian 设置和许多其他发行版使用地穴设置/LUKS全盘加密。
全盘加密对盘上分区进行加密并封装加密/解密,以便加密的分区对于系统的其余部分来说只是显示为正常的块级设备。然后可以将块设备格式化为任何人们想要的普通文件系统:ext2/3/4、xfs、jfs、btrfs(内核 3.2 或更高版本)。文件系统只是正常地将未加密的数据写入磁盘。然后,LUKS 子系统会在写入物理设备之前对该数据进行加密。反向读取工作。这对文件系统、应用程序和用户是透明的。实际写入此类光盘的所有内容均已加密。如果从外部检查该光盘,就会发现上面有随机垃圾。
物理分区映射到/dev/mapper/<a unique name here>
中的设备/etc/crypttab
。你的 crypttab 可能看起来像这样:
archon-root /dev/sda2 none
它加密并将真实分区映射/dev/sda2
到加密设备/dev/mapper/archon-root
。然后你的/etc/fstab
意志就会安装映射的设备或任何其他需要的东西/dev/mapper/archon-root
。/
Solaris 上的 ZFS 包含内置加密。在 Linux 上则不然。我期待zfs应该在 Cryptstup/LUKS 分区上工作,但我不知道这是否会发现任何问题。要获得完整的 ZFS/ZRaid 保护,设置肯定会很痛苦。其他文件系统在此设置下工作得很好。事实上,他们对此浑然不觉。 ZFS 对底层磁盘的作用比大多数(btrfs 除外)其他文件系统要多得多。
您的启动分区肯定是 ext4。但是,它不能使用 Cryptsetup/LUKS 进行加密,因为启动分区需要由启动加载的(grub)读取,并且没有加密支持(据我所知)。一旦内核加载并开始 init 进程,它将提示您输入密码以打开加密设备,这就是您看到的提示。