Skip to content

TPMが変化するときの計算式とイベント

各PCRの初期値は、仕様では具体的な値を明記していないらしいが一般的に0で初期化されている。各PCRの値を更新するときは以下の式を用いる。

$PCR[i] = hash(PCR[i]+digest)$

digest はイベントのデータと書かれてあるが具体的には何なのか。

例えばファームウェアやカーネルなど、各PCRの保護するデータに変更があったときにPCRの値が変わる。このときシステムを再起動してはじめて値が変わるので、systemd-cryptenroll 等で再起動前に保護を更新しても意味がない。

実際の更新イベントは /sys/kernel/security/tpm{n}/binary_bios_measurements から履歴を読める。

Terminal window
tpm2 eventlog /sys/kernel/security/tpm0/binary_bios_measurements