EncFS
EncFSはEncrypted FileSystemの略で、ユーザースペースで暗号化ファイルシステムを実現する仮想ファイルシステムです。既存のファイルシステム上に、暗号化ファイルシステムを構築します。
EncFSを利用するために新たにパーティションを作成したり、フォーマットする必要ありません。
ディスクユーティリティやディスクの暗号化パーティションよりも使い勝手が良いですが、セキュリティー強度は落ちます。
とは言え、個人用途では十分でしょう。
EncFSは任意のディレクトリーを暗号化ボリュームとして扱います。
ここでは便宜上そのディレクトリーのことを「ソースディレクトリー」と表現し、EncFSによって復号化されマウントされたボリュームを「暗号化ボリューム」と表現します。
EncFSはコマンドで提供されていますが、使い方はそれほど難しくありません。
ちなみにディレクトリーは適宜フォルダーと読み替えてもらっても構いません。
インストール
Ubuntuソフトウェアセンターを起動し、「encfs」で検索します。「インストール」ボタンをクリックします。
ソースディレクトリーと暗号化ボリューム
ソースディレクトリーには暗号化されたファイルが保存されます。以下の画像ではソースディレクトリのパスは「~/EncryptFolder」です。
これをEncFS経由で復号化すると、暗号化ボリュームとしてマウントされます。
以下の画像ではマウントポイントは「~/DecryptVolume」です。
Nautilusにマウントされた暗号化ボリュームが表示されています。
暗号化ボリュームの中身を覗くと以下のように復号化されたファイルが閲覧できます。
ファイルの作成や削除・読み書き等ファイルに対する操作は「DecryptVolume」に対して行います。
「DecryptVolume」内のファイルに変更を加えると、暗号化され「EncryptFolder」に反映されます。
この暗号化ボリュームはアプリから見ると透過的であり、通常のボリュームの扱いと基本的には変わりません。
暗号化されたデータについて
ソースディレクトリー内に暗号化されたファイルを保存するため、暗号化されたファイルそのものは通常のファイルのようにアクセス権があれば中身を除くことができます。復元するにはパスワードが必要ですが、ソースディレクトリーそのものをロックする仕組みはありません。
従って暗号化されている状態でファイルをコピーすることができます。
言い換えると、ソースディレクトリをそのままバックアップすることができます。
というわけで、過度な期待は禁物です。
ファイル名の制約について
ファイルの中身だけでなくファイル名も暗号化されますが、暗号化後のファイル名は暗号化前のファイル名よりも長くなります。従って、暗号化前のファイル名の長さがファイルシステムの制約内であったとしても、暗号化時にファイル名の長さがファイルシステムの制約を超えてしまうと、暗号化に失敗します。
暗号化後のファイル名のバイト数は、暗号化前のファイル名のバイト数をNとすると、「3*(N-2)/4」が目安になります。
ext4ファイルシステム上に仮想ファイルシステムを構築した場合、ファイル名の長さの制約は255バイトになります。
なので188バイト以下のファイル名である必要があります。
とは言え、これはあくまで目安なので188バイトでも失敗する可能性はあります。
Ubuntuのext4はUTF-8なので1文字あたり、1バイト ~ 4バイトになります。
例えば「あ」は3バイトです。
ファイルシステムの制約について
EncFSは既存のファイルシステム上に仮想ファイルシステムを構築するため、既存ファイルシステムの制約をそのまま受けます。上記の「ファイル名の制約」はその一例です。
パフォーマンスについて
ext4等通常のファイルシステムと異なり、ファイル操作に暗号化・復号化処理が加わるため、その分パフォーマンスが落ちます。使用しているPCの性能にもよりますが、一つの暗号化ディレクトリー内に大量のファイルを置くと、ファイルの一覧取得・表示に時間がかかるようになってしまいます。
もし使い勝手悪くなるほどパフォーマンスが低下した場合は、サブディレクトリーを作成してファイルを分散させたり、別の仮想暗号化ボリュームを作成しファイルを分散させるなどの方法を検討すると良いでしょう。
また、セキュリティーの強度を落とす方法もあります。
暗号化の目的から適切な落とし所を自分で見つける必要があります。
EncFSのモードについて
EncFSの暗号化方法には複数の種類があり、用途に応じて選択することができます。また利便性のために予め暗号化設定のモード(プリセット)が用意されています。
スタンダードモード
以下の暗号化設定になります。個人用途ならこのモードで十分です。
パフォーマンス指標:70~80%
暗号方式:AES
鍵サイズ:192bit
鍵生成方式:PBKDF2
PBKDF2の繰り返し処理に使用する時間:0.5秒(Wall-clock time)
PBKDF2のsalt値:160bit
ブロックサイズ:1024byte
ファイル名の符号化方式:ブロック方式
Filename IV chaining:オン
Unique initialization vector file headers:オン
Message Authentication Code block headers:オフ
External IV Chaining:オフ
BlockMACBytes:N/A
BlockMACRandBytes:N/A
File-hole pass-through:オン
パラノイアモード
赤字はスタンダードモードと異なる点です。スタンダードモードよりもセキュリティーの強度が上がりますが、パフォーマンスは落ちます。
またチェックサムによるファイル破損チェック機能が有効になります。
パフォーマンス指標:30~45%
暗号方式:AES
鍵サイズ:256bit
鍵生成方式:PBKDF2
PBKDF2の繰り返し処理に使用する時間:3.0秒(Wall-clock time)
PBKDF2のsalt値:160bit
ブロックサイズ:1024byte
ファイル名の符号化方式:ブロック方式
Filename IV chaining:オン
Unique initialization vector file headers:オン
Message Authentication Code block headers:オン
External IV Chaining:オン
BlockMACBytes:8byte
BlockMACRandBytes:0byte
File-hole pass-through:オン
エキスパートモード
暗号化設定を自分で行います。暗号方式:AES/Blowfish
鍵サイズ(AES):128bit, 192bit, 256bit
鍵サイズ(Blowfish):128bit, 160bit, 192bit, 224bit, 256bit
鍵生成方式:PBKDF2
PBKDF2の繰り返し処理に使用する時間:0.5(Wall-clock time)
PBKDF2のsalt値:160bit
ブロックサイズ(AES):64 ~ 4096byteの間で16byte間隔で指定
ブロックサイズ(Blowfish):64 ~ 4096byteの間で8byte間隔で指定
ファイル名の符号化方式:ブロック方式/なし(暗号化しない)/ストリーム方式
Filename IV chaining:オン/オフ
Unique initialization vector file headers:オン/オフ
Message Authentication Code block headers:オン/オフ
External IV Chaining:オン/オフ
BlockMACBytes:0(N/A)/8byte
BlockMACRandBytes:0~8byte
File-hole pass-through:オン/オフ
「パフォーマンス指標」は通常のファイルシステムのパフォーマンスを100%とした時の割合です。
環境により数値は大きく変わるため、目安程度に捉えてください。
各暗号化設定の概要は、「暗号化の設定について」を参考にしてください。
暗号化設定ファイルについて
EncFSはソースディレクトリを復号化する時や、ファイルを暗号化・復号化する時に暗号化設定ファイルを参照します。暗号化設定ファイルには暗号化・復号化する際に必要な情報が書かれています。
暗号化設定ファイルはソースディレクトリー直下に保存されています。
ファイル名はEncFSのバージョンより異なります。
ファイルの拡張子から分かるとおり、XML形式のテキストファイルです。
もしこのファイルが破損もしくは紛失してしまうと、復号化できなくなります。
暗号化設定ファイルをテキストエディターで開くと、以下のように各種情報が書かれています。
当然鍵は暗号化されていますが、暗号化設定ファイルとパスワードが外部に漏れるとこの設定で作られたソースディレクトリー内の暗号化ファイルは、誰でも復号化できてしまいます。