「EncFS」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://github.com/」を「https://github.com/」に置換) |
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://pastebin.com/」を「https://pastebin.com/」に置換) |
||
265行目: | 265行目: | ||
=== KDE KWallet を使ってマウント === |
=== KDE KWallet を使ってマウント === |
||
− | KDE では [ |
+ | KDE では [https://pastebin.com/RR1hguwE kdeencfs] スクリプトを使うことで [[KDE Wallet]] でマウントができます。スクリプトを使うには[[公式リポジトリ]]から {{Pkg|kdialog}} と {{Pkg|kwallet-pam}} パッケージを[[インストール]]する必要があります。kwallet-pam はセッションと一緒に起動させる必要があります。{{ic|kdeencfs ''encrypted-folder'' ''decrypted-folder''}} を実行することで使用できます。 |
== 暗号化バックアップ == |
== 暗号化バックアップ == |
2018年2月6日 (火) 23:43時点における版
関連記事
EncFS は eCryptfs と同じようなユーザースペースのスタック暗号ファイルシステムで、最小限の手間でデータを保護することができます。EncFS は FUSE を利用して暗号化したディレクトリをユーザーが指定した別のディレクトリにマウントします。TrueCrypt や dm-crypt などの他の暗号化システムのようにループバックシステムを使うことはありません。
Linux でディスク暗号化をしたいと思ったら、確実に、EncFS が一番シンプルなソフトウェアです。
EncFS は他の暗号化ソフトウェアと比べると様々な利点と欠点が存在します。まず、EncFS は使用するのに root 権限を必要としません。誰でも暗号化したファイルのリポジトリを作成することができます。次に、EncFS では何かファイルを作成したりファイルシステムを作成する必要がありません。EncFS は既存のファイルシステムでそのまま動作します。
しかしながら、このことは欠点にもなりえます。暗号化されたファイルが独自のファイルに保存されないため、システムにアクセスすることさえできれば、ディレクトリ構造やファイルの数、ファイルのサイズや変更日時などは丸わかりです。ただ、ファイルの中身を見ることはできません。
このようなデータ保護手法は完璧とはとても言えませんが、場合によっては役に立ちます。
EncFS と他のデータ暗号化ソリューションの比較については、ディスク暗号化#比較表にさらに詳しく載っています。
目次
- 1 eCryptFS との比較
- 2 インストール
- 3 使用方法
- 4 ユーザーフレンドリーなマウント方法
- 5 暗号化バックアップ
- 6 参照
eCryptFS との比較
eCryptfs はカーネルスペースで実装されており設定の難易度がやや高くなっています。eCryptFS では様々な暗号化オプション (使用する暗号や鍵のタイプなど) を覚えておかなければなりませんが、EncFS ではその必要はありません。EncFS は暗号化のメタデータをディレクトリごとの設定ファイル (.encfs6.xml
) に保存するため何も記憶する必要はないのです (パスフレーズは別ですが)。eCryptFS の開発者は (カーネルとユーザースペースの) コンテキストスイッチによるオーバーヘッドがないために eCryptFS の方が高速だと主張しています。
インストール
公式リポジトリから encfs パッケージをインストールしてください。
使用方法
安全なリポジトリを作成するには、次を入力:
$ encfs ~/.name ~/name
絶対パスを使う必要があるので注意してください。このコマンドを実行するとデフォルト設定 (paranoid オプション) とエキスパート設定のどちらかを使うか決めるプロンプトが表示されます。後者の設定ではアルゴリズムなどのオプションを指定することが可能です。前者ではまあまあ安全なデフォルト設定が使われます。暗号化のキーを入力した後、エンコードされたファイルシステムが作成されたマウントされます。エンコードされたファイルは、上の例では、~/.name
に保存され、暗号化されてない状態のファイルは ~/name
に置かれます。
ファイルシステムをアンマウントするには、次を入力:
$ fusermount -u ~/name
ファイルシステムを再マウントするには、最初のコマンドを実行して、エンコードに使用するキーを入力してください。キーを入力すれば、ファイルシステムはまたマウントされます。
パスワードの変更
EncFS で暗号化したディレクトリのパスワードを変更するには、以下のコマンドを使います:
$ encfsctl passwd ~/.name
~/.name
をエンコードされたファイルが含まれているディレクトリのパスに置き換えてください。現在のパスワードが要求され、それから新しいパスワードを設定できます。
ユーザーフレンドリーなマウント方法
Gnome Encfs Manager を使ってマウント
Gnome Encfs Manager は使いやすい encfs の管理とマウントツールで、隠匿物ごとに設定を行ったり、Gnome Keyring をサポートしていたり、Cryptkeeper のようなトレイメニューがあります。AppIndicator API を使用していて多数のユニークな機能が存在します。
gnome-encfs-managerAUR もしくは開発版の gnome-encfs-manager-bzrAUR パッケージでインストールできます。
gnome-encfs を使ってマウント
gnome-encfs はキーリングにパスワードを保存することにより EncFS フォルダを GNOME デスクトップに統合します。また、任意で GNOME の自動起動機構を使ってログイン時にフォルダをマウントすることもできます。https://bitbucket.org/obensonne/gnome-encfs/ を見て下さい。マウントを自動化したりパスワードをユーザーのパスワードと一緒にする必要がないという利点があります。
CryptKeeper トレイアイコンを使ってマウント
とてもシンプルなアプリケーションです。AUR から cryptkeeperAUR をインストールして X セッションに追加してください。
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 をインストールしてください。参照:
- http://pam-encfs.googlecode.com/svn/trunk/README
- http://pam-encfs.googlecode.com/svn/trunk/pam_encfs.conf
- https://wiki.edubuntu.org/EncryptedHomeFolder
- http://code.google.com/p/pam-encfs/
シングルパスワード
/etc/pam.d/
'pam_unix.so に try_first_pass パラメータを使用する場合、ログイン時に使用するのと同じパスワードを使うように EncFS を設定する必要があります (もしくは EncFS で設定したパスワードをログイン時に使うようにする)。このパラメータを使わない場合は2つのパスワードを設定する必要があります。
login
このセクションではログイン時に仮想端末で encfs を自動マウントする方法を説明します。
/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
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
また、以下の行が存在する場合、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 フォルダを複数マウントできます。
fsniper を使って EncFS フォルダが入った USB ドライブが接続されたときにマウント
EncFS フォルダが入った USB ドライブが接続されたときに (パスワードをきいて) encfs を自動マウントするシンプルな方法として fsniperAUR (inotify を使用してファイルシステムを監視するデーモン) と git (askpass バイナリ) を使います。
詳しくは https://github.com/Harvie/Programs/tree/master/bash/encfs/automount を参照 (手順で使用されるファイルの最新版)。
手順
- まず USB の自動マウントが使えるようにしておく必要があります - Thunar や Nautilus などで設定します。
- ドライブ上に暗号化フォルダを作成、例:
encfs /media/USB/somename /media/USB/somename.plain
(そして全てをアンマウント)。 ~/.config/fsniper/config
ファイルを作成:watch { /etc/ { mtab { # %% is replaced with the filename of the new file handler = encfs-automount.sh %%; } } }
- ヘルパースクリプトをインストール:
#!/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; echo echo ==== EncFS automount script for fsniper ==== list_mounts() { cat /proc/mounts | cut -d ' ' -f 2 } 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 rm "$lock" 2>/dev/null
/usr/lib/git-core/git-gui--askpass
が動作することを確認 (git パッケージが必要な理由 - ただしヘルパースクリプトを変更することもできます)。- ターミナルで
fsniper --log-to-stdout
をテスト (USB ドライブが接続されたときに askpass が表示される)。 fsniper --daemon
をセッションに追加。- ドライブを取り外す前に encfs をアンマウントするようにしてください。
KDE KWallet を使ってマウント
KDE では kdeencfs スクリプトを使うことで KDE Wallet でマウントができます。スクリプトを使うには公式リポジトリから kdialog と kwallet-pam パッケージをインストールする必要があります。kwallet-pam はセッションと一緒に起動させる必要があります。kdeencfs encrypted-folder decrypted-folder
を実行することで使用できます。
暗号化バックアップ
暗号化ディレクトリのバックアップ
暗号化ディレクトリは他の場所にそのままバックアップ・リストアできます。暗号化オプションやメタデータの設定ファイルはディレクトリの中に保存されているためです。ファイルはプレーンテキスト形式で .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 ...
参照
- EncFS - プロジェクトのホームページ
- Taylor Hornby による EncFS の セキュリティ監査 (2014年1月14日)。
- Anthony Thyssen による EncFS micro-how-to。