eCryptfs зашифрованный дом - объяснение

9

Я пытаюсь понять, как работает ecryptfs, и документация на ecryptfs.org не помогает. Может быть, кто-то сможет объяснить, как это действительно работает. Конечно, я знаю об этой скрытой структуре каталогов .Private / .ecryptfs. Мои вопросы более подробны:

  • Как система узнает, что мой дом зашифрован, и расшифровывает его при входе в систему?
  • Как он ищет ключевые каталоги (каталоги с зашифрованными данными, точку монтирования для них (иногда это home, иногда / home / Private), каталог с завернутой парольной фразой и т. Д.). Эти каталоги обычно помещаются в /home/.ecryptfs/ и связаны с домом. Какое место является ключом? Являются ли имена каталогов ".ecryptfs" и ".Private" зарезервированными и жестко заданными или настраиваемыми?
  • О связке ключей: предположим, у меня есть несколько ключей в моей связке ключей - как она сопоставляет правильный ключ с определенным зашифрованным каталогом?
ardabro
источник

Ответы:

11

Это описывает стандартную зашифрованную домашнюю настройку. Если вы хотите использовать разные пароли или папки, алгоритм шифрования, размер ключа и т. Д., Вы можете использовать их mount.ecryptfsнапрямую.

Когда вы создаете пользователя с зашифрованным домом или используете ecryptfs-migrate-homeсуществующего пользователя, он использует eCryptfs и устанавливает каталог, /home/.ecryptfs/содержащий папки с «настоящим домом» нового пользователя, /home/.ecryptfs/user/содержащий:

  • ваши фактические зашифрованные файлы /home/.ecryptfs/user/.Private/и каталог конфигурации eCryptfs, /home/.ecryptfs/user/.ecryptfs/содержащий:

    • автонастройка - если она существует, она указывает ecryptfs-mount-privateзапускаться при входе в систему, монтируя личную (домашнюю) папку. Видетьman ecryptfs-mount-private

    • auto-umount - если он существует, он указывает ecryptfs-umount-privateзапустить при выходе из системы, размонтируя приватную (домашнюю) папку. Видетьman ecryptfs-umount-private

    • Private.mnt - файл конфигурации, считываемый mount.ecryptfs_privateпри входе в систему, который определяет, где должен быть смонтирован зашифрованный каталог. Если вы зашифровали свой домашний каталог, это будет $HOME.
    • Private.sig - содержит подпись ключевой фразы точки монтирования. Он предоставляет безопасный и надежный механизм для eCryptfs, чтобы определить, используете ли вы правильный ключ или нет. (См. Q о Private.sig и Private.mnt )
    • wrapped-passphrase - фактическая (случайная) парольная фраза eCryptfs, зашифрованная («обернутая») вашей парольной фразой логина

Обычный домашний каталог /home/user/содержит только ссылки на /home/.ecryptfs/user/.ecryptfsи /home/.ecryptfs/user/.Privateи еще две ссылки на файл справки & /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop(только что запускается ecryptfs-mount-private).

eCryptfs настраивает PAM (см. файлы в /etc/pam.d/), чтобы автоматически искать зашифрованные домашние папки /home/.ecryptfs/и монтировать и размонтировать зашифрованные домашние папки при входе / выходе из системы, в зависимости от того, существуют ли файлы auto-mountи auto-umount. Для получения дополнительной информации см. Исходный код eCryptfs и сценарии preinst и postrm пакета .deb (см. Выше), а также этот клип из man ecryptfs-setup-private:

[T] модуль pam_ecryptfs.so для стека PAM, который будет автоматически использовать идентификационную фразу входа в систему, чтобы развернуть кодовую фразу монтирования, добавить кодовую фразу в связку ключей пользователя и автоматически выполнить монтирование. Смотрите pam_ecryptfs (8).

  • На этой странице справки Ubuntu есть инструкции о том, как « автоматически монтировать зашифрованную файловую систему ecryptfs при загрузке ... используя /root/.ecryptfsrcфайл, содержащий параметры монтирования, вместе с файлом парольной фразы, хранящимся на USB-ключе ».

После распаковки ключи хранятся в вашем кольце ключей пользователя, вы можете посмотреть на него keyctl show, так как, если он использовал корневой набор ключей ( sudo keyctl show), администратор мог бы узнать ключевую фразу. Вы можете использовать, ecryptfs-unwrap-passphraseчтобы увидеть фактическую парольную фразу ecryptfs. eCryptfs расшифровывает ваши файлы, используя соответствующую подпись ключа (параметры ecryptfs ecryptfs_sig=(fekek_sig)и ecryptfs_fnek_sig) в файле Private.sig.


Больше информации

Ubuntu имеет хорошие справочные файлы, такие как зашифрованные файлы в вашем доме и eCryptfs в руководстве по Ubuntu Server .

В Arch Linux есть отличная справка, смотрите https://wiki.archlinux.org/index.php/System_Encryption_with_eCryptfs.

И посмотрите manстраницы ecryptfs(онлайн там или в вашей системе) и все его инструменты, особенно ecryptfs-setup-private.

Вы можете добавить нового пользователя с зашифрованным домом, используя adduser --encrypt-home(Для получения дополнительной информации обратитесь к опции -b of ecryptfs-setup-private) и посмотрите, как файлы настроены для вас. И чтобы действительно погрузиться во все детали, которые вы, вероятно, никогда не хотели знать, посмотрите исходный код :

Xen2050
источник
В / etc / crypttab у меня есть только одна строка для cryptswap; ничего особенного в fstab тоже. Мой дом зашифрован. До сих пор понятия не имею, как система узнает, что мой дом зашифрован, а что-то специальное необходимо при входе в систему.
Ардабро
Я думаю, что это автоматически делается, когда дом смотрит на @login. Вы прочитали справку по archlinux, ничего там нигде не помогло? Но, пожалуйста, определите «что-то особенное», я и «профессор Google» не знакомы с ним. Сокращение от "что-то особенное"? Как что?
Xen2050 12.12.14
Что особенно важно, это взять ключ и смонтировать зашифрованный каталог, который является дополнительным путем в процессе входа в систему. Arch Wiki была очень полезной. Кроме того, я провел небольшое исследование исходного кода ecryptfs. Но я до сих пор не знаю, где находится ключевая инструкция «если» в процессе входа в систему и что именно она проверяет.
Ардабро
Это немного больше похоже на то, как linux найдет и использует любую домашнюю папку, я думаю, что некоторая информация хранится /etc/passwd(по крайней мере, home & shell), выглядит ли это по-другому для зашифрованного домашнего пользователя? Я добавлю немного информации о связке ключей ядра в мой ответ, ecryptfs хранит ключи там, по-видимому,
Xen2050 12.12.14
1
Извините, я пропустил обновление. Отличное объяснение. Большое спасибо!
Ардабро