ext4暗号化を使用しています。 https://wiki.archlinux.org/index.php/Ext4#ファイルベースの暗号化の使用
ディレクトリを復号化する前に、その中に暗号化されたファイル名が多数あることがわかります。
暗号化されたファイルをコピーして、別のマシンで復号化できるようにしたいと思います。
ecryptfs ではこれができました。ext4 暗号化でこれを行うにはどうすればよいですか。
答え1
暗号化され埋め込まれたファイル名は表示されますが、ファイルの内容を読み取ることはできません。そのため、暗号化されていないファイルをコピーしようとすると、次のようなエラーが発生します。
cp: cannot open 'vault/YgI8PdDi8wY33ksRNQJSvB' for reading: Required key not available
したがって、これを行うことはほとんど想定されていません。実用的な答えは、それを復号化してからコピーすることです。ターゲット ディレクトリとして暗号化された場所を選択した場合、コピーは再暗号化されます。rsync/ssh を使用したネットワーク経由の転送も暗号化されます。したがって、ほとんどのことは機能しますが、クラウドに保存するだけではおそらく問題外です。ファイル システム固有の暗号化は、ファイル システム外では機能しません。
読み取りバリアの回避だけでは不十分です。すべてのメタデータが通常のファイルである ecryptfs とは異なり、ext4 暗号化では、ファイルシステム自体に隠されたメタデータが使用され、ユーザーには表示されないため、簡単にコピーすることはできません。
私が見つけた中で最も近いのは でe4crypt get_policy
、e4crypt set_policy
これを使用すると、クリアテキストの実際のキーを知らなくても、既存のキーでディレクトリを暗号化できます。ただし、これは空のディレクトリに対してのみ機能し、ファイルに対しては機能しません。
また、ボールト ディレクトリを暗号化し、そこにファイルを入れて、それらのファイルをルート ディレクトリにハードリンクし、ボールト ディレクトリを削除することもできます。ルート ディレクトリに暗号化されたファイル (コンテンツ) が残ります (暗号化できないはずです)。ファイル システムは、ファイルが暗号化されていることを認識しているだけです。(実際にこれを行うことはお勧めしません。)
とにかくコピーを作成する必要がある場合は、回りくどい方法で実行できると思います。
- ファイルシステム全体の生のddコピーを作成する
- ファイルシステムのUUIDを変更する
- 不要なファイルを削除する
それ以外の場合は、暗号化されたディレクトリとメタデータを 1 つの ext4 ファイルシステムから別の ext4 ファイルシステムに複製する方法を知っている特殊なツールが必要になると思いますが、またはを使用してそれを実行する方法はわかりませんでしe4crypt
たdebugfs
。
debugfs
特に、ls -r
暗号化されたファイル名を完全な形で表示する機能を除いて、ポリシー/暗号化関連の機能が欠けているようです。これは、\x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY
通常表示される ASCII 表現ls
が印刷可能なように何らかの方法でエンコードされていることを意味します。
実際のファイル名は 16 個のランダム バイトにパディングされ、実際にはファイルシステムに保存されますが、通常はls
22 個の ASCII 文字として表示されます。このようなファイルを従来の方法でコピーすると、実際にはランダム バイトとして保存する必要があるのに、ASCII 文字表現として保存されたファイルが作成されます。そのため、多くのレイヤーで失敗することになります。
要約もしそれを実行する方法があるなら、私はそれについて知りません:-}