# 加密你的隨身碟 - Cryptsetup

##### 說明

如果你想對某個 USB隨身碟內的資料做加密保護，每次掛載前必須先輸入一組密碼。

##### 開始加密

安裝套件

```shell
sudo apt install cryptsetup
```

插入要加密的隨身碟，並完成掛載，假設為 /dev/sdb。使用 GParted 工具建立一個新磁區 /dev/sdb1，格式為 ext4。拔除隨身碟後再重新插入，如果隨身碟自動被掛載，先以手動方式將它卸載確定隨身碟在沒有被掛載模式下，執行

```shell
sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1
```

> 詢問是否確定時，必須輸入 大寫 YES。  
> 接著需設定一組密碼。

開啟加密磁區，與格式化

- 開啟加密磁區時，必須輸入正確的密碼。
- 加密磁區成功被開啟後，會產生一個新磁碟路徑 `/dev/mapper/<input-name>`

```shell
sudo cryptsetup luksOpen /dev/sdb1 sdb1
sudo fdisk -l
sudo mkfs.ext4 /dev/mapper/sdb1
sudo tune2fs -m 0 /dev/mapper/sdb1
```

如果想對加密磁區加上標籤

```shell
sudo e2label /dev/mapper/sdb1 MyCCWallet
```

到這裡，已經完成加密程序。測試手動掛載，並嘗試寫入資料。

```shell
sudo mkdir /mnt/encrypted
sudo mount /dev/mapper/sdb1 /mnt/encrypted
sudo touch /mnt/encrypted/test.txt
```

測試沒問題後，就可以將加密磁區關閉。

```shell
sudo umount /dev/mapper/sdb1
sudo cryptsetup luksClose sdb1
```

##### Linux Mint 桌面測試

隨身碟在經過加密後，當每次插上 Linux Mint 電腦時，桌面會自動詢問解鎖密碼，在輸入正確密碼後，就可以像一般方式那樣直接存取隨身碟裡的檔案。

[![ask_password.png](http://www.osslab.tw/uploads/images/gallery/2020-12/scaled-1680-/ask_password.png)](http://www.osslab.tw/uploads/images/gallery/2020-12/ask_password.png)

##### Optional: 其他指令

How to find and verify which Luks slot a passphrase is in on Linux

```shell
# Do not activate device, just check
sudo cryptsetup --verbose open --test-passphrase /dev/vda3

Enter passphrase for /dev/vda3: 
Key slot 0 unlocked.
Command successful.

```

##### Learning Cryptsetup

- [How to change LUKS disk encryption passphrase in Linux](https://www.cyberciti.biz/security/how-to-change-luks-disk-encryption-passphrase-in-linux/)
- [Create an encrypted file vault on Linux](https://opensource.com/article/21/4/linux-encryption)