Ecryptfs: Проблема с расшифровкой приводит к появлению вопросительных знаков на первом уровне при выполнении команды ‘ls -la’

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

Извините, я не нашел здесь подходящую тему. У меня странное поведение установки сразу после того, как я установил Linux Mint 22 в существующую структуру таблицы разделов:

  • Зашифрованный раздел Luks с LVM для корня, пользователя, swap
  • Загрузочный раздел (незашифрованный)
  • Двойная загрузка Windows
  • Один раздел NTFS для обмена

Раздел LUKS был открыт во время live-сессии, внутри активирован LVM и смонтирован. Все разделы были отформатированы, кроме домашнего раздела с зашифрованными домашними каталогами ecryptfs. Ранее Ubuntu 24.04 был установлен как ошибочное обновление до 22.04 (ошибочное с точки зрения множества небольших проблем с производительностью и мелких ошибок, что не заканчивается непригодной, но плачевно сконфигурированной системой). Свежая установка Ubuntu 24.04 не удалась, так как она больше не поддерживает LUKS и LVM во время установки. Черт.

Затем я начал помощник установки.

Всё прошло нормально, производительность увеличилась на 200%, кроме:


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

Альтернатива 1:

root# ecryptfs-private-recovery    # откуда-то
INFO: Поиск зашифрованных личных каталогов (это может занять некоторое время)...
find: ‘/proc/38986/task/38986/net’: Недопустимый аргумент
find: ‘/proc/38986/net’: Недопустимый аргумент
find: ‘/proc/103650/task/103650/net’: Недопустимый аргумент
find: ‘/proc/103650/net’: Недопустимый аргумент
find: ‘/run/user/1000/gvfs’: Доступ запрещён
find: ‘/run/user/1000/doc’: Доступ запрещён

Поэтому ecryptfs не находит никакого домашнего каталога (кроме /home/user, который является открытым расшифрованным), даже если я запускаю его из директории .Private.

Я знаю

  • пароль шифрования
  • алгоритм AES
  • длина ключа 16 бит
  • шифрование имён файлов включено
  • passthrough – нет

Согласно здесь и исходя из этого ответа здесь я удалял ключи с использованием (keyctl как инструмент управления ключами, работающий с кольцами ключей, но очевидно не с gnome keyring, философия этого инструмента, к сожалению, совершенно неясна, как и весь инструмент ecryptfs (я не нашел никаких диаграмм/uml схем о нём):

$ sudo su
$ keyctl list @u
2 keys in keyring:
270246897: --alswrv  1000  1000 user: bbbbbbbbbbbbbbbb
996876983: --alswrv  1000  1000 user: aaaaaaaaaaaaaaaa
$ keyctl clean @u    [--> никаких доступных ключей
$ ecryptfs-unwrap-passphrase .ecryptfs/wrapped-passphrase
Passphrase: (введите ваш обычный пароль)
PPPPPPPPPPPPPPPP
(запишите этот расшифрованный пароль)
$ sudo ecryptfs-add-passphrase --fnek 
Passphrase: (введите PPPPPPPPPPPPPPPP)
Добавлен токен аутентификации с сигнатурой [aaaaaaaaaaaaaaaa] в пользовательский сеансовый кольцо ключей
Добавлен токен аутентификации с сигнатурой [bbbbbbbbbbbbbbbb] в пользовательский сеансовый кольцо ключей
$ sudo mount -t ecryptfs /backup1TB/home_user_bck/.Private /backup1TB/home_user_bck/ -o key=passphrase:passphrase_passwd_file=/home/user/scripts/key.txt,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y,ecryptfs_unlink_sigs
Сигнатура ключа шифрования имен файлов (FNEK) [aaaaaaaaaaaaaaaaaa]: bbbbbbbbbbbbbbbb
Попытка монтирования с использованием следующих опций:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb                     
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=aaaaaaaaaaaaaaaaaa
Монтирован eCryptfs
  • ecryptfs_fnek_sig и ecryptfs_sig отображаются только скрытно. Поскольку этот домашний резервный каталог работал как зеркало моего домашнего каталога, зашифрованного с ecryptfs с тем же паролем пользователя, для меня было приемлемо сохранять пароль прямо в скрипты с правами 400.

Лог показывает:

$ dmesg | tail
[469436.287197] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469436.287330] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469436.287337] process_request_key_err: Нет ключа
[469436.287340] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469469.389865] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469469.389884] process_request_key_err: Нет ключа
[469469.389889] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469469.389907] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469469.389912] process_request_key_err: Нет ключа
[469469.389915] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
peddanet@HP-ENVY-Laptop-13-aq1176ng:/backup1TB$ ^C

