複製 ext4 加密文件

複製 ext4 加密文件

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

在解密目錄之前,我可以看到其中有許多加密的檔案名稱。

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

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

答案1

您可以看到加密和填充的檔案名,但您應該無法讀取檔案內容。因此,嘗試複製未加密的檔案將導致錯誤,例如:

cp: cannot open 'vault/YgI8PdDi8wY33ksRNQJSvB' for reading: Required key not available

所以你幾乎不應該這樣做。實際的答案是解密它,然後複製它。如果您選擇加密位置作為目標目錄,副本將會重新加密。透過 rsync/ssh 的網路傳輸也將被加密。所以大多數事情都是有效的,僅僅將其儲存在雲端可能是不可能的。文件系統特定的加密在檔案系統之外不起作用。

規避讀取障礙是不夠的:與所有元資料都是常規檔案的 ecryptfs 不同,ext4 加密涉及隱藏在檔案系統本身中的元數據,您不可見,因此您無法輕鬆複製它。

我發現的最接近的是e4crypt get_policye4crypt set_policy它允許您使用現有金鑰加密目錄,而無需知道明文形式的實際金鑰。但它只適用於空目錄,不適用於檔案。

您也可以加密 Vault 目錄,用檔案填滿其中,然後將這些檔案硬連結到根目錄,然後刪除 Vault 目錄。您最終會在根目錄中得到加密的檔案(內容)(您不應該對其進行加密)。文件系統只知道文件已加密。 (不建議實際這樣做。)


如果你無論如何都必須複製一份,我想你可以用迂迴的方式來做:

  1. 製作整個檔案系統的原始 dd 副本
  2. 更改檔案系統 UUID
  3. 刪除你不想要的文件

否則,我想您需要一個專門的工具來知道如何將加密目錄+元資料從一個 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 字元表示形式儲存的檔案。所以這肯定會在很多層面上失敗。


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

相關內容