eCryptfs – Не удается расшифровать имена файлов

Вопрос или проблема

У меня есть зашифрованные данные на внешнем жестком диске, смонтированном по адресу /home/username/.Data. Я пытаюсь расшифровать их в /home/username/Data.

Несмотря на то, что я успешно читаю содержимое файлов, я не могу расшифровать имена файлов.

Вот что я пытаюсь сделать:

$ sudo ecryptfs-add-passphrase --fnek
Пароль: 
Вставлен токен аутентификации с сигнатурой [aaaaaaaaaaaaaaaa] в ключевую цепочку пользовательской сессии
Вставлен токен аутентификации с сигнатурой [bbbbbbbbbbbbbbbb] в ключевую цепочку пользовательской сессии

$ sudo mount -t ecryptfs /home/username/.Data /home/username/Data        
Пароль: 
Выберите шифр: 
 1) aes: размер блока = 16; минимальный размер ключа = 16; максимальный размер ключа = 32
 2) blowfish: размер блока = 8; минимальный размер ключа = 16; максимальный размер ключа = 56
 3) des3_ede: размер блока = 8; минимальный размер ключа = 24; максимальный размер ключа = 24
 4) twofish: размер блока = 16; минимальный размер ключа = 16; максимальный размер ключа = 32
 5) cast6: размер блока = 16; минимальный размер ключа = 16; максимальный размер ключа = 32
 6) cast5: размер блока = 8; минимальный размер ключа = 5; максимальный размер ключа = 16
Выбор [aes]: 
Выберите размер ключа: 
 1) 16
 2) 32
 3) 24
Выбор [16]: 2
Разрешить проход через открытый текст (y/n) [n]: 
Разрешить шифрование имен файлов (y/n) [n]: y
Подпись ключа шифрования имени файла (FNEK) [aaaaaaaaaaaaaaaa]: bbbbbbbbbbbbbbbb
Попытка смонтировать с следующими параметрами:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
  ecryptfs_key_bytes=32
  ecryptfs_cipher=aes
  ecryptfs_sig=aaaaaaaaaaaaaaaa
  Смонтирован eCryptfs

Теперь я использую Ubuntu 14.04.1 LTS и ecryptfs-utils 104-0ubuntu1.
Внешний жесткий диск был зашифрован несколько месяцев назад, с использованием более старой версии Ubuntu.

Какие-нибудь идеи, как это решить?

ИЗМЕНЕНИЕ:

Несколько дней спустя я попробовал что-то другое. Я запустил ecryptfs-setup-private, который создает каталоги ~/.Private и ~/Private.

Затем я вышел из системы, вошел снова, размонтировал ~/.Private с помощью ecryptfs-umount-private, скопировал каталог с внешнего жесткого диска в ~/.Private и снова смонтировал его с помощью ecryptfs-mount-private.

Таким образом, имя каталога было правильно расшифровано. Тем не менее, я не могу прочитать его или изменить текущий каталог на него.

$ cd decrypted_dir_name
bash: cd: decrypted_dir_name: Нет такого файла или каталога
$ ls -l
d????????? ? ?      ?         ?            ? decrypted_dir_name

ОБНОВЛЕННАЯ ИНФОРМАЦИЯ:

Только что заметил вероятную проблему, зарытую там: вы сказали “Внешний HD был зашифрован несколько месяцев назад, с использованием более старой версии Ubuntu.”

Новые версии eCryptfs не всегда работают с данными, зашифрованными более старыми версиями. Они не полностью обратимо совместимы. Вам следует расшифровать данные, используя оригинальную версию, которая их зашифровала.

Или, возможно, вы не используете правильный ключ для шифрования имен файлов (fnek), дважды проверьте ключ и обратите внимание на параметры монтирования ecryptfs_fnek_sig=(fnek_sig) и даже ecryptfs_sig=(fekek_sig).

Вот некоторые mount -t ecryptfs параметры, которые могут быть полезны (из man ecryptfs):

ecryptfs_sig=(fekek_sig)
      Укажите  сигнатуру  токена  аутентификации, широкой для монтирования.
      Токен аутентификации должен находиться в ключевой цепочке ядра перед
      монтированием. ecryptfs-manager или вспомогательная программа монтирования eCryptfs могут быть использованы для создания токена аутентификации и добавления
      его в ключевую цепочку перед монтированием.

ecryptfs_fnek_sig=(fnek_sig)
      Укажите  сигнатуру  токена  аутентификации,
      используемого для шифрования имен файлов. Аутентификация должна быть в
      ключевой цепочке ядра перед монтированием.

 ecryptfs_enable_filename_crypto=(y/n)
      Укажите, должно ли шифрование имен файлов быть включено.  Если  нет,
      вспомогательная программа монтирования  не  будет  запрашивать  пользователя на подпись ключа для шифрования имен файлов (по умолчанию).

  verbosity=0/1
      Если verbosity=1, вспомогательная программа монтирования спросит вас о недостающих значениях
      (по умолчанию). В противном случае, если verbosity=0, она не будет запрашивать недостающие значения и завершит работу, если необходимые значения будут опущены.

Я думаю, вы, вероятно, найдете утилиту ecryptfs-recover-private гораздо более удобной, чем ручное указание ключей шифрования и имен файлов… если у вас есть “обычная” зашифрованная папка, она должна работать довольно хорошо, если указать на зашифрованный каталог “.Private”, возможно /home/username/.Data, если это оно.

Вот выдержка из её мануала:

ИМЯ
       ecryptfs-recover-private  - найти и смонтировать любые зашифрованные личные директо‐
       рии

