「EncFS」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(カテゴリの修正)
 
(4人の利用者による、間の24版が非表示)
1行目: 1行目:
[[Category:セキュリティ]]
+
[[Category:保存データ暗号化]]
[[Category:ファイルシステム]]
+
[[Category:FUSE]]
 
[[en:EncFS]]
 
[[en:EncFS]]
  +
[[es:EncFS]]
 
{{Related articles start}}
 
{{Related articles start}}
  +
{{Related|gocryptfs}}
  +
{{Related|eCryptfs}}
 
{{Related|ディスク暗号化}}
 
{{Related|ディスク暗号化}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
  +
{{Warning|''encfs'' のセキュリティ [https://defuse.ca/audits/encfs.htm レビュー] (2014年2月) によって安定版リリースの 1.7.4 には様々なセキュリティの問題があることが発見されています (2014年6月) [https://github.com/vgough/encfs/issues/604#issuecomment-1006599361 開発は停止しています] このリリースを使う前に、[https://github.com/vgough/encfs/issues/314#issuecomment-288206275 このレポート] と資料を読んで最新の情報を確認してください。}}
  +
 
'''EncFS''' は [[eCryptfs]] と同じようなユーザースペースのスタック暗号ファイルシステムで、最小限の手間でデータを保護することができます。EncFS は [[wikipedia:ja:Filesystem_in_Userspace|FUSE]] を利用して暗号化したディレクトリをユーザーが指定した別のディレクトリにマウントします。[[TrueCrypt]] や [[dm-crypt]] などの他の暗号化システムのようにループバックシステムを使うことはありません。
 
'''EncFS''' は [[eCryptfs]] と同じようなユーザースペースのスタック暗号ファイルシステムで、最小限の手間でデータを保護することができます。EncFS は [[wikipedia:ja:Filesystem_in_Userspace|FUSE]] を利用して暗号化したディレクトリをユーザーが指定した別のディレクトリにマウントします。[[TrueCrypt]] や [[dm-crypt]] などの他の暗号化システムのようにループバックシステムを使うことはありません。
   
19行目: 25行目:
 
== eCryptFS との比較 ==
 
== eCryptFS との比較 ==
   
[[System_Encryption_with_eCryptfs|eCryptFS]] はカーネルスペースで実装されており設定の難易度がやや高くなっています。eCryptFS では様々な暗号化オプション (使用する暗号や鍵のタイプなど) を覚えておかなければなりませんが、EncFS ではその必要はありません。EncFS は暗号化のメタデータをディレクトリごとの設定ファイル ({{ic|.encfs6.xml}}) に保存するため何も記憶する必要はないのです (パスフレーズは別ですが)。eCryptFS の開発者は (カーネルとユーザースペースの) コンテキストスイッチによるオーバーヘッドがないために eCryptFS の方が高速だと主張しています。
+
[[eCryptfs]] はカーネルスペースで実装されており設定の難易度がやや高くなっています。eCryptFS では様々な暗号化オプション (使用する暗号や鍵のタイプなど) を覚えておかなければなりませんが、EncFS ではその必要はありません。EncFS は暗号化のメタデータをディレクトリごとの設定ファイル ({{ic|.encfs6.xml}}) に保存するため何も記憶する必要はないのです (パスフレーズは別ですが)。eCryptFS の開発者は (カーネルとユーザースペースの) コンテキストスイッチによるオーバーヘッドがないために eCryptFS の方が高速だと主張しています。
   
 
== インストール ==
 
== インストール ==
   
[[公式リポジトリ]]から {{Pkg|encfs}} パッケージを[[インストール]]してください。
+
{{Pkg|encfs}} パッケージを[[インストール]]してください。
 
{{Warning|''encfs'' のセキュリティ [https://defuse.ca/audits/encfs.htm レビュー] (2014年2月) によって安定版リリースの 1.7.4 には様々なセキュリティの問題があることが発見されています (2014年6月)。このリリースを使う前に、このレポートと資料を読んで最新の情報を確認してください。}}
 
   
 
== 使用方法 ==
 
== 使用方法 ==
32行目: 36行目:
 
$ encfs ~/.''name'' ~/''name''
 
$ encfs ~/.''name'' ~/''name''
 
絶対パスを使う必要があるので注意してください。このコマンドを実行するとデフォルト設定 (paranoid オプション) とエキスパート設定のどちらかを使うか決めるプロンプトが表示されます。後者の設定ではアルゴリズムなどのオプションを指定することが可能です。前者ではまあまあ安全なデフォルト設定が使われます。暗号化のキーを入力した後、エンコードされたファイルシステムが作成されたマウントされます。エンコードされたファイルは、上の例では、{{ic|~/.''name''}} に保存され、暗号化されてない状態のファイルは {{ic|~/''name''}} に置かれます。
 
絶対パスを使う必要があるので注意してください。このコマンドを実行するとデフォルト設定 (paranoid オプション) とエキスパート設定のどちらかを使うか決めるプロンプトが表示されます。後者の設定ではアルゴリズムなどのオプションを指定することが可能です。前者ではまあまあ安全なデフォルト設定が使われます。暗号化のキーを入力した後、エンコードされたファイルシステムが作成されたマウントされます。エンコードされたファイルは、上の例では、{{ic|~/.''name''}} に保存され、暗号化されてない状態のファイルは {{ic|~/''name''}} に置かれます。
  +
  +
{{Tip|FUSE [[ファイルシステム]] ([[NTFS-3G]] など) で EncFS を使用すると、パフォーマンスが低下する可能性があります。可能であれば、ファイルシステムを変更することを検討してください。}}
   
 
ファイルシステムをアンマウントするには、次を入力:
 
ファイルシステムをアンマウントするには、次を入力:
37行目: 43行目:
   
 
ファイルシステムを再マウントするには、最初のコマンドを実行して、エンコードに使用するキーを入力してください。キーを入力すれば、ファイルシステムはまたマウントされます。
 
ファイルシステムを再マウントするには、最初のコマンドを実行して、エンコードに使用するキーを入力してください。キーを入力すれば、ファイルシステムはまたマウントされます。
  +
  +
=== パスワードの変更 ===
  +
  +
EncFS で暗号化したディレクトリのパスワードを変更するには、以下のコマンドを使います:
  +
  +
$ encfsctl passwd ~/.''name''
  +
  +
{{ic|~/.''name''}} をエンコードされたファイルが含まれているディレクトリのパスに置き換えてください。現在のパスワードが要求され、それから新しいパスワードを設定できます。
   
 
== ユーザーフレンドリーなマウント方法 ==
 
== ユーザーフレンドリーなマウント方法 ==
44行目: 58行目:
 
[http://libertyzero.com/GEncfsM/ Gnome Encfs Manager] は使いやすい encfs の管理とマウントツールで、隠匿物ごとに設定を行ったり、Gnome Keyring をサポートしていたり、Cryptkeeper のようなトレイメニューがあります。AppIndicator API を使用していて多数のユニークな機能が存在します。
 
[http://libertyzero.com/GEncfsM/ Gnome Encfs Manager] は使いやすい encfs の管理とマウントツールで、隠匿物ごとに設定を行ったり、Gnome Keyring をサポートしていたり、Cryptkeeper のようなトレイメニューがあります。AppIndicator API を使用していて多数のユニークな機能が存在します。
   
  +
{{AUR|gnome-encfs-manager-bin}} と、それより少し新しい {{AUR|gnome-encfs-manager-bzr}} の両方が利用可能です。
開発者によって作成された[[非公式ユーザーリポジトリ#gnome-encfs-manager|リポジトリ]]があり、AUR のパッケージ {{AUR|gnome-encfs-manager}} よりも少しだけ更新が早く行われます。パッケージをインストールする方法は [[pacman|pacman]] を見て下さい。
 
   
=== gnome-encfs を使ってマウント ===
+
=== encfsui を使ってマウント ===
   
  +
bash スクリプトの [https://github.com/bulletmark/encfsui encfsui] はシンプルな {{Pkg|zenity}} による gui で EncFS コマンドラインユーティリティを使って暗号化ディレクトリをマウント・アンマウントします。デスクトップランチャーも含まれています。{{AUR|encfsui}} パッケージでインストールしてください。
gnome-encfs はキーリングにパスワードを保存することにより EncFS フォルダを GNOME デスクトップに統合します。また、任意で GNOME の自動起動機構を使ってログイン時にフォルダをマウントすることもできます。https://bitbucket.org/obensonne/gnome-encfs/ を見て下さい。マウントを自動化したりパスワードをユーザーのパスワードと一緒にする必要がないという利点があります。
 
   
=== CryptKeeper トレイアイコンを使ってマウント ===
+
=== fstab によるマウント ===
   
  +
エントリを {{ic|/etc/fstab}} に追加することで {{ic|mount /target/path}} コマンドだけで encfs ボリュームをマウントできるようになります:
とてもシンプルなアプリケーションです。AUR から {{AUR|cryptkeeper}} をインストールして X セッションに追加してください。
 
  +
  +
{{hc|/etc/fstab|
  +
encfs#/path/to/encfs/data /mnt/decrypted fuse noauto,user 0 0
  +
}}
  +
  +
{{ic|noauto}} オプションを指定することで起動時にボリュームがマウントされなくなります。{{ic|root}} だけでボリュームをマウントする場合は {{ic|user}} は省略してかまいません。
   
 
=== pam_encfs を使ってログイン時にマウント ===
 
=== pam_encfs を使ってログイン時にマウント ===
60行目: 80行目:
 
* http://pam-encfs.googlecode.com/svn/trunk/pam_encfs.conf
 
* http://pam-encfs.googlecode.com/svn/trunk/pam_encfs.conf
 
* https://wiki.edubuntu.org/EncryptedHomeFolder
 
* https://wiki.edubuntu.org/EncryptedHomeFolder
* http://code.google.com/p/pam-encfs/
+
* https://code.google.com/p/pam-encfs/
   
 
==== シングルパスワード ====
 
==== シングルパスワード ====
   
{{Warning|ログイン時に使用するパスワードを (ログイン中に encfs がマウントできるように) encfs にも使用する (例: try_first_pass または use_first_pass を使う) 場合は、[[SHA password hashes]] (ラウンド数が多い SHA512 を推奨) と'''安全なパスワード''' (これが一番重要) を使うようにしてください。パスワードのハッシュは {{ic|/etc/shadow}} に暗号化されてない状態で保存されるので、encfs のパスワードを得るためにクラックされる可能性があるからです。}}
+
{{Warning|ログイン時に使用するパスワードを (ログイン中に encfs がマウントできるように) encfs にも使用する (例: try_first_pass または use_first_pass を使う) 場合は、[[SHA パスワードハッシュ]] (ラウンド数が多い SHA512 を推奨) と'''安全なパスワード''' (これが一番重要) を使うようにしてください。パスワードのハッシュは {{ic|/etc/shadow}} に暗号化されてない状態で保存されるので、encfs のパスワードを得るためにクラックされる可能性があるからです。}}
   
 
==== /etc/pam.d/ ====
 
==== /etc/pam.d/ ====
   
 
'pam_unix.so'' に ''try_first_pass'' パラメータを使用する場合、ログイン時に使用するのと同じパスワードを使うように EncFS を設定する必要があります (もしくは EncFS で設定したパスワードをログイン時に使うようにする)。このパラメータを使わない場合は2つのパスワードを設定する必要があります。
 
'pam_unix.so'' に ''try_first_pass'' パラメータを使用する場合、ログイン時に使用するのと同じパスワードを使うように EncFS を設定する必要があります (もしくは EncFS で設定したパスワードをログイン時に使うようにする)。このパラメータを使わない場合は2つのパスワードを設定する必要があります。
  +
  +
===== すべてのログイン方法に対して pam_encfs をセットアップする =====
  +
  +
次のように encfs 行を /etc/pam.d/system-login に追加します:
  +
  +
{{bc|
  +
...
  +
auth sufficient pam_encfs.so
  +
...
  +
}}
   
 
===== login =====
 
===== login =====
   
このセクションではログイン時に仮想端末で encfs を自動マウントする方法を説明します。
+
このセクションではログイン時に仮想コンソールで encfs を自動マウントする方法を説明します。
 
{{Note|GDM を使用する場合は、このセクションではなくて下の [[#gdm|GDM のセクション]]を見て下さい。}}
 
{{Note|GDM を使用する場合は、このセクションではなくて下の [[#gdm|GDM のセクション]]を見て下さい。}}
   
109行目: 139行目:
   
 
このセクションではログイン時に GDM で encfs を自動マウントする方法を説明します。
 
このセクションではログイン時に GDM で encfs を自動マウントする方法を説明します。
{{Note|まず最初に仮想端末での自動マウントを試してみて下さい。上の[[#login|セクション]]を参照。}}
+
{{Note|まず最初に仮想コンソールでの自動マウントを試してみて下さい。上の[[#login|セクション]]を参照。}}
   
 
{{ic|/etc/pam.d/gdm-password}} ファイルを編集して下さい。
 
{{ic|/etc/pam.d/gdm-password}} ファイルを編集して下さい。
146行目: 176行目:
 
#USERNAME SOURCE TARGET PATH ENCFS Options FUSE Options
 
#USERNAME SOURCE TARGET PATH ENCFS Options FUSE Options
 
foo /home/foo/EncryptedFolder /home/foo/DecryptedFolder -v allow_other
 
foo /home/foo/EncryptedFolder /home/foo/DecryptedFolder -v allow_other
  +
}}
  +
  +
{{Note|{{ic|pam_encfs}} を使ってログイン時に複数の EncFS フォルダをマウントすることはできません。{{ic|/etc/security/pam_encfs.conf}} に複数のエントリを指定しても、一番最初のエントリだけマウントされ、他のエントリは無視されます。ログイン時に複数の EncFS フォルダをマウントするには [[pam_mount]] を使う必要があります。詳しくは [[#pam_mount を使ってログイン時にマウント]]を見てください。}}
  +
  +
また、以下の行が存在する場合、{{ic|allow_root}} をオプションから外してください。オプションを外さないと上記で定義した {{ic|allow_other}} と衝突します。
  +
{{bc|
  +
fuse_default allow_root,nonempty
 
}}
 
}}
   
151行目: 188行目:
 
user_allow_other
 
user_allow_other
   
設定をテストするには、新しい仮想端末を開いて (例: {{ic|Ctrl+Alt+F4}}) ログインを行なって下さい。pam が EncFS フォルダをマウントするはずです。
+
設定をテストするには、新しい仮想コンソールを開いて (例: {{ic|Ctrl+Alt+F4}}) ログインを行なって下さい。pam が EncFS フォルダをマウントするはずです。
   
=== fsniper を使って EncFS フォルダが入った USB ドラブが接続されたときにマウント ===
+
=== pam_mount を使ってログン時にマウント ===
   
  +
先に [[pam_mount]] をインストール・設定してください。EncFS のマウントは pam_mount の設定ファイルに以下のように指定できます:
EncFS フォルダが入った USB ドライブが接続されたときに (パスワードをきいて) encfs を自動マウントするシンプルな方法として {{AUR|fsniper}} (inotify を使用してファイルシステムを監視するデーモン) と {{Pkg|git}} (askpass バイナリ) を使います。
 
   
  +
{{hc|/etc/security/pam_mount.conf.xml|2=<volume fstype="fuse" path="encfs#''/path/to/encfs/encrypted/data''" mountpoint="''/path/to/decrypted/data/mountpoint''" options="nonempty" />}}
詳しくは https://github.com/Harvie/Programs/tree/master/bash/encfs/automount を参照 ([[#手順|手順]]で使用されるファイルの最新版)。
 
   
  +
EncFS のパスワードはユーザーアカウントのパスワードと一緒にする必要があります。{{ic|nonempty}} オプションを指定するとマウントポイントが空でない場合でも暗号化されたファイルシステムがマウントされます。マウントして欲しくない場合、オプションを削除してください。
==== 手順 ====
 
   
  +
設定ファイルに {{ic|<volume>}} エントリを複数指定することで EncFS フォルダを複数マウントできます。
# まず USB の自動マウントが使えるようにしておく必要があります - thunar や nautilus などで設定します。
 
# ドライブ上に暗号化フォルダを作成、例: {{ic|encfs /media/USB/somename /media/USB/somename.plain}} (そして全てをアンマウント)。
 
# {{ic|~/.config/fsniper/config}} ファイルを作成: {{bc|<nowiki>
 
watch {
 
/etc/ {
 
mtab {
 
# %% is replaced with the filename of the new file
 
handler = encfs-automount.sh %%;
 
}
 
}
 
}
 
</nowiki>}}
 
# ヘルパースクリプトをインストール: {{bc|<nowiki>
 
#!/bin/sh
 
# ~/.config/fsniper/scripts/encfs-automount.sh
 
# Quick & dirty script for automounting EncFS USB drives
 
# TODO:
 
# - Unmounting!!!
 
#
 
ASKPASS="/usr/lib/git-core/git-gui--askpass"
 
   
  +
== 暗号化バックアップ ==
lock=/tmp/fsniper_encfs.lock
 
lpid=$(cat "$lock" 2>/dev/null) &&
 
ps "$lpid" | grep "$lpid" >/dev/null && {
 
echo "Another instance of fsniper_encfs is running"
 
exit;
 
}
 
echo $BASHPID > "$lock";
 
sleep 2;
 
   
  +
{{Warning|以下の手順に従ってデータから暗号化オプションファイルを分離する場合、プレーンテキストのオプションファイルのバックアップも作る必要があります。ディスクが壊れたときにオプションファイルをプレーンテキストでバックアップしていなかった場合、バックアップだけでは何もできません。オプションファイルに含まれている暗号化メタデータが必要です。ファイルは静的であるため、パスワードを変えない限り何度もバックアップする必要はありません。}}
echo
 
echo ==== EncFS automount script for fsniper ====
 
   
  +
=== 暗号化ディレクトリのバックアップ ===
list_mounts() {
 
cat /proc/mounts | cut -d ' ' -f 2
 
}
 
   
  +
暗号化ディレクトリは他の場所にそのままバックアップ・リストアできます。暗号化オプションやメタデータの設定ファイルはディレクトリの中に保存されているためです。ファイルはプレーンテキスト形式で {{ic|.encfs6.xml}} という名前です。パスワードは入っていないためプレーンテキストで直接的な問題は何もありません。
list_mounts | while read mount; do
 
config="$mount"'/*/.encfs*';
 
echo Looking for "$config"
 
config="$(echo $config)"
 
[ -r "$config" ] && {
 
cyphertext="$(dirname "$config")";
 
plaintext="$cyphertext".plain
 
echo Found config: "$config";
 
echo Trying to mount: "$cyphertext to $plaintext";
 
list_mounts | grep "$plaintext" >/dev/null && {
 
echo Already mounted: "$plaintext"
 
} || {
 
echo Will mount "$cyphertext to $plaintext"
 
"$ASKPASS" "EncFS $cyphertext to $plaintext" | encfs --stdinpass "$cyphertext" "$plaintext"
 
}
 
}
 
done
 
echo
 
   
  +
ただし、バックアップをリモートの場所 (クラウドなど) や携帯デバイスに保存する場合、面倒なことになります。そのような場合、バックアップを作成する前に、ディレクトリの外にファイルを手動で移動しても何も問題ありません。{{ic|ENCFS6_CONFIG}} 環境変数を使って ''encfs'' に場所を指定すれば、ずっと別の場所に置いておいてもディレクトリをマウントしてファイルにアクセスできます。上の[[#使用方法]]に書かれている例の場合:
rm "$lock" 2>/dev/null
 
  +
$ mv ~/.name/encfs6.xml ~/.
</nowiki>}}
 
  +
$ ENCFS6_CONFIG=~/encfs6.xml encfs ~/.name ~/name
# {{ic|/usr/lib/git-core/git-gui--askpass}} が動作することを確認 (git パッケージが必要な理由 - ただしヘルパースクリプトを変更することもできます)。
 
  +
# ターミナルで {{ic|fsniper --log-to-stdout}} をテスト (USB ドライブが接続されたときに askpass が表示される)。
 
  +
=== プレーンテキストディレクトリのバックアップ ===
# {{ic|fsniper --daemon}} をセッションに追加。
 
  +
# ドライブを取り外す前に encfs をアンマウントするようにしてください。
 
  +
以下の例では {{ic|thesis.txt}} ファイルが含まれている既存のプレーンテキストディレクトリ {{ic|~/mythesis}} の暗号化バックアップを作成したいとします。
  +
  +
まず、既存のプレーンテキストディレクトリの暗号化バックアップを作成:
  +
  +
$ encfs --reverse ~/mythesis /tmp/thesisbackup
  +
  +
ディレクトリの順番は通常の使用の場合と逆になります。{{ic|--reverse}} オプションを使用することで、まず設定ファイルがプレーンテキストディレクトリに保存され {{ic|/tmp/thesisbackup}} には暗号化された状態で保存されます。そして、{{ic|/tmp/thesisbackup}} のファイルは永続的ではありません。アンマウントするとファイルは消えます ({{ic|/tmp}} マウントポイントを使用していることとは無関係です)。
  +
  +
それから、適当なバックアップ場所に暗号化ファイルをコピーして、一時的な ''encfs'' ディレクトリをアンマウントしてください:
  +
$ cp -R /tmp/thesisbackup/* /mnt/usbstick/
  +
$ fusermount -u /tmp/thesisbackup
  +
  +
バックアップを復元したいときは、プレーンテキスト形式の暗号化オプションが必要になります。{{ic|ENCFS6_CONFIG}} 環境変数を使って以下のように ''encfs'' に指定してください (既存の {{ic|~/mythesis}} を破壊しないように別のディレクトリを使用しています):
  +
  +
$ ENCFS6_CONFIG=~/mythesis/.encfs6.xml encfs ~/mnt/usbstick/thesisbackup ~/restoremythesis
  +
  +
リストアしたディレクトリを確認すると、ファイルが2つ含まれていることが確認できます:
   
  +
$ ls -la ~/restoremythesis
=== KDE KWallet を使ってマウント ===
 
  +
...
kdeencfs スクリプトを使うことで [[KDE Wallet]] でマウントができます: http://jaxartes.net/files/kdeencfs 。スクリプトの詳細は次を見て下さい: http://jaxartes.net/linux/kdeencfs.html 。スクリプトを使うには[[公式リポジトリ]]から {{Pkg|kdebase-kdialog}} パッケージを[[インストール]]する必要があります。
 
  +
-rw-r--r-- 1 student student 1078 3. Jan 12:33 .encfs6.xml
  +
-rw-r--r-- 1 student student 42 3. Jan 12:33 thesis.txt
  +
...
   
 
== 参照 ==
 
== 参照 ==
   
 
* [https://vgough.github.io/encfs/ EncFS] - プロジェクトのホームページ
 
* [https://vgough.github.io/encfs/ EncFS] - プロジェクトのホームページ
* [https://defuse.ca/audits/encfs.htm Security audit] of EncFS by Taylor Hornby (January 14, 2014).
+
* Taylor Hornby による EncFS の [https://defuse.ca/audits/encfs.htm セキュリティ監査] (2014年1月14)
  +
* Anthony Thyssen による [https://www.ict.griffith.edu.au/anthony/info/crypto/encfs.hints EncFS micro-how-to]。

2024年6月8日 (土) 13:49時点における最新版

関連記事

警告: encfs のセキュリティ レビュー (2014年2月) によって安定版リリースの 1.7.4 には様々なセキュリティの問題があることが発見されています (2014年6月) 開発は停止しています このリリースを使う前に、このレポート と資料を読んで最新の情報を確認してください。

EncFSeCryptfs と同じようなユーザースペースのスタック暗号ファイルシステムで、最小限の手間でデータを保護することができます。EncFS は FUSE を利用して暗号化したディレクトリをユーザーが指定した別のディレクトリにマウントします。TrueCryptdm-crypt などの他の暗号化システムのようにループバックシステムを使うことはありません。

Linux でディスク暗号化をしたいと思ったら、確実に、EncFS が一番シンプルなソフトウェアです。

EncFS は他の暗号化ソフトウェアと比べると様々な利点と欠点が存在します。まず、EncFS は使用するのに root 権限を必要としません。誰でも暗号化したファイルのリポジトリを作成することができます。次に、EncFS では何かファイルを作成したりファイルシステムを作成する必要がありません。EncFS は既存のファイルシステムでそのまま動作します。

しかしながら、このことは欠点にもなりえます。暗号化されたファイルが独自のファイルに保存されないため、システムにアクセスすることさえできれば、ディレクトリ構造やファイルの数、ファイルのサイズや変更日時などは丸わかりです。ただ、ファイルの中身を見ることはできません。

このようなデータ保護手法は完璧とはとても言えませんが、場合によっては役に立ちます。

EncFS と他のデータ暗号化ソリューションの比較については、ディスク暗号化#比較表にさらに詳しく載っています。

eCryptFS との比較

eCryptfs はカーネルスペースで実装されており設定の難易度がやや高くなっています。eCryptFS では様々な暗号化オプション (使用する暗号や鍵のタイプなど) を覚えておかなければなりませんが、EncFS ではその必要はありません。EncFS は暗号化のメタデータをディレクトリごとの設定ファイル (.encfs6.xml) に保存するため何も記憶する必要はないのです (パスフレーズは別ですが)。eCryptFS の開発者は (カーネルとユーザースペースの) コンテキストスイッチによるオーバーヘッドがないために eCryptFS の方が高速だと主張しています。

インストール

encfs パッケージをインストールしてください。

使用方法

安全なリポジトリを作成するには、次を入力:

$ encfs ~/.name ~/name

絶対パスを使う必要があるので注意してください。このコマンドを実行するとデフォルト設定 (paranoid オプション) とエキスパート設定のどちらかを使うか決めるプロンプトが表示されます。後者の設定ではアルゴリズムなどのオプションを指定することが可能です。前者ではまあまあ安全なデフォルト設定が使われます。暗号化のキーを入力した後、エンコードされたファイルシステムが作成されたマウントされます。エンコードされたファイルは、上の例では、~/.name に保存され、暗号化されてない状態のファイルは ~/name に置かれます。

ヒント: FUSE ファイルシステム (NTFS-3G など) で EncFS を使用すると、パフォーマンスが低下する可能性があります。可能であれば、ファイルシステムを変更することを検討してください。

ファイルシステムをアンマウントするには、次を入力:

$ fusermount -u ~/name

ファイルシステムを再マウントするには、最初のコマンドを実行して、エンコードに使用するキーを入力してください。キーを入力すれば、ファイルシステムはまたマウントされます。

パスワードの変更

EncFS で暗号化したディレクトリのパスワードを変更するには、以下のコマンドを使います:

$ encfsctl passwd ~/.name

~/.name をエンコードされたファイルが含まれているディレクトリのパスに置き換えてください。現在のパスワードが要求され、それから新しいパスワードを設定できます。

ユーザーフレンドリーなマウント方法

Gnome Encfs Manager を使ってマウント

Gnome Encfs Manager は使いやすい encfs の管理とマウントツールで、隠匿物ごとに設定を行ったり、Gnome Keyring をサポートしていたり、Cryptkeeper のようなトレイメニューがあります。AppIndicator API を使用していて多数のユニークな機能が存在します。

gnome-encfs-manager-binAUR と、それより少し新しい gnome-encfs-manager-bzrAUR の両方が利用可能です。

encfsui を使ってマウント

bash スクリプトの encfsui はシンプルな zenity による gui で EncFS コマンドラインユーティリティを使って暗号化ディレクトリをマウント・アンマウントします。デスクトップランチャーも含まれています。encfsuiAUR パッケージでインストールしてください。

fstab によるマウント

エントリを /etc/fstab に追加することで mount /target/path コマンドだけで encfs ボリュームをマウントできるようになります:

/etc/fstab
encfs#/path/to/encfs/data  /mnt/decrypted  fuse  noauto,user  0  0

noauto オプションを指定することで起動時にボリュームがマウントされなくなります。root だけでボリュームをマウントする場合は user は省略してかまいません。

pam_encfs を使ってログイン時にマウント

pam_encfsAUR をインストールしてください。参照:

シングルパスワード

警告: ログイン時に使用するパスワードを (ログイン中に encfs がマウントできるように) encfs にも使用する (例: try_first_pass または use_first_pass を使う) 場合は、SHA パスワードハッシュ (ラウンド数が多い SHA512 を推奨) と安全なパスワード (これが一番重要) を使うようにしてください。パスワードのハッシュは /etc/shadow に暗号化されてない状態で保存されるので、encfs のパスワードを得るためにクラックされる可能性があるからです。

/etc/pam.d/

'pam_unix.sotry_first_pass パラメータを使用する場合、ログイン時に使用するのと同じパスワードを使うように EncFS を設定する必要があります (もしくは EncFS で設定したパスワードをログイン時に使うようにする)。このパラメータを使わない場合は2つのパスワードを設定する必要があります。

すべてのログイン方法に対して pam_encfs をセットアップする

次のように encfs 行を /etc/pam.d/system-login に追加します:

...
auth       sufficient pam_encfs.so
...
login

このセクションではログイン時に仮想コンソールで encfs を自動マウントする方法を説明します。

ノート: GDM を使用する場合は、このセクションではなくて下の GDM のセクションを見て下さい。

/etc/pam.d/login ファイルを編集:

#%PAM-1.0

auth		required	pam_securetty.so
auth		requisite	pam_nologin.so
auth		sufficient	pam_encfs.so
auth		required	pam_unix.so nullok try_first_pass
#auth		required	pam_unix.so nullok
auth		required	pam_tally.so onerr=succeed file=/var/log/faillog
# use this to lockout accounts for 10 minutes after 3 failed attempts
#auth		required	pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog
account		required	pam_access.so
account		required	pam_time.so
account		required	pam_unix.so
#password	required	pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password	required	pam_unix.so md5 shadow use_authtok
session		required	pam_unix.so
session		required	pam_env.so
session		required	pam_motd.so
session		required	pam_limits.so
session		optional	pam_mail.so dir=/var/spool/mail standard
session		optional	pam_lastlog.so
session		optional	pam_loginuid.so
-session	optional	pam_ck_connector.so nox11
#Automatic unmount (optional):
#session	required	pam_encfs.so
警告: 自動アンマウントは他にセッションが存在する場合も行われます。例: VC でログアウトすると (まだ使用中の) GDM セッションによってマウントされた encfs もアンマウントしてしまいます。
gdm

このセクションではログイン時に GDM で encfs を自動マウントする方法を説明します。

ノート: まず最初に仮想コンソールでの自動マウントを試してみて下さい。上のセクションを参照。

/etc/pam.d/gdm-password ファイルを編集して下さい。

以下を gdm-password の一番下に挿入します (上書きしないでください):

#%PAM-1.0
auth            requisite       pam_nologin.so
auth            required        pam_env.so
auth            sufficient      pam_encfs.so
auth            required        pam_unix.so try_first_pass
auth            optional        pam_gnome_keyring.so
account         required        pam_unix.so
session         required        pam_limits.so
session         required        pam_unix.so
session         optional        pam_gnome_keyring.so auto_start
password        required        pam_unix.so
session         required        pam_encfs.so

保存して終了してください。

設定

/etc/security/pam_encfs.conf を編集:

推奨: 次の行をコメントアウトしてください:

encfs_default --idle=1

このフラグによって1分間操作がないと暗号化されたフォルダをアンマウントします。ログイン時に自動マウントする場合、ログインしている間はずっとマウントしていて欲しいということもあるでしょう。

一番下にある、既存のデモエントリをコメントアウトして以下を追加:

#USERNAME       SOURCE                                  TARGET PATH                 ENCFS Options           FUSE Options
foo             /home/foo/EncryptedFolder             /home/foo/DecryptedFolder       -v                    allow_other
ノート: pam_encfs を使ってログイン時に複数の EncFS フォルダをマウントすることはできません。/etc/security/pam_encfs.conf に複数のエントリを指定しても、一番最初のエントリだけマウントされ、他のエントリは無視されます。ログイン時に複数の EncFS フォルダをマウントするには pam_mount を使う必要があります。詳しくは #pam_mount を使ってログイン時にマウントを見てください。

また、以下の行が存在する場合、allow_root をオプションから外してください。オプションを外さないと上記で定義した allow_other と衝突します。

fuse_default allow_root,nonempty

次に /etc/fuse.conf を編集して、以下をアンコメント:

user_allow_other

設定をテストするには、新しい仮想コンソールを開いて (例: Ctrl+Alt+F4) ログインを行なって下さい。pam が EncFS フォルダをマウントするはずです。

pam_mount を使ってログイン時にマウント

先に pam_mount をインストール・設定してください。EncFS のマウントは pam_mount の設定ファイルに以下のように指定できます:

/etc/security/pam_mount.conf.xml
<volume fstype="fuse" path="encfs#/path/to/encfs/encrypted/data" mountpoint="/path/to/decrypted/data/mountpoint" options="nonempty" />

EncFS のパスワードはユーザーアカウントのパスワードと一緒にする必要があります。nonempty オプションを指定するとマウントポイントが空でない場合でも暗号化されたファイルシステムがマウントされます。マウントして欲しくない場合、オプションを削除してください。

設定ファイルに <volume> エントリを複数指定することで EncFS フォルダを複数マウントできます。

暗号化バックアップ

警告: 以下の手順に従ってデータから暗号化オプションファイルを分離する場合、プレーンテキストのオプションファイルのバックアップも作る必要があります。ディスクが壊れたときにオプションファイルをプレーンテキストでバックアップしていなかった場合、バックアップだけでは何もできません。オプションファイルに含まれている暗号化メタデータが必要です。ファイルは静的であるため、パスワードを変えない限り何度もバックアップする必要はありません。

暗号化ディレクトリのバックアップ

暗号化ディレクトリは他の場所にそのままバックアップ・リストアできます。暗号化オプションやメタデータの設定ファイルはディレクトリの中に保存されているためです。ファイルはプレーンテキスト形式で .encfs6.xml という名前です。パスワードは入っていないためプレーンテキストで直接的な問題は何もありません。

ただし、バックアップをリモートの場所 (クラウドなど) や携帯デバイスに保存する場合、面倒なことになります。そのような場合、バックアップを作成する前に、ディレクトリの外にファイルを手動で移動しても何も問題ありません。ENCFS6_CONFIG 環境変数を使って encfs に場所を指定すれば、ずっと別の場所に置いておいてもディレクトリをマウントしてファイルにアクセスできます。上の#使用方法に書かれている例の場合:

$ mv ~/.name/encfs6.xml ~/.
$ ENCFS6_CONFIG=~/encfs6.xml encfs ~/.name ~/name

プレーンテキストディレクトリのバックアップ

以下の例では thesis.txt ファイルが含まれている既存のプレーンテキストディレクトリ ~/mythesis の暗号化バックアップを作成したいとします。

まず、既存のプレーンテキストディレクトリの暗号化バックアップを作成:

$ encfs --reverse ~/mythesis /tmp/thesisbackup 

ディレクトリの順番は通常の使用の場合と逆になります。--reverse オプションを使用することで、まず設定ファイルがプレーンテキストディレクトリに保存され /tmp/thesisbackup には暗号化された状態で保存されます。そして、/tmp/thesisbackup のファイルは永続的ではありません。アンマウントするとファイルは消えます (/tmp マウントポイントを使用していることとは無関係です)。

それから、適当なバックアップ場所に暗号化ファイルをコピーして、一時的な encfs ディレクトリをアンマウントしてください:

$ cp -R /tmp/thesisbackup/* /mnt/usbstick/
$ fusermount -u /tmp/thesisbackup

バックアップを復元したいときは、プレーンテキスト形式の暗号化オプションが必要になります。ENCFS6_CONFIG 環境変数を使って以下のように encfs に指定してください (既存の ~/mythesis を破壊しないように別のディレクトリを使用しています):

$ ENCFS6_CONFIG=~/mythesis/.encfs6.xml encfs ~/mnt/usbstick/thesisbackup ~/restoremythesis 

リストアしたディレクトリを確認すると、ファイルが2つ含まれていることが確認できます:

$ ls -la ~/restoremythesis
... 
-rw-r--r--  1 student student    1078  3. Jan 12:33 .encfs6.xml
-rw-r--r--  1 student student      42  3. Jan 12:33 thesis.txt
...

参照