$ journalctl -xe | grep
Mar 05 00:55:40 HP-ENVY-Laptop-13-aq1176ng sudo[230528]: peddanet : TTY=pts/3 ; PWD=/backup1TB ; USER=root ; COMMAND=/usr/bin/mount -t ecryptfs /backup1TB/home_peddanet_bck/.Private /backup1TB/home_peddanet_bck/ -o key=passphrase:passphrase_passwd_file=/home/peddanet/scripts/key.txt,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y
Mar 05 00:55:40 HP-ENVY-Laptop-13-aq1176ng mount.ecryptfs[230537]: Ошибка инициализации модуля ключа [/usr/lib/x86_64-linux-gnu/ecryptfs/libecryptfs_key_mod_gpg.so]; rc = [-22]

Aльтернативный способ

Согласно способу для MINT я выполнял восстановление вот так:

/backup1TB/.ecryptfs/home_user_bck# ecryptfs-recover-private .Private;
INFO: Найдено [.Private].
Попробовать восстановить этот каталог? [Y/n]: Y
INFO: Найден ваш обёрнутый пароль
Вы знаете ваш логин-пароль? [Y/n] Y
INFO: Введите ваш логин-пароль...
Пароль: 
Добавлен токен аутентификации с сигнатурой [cccccccccccccccc] в пользовательский сеансовый кольцо ключей
INFO: Успех!  Личные данные смонтированы в [/tmp/ecryptfs.HR2cA03S].
# keyctl list @u
3 ключа в кольце ключей:
384278683: --alswrv     0     0 user: bbbbbbbbbbbbbbbb
351461027: --alswrv     0     0 user: aaaaaaaaaaaaaaaa

Ошибок нет! НО:

Результат для обоих способов:

Кажется, работает правильно, но ls -la показывает:

Просмотр этих директорий так же, как и монтирование с моим паролем, работает “на верхнем уровне” без ошибок, но вы не можете получить доступ к этим файлам и каталогам, это останавливается:

$ ll home_user_bck
ls: невозможно получить доступ к 'home_user_bck/.nuget': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/lsix-master': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.mozilla': Нет такого файла или каталога
[..]
ls: невозможно получить доступ к 'home_user_bck/ECRYPTFS_FNEK_ENCRYPTED.FWbJFNeOPKlxWUQHdX-EKzX72XJwQQKem-XJNDrYJBdx.UWXCIKeIOw45E--': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/openvlc.tasks': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/Screenshot from 2021-11-06 15-37-10.png': Нет такого файла или каталога
[..]
ls: невозможно получить доступ к 'home_user_bck/.ecryptfs': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.thunderbird': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.xsession-errors': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/thinclient_drives': Нет такого файла или каталога
[..]
drwxr-xr-x 49 user user  20K Feb 20 12:47  .
drwxr-xr-x  6 user user 4,0K Feb 17 14:31  ..
d?????????  ? ?        ?           ?            ?  Audio
-?????????  ? ?        ?           ?            ?  backup.log
-?????????  ? ?        ?           ?            ?  .bash_history
-?????????  ? ?        ?           ?            ?  .bash_logout
-?????????  ? ?        ?           ?            ?  .bashrc
d?????????  ? ?        ?           ?            ?  bin
d?????????  ? ?        ?           ?            ?  .cache
d?????????  ? ?        ?           ?            ?  .conda
d?????????  ? ?        ?           ?            ?  .config
d?????????  ? ?        ?           ?            ?  .cups
d?????????  ? ?        ?           ?            ?  .cyberghost
[..]
d?????????  ? ?        ?           ?            ?  .dbus
d?????????  ? ?        ?           ?            ?  Desktop
d?????????  ? ?        ?           ?            ?  Documents
d?????????  ? ?        ?           ?            ?  Dokumente
d?????????  ? ?        ?           ?            ?  .dotnet
d?????????  ? ?        ?           ?            ?  Downloads
-?????????  ? ?        ?           ?            ?  examples.desktop
d?????????  ? ?        ?           ?            ?  .gconf
-?????????  ? ?        ?           ?            ?  .gitconfig
d?????????  ? ?        ?           ?            ?  .gnome
d?????????  ? ?        ?           ?            ?  .gnupg
d?????????  ? ?        ?           ?            ?  .hardinfo
-?????????  ? ?        ?           ?            ?  index.html
d?????????  ? ?        ?           ?            ?  .java
d?????????  ? ?        ?           ?            ?  jd2
-?????????  ? ?        ?           ?            ?  key.txt
-?????????  ? ?        ?           ?            ?  .lesshst
d?????????  ? ?        ?           ?            ?  .local
d?????????  ? ?        ?           ?            ?  lsix-master
d?????????  ? ?        ?           ?            ?  .mozilla
d?????????  ? ?        ?           ?            ?  Music
l?????????  ? ?        ?           ?            ?  user
d?????????  ? ?        ?           ?            ?  Pictures
[..]
d?????????  ? ?        ?           ?            ?  scripts
d?????????  ? ?        ?           ?            ?  snap
d?????????  ? ?        ?           ?            ?  .ssh
-?????????  ? ?        ?           ?            ?  .sudo_as_admin_successful
d?????????  ? ?        ?           ?            ?  Templates
-?????????  ? ?        ?           ?            ?  test
d?????????  ? ?        ?           ?            ?  Test
d?????????  ? ?        ?           ?            ?  testdaten
-?????????  ? ?        ?           ?            ?  testdisk.log
-?????????  ? ?        ?           ?            ?  that.gif
[..]

