跳到主要內容

使用 LUKS 加密你的磁碟

轉載自: http://locez.com/linux/cryptography/encrypt-your-disk/
作者: Locez
數據的安全,保密性在現在的生活中顯得越來越重要。隨著數字化的時代的來臨,越來越多的數據被數字化,特別是更多有關於我們隱私的數據在不斷生成,甚至還有我們需要離線保存的密鑰等。而且通常我們使用磁碟,USB 快閃記憶體,SD 卡等存儲介質進行存儲,即便我們已經離線存儲,仍然不能保證該存儲介質不會丟失,如果丟失那麼對於我們來說有可能是災難性的事件。因此對這些離線存儲的重要數據,再次進行進行加密是非常有必要的,本文將告訴你如何加密你的移動存儲介質。
在此之前先介紹一下 LUKS:
LUKS (Linux Unified Key Setup)是 Linux 硬碟加密的標準。 通過提供標準的磁碟格式,它不僅可以促進發行版之間的兼容性,還可以提供對多個用戶密碼的安全管理。 與現有解決方案相比,LUKS 將所有必要的設置信息存儲在分區信息首部中,使用戶能夠無縫傳輸或遷移其數據。

1. 環境

  • OS: Gentoo
  • 內核:4.9.95
  • 工具:cryptsetup

2. 內核配置(可選)

通常來說,大部分發行版的內核都已經配置了相關的加密部分,因此非 gentoo 用戶可以跳過此部分。
配置 device mapper 和 crypt target:
[*] Enable loadable module support
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) --->
<*> Device mapper support
<*> Crypt target support
配置加密 API:
[*] Cryptographic API --->
<*> XTS support
<*> SHA224 and SHA256 digest algorithm
<*> AES cipher algorithms
<*> AES cipher algorithms (x86_64)
<*> User-space interface for hash algorithms
<*> User-space interface for symmetric key cipher algorithms
編譯新內核並配置應用,然後重啟:
# make -j9 && make modules_install && make install

3. 安裝軟體

通常的發行版已經預裝了該軟體包,可以直接使用,下面是 Gentoo 的安裝方法
# emerge --ask sys-fs/cryptsetup

4. 創建加密分區

注意,該操作會清空你選擇分區或設備上的所有數據,請謹慎操作,輸入大寫的 YES 確認
# cryptsetup -s 512 luksFormat /dev/sdd
WARNING!
========
This will overwrite data on /dev/sdd irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:

5. 利用密鑰文件加密分區

除了密碼之外,還可以選擇使用密鑰文件解密你的硬碟,也就是相當於一個密鑰,當然可以也可以只使用密鑰文件或者同時使用密碼與密鑰文件。

5.1 生成隨機密鑰文件

# dd if=/dev/urandom of=/root/enc.key bs=1 count=4096

5.2 添加密鑰文件作為密碼之一

# cryptsetup luksAddKey /dev/sdd /root/enc.key
Enter any existing passphrase:

6 移除解密密碼

移除普通密碼:
# cryptsetup luksRemoveKey /dev/sdd
Enter LUKS passphrase to be deleted: ...
移除 key file 密碼:
# cryptsetup luksRemoveKey -d /root/enc.key /dev/sdd
注意:千萬不要將所有密碼移除,至少需要留有一個密碼訪問設備,移除操作不可撤銷

7. 解密與掛載

7.1 密碼解密

# cryptsetup luksOpen /dev/sdd myusb
Enter passphrase for /dev/sdd:

7.2 key file 解密

# cryptsetup luksOpen -d /root/enc.key /dev/sdd myusb

7.3 創建文件系統

在掛載使用之前,我們仍然需要對設備創建文件系統才可以使用,可以選擇任何你喜歡的文件系統,例如 btrfs,ext4,vfat,ntfs 等
# mkfs.ext4 /dev/mapper/myusb
mke2fs 1.43.6 (29-Aug-2017)
Creating filesystem with 488448 4k blocks and 122160 inodes
Filesystem UUID: 995e172a-2bc6-432c-a60f-2d4d7093e748
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

7.4 掛載

現在可以像正常分區一樣掛載我們的加密分區設備了
# mount /dev/mapper/myusb /mnt/
# df -h
/dev/mapper/myusb 1.9G 5.7M 1.7G 1% /mnt

7.5 卸載掛載點並關閉加密分區

# umount /mnt
# cryptsetup luksClose myusb

8. 總結

在完成整個步驟以後,您現在需要做的就是妥善保管您的加密存儲,可採用同樣的方式加密多個設備進行備份,因為誰也不能保證這移動設備會不會在什麼時候丟掉。

點擊「了解更多」可訪問文內連結

留言