Attestationって何?

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

Attestationとは日本語では「証明」「証拠」の意味で、Trusted ComputingではTPMPCR値を検証する作業を示す。
Attestationには2種類あり、ローカルとリモート、つまり、プラットフォーム上でローカルに実行される Local Attestationと、別のプラットフォームに対して行う Remote Attestationがある。


  • Local Attestationって具体的には?

Local Attestationとは「自分が自分であることの証明」になる。ソフトウェアが自身が改竄されていないかを簡単&確実に検証する事は実は非常に難しい。例えば、自分で自分のハッシュ値を計測することは可能である。だが、ハッシュ値の期待値が本物か、ハッシュ値の計算が正しいのか?と疑問は広がり際限がない。
こうした状況を打破するのがTPMの役割である。TPMのSEAL/UNSEAL関数を使えば、過去のある時点の設定(SEAL)した状態と同じであれば、TPMのリソース(RSA鍵やNVメモリ)にアクセスすることができる。

  • Remote Attestationって具体的には?

プラットフォームを「信頼できる」別のプラットフォームで検証するのがRemote Attestationである。TPMにはQUOTE関数があり、PCR値に署名を施して出力することが可能であり、この出力と、署名鍵の証明書があれば、PCRが正規のTPM由来であることを第三者が検証する事ができる。

  • AIKって何?

AIK Attestation Identity Key でPCRの署名専用のRSA鍵である。本来、この鍵は第三者(PrivacyCA)によりTPM由来であることを確認、その旨証明書を発行してもらい使用するが、残念ながら商用のPrivacyCAサービスは存在しない。TPMにはEK(Endorcement Key)と呼ばれる。TPM固有の鍵があるが、この鍵でPCRを署名すると、検証者にTPMが特定されてしまう。そこで、PrivacyCAを経由し。AIKを利用することで、Attestation に匿名性を持たせている。

  • AIKの生成が面倒なんですが?

YES.
最もめんどくさい上に、PivacyCAも存在しない。
実験サイトとして、http://privacyca.com/ がある。サンプルコードもあるので猛者の方はぜひお試しを

  • EKの証明書はどこ?

ないかもよ。
残念ながらPCベンダーは現在EK証明書を発行していない。
ただ、InfineonTPMに関しては、そのEK証明書がTPMのNVRAMに収まっているので、AIK生成に挑戦できる。
ちなみに、日本国内ベンダーのPCはInfineonTPMを採用している例が多い。

  • AIK以外もAttestationで使える?

YES.
PCRの署名は別にAIKでなくてもOKである。TPMに普通の署名鍵を作成し、Attestation で利用してもOK。要は、検証者が信用できる鍵でPCRを署名すれば良い。