TPMのメモ
TPM(Trusted Platform Module)はPCのような情報機器におけるセキュリティプロセッサの国際標準(ISO)で、基本的にセキュリティ要件と機能性を規定している。このため、TPM準拠のソフトウェア実装もあり、システムのTEEや、分離された仮想マシンで実行されることもある。
ドキュメンテーション
... 何か書いた方が良いかな。。
TPM-js
ブラウザ上でTPMエミュレーターを動作して機能のoverviewができる、Google製のかなりよくできたSPAがある。 ただしFirefoxでは正常に動作しなかった。Chrome推奨。 今日は動いた。
元のGitHubプロジェクトは既にarchiveされている https://github.com/google/tpm-js 。実装はIBM製のTPMエミュレーター(ibmtpm) + インテルのAPI実装(TPM TSS)で、グルーコードを用意して接続している。
A practical guide to TPM2.0
PDFを無料DLできる。
各社OS
... つっても表向きにTPMを活用しているのはWindowsくらいしかない。
Windows
MSは自社のセキュリティファームウェアであるPlutonもTPM2.0準拠に揃えている。自社のHypervisorであるHyper-Vも仮想TPMを提供している。
Android
AOSPにはTCG提供のコードが含まれてはいるものの、AndroidのHAL自体はTPMを要求していない。
Apple devices
基本的には自社の実装である Secure Enclave を採用している。 これはTPM準拠でない。
Parallelsのように、mac上のVMでセキュアな仮想TPMを提供しているベンダもある。
TPMエミュレーター
Wikipediaにリストがある https://en.wikipedia.org/wiki/Trusted_Platform_Module#TPM_software_libraries 。
ms-tpm-20-ref
(エミュレーターではない) MS製の公式TPM2.0リファレンス実装。TPMの "中身" は下記のようなライブラリを使うことを想定している。Google製のTPMライブラリであるgo-tpmもバインディングを提供している https://github.com/google/go-tpm-tools/tree/main/simulator 。
wolfTPM
(エミュレーターではない) 組込み向けのTPMライブラリ。
tpm2-tss
TCGのAPIを提供するライブラリ。バックエンドは選択可能であり、下記のTSS.MSRやIBMTSS、swtpmが選択できる。
swtpm
機能性を提供する libtpms
と、キャラクタデバイス等APIを担当する swtpm
に分かれる。
IBMTSS
IBM製のTPMエミュレーター。
TSS.MSR
Microsoft製のTPMエミュレーター。多分自身のリファレンス実装向けにバイナリ https://www.microsoft.com/en-us/download/details.aspx?id=52507 も配付されている。