エンジニアスキルの整理倉庫

Windows11で必須要件となったTPM2.0の話

Microsoftが最後のWindowsと公言していたWindows 10ですが、その公言をやぶりWindows 11リリースが発表されました。

公言やぶりには様々な意見があるかとは思いますが、レガシーを切り捨てる契機という意味では必要なことなのかもしれません。


そのWindows 11をインストールするのに必要なハードウェア要件も発表されていますが、その中にTPM2.0があります。

Windows 10では推奨要件でしたが、11では必須要件になりました。


TPMはTrusted Platform Moduleの頭文字をとって略した単語で、暗号化のためのハードウェアです。

専用のハードウェアとして実装している目的は主に2つあり、1つは乱数の生成、もう一つは暗号化に使用するRSAキー値を生成、およびハードディスク等のストレージとは別に管理することで、キー値の漏洩を防止することです。


1つ目の乱数の生成は、それまでの乱数生成の問題点を解消するためのものです。

乱数とはランダムな数値のことですが、暗号化にはとても重要な数値になります。

ところがコンピューターではこのランダムな数値を作るということが本来とても難しいのです。(コンピューターの目的は正確に演算を実行することですから。)

なので、乱数の生成に主に用いられていたのは、コンピューターは持つ時刻情報等を基に足し算、引き算、割り算、掛け算などをおこなって疑似的に作ることでした。

ただ、時刻情報を基にしているため、乱数を推測することも可能で、実際に推測を基にした攻撃手法も確立されていたのです。(実際に攻撃を成功させるのは難しいですが、数撃てば当たる確率を大幅に引き上げることができます。)

そこで、専用ハードウェアで乱数を生成しようと考えられたのが始まりです。このハードウェアで生成する考え方はTPM以前からあり、IntelのIvy Bridge以降のCPUでは、乱数生成用の命令が追加されています。


2つ目のキー値の生成・保存は、そのままですね。

ストレージに保存されているキー値は、不正プログラムによって読み込むことが容易なので、そういった不正プログラムに読みにくくすることを目的としています。(ただ、読み込みにくくなるだけで、不正プログラムによって奪われた権限次第では可能です。)


TPMは、上記の機能に加えて、ハッシュ値生成・保管といった機能などを仕様として標準化したものです。


Windows 11で必須のTPM2.0は3年くらい前から搭載した製品が出回り始めました。2.0の以前のバージョンは、1.2です。

1.2と2.0では、下記の違いがあります。


〇TPM1.2

 RSAキー生成アルゴリズム ・・・RSA 1024、RSA 2048

 ハッシュ演算アルゴリズム ・・・SHA-1

 AES暗号化        ・・・オプション(製品によっては実装)

 HMAC          ・・・SHA-1


〇TPM2.0

 RSAキー生成アルゴリズム ・・・RSA 1024、RSA 2048、ECC P256、ECC BN256

 ハッシュ演算アルゴリズム ・・・SHA-1、SHA-2 256

 AES暗号化        ・・・AES128(必須)、AES256はオプション(製品によっては実装)

 HMAC          ・・・SHA-1、SHA-2 256


暗号化やハッシュ計算アルゴリズムが追加されてますね。特にTPM1.2では、攻撃手法が明らかになっているSHA-1しかサポートしていないのは致命的ですね。(暗号化やHMACをTPMに全面的に任せる場合ですが)


■WindowsにおけるTPMの使われ方

有名なのはストレージを暗号化するBitLockerです。ストレージ全体を暗号化する場合、暗号化されたデータを復号(暗号化解除)するために、暗号化されていない領域に暗号化キーを保存しておく必要があります。この暗号化キーがTPMに保存されているのです。

なお、BitLockerは暗号化キーを保存しておく領域として外付けのストレージ(USBメモリなど)も使用可能です。


ちなみに、インターネット通信などにおける暗号化でTPMが使用されているか、というと使用されていない、というのが答えです。

というのも、TPMが接続されているインターフェイスは低速で、大きいデータの暗号化に向いていないからです。

乱数生成は使われている可能性もありますが、CPU側で乱数生成機能を実装していることもあり、使用するメリットがあまりないのです。(ここは未確認です。)


■現在お使いのパソコンがTMP2.0に対応してるかを調べる方法

デバイスマネージャーで確認することができます。デバイスマネージャーにセキュリティ デバイスという項目がありますので、確認してみて下さい。

「トラステッド プラットフォーム モジュール2.0」と表示されていればTPM2.0搭載済みです。


■お使いのPCのTPMが1.2であった場合

ファームウェアのバージョンアップでTPM2.0にアップグレード可能となるケースがあります。

実はTPMにおいて真のハードウェア機能と言えるのは乱数生成機能だけです。ほとんどの場合、暗号化アルゴリズム、ハッシュ計算アルゴリズムはTPMチップ内蔵のフラッシュメモリ上に格納されているソフトウェアで構成されています。

このソフトウェアをアップデートすることで、TPM2.0に対応できるケースがあります。

詳しくはお使いのPCメーカーのサポートサイト等をご確認ください。