ext4 暗号化ファイルのコピー

ext4 暗号化ファイルのコピー

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_policye4crypt set_policyこれを使用すると、クリアテキストの実際のキーを知らなくても、既存のキーでディレクトリを暗号化できます。ただし、これは空のディレクトリに対してのみ機能し、ファイルに対しては機能しません。

また、ボールト ディレクトリを暗号化し、そこにファイルを入れて、それらのファイルをルート ディレクトリにハードリンクし、ボールト ディレクトリを削除することもできます。ルート ディレクトリに暗号化されたファイル (コンテンツ) が残ります (暗号化できないはずです)。ファイル システムは、ファイルが暗号化されていることを認識しているだけです。(実際にこれを行うことはお勧めしません。)


とにかくコピーを作成する必要がある場合は、回りくどい方法で実行できると思います。

  1. ファイルシステム全体の生のddコピーを作成する
  2. ファイルシステムのUUIDを変更する
  3. 不要なファイルを削除する

それ以外の場合は、暗号化されたディレクトリとメタデータを 1 つの ext4 ファイルシステムから別の ext4 ファイルシステムに複製する方法を知っている特殊なツールが必要になると思いますが、またはを使用してそれを実行する方法はわかりませんでしe4cryptdebugfs


debugfs特に、ls -r暗号化されたファイル名を完全な形で表示する機能を除いて、ポリシー/暗号化関連の機能が欠けているようです。これは、\x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY通常表示される ASCII 表現lsが印刷可能なように何らかの方法でエンコードされていることを意味します。

実際のファイル名は 16 個のランダム バイトにパディングされ、実際にはファイルシステムに保存されますが、通常はls22 個の ASCII 文字として表示されます。このようなファイルを従来の方法でコピーすると、実際にはランダム バイトとして保存する必要があるのに、ASCII 文字表現として保存されたファイルが作成されます。そのため、多くのレイヤーで失敗することになります。


要約もしそれを実行する方法があるなら、私はそれについて知りません:-}

関連情報