Carpe Diem

備忘録。https://github.com/jun06t

VeraCryptを使う

概要

マルチプラットフォーム対応の暗号化ツールであるTrueCryptがどういうわけか開発停止になったので、その後継となるVeraCryptを使うことにします。

環境

  • Ubuntu 14.04
  • VeraCrypte 1.0f-1

インストール

以下のwgetのURLが使えない時はSourceForgeから直接取得してください。

$ mkdir veracrypt
$ cd veracrypt
$ wget "http://downloads.sourceforge.net/project/veracrypt/VeraCrypt%201.0f-1/veracrypt-1.0f-1-setup.tar.bz2"

解凍してインストールします。

$ tar xvjf veracrypt-1.0f-1-setup.tar.bz2 
$ ./veracrypt-1.0f-1-setup-console-x64

以下の様な選択画面が出るので1を選択。

VeraCrypt 1.0f-1 Setup
____________________


Installation options:

 1) Install veracrypt_1.0f-1_console_amd64.tar.gz
 2) Extract package file veracrypt_1.0f-1_console_amd64.tar.gz and place it to /tmp

To select, enter 1 or 2: 1

Enterを押すと同意書が表示されるので、qで抜けてyesを入力します。
以上で完了です。

使い方

暗号化ボリュームの作成

$ veracrypt -t -c --random-source=/dev/urandom

random-sourceオプションを指定しないと320字を自分でランダムに入力する必要があるので必ずつけましょう。
対話的に進めるので、一度でもTrueCryptのGUI版を使ったことがあればすんなりできると思います。

Volume type:
 1) Normal
 2) Hidden
Select [1]:  

通常ボリュームか隠しボリュームかの選択です。

Enter volume path: volume.tc

暗号化ボリュームのパスです。既存のドライブでなく、新しく作る場合は適当な名前を入力します。

Enter volume size (sizeK/size[M]/sizeG): 10

次は作成する暗号化ボリュームのサイズです。単位はデフォルトだとMです。

Encryption algorithm:
 1) AES
 2) Serpent
 3) Twofish
 4) AES(Twofish)
 5) AES(Twofish(Serpent))
 6) Serpent(AES)
 7) Serpent(Twofish(AES))
 8) Twofish(Serpent)
Select [1]: 

暗号化アルゴリズムの選択

Hash algorithm:
 1) SHA-512
 2) Whirlpool
 3) SHA-256
 4) RIPEMD-160
Select [1]: 

ハッシュアルゴリズムの選択

Filesystem:
 1) None
 2) FAT
 3) Linux Ext2
 4) Linux Ext3
 5) Linux Ext4
 6) NTFS
Select [2]: 

ファイルシステムの選択

Enter password: 
WARNING: Short passwords are easy to crack using brute force techniques!

We recommend choosing a password consisting of more than 20 characters. Are you sure you want to use a short password? (y=Yes/n=No) [No]: y

Re-enter password: 

パスワードを入力します。20字以下だと上記のように怒られますが今回は気にせず進めます。

Enter keyfile path [none]: 

キーファイルの選択です。よくあるのは画像とかです。今回はなしで。

完了すれば以下のようにファイルを作成します。

Done: 100.000%  Speed:  1.2 MB/s  Left: 0 s         

The VeraCrypt volume has been successfully created.

マウント

先ほど入力したパスワードを使います。マウント先は適当に。今回は/media/veracrypt1にします。

$ veracrypt volume.tc /media/veracrypt1
Enter password for /home/vagrant/volume.tc: 
Enter keyfile [none]: 
Protect hidden volume (if any)? (y=Yes/n=No) [No]: 

問題なければマウント後の場所でファイル操作ができます。

$ cd /media/veracrypt1/
$ touch hoge.txt
$ echo "veracrypt" >> hoge.txt

Read-Onlyでマウント

$ veracrypt -m ro volume.tc /media/veracrypt1

アンマウント

$ veracrypt -d volume.tc

全ボリュームをアンマウント

$ veracrypt -d

暗号化ドライブの作成

ドライブ全体を暗号化することもできます。
まずはパーティションを作成して、

$ sudo parted /dev/sda
(parted) mklabel gpt
(parted) mkpart primary 1 -0
(parted) quit

実行時に指定すればOKです。

$ veracrypt --random-source=/dev/urandom --quick -c /dev/sda1

まっさらなHDDならquickオプションを付けましょう。じゃないとフォーマットが長いです。

デフォルトのパーミッションを指定してマウント

マウント時の権限の変更です。デフォルトだと700になってます。
例えば755にしたい場合は

777 - 755 = 022

なので、umask022に指定します。慣例的に最初に0をつけて4桁にするっぽいです。

$ veracrypt --fs-options="umask=0022" volume.tc /media/veracrypt1

確認すると全部rwxになってます。

$ ls -la /media/veracrypt1/
total 21
drwxr-xr-x 2 vagrant vagrant 16384 Jan  1  1970 .
drwxr-xr-x 3 root    root     4096 Feb 15 10:05 ..

所有者を指定してマウント

デフォルトでは所有権は以下となってます。

key id
uid 1000
gid 1000

これを例えばrootユーザ(uid:0, gid:0)にしたいときは以下のようにします。

$ veracrypt --fs-options="uid=0,gid=0" volume.tc /media/veracrypt1

通常ユーザだと怒られるようになります。

$ ls -la /media/veracrypt1/
ls: cannot open directory /media/veracrypt1/: Permission denied

rootユーザとしてみるとOKです。

# ls -la /media/veracrypt1/
total 21
drwx------ 2 root root 16384 Jan  1  1970 .
drwxr-xr-x 3 root root  4096 Feb 15 10:09 ..

ソース