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

4182
ardabro

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

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

1 ответ на вопрос

9
Xen2050

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

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

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

    • auto-mount - если он существует, он говорит, что 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) и посмотрите, как файлы настроены для вас. И чтобы действительно погрузиться во все детали, которые вы, вероятно, никогда не хотели знать, посмотрите исходный код :

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

Похожие вопросы