TPM
table:TPM1.2 vs TPM2.0
公開鍵暗号 RSA 1024 yes optional
公開鍵暗号 RSA 2048 yes yes
公開鍵暗号 ECC P256 no yes
公開鍵暗号 ECC BN256 no yes
共通鍵暗号 AES 128 optional yes
共通鍵暗号 AES 256 optional optional
ハッシュ SHA1 yes yes
ハッシュ SHA256 no yes
HMAC SHA1 yes yes
HMAC SHA256 no yes
TPM 1.2
Endorsement Key
Endorsement Key(EK)はTPMの持つ署名(signing)および検証(atestation)のための鍵ペアであり、TPMにハードウェア的に焼きこまれている唯一の鍵ペア。
TPMによってはEKの公開鍵(EKPub)を含む証明書(EKCert)を持つものもある。
いずれにせよEKの秘密鍵(EKPriv)はエクスポートすることができない。
Storage Root Key
Storage Root Key(SRK)はTPMの持つ暗号化および復号のための鍵ペアであり、TPMのリセット時に生成される。
SRKもエクスポートすることはできない。TPMをリセットしてもEKは消去されない。
SRKから始まる鍵の階層構造でストレージを暗号化すされることが想定されている。そのルートであるSRKを生成した者がデバイスの所有者である。
TPMをリセットすることはSRKを生成することであり、所有者を確定することでもある。
すなわちTPM 1.2においてデバイスの所有者はすなわち暗号化されたストレージの所有者ということである。
TPM 2.0
所有者
TPM 1.2ではストレージの暗号化のための鍵の階層構造だけがデバイスの所有者を決めていた。
TPM 2.0でも署名用の鍵ペアと暗号化用の鍵ペアがあるという点はTPM 1.2と同じだが、階層構造がEndorsement Hierarchy(EH)、Storage Hierarchy(SH)、Platform Hierarchy(PH)、Null Hierarchy(NH)の4つある。それぞれに異なる所有者があり得るという考え方である。
それぞれの鍵の階層構造のルートに位置する鍵ペアをPrimary Keyと呼ぶ。
Primary KeyはTPMのSeedsからKDF(key-derivation function)によりいくつでも作り出すことができる。
TPM 2.0では複数のSRKをNV Storageに記憶しておくことができる。
プロビジョニング
プロビジョニングでは鍵や証明書の生成が行われる。
プロビジョニングは通常のTPMのライフタイムにおいて一度だけ行われる。
https://scrapbox.io/files/5fd775f2a0e48b001cd99e48.png
ロックアウト
TPMでは不正な操作に対する何らかの保護機構を設けることがTCGにより定められている。具体的な保護の方法はTPMの製造元による。一般的には何らかの秘匿すべき情報の照合に失敗するなどの認証に関するエラーが発生した場合にTPMの応答時間を遅らせることで保護とする。TPMによっては過去のすべてのエラーを記録しようとするものもあるし、一定時間内のエラーのみを記録するものもあるが、いずれにせよ繰り返しエラーが起きると事実上操作不能の状態になる。これをTPMのロックアウトという。TCMの標準ではTPMの所有者は少なくとも一回はTPMのロックアウトをリセットできるよう定められている。Windowsであればtpm.mscスナップインやunblock-tpmコマンドを使う。 TPM Key Attestation
Active Directoryにマシンが参加する際には秘密鍵がTPMで保護されたものかどうかを検証するTPM Key Attestationを行うことができる。TPMで保護された秘密鍵はエクスポートできないため安全性の向上に寄与する。 参考資料