Open4

TPMのメモ

okuokuokuoku

TPM(Trusted Platform Module)はPCのような情報機器におけるセキュリティプロセッサの国際標準(ISO)で、基本的にセキュリティ要件と機能性を規定している。このため、TPM準拠のソフトウェア実装もあり、システムのTEEや、分離された仮想マシンで実行されることもある。

okuokuokuoku

ドキュメンテーション

... 何か書いた方が良いかな。。

TPM-js

ブラウザ上でTPMエミュレーターを動作して機能のoverviewができる、Google製のかなりよくできたSPAがある。 ただしFirefoxでは正常に動作しなかった。Chrome推奨。 今日は動いた。

https://google.github.io/tpm-js/

元のGitHubプロジェクトは既にarchiveされている https://github.com/google/tpm-js 。実装はIBM製のTPMエミュレーター(ibmtpm) + インテルのAPI実装(TPM TSS)で、グルーコードを用意して接続している。

A practical guide to TPM2.0

https://link.springer.com/book/10.1007/978-1-4302-6584-9

PDFを無料DLできる。

okuokuokuoku

各社OS

... つっても表向きにTPMを活用しているのはWindowsくらいしかない。

Windows

https://learn.microsoft.com/ja-jp/windows/security/hardware-security/tpm/trusted-platform-module-overview

MSは自社のセキュリティファームウェアであるPlutonもTPM2.0準拠に揃えている。自社のHypervisorであるHyper-Vも仮想TPMを提供している。

Android

AOSPにはTCG提供のコードが含まれてはいるものの、AndroidのHAL自体はTPMを要求していない。

https://android.googlesource.com/platform/external/tpm2/+/refs/heads/main

Apple devices

基本的には自社の実装である Secure Enclave を採用している。 これはTPM準拠でない

https://support.apple.com/ja-jp/guide/security/sec59b0b31ff/web

Parallelsのように、mac上のVMでセキュアな仮想TPMを提供しているベンダもある。

https://kb.parallels.com/jp/122702

okuokuokuoku

TPMエミュレーター

Wikipediaにリストがある https://en.wikipedia.org/wiki/Trusted_Platform_Module#TPM_software_libraries

ms-tpm-20-ref

https://github.com/microsoft/ms-tpm-20-ref

(エミュレーターではない) MS製の公式TPM2.0リファレンス実装。TPMの "中身" は下記のようなライブラリを使うことを想定している。Google製のTPMライブラリであるgo-tpmもバインディングを提供している https://github.com/google/go-tpm-tools/tree/main/simulator

wolfTPM

https://www.wolfssl.com/products/wolftpm/

(エミュレーターではない) 組込み向けのTPMライブラリ。

tpm2-tss

https://github.com/tpm2-software/tpm2-tss

https://tpm2-software.github.io/

TCGのAPIを提供するライブラリ。バックエンドは選択可能であり、下記のTSS.MSRやIBMTSS、swtpmが選択できる。

swtpm

https://github.com/stefanberger/swtpm

https://github.com/stefanberger/libtpms

機能性を提供する libtpms と、キャラクタデバイス等APIを担当する swtpm に分かれる。

IBMTSS

https://github.com/kgoldman/ibmtss

IBM製のTPMエミュレーター。

TSS.MSR

https://github.com/Microsoft/TSS.MSR

Microsoft製のTPMエミュレーター。多分自身のリファレンス実装向けにバイナリ https://www.microsoft.com/en-us/download/details.aspx?id=52507 も配付されている。