LinuxのZFS暗号化プール?

LinuxのZFS暗号化プール?

私は現在ZFSを試してテストしていますが、本当に気に入っています。今、私はLuksベースのフルディスク暗号化の標準設定に代わるものとしてこれを使用する最良の方法を探しています。

ZFSの暗号化の概念は何ですか?全体を暗号化しますか?プールそれとも単なる人なのかデータセット?私の考えは、起動してパスワードを入力し、残りは通常どおりに進むことです。プール内のすべてのデータセットにパスワードを入力したくありません。可能ですか?

luks フルディスク暗号化コンテナ内でZFSプールを試してみましたが、うまくいきますが、ZFSを直接使用するよりもパフォーマンスがはるかに低下しているようです。

私は「安定した」カーネルとNVME SSDを備えたArch Linuxを使用しています。説明と推奨設定ありがとうございます!

ああ、もう一つ:既存のデータセットやプールを暗号化できないという内容を読んだのですが、それはまだ本当ですか?

答え1

  • バージョン0.8がリリースされ、ZFS On Linuxには暗号化機能が追加されました。したがって、少なくとも対応するバージョンが必要です。

  • ZFSでは、暗号化はプールベースではなくデータセット単位で行われます。ただし、ZFSのほとんどと同様に、データセットは親(または親ではencryptionrootなく定義済み)から暗号化属性を継承できます。

  • ZFSのデータセットの暗号化を設定すると、いいえすでに含まれているすべてのデータを自動的に暗号化します。圧縮の有効化(または圧縮タイプの変更)と同様に、新しいデータのみが暗号化されます。

  • 既存のデータを暗号化するには、そのデータを暗号化が有効になっている別のデータセットにrsync移動しzfs send、古いデータセットを暗号化された新しいデータセットに置き換えることができます。これを行うには、システムがシングルユーザーモードになっている必要があります(または古いデータセットにファイルを書き込んだり開くことができるすべてのプログラムを少なくとも一時的にシャットダウンする必要があります)。

私はzpoolで暗号化を使用していないので、これが私が知っているすべてです。もっと調査して、ZOLメーリングリストのアーカイブを読んで検索してみてください。暗号化に関する問題~へZOL github倉庫

~から暗号化部分man zfs:

暗号化

暗号化を有効にすると、暗号化されたファイルシステムとボリュームが作成されます。 ZFS は、ファイルと zvol データ、ファイル属性、ACL、許可ビット、ディレクトリリスト、FUID マッピング、およびuserused/groupusedデータを暗号化します。 ZFSは、データセットとスナップショット名、データセット層、属性、ファイルサイズ、ファイルの脆弱性、重複排除テーブルなど、プール構造に関連するメタデータを暗号化しません(重複排除されたデータ自体は暗号化されています)。

キー循環はZFSによって管理されます。ユーザーキー(パスワードなど)を変更しても、データセット全体を再暗号化する必要はありません。暗号化キーをロードしなくても、データセットをクリーンアップ、再同期化、名前変更、および削除できます(zfs load-keyキーロードの詳細については、サブコマンドを参照)。

暗号化されたデータセットを作成するには、作成時と encryption属性を指定し、オプションでおよびを指定する必要があります。暗号化キーを入力すると、生成されたデータセットが暗号化ルートになります。デフォルトでは、すべての子データセットは暗号化ルートから暗号化キーを継承します。つまり、暗号化ルートのキーをロード、アンロード、または変更すると、継承されたすべてのデータセットに対して暗黙的に同じ操作が実行されます。この継承が必要ない場合は、子データセットを作成するときに提供するか、それを使用して既存の関係を破壊し、子データセットに新しい暗号化ルートを作成します。keyformatkeylocationpbkdf2iterskeyformatzfs change-key

子エントリは新しいkeyformatルートの作成中に親エントリと一致する可能性があり、encryption暗号化プロパティを変更するだけでは新しい暗号化ルートは作成されません。これは、単に暗号化ルートと同じキーを持つ別の暗号化スイートを使用します。 1つの例外は、クローンが常にソースの暗号化キーを使用することです。この例外により、一部の暗号化関連属性(つまり、、、、keystatusおよびkeyformat) は他のZFS属性と同様に継承されkeylocationpbkdf2iters、代わりに暗号化ルートによって決定された値を使用します。 Cryptorootの継承は、以下を介して追跡できます。読み取り専用 encryptionroot財産。

暗号化は一部のZFS操作の動作を変更します。圧縮後の暗号化が適用されるため、圧縮率は維持されます。通常、ZFSのチェックサム長は256ビットですが、暗号化されたデータの場合、チェックサムはユーザーが選択したチェックサムの128ビットと暗号スイートの128ビットMACであるため、データに対する悪意のある変更に対する追加の保護を提供します。暗号化が有効な場合でも重複排除は可能ですが、セキュリティのためにデータセット自体、スナップショット、およびレプリカでのみ重複排除されます。

データセットの暗号化にはいくつかの制限があります。暗号化されたデータはこの機能を介して挿入できませんembedded_data。実装では、3番目のレプリカが通常存在するいくつかの暗号化メタデータを格納するため、暗号化されたデータセットにレプリカ= 3がない可能性があります。暗号化前に圧縮が適用されるため、データにアクセスするアプリケーションで許可されている場合、データセットは同様の犯罪に対して脆弱になる可能性があります。暗号化された重複排除は、データセット内のどのブロックが同等であるかに関する情報を表示し、記録された各ブロックに対して追加のCPUコストが発生します。

関連情報