Копирование зашифрованных файлов 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_policy, e4crypt set_policyкоторый позволяет вам зашифровать каталог с существующим ключом, не зная фактического ключа в открытом виде. Но это работает только для пустых каталогов, а не для файлов.

Вы также можете зашифровать каталог хранилища, заполнить его файлами, затем жестко связать эти файлы с корневым каталогом, а затем удалить каталог хранилища. В конечном итоге вы получите зашифрованные файлы (содержимое) в корневом каталоге (который вы не должны иметь возможности шифровать). Файловая система просто знает, что файл зашифрован. (На самом деле не рекомендуется делать это.)


Если вам все равно нужно сделать копию, я думаю, вы можете сделать это окольным путем:

  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 случайных байтов, но regular lsпоказывает его как 22 символа ASCII. Копирование такого файла традиционным способом создало бы файл, сохраненный в виде его представления в виде символов ASCII, когда вам на самом деле нужно сохранить его в виде случайных байтов. Так что это просто обречено на провал на стольких уровнях.


вкратцеесли и есть способ это сделать, то я о нем не знаю :-}

Связанный контент