TPM2.0は”なにもの”で、どこで(何で)対応するのか?

-更新情報-
2016年8月5日-誤字を修正しました。 通りすがりさんありがとうございました。



この記事を書くことになった経緯は、TPMについて近年のプロセッサなら、どれも対応しているという指摘を別の記事で受けたためである。(当該記事は2016年6月2日付けで削除しました)

当該の記事におけるコメント返答では詳細を書かなかったが、私自身が、Haswell以降はTPMを搭載していると思っていた口であった。しかし、搭載していないことが分かり、その原因を調べ、書いた記事であった(マザーボードも数枚確認した)。当初の経緯はそこから始まったのだ。しかし、その意見を受けた時に、皆そう思っているのだと、感じるとともに、それが自分の環境でも出来るのではないかと思ってしまい。ソースを求めてしまった。

結果は、少し違うものであったが、その方の指摘のお陰でより、はっきりと状況を認識することが出来た。
情報ソースというのは一次ソースの解釈と二次ソースの加工されたものでは、感じ方が変わる。そこが怖いのだと。そして、そうだと信じている仕様を否定するのは難しいのだと実感することが出来た。
否定されるには、やはり理由がある。当該記事は数日中(6月2~3日)に削除するが、こちらでTPMと実装についてのみ書くことにした。

尚、ここでは、TPM1.2と2.0の違いもごく簡単に書いているが(自分で読んでも、説明が難しくちょっと内容は怪しい・・・)、大半は、IntelにおけるTPM対応の実装形態である。実装されていないPCの場合は、ここがないから、TPMが認識されない。実装されている場合は、ここがあるからTPMが機能するということも分かるはずなので、お好きな方は、読んでいただければと思う。


ここに記載の情報は、原則としてIntel製品を対象としたものであるので、気をつけて欲しい。AMDやARM、MIPS等その他プロセッサに関しては今回は調べていない。IntelとTPMの基礎仕様だけで、16の一次データシート(開発メーカーや規格策定団体が出している仕様書)を斜め読みではあるが再確認しており、それなりに纏めているハズである。当該の資料は、最後にホームページのURLを載せるが、誰でも閲覧できIntelのDatasheetとTrusted Computing Groupの資料を基に作成している。画像はIntelの資料から直接抽出したものである。

仕様書なので、著作権などの問題はないと思うが、著作権等の問題があれば、この記事は削除する。

<TPMとは・・・>

TPMはTrusted Platform Module(トラステッドプラットフォームモジュール)と呼ばれるセキュリティチップである。
主に、RSAと呼ばれるWebセキュリティなどで使われてきた、公開暗号鍵の符号生成と復号処理を行うと共に、固定暗号鍵の保管、管理などを行う機能である。TPM1.x世代では、主にPC本体に対するセキュリティを想定して開発されている。

この機能を搭載したPCで、この機能を使うOSやアプリケーションを使うと、個体情報をベースに生成したハッシュ値をTPM本体に保存できるようになる。これによって、他の機器への不正コピー、個体内でのなりすまし、外部での登録個体以外からのアクセスによるなりすましなどを防ぐことが出来る。

尚、ソフトウェアでTPM相当の能力を発揮するには、個体情報に相当する固有キー(パスワード)を独自に作成する必要があるが、この方法では、個体の特定は出来ないためTPMより信頼性は下がる。さらに、固有キーが漏れてしまうと、機能は失われる。


TPMの仕組み

一般に普通のコンピュータなら暗号鍵の生成は、CPUで行う。TPM搭載コンピュータで、TPMに準じたAPIやドライバモデルを用いると、ハッシュ値や暗号鍵の生成命令を当該モジュールに転送し、そこで、ハッシュ値の生成や鍵の生成、復号を行う。その際に、TPMが持っている一意キーをパスワードの代わりに使うため、ハードに依存する形の(ハードがなければ解読不能な)高精度暗号化も行うことが出来る。

<TPMのバージョン>

TPM1.xでは、後述するが、目的が限定されており機能性は低い。RSA、SHA-1(160bit)までに準じた暗号化などに利用することが出来る。暗号化対象は、主に当該プラットフォーム内に限定されている。

