加密根目录的Arch安装

发布于 2023-01-20  1,538 次阅读


在尝试了Zorin Fyde OS Brunch chrome os Chrome flex后又又又回到了Arch
但是本着多整活的原则,这次尝试加密了到的Arch
~~说着不写这种文章了,结果它又来了(~~
不过这篇只专注于加密部分,其余的东西就不管它了

加密之前

为了之前的数据安全,您可能需要擦除之前的数据

shred --verbose --random-source=/dev/urandom --iterations=3 /dev/sda

iterations为覆写的次数,/dev/sda为操作的硬盘

加密分区

首先分区,推荐使用cfdisk,fdisk

可以使用cryptsetup benchmark来测试不同加密方法的速度

我采用的是aes-xts-plain64 key-size 256来做的加密

使用cryptsetup --key-size 256 --iter-time 4000 luksFormat /dev/sda1

如果您想提高安全性,可以提高key-size和iter-time

/dev/sda1为要加密的分区

解密分区

使用cryptsetup open [加密分区] [挂载名字]来解密

使用mount /dev/mapper/[名字] [挂载目录]来挂载

然后直接mkfs.ext4 /dev/mapper/[名字]格式化即可(当然您也可以选择您喜欢的文件系统

在早期用户空间解锁

配置 Initramfs

编辑/etc/mkinitcpio.conf

修改HOOK为:

HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt filesystems fsck)

HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)

前者使用encrypt而后者使用sd-encrypt

使用sd-encrypt时您需要新建一个空文件(或者添加您想定义的内容,如LANG=en_US.UTF-8)/etc/locale.conf
两者最明显的不同是encrypt在Initramfs中只能解锁一个设备

然后使用mkinitcpio -P来生成Initramfs

Grub配置

编辑/etc/default/grub

GRUB_CMDLINE_LINUX=后添加

cryptdevice=UUID=[分区UUID]:[挂载名称] root=/dev/mapper/[挂载名称]

如果您有swap分区,额外添加resume=/dev/mapper/[挂载名称(与上面不同)]

然后重新生成grub配置文件grub-mkconfig -o /boot/grub/grub.cfg

在后期用户空间解锁

crypttab

使用crypttab我们可以自动解锁一些分区

编辑/etc/crypttab

添加一行(或多行)

[挂载名称] [分区/(UUID=[UUID])] [密码文件/none] [额外选项(如timeout=180)]

特别的,对于SWAP请查看dm-crypt/Swap encryption

参考