作者 | Locez
資料的安全,保密性在現在的生活中顯得越來越重要。隨著數字化的時代的來臨,越來越多的資料被數字化,特別是更多有關於我們隱私的資料在不斷生成,甚至還有我們需要離線儲存的金鑰等。而且通常我們使用磁碟,USB 快閃記憶體,SD 卡等儲存介質進行儲存,即便我們已經離線儲存,仍然不能保證該儲存介質不會丟失,如果丟失那麼對於我們來說有可能是災難性的事件。因此對這些離線儲存的重要資料,再次進行進行加密是非常有必要的,本文將告訴你如何加密你的移動儲存介質。
在此之前先介紹一下 LUKS:
LUKS (Linux Unified Key Setup)是 Linux 硬碟加密的標準。 透過提供標準的磁碟格式,它不僅可以促進發行版之間的相容性,還可以提供對多個使用者密碼的安全管理。 與現有解決方案相比,LUKS 將所有必要的設定資訊儲存在分割槽資訊首部中,使使用者能夠無縫傳輸或遷移其資料。
1. 環境
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. 總結
在完成整個步驟以後,您現在需要做的就是妥善保管您的加密儲存,可採用同樣的方式加密多個裝置進行備份,因為誰也不能保證這移動裝置會不會在什麼時候丟掉。