Skip navigation.
ホーム
BLOG-ROMMER 日高のブログ

TPM と PCプラットフォーム

前回の TPM1.2攻略 の続きの話である。

YouTube 動画

先日上記、TPM1.2 攻略のビデオを製作して Smart Japan Alliance でうちわで披露したところ、「そのTPMが接続されているバスは何か?」「どの様な規格、ドライバーか?」などと質問があった。

「LPCバスなので、PCプラットフォームであればドライバーは不要」と答えると、「LPCバス」とは何か、なぜ「TPM」が「LPCバス」なのかという議論になった。

それで念のため、ちょっと検索すると、なんと!LPCからISAに変換するボードを製作した事例の記事があった。

ということで、なぜPCIやUSBのTPMが無いかも疑問に思い、少し調べてみた。

TPM 1.2 Main Specification

https://trustedcomputinggroup.org/resource/tpm-main-specification/

https://trustedcomputinggroup.org/wp-content/uploads/TPM-Main-Part-1-Des...

TPM 2.0 Library Trusted Computing Group Releases TPM 2.0 Specification for Improved Platform and Device Security

https://trustedcomputinggroup.org/trusted-computing-group-releases-tpm-2...

https://trustedcomputinggroup.org/resource/tpm-library-specification/

どうやらハードウェアもソフトウェアも、TPM 仕様自体が昔のレガシーなPC AT仕様からの寄せ集めで、いわば苦し紛れに出て来た仕様らしいことがわかる。そしてTPMは「仕様 1.2」と「仕様 2.0」間では、ハードウェアもソフトウェアも似ているが、互換性が無いことも確認出来る。一言で言うとひと昔前の UEFI BIOS で採用された TPM 1.2 仕様が古すぎる訳である。もしかするとUSB やPCI/PCIe 等の汎用バスを採用しなかったこと自体がセキュリティ的に意図されていたのかもしれない。それだけレガシーな仕様である。

以前、Windowsは「互換性の鬼」で、四半世紀前のアプリがそのまま動いたりします。
との紹介をしたが、どっこい(旧IBM-)PCプラットフォーム自体も「互換性の鬼」である。

Windowsは「互換性の鬼」で、四半世紀前のアプリがそのまま動いたりします。
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1557715.html

Broadwell世代までならマザボにISAスロットを追加できる
https://pc.watch.impress.co.jp/docs/news/yajiuma/1499446.html

TPMコネクター(LPC)にISAが接続できる?
https://blog.klovnin.net/archives/1030

Low Pin Count
https://ja.wikipedia.org/wiki/Low_Pin_Count

LPC仕様では7本の信号線が必須であり、双方向のデータ転送を行う。うち4本はアドレスとデータを重畳させて運ぶ。残る3本(フレーム、リセット、クロック)は制御信号用であり、特にリセットとクロックはPCIのPCIRST#およびPCICLKと共通化できる。

仕様にはオプションの6本の信号線が定義されていて、割り込み、DMA、スリープ状態からのシステム起動、電源が切れることをLPC機器に知らせるといった用途に使用できる。LPCのデータ転送レートは、バスアクセスの種類(I/O、メモリ、DMA、ファームウェア)に依存するが、いずれの場合もISAより若干高速である。33.3MHzでの典型的なI/O転送レートは約2.56Mbyte/sである。

ここまで簡単に集めた情報を紹介したが、私が試してみたい「汎用バスTPM」は鬼の様に古いPCアーキテクチャとBIOSに、ほぼ直付けされている「TPM」のハードウェア構成が原因で、無理なことが分かった。