在Linux中,磁盤加密是一種保護數據不被未授權訪問的方法。有多種工具和策略可以實現磁盤加密,包括使用Linux內核的內置功能,如dm-crypt,以及使用更高級的解決方案,如LUKS(Linux Unified Key Setup)。下面利用dm-crypt和LUKS實現對磁盤的加密:
1.dm-crypt
dm-crypt是Linux內核的一部分,它允許你加密整個磁盤分區或磁盤。內核配置dm-crypt功能:
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
2.安裝cryptsetup
sudo apt install cryptsetup
3.對目標設備設置加密
下面以/dev/mmcblk0p8分區為例說明。
sudo cryptsetup luksFormat /dev/mmcblk0p8
注意:輸入大寫YES以確認,該步驟會丟失設備已有數據,請務必先做好備份,過程中會提示輸入并確認密碼。
4.解密/dev/mmcblk0p8映射到邏輯卷
sudo cryptsetup luksOpen /dev/mmcblk0p8 unlkd1
這里的unlkd1是個人自定義的名稱。過程需輸入已設置的正確密碼。解密后產生一個/dev/mapper/unlkd1的邏輯卷.現在/dev/mapper/unlkd1就是已解密的邏輯設備,可像正常設備一樣進行操作.
sudo mkfs.ext4 /dev/mapper/unlkd1 #格式化
sudo mount /dev/mapper/unlkd1 /mnt #掛載
sudo umount /mnt #取消掛載
sudo cryptsetup luksClose unlkd1 #取消解密
必備取消掛載后才能取消解密。取消解密后,/dev/mapper/unlkd1邏輯卷也將消失。
5.通過秘鑰文件解密
創建秘鑰文件
dd if=/dev/urandom of=/root/enc.key bs=512 count=4
將秘鑰文件添加到邏輯分區中。
sudo cryptsetup luksAddKey /dev/mmcblk0p8 /root/enc.key
解密卷
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
https://www.php.cn/faq/641926.html
https://blog.csdn.net/linnaa6/article/details/145702589