在Linux中,磁盘加密是一种保护数据不被未授权访问的方法。有多种工具和策略可以实现磁盘加密,包括使用Linux内核的内置功能,如dm-crypt,以及使用更高级的解决方案,如LUKS(Linux Unified Key Setup)。下面利用dm-crypt和LUKS实现对磁盘的加密:
1.dm-crypt
dm-crypt是Linux内核的一部分,它允许你加密整个磁盘分区或磁盘。内核配置dm-crypt功能:
bash
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
2.安装cryptsetup
bash
sudo apt install cryptsetup
3.对目标设备设置加密
下面以/dev/mmcblk0p8分区为例说明。
bash
sudo cryptsetup luksFormat /dev/mmcblk0p8
注意:输入大写YES以确认,该步骤会丢失设备已有数据,请务必先做好备份,过程中会提示输入并确认密码。
4.解密/dev/mmcblk0p8映射到逻辑卷
bash
sudo cryptsetup luksOpen /dev/mmcblk0p8 unlkd1
这里的unlkd1是个人自定义的名称。过程需输入已设置的正确密码。解密后产生一个/dev/mapper/unlkd1的逻辑卷.现在/dev/mapper/unlkd1就是已解密的逻辑设备,可像正常设备一样进行操作.
bash
sudo mkfs.ext4 /dev/mapper/unlkd1 #格式化
sudo mount /dev/mapper/unlkd1 /mnt #挂载
sudo umount /mnt #取消挂载
sudo cryptsetup luksClose unlkd1 #取消解密
必备取消挂载后才能取消解密。取消解密后,/dev/mapper/unlkd1逻辑卷也将消失。
5.通过秘钥文件解密
创建秘钥文件
bash
dd if=/dev/urandom of=/root/enc.key bs=512 count=4
将秘钥文件添加到逻辑分区中。
bash
sudo cryptsetup luksAddKey /dev/mmcblk0p8 /root/enc.key
解密卷
bash
sudo cryptsetup luksOpen -d /root/enc.key /dev/mmcblk0p8 unlkd1
参考文献:
https://zhuanlan.zhihu.com/p/634023368
https://www.cnblogs.com/xuanbjut/p/11796731.html
https://blog.csdn.net/weixin_64122448/article/details/144009953