TPM2.0では、これに加えて、SHA-256などがアルゴリズムに加わり、プラットフォームの暗号化、各種認証承認デバイスとしても機能する。暗号化は承認などにおいて当該プラットフォームを超えることを想定して作られている。

また、2.0では1.x以上にタンパー性を高めるために、TPMチップを物理的に取り外す、またはTPMソフトウェアに不正な手順でアクセスするなどした場合、そのデータがロックしたり、破壊し読み取れなくなるような細工も組み込まれている。


TPMの利点と欠点

一般に考えられるのは、それをもしも必須とするアプリケーション認証が生まれると、そのサービスの利用が出来なくなるという話だけである。TPM1.2まででは、これまでPC単体のデータの保護を中心に行ってきた。実際には、外部サービスにも使えない訳では無いが、それも想定して強化して使えるようにしたのが、2.0である。

ここでは、2.0を中心に考える。

2.0の利点の最大の特徴は、
鍵の一部を物理的なハード内に安全な形で保管できるため、ユーザーの利便性が向上する場合があることだ。即ち、パスワードを覚える必要がなく、例えコンピュータがリセットされても、そのデータがNVROMに残るという利便性がある。もっと言えば、ハードウェアに一意のキーを与えることが可能になるため、TPM2.0では承認という工程にも使えるようになり、どのハードから指示を出したかなどを元に、クライアントアクセスの正当性を高めることも不可能ではない。

要は、Aコンピューターからアクセスしているか、BコンピューターからアクセスしているかがCookieやアドレスなどの消えるデータを使わなくても、明確に特定することも可能になる。それを、セキュリティに使えれば、自分が使ったことのある端末からのアクセスかどうかを、分かり易く参照でき、セキュリティレベルが上がるというものである。

もしも、これを必須にすれば、それを搭載したハード以外からは、認証が出来なくなることを意味する。アプリケーションやWebサービスでこれを必須とするのは、きっとずっと先だと思うが・・・そういう時代もくるかもしれない。

ちなみに、これには負の部分もある。認証に関するデータが一元的に保管されるため、そのハードで暗号化したディスクや情報などは、そのハード以外で参照できなくなる。外から、覗き見は出来ないが、壊れるとみたいものが見られなくなるという可能性もある。
また、サービス提供元は、どの端末がいつアクセスしているかを、詳しく確認でき、行動分析が容易になる。既に、Microsoft WindowsやGoogle Android、Apple iOSではOSのシリアル情報を元に、行えることではあるが、それがもっと広いサービスで集められるかもしれない。これは、個人には情報の漏洩、メーカーには行動分析という利便と不便が混在する。

このTPMに近い働きをするものは、日本では割と普及している。
それは、ハードディスクビデオレコーダーや日本のテレビ録画が可能なチューナーユニットである。これらは、ハードの固有情報をハードディスクに書き込んだり、または暗号化する際に固有情報を主キー(パスワード/紐付けの主)にして、保存し、再生時はその主キーで伸張する。そういう仕組みを使っている。

これを、単一機器(搭載しているハードのみ)を前提とした汎用コンピューティングに使ったのがTPMの第一世代である。そして、これをさらに広い一般認証・承認全般に拡張する予定なのが、TPM2.0である。

まあ、ビジネス用でなければ、実は多くの人にとってはなくても困らない物かもしれないが・・・それが時期Windowsから実装のみ(動作の必要性はない)求められている。

TPMには何が必要か?

TPMを機能させるには、PCであれば、NVROMと暗号化・復号プロセッサを組み合わせたものを、TPMスロットに実装するか、半田付けする形で実装する。また、ARM TrustZoneやIntel Trusted Execution TechnologyとIntel ME Technology、Intel Active Management Technologyなどを組み合わせ、それに相当する機能を組み込んだファームウェア(UEFI)を搭載することで、その機能を実現することも出来る。後者の場合は、UEFI上にNVROMを代替するエリアを必要とする。(後述するが、ソフトウェア対応はHaswell以上のみ)


Intel Coreでの対応は?

