Skip to content

acompany-develop/ima-rtmr-extend

Repository files navigation

ima-rtmr-extend

IMA の測定を tsm-mr 経由で CC ランタイム測定レジスタに拡張するカーネルモジュール。

ドキュメント

要件

  • CONFIG_TSM_MEASUREMENTS=y (Linux 6.16+ または tsm-mr パッチ適用済みカーネル)
  • CONFIG_IMA=y, CONFIG_KPROBES=y, CONFIG_KRETPROBES=y

ビルド・使用

カーネルモジュールとして使用する場合

make
sudo insmod build/ima_rtmr.ko                # 自動検出
sudo insmod build/ima_rtmr.ko mr_path=/sys/class/misc/tdx_guest/measurements/rtmr2:sha384

カーネルモジュールは任意のタイミングでロードできます。ロード前の RTMR 値は /sys/kernel/ima_rtmr/initial で参照でき、Verifier はこれをリプレイの baseline に使えます。 詳細は既知の問題を参照してください。

カーネルに組み込む場合

# パッチ適用(v6.17 / v7.0 に対応)
kernel/apply-patch.sh /path/to/linux 7.0

# menuconfig で CONFIG_IMA_RTMR=y を有効化してビルド
make menuconfig   # Security -> Integrity -> IMA_RTMR
make

# パッチ除去
kernel/remove-patch.sh /path/to/linux 7.0

Ubuntu用の .deb パッケージをビルドする場合

Docker を使ってカーネルモジュールを組み込んだ Ubuntu 向けのカーネルパッケージをビルドできます。 詳細は ubuntu/README.md を参照してください。

開発

Nix flakedevShell でビルド・フォーマットツール一式が揃います。

nix develop          # gcc, make, kmod, treefmt (clang-format / shfmt) が利用可能
nix fmt              # ソース全体をフォーマット

.envrc を使う場合は direnv allow で自動的に devShell に入れます。

検証

# モジュールロード前の RTMR 値は sysfs で参照可能
baseline=$(sudo cat /sys/kernel/ima_rtmr/initial)

# IMA 計測をトリガー(バイナリ実行やファイル読み取り等)
# ...

# RTMR リプレイ検証(skip=0 で IMA ログ先頭から再生)
sudo ./validate.py "$baseline" 0

# Bash実装 (遅いです)
sudo ./validate.sh "$baseline" 0

sudo cat /sys/kernel/ima_rtmr/{disabled,extended_count,nmissed} でモジュール健全性を 確認できます。disabled=1 のときは RTMR と IMA ログの整合性が破綻しています。 詳細は 仕組み を参照してください。

ライセンス

Copyright (c) 2026 Acompany Co., Ltd.

本プロジェクトは GNU General Public License version 2 (GPL-2.0-only) の下で 配布されています。フルテキストは LICENSE を参照してください。 個々のファイルの先頭に SPDX-License-Identifier: GPL-2.0-only が記載されています。

About

Extend IMA measurements to CC runtime measurement registers via tsm-mr

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors