Measurementって何?

Trusted Computing な ぜ な に シリーズ その3

Measurementとは、ソフトウェアの計測の事です。実際には起動するコード(なんか)のハッシュ値を求めて、TPMに記録しておく行為をさします。ソフトウェアのコード署名も、なんだかんだで計算したハッシュ値に公開鍵で署名をしますので似ています。コード署名と基本的な目的は同じですが、しいていえば、計測したハッシュ値をチェックするタイミングが異なります。コード署名では、主にコードを導入する際にその由来を確認します。Measurementではコードを使う際に、計測します。計測結果はネットワークの認証など、適当なタイミングでチェックします。

  • 実行形式(EXE)だけMeasureすればいいの?

場合によります。
ソフトウェアの挙動を計測したハッシュ値によって確実に把握したいのであれば、環境変数や設定ファイル、起動OPTIONなど、(セキュリティに関わる)ソフトウェアの挙動に影響するデータすべてのハッシュ値を記録する必要があります。設定ファイルなどは、変更が加えられることが多いので、そのハッシュ値だけでは判断が難しい場合が多く、悩ましい所です。

本質的には、簡単な計測で、そのソフトウェアのセキュリティ的な挙動が特定できるようにソフトウェアが構築されているとTrusted Computingでは扱い易いと言えます。

  • プレリンクは使える?

Linuxでは、アプリの起動が早くなるので、プレリンクという手法がよく利用されています。
しかしながら、プレリンクを行うと、実行形式に変更が加わるので、ハッシュ値が変化してしまい、検証が難しくなります。
Linux-IMAで計測する際は、プレリンクはOFFにするのが無難です。組み込みOSなどでプレリンク済みのOSイメージを利用する場合は、端末すべてで同じプレシンク済みバイナリを利用するのでうまく管理すれば問題はないかもしれません。

NO。
TPMを使ってもSHA1の計算は可能ですが、ムチャクチャ遅いです。CPUを使いましょう。ただし、このハッシュ値の計算を行うコードは、計測済みである必要があります。Trusted Bootで計測されるようにシステムをデザインする必要があります。ココで使うハッシュ関数はCPUで高速に動作するようにチューニングされていますので、かなり高速に計算でき、この処理のオーバーヘッドは一般には無視することができます。(ただし、メモリに比して巨大なファイルを計測するような場合は注意が必要です)

  • TOCTOUは関係する?

TOCTOU競合条件(TOCTOU:time of check - time of use)と呼ばれるチェックと実際の使用の時間差に起因する脆弱性があります。Trusted Computing の Measurementでも計測と実際の使用には時間差があり注意が必要です。ちなみに、IMAの論文では、CheckをMeasureと置き換えて、TOMTOU と呼んでいます。