現時点で、Intel Core i7 Desktop等は、TPM2.0をサポートしているが、プロセッサ内に搭載している訳では無い。Intelのプロセッサ内部にはNVROMも実装されていないため、マザーボードの仕様が重要となる。具体的に、B型チップセット、Q型チップセットなどであれば、ほぼ100%が対応している。(海外では非対応もあるかもしれない)一方で、H計やZ、X系のチップセットでは、それをサポートするチップまたは、ファームウェアの変更がない限り、対応が不十分の機種もある。尚、同社プロセッサのデータシートでは、地域やファームウェアの初期状態によってサポートしていないことを明確に明記している。(全てのプロセッサデータシート<英語>の2ページ目に記載されている)

一方で、モバイルプロセッサのSKUによっては、廉価なものでも最初から搭載しているものもある。これは、SoCとしてプロセッサコアにチップセット、TPMチップ、ネットワークモデムなど物理層のほとんどがパッケージングされているケースが多いこと、さらに、その性質上、可用性が高く、なりすまし、漏洩、紛失などのリスクが伴うからである。そのため、TPMは業務用ノートならかなり古いモデルでも搭載されていることが多い。(2.0は2014年後半以降)
デスクトップより、モバイルノートに対応品が多いのは、これのお陰と言える。


マイクロソフトがHaswellから対応しているという理由・・・

これは、SoCの関係とPCHのLPCインターフェースに専用のTPM回路が設けられたことが理由と思われる。
これによって、格段にTPMへの対応が楽になり、対応品が増える事となったが・・・。対応するかどうかは、メーカーのハードウェアデザイン次第であり、OEM/ODMハードウェアメーカーに委ねられる。マイクロソフト社が、そこまで考えて回答しているかは分からない。


Intelの仕様書においては、Platform Controller HubにTPMの文字が入っており、それを見るとまるで最初からTPMが実装されているように見えるが、実際にはこれは繋ぐためのインターフェース(回路)までしかない。例えば、4th GenのデスクトップCore i7の場合、Low Pin Countと呼ばれるデバイスを追加するための専用インターフェースがそこにあることを示しており、そこにTPMを実装できることが図で示されている。何度も書くが搭載されているわけではない。もし、これがTPM内蔵ならLANと同じでIntegrated LAN(統合・内蔵LAN)のような書き方となり、Integrated TPMとなる。(そもそもTPMはインターフェースではないので、統合ならここには載らないだろうが・・・)


4th GenのCore i7はTPM1.2と書かれている。ファームウェア対応というのは、この構造が関係している。これまでは、NVROMが専用に実装されたTPMチップと、汎用回路(PCI等)で代替していたが、4th Gen以降からBIOS/Firmwareと同じ回路をバイパスしたりバックサイドバスが用意され兼用できるようになり、MVROMのデータをBIOS上に共有すことも出来るようになった。その結果、より安価に対応できるようになったというのが所以である。即ち、UEFIやBIOSにそれと同じ機能を最初から実装し取り込むことも出来るというわけだ。これが、ファームウェアで対応できると呼ばれる理由である。これまでは、ファームウェアではなく、専用のチップがなければ対応できなかったのだが、これによってローレベルなソフトウェアによる相当機能対応が出来るようになった。

画像


下は第3世代の場合、TPM用のインターフェースはないことが分かるだろう。これが、Core iの第3世代目と4世代目の違いである。

画像


6th Genでは、Serial Peripheral Interfaceを利用して接続可能ということになる。

画像



これは、Audioインターフェースなどでも言えるが、Intel HD Audioと書かれていても、Intel製が乗っている訳では無い。あくまで、接続するためのポートが専用に準備されているだけを意味している。もし、プロセッサやチップセット内統合の場合は、内部搭載扱いで記載されるが、その記載はない。

このように、インテル製プロセッサの場合は、製品によってTPMのあるなしが変化する。例え、最新機種でも(今年に入ってからの第6世代プロセッサでは、なしは少ない)、搭載されていない製品は存在する。


尚、Intel PTT(Platform Trust Technology)とは、Intel社がIntel ME Firmwareで提供可能な機能の一つである。TPM2.0と同義として、Trusted Computing Groupは認めている。これは、ME Firmware内(UEFI内)にPTTの設定がある場合のみ利用出来る。この機能がME Firmware(BIOS/UEFI)にある場合は、TPM2.0が搭載されていることになる。

以上のようになる。