ОПИСАНИЕ
       Эта утилита предназначена  для  помощи  в  восстановлении  данных  из  их
       зашифрованного  домашнего  каталога или  зашифрованных  личных разделов.  Утилита полезно запускать
       из LiveISO или образа восстановления.  Она должна выполняться под sudo(8) или
       с правами root, чтобы иметь возможность искать файловую систему и выполнять
       монтирования.

       Программа может принимать целевой зашифрованный каталог в командной строке.
       Если не указано, утилита будет искать всю систему в поисках
       зашифрованных личных директорий, как это настроено в
       ecryptfs-setup-private(1).

       Если зашифрованный каталог и файл с обернутым паролем найдены, пользователю предлагается ввести
       пароль для входа (оборачивания), ключи вставляются в ключевую цепочку и
       данные расшифровываются и монтируются.

       Если файл обернутого пароля не найден, пользователю будет предложено ввести
       свой пароль для монтирования. Этот пароль обычно состоит из 32 символов
       [0-9a-f].  Все пользователи должны настоятельно записать этот случайным образом сгенерированный пароль, когда они в первый раз настраивают свою зашифрованную личную директорию.

       Место назначения для расшифрованных данных - временный каталог,
       в формате /tmp/ecryptfs.XXXXXXXX.

       По умолчанию, монтирование будет только для чтения. Чтобы смонтировать с правами на чтение и запись, добавьте параметр --rw.

У меня было точно такое же поведение, и проблема заключалась в том, что я просто не выбрал правильный исходный каталог.

Вот как выглядит моя настройка диска :

/mnt/usbdisk/Private/
          |-- Dir1
             |-- ECRYPTFS_FNEK_ENCRYPTED.FWa.AAAAAAAAAAAAAAAAA---
             |-- ECRYPTFS_FNEK_ENCRYPTED.FWa.BBBBBBBBBBBBBBBBB---
             |-- ECRYPTFS_FNEK_ENCRYPTED.FWa.CCCCCCCCCCCCCCCCC---
             ...
          |---Dir2
             |-- ECRYPTFS_FNEK_ENCRYPTED.FWa.DDDDDDDDDDDDDDDDD---
             ...

Я создал 2 обычных директории без шифрования имен (Dir1 и Dir2) в демонтированной директории Private, чтобы лучше организовать свои файлы. Они должны были также отображаться в открытом виде, когда Private смонтирован.

Однако, пытаясь смонтировать непосредственно /mnt/usbdisk/Private, я получил тот же результат, что и вы (много ???????).
Я вернул свои файлы, смонтировав /mnt/usbdisk/Private/Dir1 и /mnt/usbdisk/Private/Dir2 в качестве источников.

У меня все еще нет ответа, и я надеюсь, что у вас есть решение, так как это очень старая публикация 😉
Сделал ли я изменение, которого не помню? Возможно, это связано с параметром ecryptfs_passthrough (хотя я экспериментировал с ним и не заметил разницы)? Может быть, потому что с момента последнего подключения диска прошло несколько месяцев?

Ответ или решение

К сожалению, проблема расшифровки имен файлов при использовании eCryptfs может быть довольно сложной, особенно когда зашифрованные данные были созданы в более старой версии Ubuntu. Ваша ситуация может быть связана с несколькими ключевыми моментами, о которых стоит упомянуть.

1. Несоответствие версий eCryptfs

Как вы уже упомянули, eCryptfs не всегда обратно совместим. Это означает, что данные, зашифрованные с помощью более старой версии программы, могут не декодироваться должным образом в более новых версиях. Если у вас есть доступ к системе, на которой данные были изначально зашифрованы, настоятельно рекомендуется попытаться выполнить расшифровку там. Это поможет избежать проблем, связанных с совместимостью версий.

2. Правильный выбор ключей и параметров монтирования

Обратите внимание на следующие ключевые параметры, которые вы использовали при монтировании:

  • ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb: это сигнатура вашего ключа для шифрования имен файлов (Filename Encryption Key, FNEK). Вам необходимо убедиться, что вы используете правильный ключ, который соответствует данным, которые вы пытаетесь расшифровать.
  • ecryptfs_sig=aaaaaaaaaaaaaaaa: это сигнатура основного токена аутентификации, связанного с вашей зашифрованной директории. Необходимо удостовериться, что оба токена находятся в ключевом кольце ядра перед попыткой монтирования.

3. Использование команд для помощи в расшифровке

Утилита ecryptfs-recover-private может оказаться весьма полезной, если вы имеете дело с обычным зашифрованным каталогом. Попробуйте выполнить следующие шаги:

sudo ecryptfs-recover-private /home/username/.Data

Эта команда позволит утилите попытаться найти и смонтировать все зашифрованные директории, что может значительно упростить процесс. Пожалуйста, имейте в виду, что эта утилита работает лучше всего в случае использования структуры каталога, ожидаемой eCryptfs.

4. Указание подкаталогов

Как вы уже заметили в своем редактировании, бывает, что корректное указание подкаталогов может устранить проблему декодирования. Попробуйте выполнить монтирование на целевой подкаталог, если вы ранее работали с ним, например:

sudo mount -t ecryptfs /mnt/usbdisk/Private/Dir1 /home/username/Data/Dir1

5. Проверка прав доступа

Убедитесь, что у вас есть необходимые права доступа как для чтения, так и для записи в целевой директории. Причины проблемы, в которой отображаются "???????", могут возникать из-за недостаточных прав или повреждений в файловой системе.

Заключение

Каждая из этих стратегий может помочь вам решить проблему. Подходите к решению последовательно, начиная с проверки совместимости версий, правильных ключей и параметров. Пользуйтесь вспомогательными инструментами, такими как ecryptfs-recover-private, чтобы избежать ручной работы с параметрами монтирования. С этими рекомендациями вы сможете вернуть доступ к вашим данным на внешнем жестком диске.

Оцените материал
Добавить комментарий

Капча загружается...