web-dev-qa-db-ja.com

ディレクトリの暗号化されたビューを提供するファイルシステム-EncFSの逆

現在、EncFSを使用して、ディレクトリ「confidential」を「.encconfidential」に暗号化し、syncオンラインサービス(Dropbox、UbuntuOneなど)を使用してその暗号化ディレクトリを暗号化しています。ただし、ディスク全体がすでにLUKS暗号化されているため、二重暗号化はパフォーマンスに悪影響を及ぼします。

「反転」EncFSオプションはあるのでしょうか?暗号化されていないディレクトリがマウントされ、マウントされたディレクトリには暗号化されたファイルのみが表示されます。したがって、同期ツールが暗号化されたファイルのみを表示および読み取り/書き込みしている間に、暗号化されていないドキュメントを操作できます。

明確化:私の主なユースケースはsyncバックアップではありません。ローカルで操作するときに二重暗号化のペナルティなしでマシンを安全に同期できるようにしたい(送信時間と比較して、暗号化された操作は時間の最小増分であり、バックグラウンド時間ではなく、保存を押すときに待機する必要があります)ユーザー時間)

7
stwissel

実際には、Encfsの「反転」オプションがあります。 Encfsのマニュアルページから:

   --reverse
       Normally EncFS provides a plaintext view of data on demand.  Normally it stores enciphered data and displays plaintext data.  With --reverse it
       takes as source plaintext data and produces enciphered data on-demand.  This can be useful for creating remote encrypted backups, where you do
       not wish to keep the local files unencrypted.

       For example, the following would create an encrypted view in /tmp/crypt-view.

           encfs --reverse /home/me /tmp/crypt-view

       You could then copy the /tmp/crypt-view directory in order to have a copy of the encrypted data.  You must also keep a copy of the file
       /home/me/.encfs5 which contains the filesystem information.  Together, the two can be used to reproduce the unencrypted data:

           ENCFS5_CONFIG=/home/me/.encfs5 encfs /tmp/crypt-view /tmp/plain-view

       Now /tmp/plain-view contains the same data as /home/me

       Note that --reverse mode only works with limited configuration options, so many settings may be disabled when used.

同期のために試したことはありませんが、反対側で同じ.encfs5 configフォルダーを使用していれば機能すると思います。

10
Azendale

次に、指定したことを正確に行う方法について説明します。

あなたが求めているのは、それを介して読み取られるファイルを自動的に暗号化する読み取り専用のファイルシステムビューです:

~/
    confidential/
        secret_file.txt      # Stored unencrypted
    .enc_confidential/       # Read-only view of files in confidential/
        secret_file.txt      # Encrypted view of corresponding file

これを行う標準的な方法は、Fuse(ユーザー空間のファイルシステム)を使用することです。

あなたのユースケースのために、あなたが望むことを行うことができるFuseファイルシステムがすでに存在します fusefltfusefltは、読み取られる各ファイルに任意のユーザー指定フィルターが適用されたファイルシステムの読み取り専用ビューを提供します。

あなたの場合、必要なフィルターはgpgのような暗号化プログラムです。

構成ファイルの作成方法については、 ドキュメント を参照してください。基本的に、flt_cmd = gpg --encrypt [... your chosen encryption settings]をフィルターコマンドとして使用します。

注意してください;構成を台無しにすると、プレーンテキストデータがインターネットサービスに公開される可能性があります。私は一般的な使用のために他の答えをお勧めします。


同期を機能させるには書き込みサポートも必要なので、独自のFuseファイルシステムを作成する必要があるようです。おそらくfusefltソースを変更して書き込みサポートを追加するのは難しくありません。実装されていない書き込み関数を入力するだけです。これは読み取りサポートと同じように機能し、暗号化フィルターではなく復号化フィルターを呼び出します。

Fuseファイルシステムを作成するために、 複数チュートリアル が利用可能です。その他のドキュメントについては、 Fuse wiki も参照してください。

これを行ったら、Fuse filesystem mountコマンドを.profileに追加して、ログイン時に自動的にマウントされるようにします。

2

原則として(Fuseファイルシステムを使用して)可能ですが、より簡単なオプションは、オンラインサービスをバックアップターゲットとして使用して、既製の暗号化されたバックアッププログラムを使用することです。

私が知っている2つの適切なバックアッププログラムがあります。どちらもファイルの完全な履歴を提供します。

重複/デジャデュプ

重複buntuパッケージ )は、圧縮され暗号化された増分バックアップをリモートの場所に効率的に書き込むバックアッププログラムです。増分バックアップは、rsyncアルゴリズムを使用してバイナリ差分を生成するため、スペース効率に優れています。

また、最近のUbuntuバージョンにデフォルトで含まれているDeja-Dupフロントエンドを使用することもできます。

重複は、多くのリモートロケーションへの書き込み、またはbackendsをサポートします。特に、DuplicityにはUbuntu Oneバックエンドがあります。 Dropboxを直接サポートしているとは思いませんが、Dropboxが同期するローカルディレクトリにバックアップするように指示できます。

大量のデータをバックアップする場合、重複は適切ではありません。増分バックアップの保存方法には制限があるため、定期的にフルバックアップを実行する必要があり、データのアップロードallが必要になります。

オブナム

より大きなバックアップについては、 Obnam をご覧ください。暗号化されたデータ重複排除をバックアップリポジトリに保存します。リモートストレージサービスで使用するには、Dropbox/Ubuntu Oneが同期する場所にあるリポジトリにバックアップするようにObnamに指示します。 ObnamはBツリーベースのリポジトリ形式を使用するため、リポジトリに新しい/変更されたデータを書き込むだけでよいため、同期は高速になります。

欠点は、データの2つのコピーをハードディスクに保存する必要があることです(正規のコピーと、バックアップリポジトリのコピー)。

buntuパッケージリンクPPA もあります。

1

もう1つの既製の同期ツールはSeafileです。 Dropboxのような1サーバー複数クライアントソリューションです。最新バージョンでは、サーバーがキーを認識しない方法で暗号化されたフォルダーを共有するオプションがあります。

Seafileセキュリティ機能 を参照してください

ヒント:ドキュメントの理解を深めるため、Seafileは共有フォルダーを「ライブラリ」と呼びます。

0
leenooxer