ファイルシステムレベルのRAIDでデータを一度だけ暗号化する方法は?

ファイルシステムレベルのRAIDでデータを一度だけ暗号化する方法は?

ファイルシステムにビットロート保護があるので、btrfsでdm-cryptを使用したいと思います。私の興味は、RADI1がdm-cryptより高いファイルシステムレベルにあるので、ファイルに書き込むと2回暗号化されることです。

HDD.x ⇄ dm-crypt.x ↰
                    btrfs-raid1 ⇒ btrfs
HDD.y ⇄ dm-crypt.y ↲

dm-crypt.xたとえば、2つのハードドライブに同じコピーを保存するなど、データを一度だけ暗号化する方法はありますか? (によるとbtrfs FAQ次のタスクを実行するにはencryptfsが必要です。

HDD.x ↰
       btrfs-raid1 ⇒ btrfs ⇄ ecryptfs
HDD.y ↲

ただし、btrfs RAID1 を使用してさらにパフォーマンスの低下を回避できる場合は、dm-crypt を使用することをお勧めします。

ベストアンサー1

現在、BTRFSには直接統合するオプションはありません。過去には、BTRFSメーリングリストでVFS暗号化APIサポートを追加することについての議論がありましたが(ext4およびF2FS透過ファイル暗号化も同じAPIを使用しました)、何の進展もないようです。

現在望むことを達成する唯一の方法は、BTRFSの外部にレプリケーションを配置することです。これにより、BTRFSでチェックサムを実行したときに得られる利点がほとんどなくなります。 eCryptFS はオプションですが、BTRFS で dm-crypt を使用するよりもほぼ常に遅くなります。 EncFSはオプションかもしれませんが、パフォーマンスについてはまったくわかりません。 FUSEに基づいていますが、通常、BTRFSの上にあるFUSEレイヤーは非常に遅いです。

これに代わるものとして、通常のRAID、dm-integrityターゲット(保存されたデータに対して暗号化検証を実行する)の上に、より伝統的なファイルシステム(MDまたはLVM経由)を使用することを検討できます。 AndroidとChromeOSがシステムパーティションの整合性を検証するために使用するdm-verityターゲットの書き込み可能バージョン。次にそれをdm-cryptの上に階層化します。これには、dm-integrityをサポートするカーネル(いつ追加されたのか覚えていませんが、昨年追加されたもの)とそれをサポートするcryptsetupバージョンが必要です。これにより、AEADスタイルの暗号化と同じレベルの整合性チェックが提供されます。ただし、残念ながらBTRFSと同じエラー修正を提供するには、dm-cryptとdm-integrityをRAIDレイヤーの下に置く必要があります(そうしないと、RAIDはdm-integrityのI / Oエラーを見ることはできません)。決して正しく修正されません。)

おすすめ記事