0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

systemd-creds で TPM2 秘密鍵による暗号化・復号化

0
Posted at

はじめに

systemd-creds コマンドでファイル単位で TPM2 の秘密鍵を使った暗号化・復号化をする方法を説明します。

LUKS 等でパーティションごと暗号化してれば、こんなことは不要ですが、私は、隠したいファイルだけ隠せれば良い派です。

コマンド説明

詳しくは man を叩いてもらうとして、

systemd-creds.socket の状態確認

> systemctl status systemd-creds.socket
● systemd-creds.socket - Credential Encryption/Decryption
     Loaded: loaded (/usr/lib/systemd/system/systemd-creds.socket; static)
     Active: active (listening) since Sat 2026-03-21 09:27:53 JST; 5min ago
 Invocation: a00bf54dab3f4034af2ab44e22001dee
       Docs: man:systemd-creds(1)
     Listen: /run/systemd/io.systemd.Credentials (Stream)
   Accepted: 0; Connected: 0;

普通は勝手に開いてると思いますが、ミニマリストは mask しちゃってるかもしれないので unmask して start しましょう。

暗号化

ファイル hoge を tpm2 の秘密鍵で暗号化し、その結果を hoge.tpm2 に出力します。

systemd-creds encrypt hoge hoge.tpm2 --with-key=tpm2

root のログインパスワードを入力する必要があります。

復号化

さっき作った hoge.tpm2 を複合化します。ファイルの中身が標準出力されます。

systemd-creds decrypt hoge.tpm2

またまた root のログインパスワードを聞かれます。

聞かれたくないなら、次の polkit ルールを作っておきます。tss または wheel グループに所属してるユーザは認証をスキップします。

/etc/polkit-1/rules.d/10-systemd-creds.rules/10-systemd-creds.rules

polkit.addRule(function(action, subject) {
    if (action.id == "io.systemd.credentials.decrypt" &&
        (subject.isInGroup("tss") || subject.isInGroup("wheel"))) {
        return polkit.Result.YES;
    }
});

何を守りたいかによりますが、攻撃者にすでに自分の ID でログインを突破された上で、それでもなお、そのファイルが開かれてしまう、というのを防ぎたければ、root のパスワードを打ち込ませることにも意味がなくはないと思います。

一方、SSD を抜き去られた場合に、そのファイルを守りたいなら、root のパスワードを打ち込ませる意味はありません。TPM2 の秘密鍵を盗むことはできないからです。

補足 GPG との比較

ファイルの暗号化で有名なのは GPG なので比較です。

項目 GPG TPM
秘密鍵のポータル性 自由 その TPM の外には出せない
復号化のポータル性 秘密鍵さえあれば、どこでもできる その TPM のあるハードでのみ可能
考えられる用途 どこでも使いたいファイル、無くしたくないファイルの暗号化 その PC でのみ使えれば良いファイル、また別途作れば良いファイルの暗号化
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?