在 luks 加密的单用户机器上我需要密钥环密码吗?

在 luks 加密的单用户机器上我需要密钥环密码吗?

标题已经说明了一切,但让我再详细阐述一下:

我想知道密钥环密码是如何保护我的密钥的。当然,它会加密容器文件,所以其他人都无法访问它。但在我提供密钥环密码后,它也会被解密。所以事实上,当我登录时,密钥可能会被一些恶意应用程序窃取(至少具有 root 权限的应用程序应该能够做到)。

当然,我知道,输入密码后密钥文件本身不会被替换为解密版本,但必须在内存中解密。

问题是:恶意应用程序是否可以在解密密钥环时访问其中的数据?如果是这样,当我的磁盘已使用 luks 加密且只有我一人使用我的计算机时,我是否还需要密钥环密码?

而且,如果密码更安全,是否可以在我登录后使用我的帐户密码(或类似密码)自动解锁?

(我没有使用登录管理器,而是通过 TTY 登录后自动启动 i3wm,所以此设置也可以自动解锁吗?)

答案1

恶意应用程序可以在解密我的密钥环时访问其中的数据吗?

实际上(目前),是的,他们可以。Linux 中用户会话的当前设计(或缺乏设计)使得 gnome-keyring-daemon 很难确定哪个程序正在尝试访问它;对于编译程序来说,这在某种程度上是可行的,但是例如,任何用 Python 编写的应用程序都与任何其他用 Python 编写的应用程序没有区别。因此,尽管 gno​​me-keyring 确实首先有一个应用程序白名单,当前版本不再有。

最终,这一点应该通过诸如 Snap 或 Flatpak 之类的应用程序容器项目来改进。

如果是这样,当我的磁盘已经经过 luks 加密并且只有我一个人使用我的电脑时,我是否还需要为我的密钥环设置密码?

我认为是的。

如上所述,任何程序都可以发送 D-Bus 消息并向 gnome-keyring-daemon 询问任何秘密。(在某些情况下,它甚至可以作为一项功能。)

然而,存在相当多的安全漏洞,可以利用易受攻击的程序(例如网络浏览器)来窃取你的文件,但仍然无法运行命令或发送 D-Bus 消息。众所周知,恶意软件会窃取人们未加密的 SSH 密钥(~/.ssh/id_rsa)或比特币核心钱包。

同样,如果没有加密,您就有~/.local/share/keyrings/login.keyring可能通过网络浏览器漏洞等被盗。

(我没有使用登录管理器,而是通过 TTY 登录后自动启动 i3wm,所以此设置也可以自动解锁吗?)

gnome-keyring 的自动解锁在所有情况下都是通过 PAM 完成的。名为 的模块pam_gnome_keyring.so在登录过程中接收您的密码,并启动初始密钥环守护程序。

应将 PAM 模块添加到/etc/pam.d您的 Linux 发行版通常添加通用模块的位置,或者仅添加到文件login(专用于控制台和 telnet 登录)。

在 auth 组中(在 Debian 风格的“附加”块中common-auth;否则作为最后一个模块)它会将密码存储在内存中:

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

在会话组中(同样,对于 Debian 来说,是“附加”块,否则是最后一个模块),它使用存储的密码来启动gnome-keyring-守护进程

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

相关内容