luks で暗号化されたシングルユーザー マシンではキーリング パスワードが必要ですか?

luks で暗号化されたシングルユーザー マシンではキーリング パスワードが必要ですか?

タイトルがすべてを物語っていますが、もう少し詳しく説明させてください。

キーリング パスワードがどのようにしてキーを保護しているのか疑問に思っています。確かに、コンテナー ファイルは暗号化されるため、他のユーザーはアクセスできません。しかし、キーリング パスワードを入力した後は、暗号化も解除されます。そのため、実際には、ログインしている間に、悪意のあるアプリによってキーが盗まれる可能性があります (少なくとも、ルート権限を持つアプリは盗むことができるはずです)。

もちろん、パスワードを入力した後、キー ファイル自体は復号化されたバージョンに置き換えられるのではなく、メモリ内で復号化される必要があることは承知しています。

質問は、キーリングが復号化されている間に、悪意のあるアプリがキーリング内のデータにアクセスできるかということです。もしそうなら、ディスクがすでに luks 暗号化されていて、コンピューターを使用しているのが自分だけの場合、キーリングにパスワードは必要ですか?

また、パスワードがより安全である場合、ログイン後にアカウント パスワード (または類似のパスワード) を使用して自動的にロックを解除することは可能ですか?

(私はログイン マネージャーを使用しておらず、TTY 経由でログインした後に i3wm を自動的に起動しているので、この設定でも自動ロック解除は可能でしょうか?)

答え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.keyringWeb ブラウザの脆弱性などによって盗まれる危険があります。

(私はログイン マネージャーを使用しておらず、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 キーリングデーモン:

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

関連情報