現時点で、TPM2.0の実装を確認する場合は、デバイスマネージャー([Win]+[X]キーからデバイスマネージャー)を開き、セキュリティデバイスとしてTPM(トラステッドプラットフォームモジュール2.0)が表示されるかどうかを確認し、ここに表示されていれば対応、表示されていなければ非対応となる。尚、標準では非対応でもBIOS/UEFI上で設定を有効に出来る機種もあるため、UEFIの設定を確認されると良いかもしれない。対応していない製品では、UEFI/BIOS上にTPMの設定は存在しない。(搭載製品でも、BIOS上に設定がないものはあるが、搭載している場合はデバイスマネージャーにトラステッドプラットフォームモジュール2.0がデバイスとして表示される。)

<TPMがデバイスマネージャーになくても対応するのか?>

たぶんそれは、出来ないと考えられるが、それに相当する機能をソフトウェアで再現するということは、不可能ではない。それを、TPMと呼ぶかどうかが、問題なのだ。一般にTPMは、ハードディスクのような消失するリスクのあるデバイスにキーデータを残す仕組みでは、TPMとは言い難い。ソフトウェア制御だと、必ず主キーの問題が起きる。要はベースとなるキーを解読され復号されるリスクが生じるのだ。あくまで、それは別の場所にあって、難読化されていてこそTPMなのである。

そのため、ハードとしてそれを必要とする場合は、最低でもプラットフォームのOS側で論理的(ローレベルソフトウェアで擬似的)でも物理的(実際に専用ハードが実装されているスタイル)でも良いので、トラステッドプラットフォームモジュール2.0とデバイスマネージャーで認識されていなければ、その機能があるとは言えない。

ただ、TXTなどを用いることで、それに似せたまたはそれを拡張した動作命令の発効を快適に行うことは出来るのだ。これも、結局はTPMそのものではない。

尚、Windows10 Anniversary UpdateはTPM2.0のハードウェアレイヤーの物理的動作を求めているものではなく、搭載されていることだけをクライアントOS環境において望んでいる。そのため、別にIvyBridgeだろうが、Nehalemだろうが、Meromだろうが、Anniversary UpdateがTPM2.0をハードウェアレイヤーで求めることはない。ただ、動いていようがいまいが、それが設定の変更なりをすれば、デバイスマネージャーで認識されることを求めるという点で、Ready(レディ)なのである。

TPM2.0が本当に求められ、100%のクライアントデバイスに実装されるのは、実は今からというのは、それらがベースとなっている。私が調べた限りでは、このような結果になる。そして、その台数はノートではそこそこあるが、デスクトップは、SkylakeとBaytrail-T世代になって徐々に普及が始まったように見える。何より日本のPCではその傾向が、NECのMATEや、富士通のビジネス向けESPRIMOを除けば、多いように感じる。特にTPM2.0はBroadwell以降からやっと普及を始めており、対応した製品は相当少ないと考えている。


尚当該の記事は、
Intel Corporationの各Processor Family: Datasheet及び、amt、MEBX、g21682003-TPM、intel-txt-softwareの各PDF資料及び、Trusted Computing GroupのTPM-Rev-2.0関連PDF資料に基づき編纂しています。一部、分かり易くするために、かなり砕いた説明となっている部分がありますが、ご了承ください。
http://www.trustedcomputinggroup.org/work-groups/regional-forums/japan/
http://www.intel.co.jp/

この記事へのコメント

通りすがり
2016年08月04日 11:43
儲けられた→設けられた
誤字でしょうか? 間違ってたらすみません。
2021年06月25日 10:01
タンパー性は耐タンパー性では
羊羹にお茶
2021年06月25日 13:24
技術文書としてひどすぎる。
国語をイチから勉強しなおせ
授業を受けた生徒
2021年10月12日 17:31
Windows11のTPM2.0問題でたどり着きました。
大変わかりやすく参考になりました。
pon
2023年12月23日 13:24
誤 時期Windows
正 次期Windows
pon
2023年12月23日 13:26
AMDのCPUがどうなのか、全く触れてない
中途半端な記事
2024年01月08日 08:31
コメントのいくつかは酷いものがありますね。
専門知識を持った方とはいえ、一個人のブログであることをお忘れなのではないでしょうか。
タダでもらっている情報にあれこれ難癖をつける。
その人間性には嫌悪感を覚えますね。

この記事へのトラックバック