Я попробовал ecryptfs: ls списывает верхние папки, но с “нет такого файла или каталога” для них, но, поскольку ecryptfs-recover-private не нашел – никакого результата. Но похожие результаты, когда дело доходит до перечисления верхних файлов в директории. Нижестоящие директории невозможно перечислить.

Так что пошло не так? Может ли быть странная разница в обработке ecryptfs ранее в Ubuntu 22.04, а теперь в Linux Mint 22.1? Неизбежно ли система ecryptfs повреждена? Как я могу это обнаружить, что еще я могу сделать?

Очевидно, малейшие изменения в вышеупомянутых командах могут привести к совершенно ужасным и скрытым ошибкам (или сообщениям)….

Аннотации

** Папка .ecryptfs отсутствовала в резервной копии, так как это была прямая копия /home/user back тогда, я просто скопировал из home/.ecryptfs/user/.ecryptfs в /backup1TB/.ecryptfs/home_user_backup/. В папке /backup1TB/home_user_backup/ было две ссылки на .Private и .ecryptfs к ранее упомянутой папке .ecryptfs.

.

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

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

Теория

eCryptfs — это инструмент для шифрования на уровне файловой системы, который предоставляет пользователям возможность шифровать отдельные файлы и директории. Он широко используется для защиты личных данных на уровнях систем пользователей. Ваша проблема, связанная с отображением вопросов при выполнении ls -la, может быть связана с некорректной расшифровкой данных из-за неправильной настройки параметров монтирования или отсутствия необходимых ключей шифрования.

Основные компоненты, на которые необходимо обратить внимание:

  • Ключевые подписи: ecryptfs_sig и ecryptfs_fnek_sig должны быть корректны и соответствовать данным в файлах, чтобы система могла корректно расшифровать данные. Любая ошибка в этих данных приведет к невозможности расшифровки.
  • Методы шифрования и длина ключа: убедитесь, что используете правильные алгоритмы шифрования и длину ключа, которые применялись при первоначальном шифровании.
  • Файлы заворачивания ключей: .ecryptfs/wrapped-passphrase должен быть доступен и правильно развернут для извлечения корректного passphrase.

Пример

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

  1. Идентификация ключевых данных: проверьте, какие идентификаторы и параметры использовались ранее, и попытайтесь применить их на текущей установке.

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

    • Версию eCryptfs и связанные с ним модули.
    • Все опции, такие как ecryptfs_cipher, ecryptfs_key_bytes, ecryptfs_passthrough и другие.
  3. Использование резервных копий: убедитесь, что у вас есть полная резервная копия .ecryptfs, и что она правильная и целая. Любое повреждение этих файлов может сделать расшифровку невозможной.

Применение

Сложность вашего случая заключается в специфике настроек и возможных несовместимостях между различными версиями дистрибутивов Linux. Рассмотрим пошаговый подход:

  1. Проверка входных данных:

    • Убедитесь, что имеется доступ ко всем необходимым файлам, включая .ecryptfs/wrapped-passphrase.
    • Проверьте правильность ввода паролей и ключевых данных.
  2. Перенастройка параметров:

    • Используйте ecryptfs-add-passphrase для добавления вручную ключевых данных и перепроверьте указание правильных сигнатур для ecryptfs_sig и ecryptfs_fnek_sig.
    • Проверьте, что длина ключа и алгоритмы шифрования совпадают.
  3. Отладка и диагностика:

    • Используйте команды dmesg и journalctl для поиска ошибок и предупреждений, связанных с eCryptfs, чтобы диагностировать проблемные моменты.
    • Пробуйте различные подходы монтирования, начиная с минимальных настроек, и постепенно добавляйте дополнительные параметры.
  4. Совместимость и обновления:

    • Возможно, проблема кроется в несовместимости версий или обновлениях системы. Рассмотрите переход на более старую версию до решения проблем или настройку виртуальной машины с прежним дистрибутивом для временного доступа к данным.
  5. Консультации и помощь сообществ:

    • Обратитесь в сообщества пользователей Linux, такие как форумы и Stack Exchange, где можно получить специфичный опыт от пользователей с аналогичными проблемами.

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

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

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