Нужен ли мне пароль для набора ключей на однопользовательском компьютере, зашифрованном с помощью Luks?

Нужен ли мне пароль для набора ключей на однопользовательском компьютере, зашифрованном с помощью Luks?

Название говорит само за себя, но позвольте мне немного расширить свои познания:

Мне интересно, как пароль на связке ключей защищает мои ключи. Конечно, он шифрует файл-контейнер, так что никто другой не может получить к нему доступ. Но он также расшифровывается после того, как я ввожу свой пароль на связке ключей. Так что на самом деле, пока я вхожу в систему, ключи могут быть украдены каким-нибудь вредоносным приложением (по крайней мере, приложение с правами root должно иметь такую ​​возможность).

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

Вопрос в следующем: могут ли вредоносные приложения получить доступ к данным в моей связке ключей, пока они расшифрованы? Если да, нужен ли мне вообще пароль для моей связки ключей, если мой диск уже зашифрован с помощью Luks, и я единственный, кто пользуется моим компьютером?

И если пароль будет более надежным, возможно ли сделать так, чтобы он разблокировался автоматически, используя пароль моей учетной записи (или что-то в этом роде) после входа в систему?

(Я не использую менеджер входа в систему, я автоматически запускаю i3wm после входа в систему через TTY, так что будет ли возможна автоматическая разблокировка для этой настройки?)

решение1

Могут ли вредоносные приложения получить доступ к данным в моей связке ключей, пока они расшифрованы?

На практике (в настоящее время) да, могут. Текущая конструкция (или ее отсутствие) пользовательских сеансов в Linux затрудняет для gnome-keyring-daemon определение того, какая программа пытается получить к ней доступ; это выполнимо в некоторой степени для скомпилированных программ, но, например, любое приложение, написанное на Python, неотличимо от любого другого приложения, написанного на Python. Поэтому, хотя gnome-keyring и сделалсначалаесть белый список приложений, в текущих версиях его больше нет.

В конечном итоге это должно быть улучшено за счет проектов контейнеров приложений, таких как Snap или Flatpak.

Если да, то нужен ли мне вообще пароль для моей связки ключей, если мой диск уже зашифрован с помощью Luks и я единственный, кто пользуется моим компьютером?

Я бы сказал, да.

Как упоминалось выше, любая программа может просто отправить сообщение D-Bus и запросить у gnome-keyring-daemon любой секрет. (В некоторых случаях это даже работает как функция.)

Однако было обнаружено немало уязвимостей в системе безопасности, с помощью которых уязвимая программа (например, веб-браузер) могла быть использована дляукрасть ваши файлы, хотя по-прежнему не имеет возможности запускать команды или отправлять сообщения D-Bus. Известно, что вредоносное ПО крадет незашифрованные ключи SSH ( ~/.ssh/id_rsa) или кошельки Bitcoin Core.

Точно так же, если данные не зашифрованы, вы подвергаетесь ~/.local/share/keyrings/login.keyringриску кражи с помощью уязвимостей веб-браузера и т. п.

(Я не использую менеджер входа в систему, я автоматически запускаю i3wm после входа в систему через TTY, так что будет ли возможна автоматическая разблокировка для этой настройки?)

Автоматическая разблокировка gnome-keyring во всех случаях выполняется через PAM. Модуль с именем pam_gnome_keyring.soполучает ваш пароль как часть процесса входа в систему и запускает начальный демон keyring.

Модуль PAM следует добавить туда /etc/pam.d, куда ваш дистрибутив Linux обычно добавляет общие модули, или просто в loginфайл (который предназначен специально для входа в консоль и Telnet).

В группе auth (в блоке «Дополнительно» в стиле Debian common-auth; в противном случае — как последний модуль) пароль будет сохранен в памяти:

[...]
auth optional pam_gnome_keyring.so only_if=login

В группе сеансов (опять же, блок «Дополнительный» для Debian, в противном случае последний модуль) для запуска используется сохраненный парольgnome-keyring-daemon:

[...]
session optional pam_gnome_keyring.so only_if=login auto_start

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