Encryption

複製 ext4 加密文件

  • June 5, 2019

我正在使用 ext4 加密。 https://wiki.archlinux.org/index.php/Ext4#Using_file-based_encryption

在我解密一個目錄之前,我可以在其中看到很多加密的文件名。

我想複製加密的文件,以便我可以在另一台機器上解密它們。

我可以用 ecryptfs 做到這一點。我如何使用 ext4 加密來做到這一點。

您可以看到加密和填充的文件名,但您應該無法讀取文件內容。所以試圖複製未加密的文件會導致錯誤,例如:

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. 刪除你不想要的文件

否則我猜你需要一個專門的工具來知道如何將加密目錄+元數據從一個 ext4 文件系統複製到另一個文件系統,但我沒有看到使用e4cryptor的方法debugfs


debugfs特別是似乎沒有策略/加密相關功能,除了ls -r顯示加密文件名的全部榮耀,因為\x1e\x5c\x8d\xe2\xb7\xb5\xa0N\xee\xfa\xde\xa66\x8axY這意味著 ASCII 表示正常ls節目以某種方式編碼為可列印。

實際文件名是

$$ padded to and actually stored in the filesystem as $$16 個隨機字節,但正常ls顯示為 22 個 ASCII 字元。當您確實需要將其儲存為隨機字節時,以傳統方式複制此類文件將創建一個儲存為其 ASCII 字元表示的文件。所以這注定會在這麼多層次上失敗。


tl;博士如果有辦法做到這一點,那麼我不知道:-}

引用自:https://unix.stackexchange.com/questions/522996