LUKS加密

linux底下預設就有一款LUKS加密功能、redhat簡介

只要安裝這個套件就可以用

sudo aptitude install cryptsetup

重點在於 Format, Open, Close 這三個操作

luksFormat
luksOpen
luksClose

1.建立空檔案

首先我們得使用dd這個指令來建立一個空檔案,參考資料

如果你想建立一個65280 Byte大小的空檔案,可以用以下的指令:

jose@BOX:/mnt# dd if=/dev/sda2 of=file.1 bs=1 count=65280
65280+0 records in
65280+0 records out
65280 bytes (65 kB) copied, 0.372325 s, 175 kB/s
jose@BOX:/mnt# ls -al file.1
-rw-r--r-- 1 root root 65280 Jan 1 01:38 file.1

if:就是 input file,在案例中指定使用/dev/sda2這個partition
of:就是 output file,在案例中指定file.1這個檔案,當然也可以指定成裝置
bs:規劃的一個 block size的大小,在案例中指定成1 byte,未指定時則預設 512 bytes(一個 sector 的大小)。
count:有多少個 bs ,在案例中指定要65280個

上面是舉例說明 dd 這指令要怎麼用,當然我們實際使用是 block size = 1 byte 是太小了,不好用,你可以使用它的預設值 512 bytes

若我們要建立一個64MB的空檔,而且要使用它預設的block size 512 bytes的話就要這麼計算
64MB=67108864bytes
67108864 bytes / 512 bytes = 131072
因此 count 就要填 131072 byte = 128K
指令就要這麼下
dd if=/dev/zero of=/tmp/box.luks count=131072
精簡的下法
dd if=/dev/zero of=/tmp/box.luks count=128K
若你想要縮小 block size 為 256 byte
dd if=/dev/zero of=/tmp/box.luks bs=256 count=256K

至於block size的大小要用多少呢? 可參考這一頁的資料,簡單說,你若所存的檔案都是小檔案的話,那麼你的block size是可以設小一點,若都是大檔案的話,那是可以設大一點。

2.空檔案連結虛擬磁碟

好了,我們已經學會怎樣建一個64MB的空檔案了,接下來就是要

使用 losetup 將此檔連接為為虛擬磁碟
sudo losetup /dev/loop0 /tmp/box.luks

底下指令可看 loop0 所連接的檔案名
sudo losetup /dev/loop0

底下指令可解除 loop0 所連接的檔案名
sudo losetup -d /dev/loop0

注意:若你同時有掛載 truecrypt 加密碟的話,那麼它可能會佔用了 /dev/loop0 先卸載它或改連接 loop1

3.格式化虛擬磁碟loop

接下來開始格式化 loop0 參考資料

sudo cryptsetup luksFormat /dev/loop0

PS:luksformat這個指令 和 這個指令 cryptsetup luksFormat 執行的效果不一樣。


WARNING!
========
This will overwrite data on /dev/loop0 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:

注意:上面的yes一定要大寫,接著請你輸兩次密碼。

這樣我們就完成了加密碟的製作。

4.掛載加密碟

要掛載之前要先將 box.luks 連結到 loop0
sudo losetup /dev/loop0 /home/user/box.luks
然後用底下指令開啟

說明:最後那個myfs可以是任意字串
cryptsetup luksOpen /dev/loop0 myfs
輸入此指令後它會問你密碼,就是你前面設定的密碼。
正確輸入密碼之後,文件系統裡就會多出一個 /dev/mapper/myfs
接下來就可以象使用 /dev/sdX 一樣使用 /dev/mapper/myfs

由於我們是剛建立好一個新的加密碟,就象新買來的硬碟,第一次使用之前要先格式化成你需要的檔案系統,範例如下:
格式化成ext4檔案系統
mkfs.ext4 /dev/mapper/myfs
上述指令只需要做一次即可。

掛載
mount /dev/mapper/myfs /mnt/box/

使用完後, 卸載它:
umount /mnt/box
cryptsetup luksClose /dev/mapper/myfs
losetup -d /dev/loop0

有鑒於每次掛載、卸載都要重覆打這麼多指令,很花時間,因此我就寫了一個腳本,幫助我們快速的掛載與卸載加密碟,請參考這篇文章

補充說明

添加/移除/修改LUKS密碼
說明:luks加密碟可以使用不只一隻金鑰(密碼),預設最多可使用8組密碼。

主要參數說明:
luksAddKey 增加金鑰密碼(最多8組)
luksChangeKey 改密碼
luksRemoveKey 移除金鑰密碼
luksDump 顯示目前使用了幾組金鑰

範例:
cryptsetup luksAddKey /dev/loop0
Enter any passphrase: 這裡請輸入舊密碼
Enter new passphrase for key slot: 這裡請輸入新密碼
Verify passphrase: 再輸入一次新密碼
cryptsetup luksRemoveKey /dev/loop0
Enter LUKS passphrase to be deleted:
cryptsetup luksAddKey /dev/loop0 keyfile
Enter any passphrase:

參考資料:
若你是在windows底下想要使用 luks 加密碟的話,可以安裝 FreeOTFE,若你是使用ext4檔案系統的話,可以搭配 ext2fsd 使用

本篇發表於 linux。將永久鏈結加入書籤。

2 則回應給 LUKS加密

  1. DFman 說道:

    腳本的連結錯了…應該是:
    http://blog.vic.mh4u.org/2014/1343

  2. 梁片天 說道:

    我是個新手,很高興能遇到你們,我很希望可多學關於指今、加密、和其它知識,使我可認識多一些。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *