VeraCryptでデータパーティションを暗号化してみた

はじめに

Windows 10とUbuntu 16.04のデュアルブート環境でデータ用のパーティションを VeraCrypt - Free Open source disk encryption with strong security for the Paranoid で暗号化して 両方からマウントするというのを試してみたのでメモです。

VeraCrypt - Wikipedia によると開発が終了したTrueCryptというソフトウェアのフォークらしいです。

ファイルシステムはNTFSを選択

データパーティションのファイルシステムは何にしようかと思って検索してみると Ext2Fsd Project というのもみつけました。 これで、Windowsからext3やext4をマウントするという案もちょっとだけ考えたのですが、 2017-11-02の “Ext2Fsd 0.69 released !” の記事を眺めてみるとまだデータ消失のリスクがありそうな感じでした。

FAT32はジャーナルが無いのでファイルシステムで不整合が起きたときのことを考えると ジャーナルのあるNTFSをLinuxからマウントするほうが良さそうと思いました。

検索してみると NTFS-3G - Tuxera という ドライバがあって読み書きともに安定して使えるようです。 NTFS-3G - WikipediaNTFS-3G - ArchWiki も眺めてみましたが良さそうです。

ということでNTFSを選択しました。

WindowsにVeraCryptをインストールしてデータパーティションを暗号化

データのドライブの作成とNTFSでのフォーマットは Windows10でのハードディスク(HDD)のフォーマット方法 - 株式会社センチュリー のような感じで行いました。

「ドライブ文字またはパスの割り当て」では「ドライブ文字またはドライブパスを割り当てない」を選択しました。 VeraCrypt経由でアクセスするためのドライブを別に作るのでそちらにドライブ文字を割り当てるので、 元のパーティションでは不要という判断です。

ドライブ文字を割り当てても動作に問題はないのですが、エクスプローラで元のパーティションのドライブを選んでも エラーになるだけなので割り当てる利点は薄いと思います。

VeraCryptについては 「VeraCypt」で暗号化された仮想ドライブを作成する手順 を参考にしました。 ただしダウンロードは VeraCryptのダウンロードページ からにしました。また、VeraCryptボリューム作成ウィザードの箇所では「非システムパーティション/ドライブを暗号化」を選んで、上記で作成したデータ用のパーティションを選択しました。

Windowsのログオン時に自動的にマウントする設定

VeraCryptのFAQ の “Can a volume be automatically mounted whenever I log on to Windows?” に書かれていた手順で出来ました。

  1. 対象のパーティションをマウントする。
  2. VeraCryptのメインウィンドウでマウントしたドライブを選んで右クリックし “Add to Favorites” (お気に入りに追加)メニューを選択。
  3. Favorites Orgranizerのウィンドウで “Mount selected volume upon logon” を有効にしてOKを押す。

Windowsのシャットダウンや再起動時は自動的にアンマウント

また、同じページの “Do I have to dismount VeraCrypt volumes before shutting down or restarting Windows?” によるとWindowsのシャットダウンや再起動時は自動的にアンマウントされるとのことなので、手動でのアンマウントは不要です。

UbuntuにVeraCryptをインストールしてWindowsのVeraCryptで暗号化したパーティションをマウント

VeraCryptのダウンロードページ を見るとLinux用にもインストーラが用意されているのですが Encryption software : Unit 193 というPPAにUbuntu 16.04用のパッケージがありましたので、これを使わせて頂きました。ありがとうございます!

sudo add-apt-repository ppa:unit193/encryption
sudo apt update
sudo apt install veracrypt

インストール後は 死んだ後も安心!?VeraCryptで秘密のファイル置き場を作る方法 | Linux Fan を参考にして、上記でWindowsのVeraCryptで暗号化したパーティションをマウントしました。

マウントしたらWindowsのときと同様にお気に入りに追加しておきます。

LinuxのGUIでのログイン時に自動的にマウントする設定

  1. 「アプリケーションを表示する」→「自動起動するアプリケーションの設定」をクリック。

  2. 追加を押して以下の内容を追加。

    • 名前: VeraCryptボリュームマウント
    • コマンド: veracrypt --auto-mount=favorites --background-task

2018-05-21 追記。veracryptでお気に入りをマウントする際に --background-task オプションも指定したほうが良いことがわかりました。これを指定するとGNOMEのシステムトレイにVeraCryptのアイコンが追加されます。これをメニューから終了させようとすると以下のようなメッセージのダイアログが表示されます。

WARNING: If VeraCrypt exits now, the following functions, depending on the platform,
will be disabled:

1) Auto-dismount (e.g., upon logoff, time-out, etc.)
2) Notifications (e.g., when damage to hidden volume is prevented)
3) Tray icon

Note: If you do not wish VeraCrypt to continue running in background after you close
its window, disable the Background Task in the Preferences.

Are you sure you want VeraCrypt to exit?

メッセージの内容を読むと終了させずに動かしておいたほうが良いと思いました。

Linuxのシャットダウンや再起動時も自動的にアンマウント

mount - Do I have to dismount VeraCrypt volumes before shutting down or restarting Ubuntu? - Ask Ubuntu によるとLinuxではシャットダウン時に自動でアンマウントはされないとあったのですが、実際に試してみるとjournalログにアンマウントされたようなメッセージが表示されていました。

VeraCrypt_1.22_Source.tar.bz2 内の Driver/Fuse/FuseService.cpp にも以下のようなコードがあったのでシグナルを受けたらアンマウントするようです。

void FuseService::OnSignal (int signal)
{
        try
        {
                shared_ptr <VolumeInfo> volume = Core->GetMountedVolume (SlotNumber);

                if (volume)
                        Core->DismountVolume (volume, true);
        }
        catch (...) { }

        _exit (0);
}

マウント状態確認

2018-05-21追記。VeraCryptでマウントされているボリューム一覧を端末上で表示するには以下のコマンドを実行します。

veracrypt -t -l

-t 無しで -l のみ指定すると端末上ではなくダイアログが開いて表示されます。

-t (--text) はGUIを使わずテキストインタフェースを使うためのオプションです。

-t, --text
 Use text user interface. Graphical user interface is used by default if
  available. This option must be specified as the first argument.

オプション確認の -h-t 無しで veracrypt -h と実行すると端末に表示しつつダイアログも表示されます。 -t 有りで veracrypt -t -h と実行すると端末のみに表示されます。

おわりに

これで暗号化したパーティションをデュアルブートのWindowsとLinuxの両方からマウント出来ました。 KeePass のデータファイルなどを置いています。

System EncryptionHow to Encrypt Your Windows System Drive With VeraCrypt によるとWindowsのシステムパーティションの暗号化も出来るようなので、いつか気が向いたらこちらも試してみたいです。