我正在运行 debian 10、xfce、gnome-keyring、ssh-agent、LUKS 分区。
我使用 gnome-keyring 的原因是我不想在重启时输入 ssh 密钥密码。这是因为周围有很多闭路电视摄像机。我担心某种秘密的闭路电视摄像机会记录我输入的内容。我总是避免输入密码,并尽量减少输入时间。
在当前设置下,我至少需要输入两个密码。一个用于 LUKS 分区,一个用于 lightdm 中的系统登录。
今天,我正在考虑减少一个密码要求并让系统自动登录,这样就不再需要输入系统用户登录密码了。我认为这仍然与以前处于相同的安全级别,因为 LUKS 分区加密仍然存在。(或者不太安全,但使用 LUKS 仍然安全)
一旦我启用自动登录,我发现 gnome 密钥环不再自动解锁。如果我想使用当前设置解锁它,我必须再次输入解锁密码,这是我想避免的第二个密码。
通过谷歌搜索,我发现我可以简单地从海马中的 gnome 密钥环中删除解锁密码,然后通过自动登录使其解锁。
以上是我目前情况的详细情况。所以问题来了。我不知道如果我从 gnome 密钥环中删除解锁密码,后台会发生什么。
我使用 gnome keyring 的原因是我不希望系统中任何正在运行的程序能够直接从文件系统访问 ssh 私钥~/.ssh/id_rsa
。有些人可能会认为程序仍然可以从内存中获取密钥。我并不关心它是如何工作的,只要这能提高某种安全性就行。只要未加密的 ssh 密钥不存储在文件系统的某个地方,我就没问题。我担心从 gnome-keyring 中删除密码会使未加密的文件以纯文本格式存储在文件系统中。从 gnome keyring 中删除密码对存储(文件系统)有什么影响吗?
我其实并不关心有没有密码来解锁密钥环,因为我有 LUKS 分区加密,除非人们知道我的 LUKS 密码,否则他们无法使用密钥环。但我确实关心如果我删除密钥环密码,任何正在运行的程序是否可以直接从文件系统访问一些纯文本密钥。
我希望我已经清楚地表达了这个问题,非常感谢您的帮助。
答案1
我不知道如果我从 gnome 密钥环中删除解锁密码,后台会发生什么
密钥环的密码是不是直接用作 SSH 密钥的密码。它仅用于加密单个文件 - 位于 的数据库~/.local/share/keyrings/login.keyring
。
您的所有 SSH 密钥和其他文件将保持使用原始密码加密。
(旧系统可能有两个单独的密钥环“登录”和“默认”。在这种情况下,您只需要解密“登录”密钥环,因为它还存储了所有其他密钥环的密码。)
我其实并不关心有没有密码来解锁密钥环,因为我有 LUKS 分区加密,除非人们知道我的 LUKS 密码,否则他们无法使用密钥环。但我确实关心如果我删除密钥环密码,任何正在运行的程序是否可以直接从文件系统访问一些纯文本密钥。
对此我有两个不同的答案,但都是坏消息:
第一个问题是你的密码是唯一加密密钥来源GNOME Keyring 可以使用它。如果您删除密码,GNOME Keyring 将被迫以完全未加密的方式存储其密码数据库。(它甚至会将
keyrings/login.keyring
二进制数据库转换为文本格式,以使这一点非常清晰。)这不会直接改变您的 SSH 密钥文件的任何内容:如果它们之前已加密,则之后仍会加密。但它们的加密密码,以及所有其他密码和密码(甚至可能是您的 GnuPG 密钥密码)都将存储在 GNOME Keyring 的数据库中以纯文本形式。
因此,如果您最担心的是直接文件系统访问,那么是的,您的密钥可能会被盗 - 攻击者现在只需要窃取一个额外的文件。
第二个问题是……第一个问题根本不重要,因为常规应用程序不限只能访问自己的密钥环条目。只要你的 GNOME 密钥环已解锁,任何非 Flatpak 程序都可以使用官方 API 查询密钥环中存储的任何条目并获取所需的任何存储密码,没有需要窥探内存或其他诡计。从 CLI 尝试一下:
secret-tool search --all xdg:schema org.freedesktop.Secret.Generic secret-tool search --all xdg:schema org.gnupg.Passphrase
因此,密钥环密码仅用于防止离线攻击(并且在使用 LUKS 时是多余的)——它从来没有用于防止正在运行的系统上的恶意软件。
以下是一些提高安全性的想法(主要假设您防范的是一般漏洞/病毒/蠕虫而不是有针对性的攻击):
如果可能的话,通过 Flatpak 安装应用程序。默认情况下,它们被限制在无法访问你的文件的容器中和也无法访问你的密钥环。
Flatpak 中没有的应用程序可以在不同的 UID 下运行(例如通过 Xvnc 或 Xephyr 使它们显示在主屏幕上)。有些人以这种方式运行 Firefox,因此有很多教程。
SSH 密钥仅可加载进入ssh-agent 但未提取出去除此之外,还可以配置 AppArmor 或 SELinux,以防止任何除‘ssh-add’之外的进程无法访问
~/.ssh/id_*
文件。您可以将 RSA 或 ECDSA 密钥存储在专用硬件令牌中 - 例如,如果您的笔记本电脑有 TPM 芯片。(如果没有,那么支持 PIV/OpenPGP 的 Yubikey 可以以不同的方式完成相同的工作。)就像 ssh-agent 本身一样,令牌不会允许您取回原始密钥 - 它只提供签名操作。
(理论上,FIDO/U2F 令牌的工作方式相同,但它们只允许以非常特定的格式签名数据,因此不能重新用作普通的 SSH 密钥。最新版本的 OpenSSH能使用采用新
sk-*
密钥类型的 FIDO 令牌,但所有服务器也必须首先升级以支持它们。)缺乏硬件支持,你可以将 ssh-agent 与 SoftHSM 虚拟智能卡结合起来,但它仍然是软件但让它在专用 UID 下运行非常容易。这样,您的主 UID 将无法访问 SoftHSM 的数据库,并且只能执行其 PKCS#11 模块允许的操作。
我猜是 Qubes OS?