更新時間: 25/12/11
介紹:
cryptsetup 是一個符合 LUKS(Linux Unified Key Setup) 加密方式的軟件
LUKS 是指它有一個 standardizes 的 partition header 或 file header
此 header 是用來儲存設定值及加密的 key!!
因此無需個別的設定檔了 !!!
好處是在A機上加密了, 不用仕何設置的情況下就可在B機上解密.
安裝:
apt-get install cryptsetup
root@debian:~# cryptsetup --version cryptsetup 1.1.3
測試
重點在於 Format, Open, Close 這三個操作
- luksFormat
- luksOpen
- luksClose
# dd if=/dev/zero of=/root/cryfile bs=1M count=10
# losetup /dev/loop0 /root/cryfile
# modprobe dm_mod
# cryptsetup luksFormat /dev/loop0
# cryptsetup luksOpen /dev/loop0 cryfs
# mkfs.ext4 /dev/mapper/cryfs
# mkdir /mnt/crypt
# mount /dev/mapper/cryfs /mnt/crypt/
使用完後, 卸載它:
# umount /mnt/crypt/
# cryptsetup luksClose /dev/mapper/cryfs
# losetup -d /dev/loop0
其他
查看是否加密了的東西來:
luksUUID
# cryptsetup luksUUID /dev/sda1
Device /dev/sda1 is not a valid LUKS device.
# cryptsetup luksUUID /dev/loop0
279467cf-edca-404c-9e88-dba32878a3e7
東西的詳細情況:
luksDump
# cryptsetup luksDump /dev/loop0
..............
Key Slot 0: ENABLED
Key Slot 1: DISABLED
...............
Key Slot 7:
後備 Key
luksAddKey/ luksKillSlot/ luksRemoveKey
# cryptsetup luksAddKey /dev/loop0
# cryptsetup luksKillSlot /dev/loop0 0
Enter any remaining LUKS passphrase:
# cryptsetup luksRemoveKey /dev/loop0
Enter LUKS passphrase to be deleted:
key slot 1 selected for deletion.
Enter any remaining LUKS passphrase:
備份重要的 Header
luksHeaderBackup / luksHeaderRestore
# cryptsetup luksHeaderBackup /dev/loop0 --header-backup-file /root/cry-header
# cryptsetup luksHeaderRestore /dev/loop0 --header-backup-file ./cry-header
P.S. Backup Header 時是不用 Password 的
不會對加密了的Data有影響
只有無 Header 或 master key size 及data offset 一致時才可 restore
cryptdisks
cryptdisks, cryptdisks_start 及 cryptdisks_stop 都是 cryptsetup 的 wrapper 來
它們都是根據 crypttab 去 掛載加密了的 Disk 的.
/etc/crypttab 的格式:
# <target name> <source device> <key file> <options>
# target name: resulting encrypted block device (/dev/mapper/name)
# source device: block device / UUID
wrapper 會把 source device 解密後掛到 target name 上
Example:
/etc/init.d/cryptdisks
cryptdisks_start <target name>
/etc/default/cryptdisks
會決定 checkargs 時的 program
Default: CRYPTDISKS_CHECK=blkid
有用的 checkargs Option:
- noauto
- checkargs=ext4
- luks
- noearly (Default 在 mount lvm, evms, raid 前是有一次的, 後又一次)
Example:
# 輸入 pw 去 mount
# <target name> <source device> <key file> <options> cryptfs UUID=279467cf-edca-404c-9e88-dba32878a3e7 none luks
# 用 key file 去 mount
echo -n "testing" > /etc/crypt.key
# <target name> <source device> <key file> <options> cryptfs UUID=279467cf-edca-404c-9e88-dba32878a3e7 /etc/crypt.key luks
注意, keyfile 一定要用 echo -n 去建立, 否則會多了 /n