次の方法で共有


TPM の構成証明

この記事では、Device Provisioning Service (DPS) の トラステッド プラットフォーム モジュール (TPM) の構成証明を使用してデバイスをプロビジョニングするときに関係する概念について説明します。 この記事は、デプロイのために準備されたデバイスの取得に関わるすべてのユーザーに最も役立ちます。

トラステッド プラットフォーム モジュール (TPM) は、ハードウェア セキュリティ モジュール (HSM) の一種です。 この記事は、ディスクリート、ファームウェア、または統合のいずれかの TPM を使用していることを前提としています。 ソフトウェアでエミュレートされた TPM はプロトタイプの作成やテストには適していますが、ディスクリート、ファームウェア、または統合の TPM と同じレベルのセキュリティは提供されません。 運用環境でソフトウェア TPM を使用することはお勧めしません。

この記事は、HMAC キーをサポートする TPM 2.0 を使用したデバイスおよびその保証キーにのみ該当します。 TPM は、業界で広く採用されている Trusted Computing Group の ISO 標準です。TPM の詳細については、完全な TPM 2.0 仕様または ISO/IEC 11889 仕様を参照してください。また、この記事は、公開キーと秘密キーのペアと、これらを使用して暗号化を行う方法について熟知していることを前提としています。

Device Provisioning Service のデバイス SDK は、この記事で説明されているすべてのことを自動的に処理します。 お使いのデバイスでこの SDK を使用している場合は、TPM サポートを実装する必要はありません。 この記事は、デバイスのプロビジョニング中に TPM セキュリティ チップで起こること、また、それが安全である理由を概念的に理解するうえで役立ちます。

概要

TPM は、セキュリティで保護された信頼のルートとして保証キー (EK) と呼ばれるものを使用します。 EK は、TPM に対して一意であり、EK を変更するとは、実質的にデバイスを新しいものに変更することを意味します。

TPM には、ストレージ ルート キー (SRK) と呼ばれる別の種類のキーもあります。 SRK は、TPM の所有者が、TPM の所有権を取得した後に生成できます。 TPM の所有権の取得は、TPM 固有の言い方で "誰かが HSM にパスワードを設定する" ということです。TPM デバイスが新しい所有者に売却された場合、新しい所有者は TPM の所有権を取得して新しい SRK を生成できます。 新しい SRK を生成すると、以前の所有者は TPM を使用できなくなります。 SRK は TPM の所有者に一意であるため、SRK を使用してその所有者のデータを TPM 自体に封印できます。 SRK は、所有者がキーを格納するためのサンドボックスを提供し、デバイスまたは TPM が販売された場合にアクセス権を取り消すことができるようにします。 つまり、新居に引っ越すようなものです。所有権を取得するとドアの鍵が変更され、前の所有者 (SRK) によって残されたすべて家具が破壊されます、ただし、家 (EK) の住所を変更することはできません。

デバイスをセットアップすると、EK と SRK の両方を使用できるようになります。

TPM の所有権を取得する方法を示す図。

TPM の所有権の取得に関連する具体的な手順は、製造元、使用されている TPM ツールのセット、デバイスのオペレーティング システムによって異なります。

デバイス プロビジョニング サービスでは、EK (EK_pub) の公開部分を使って、デバイスの識別と登録を行います。 デバイスの製造元では、製造または最終テスト中に EK_pub を読み取ることができ、EK_pub をプロビジョニング サービスにアップロードして、プロビジョニングのために接続するときにデバイスが認識されるようにすることができます。 Device Provisioning Service は SRK や所有者をチェックしないため、TPM を "クリーニング" すると顧客データが消去されますが、EK (およびその他の製造元データ) は保持され、プロビジョニングのために接続するときに、Device Provisioning Service によって認識されます。

構成証明プロセス

TPM を装備したデバイスを Device Provisioning Service に接続すると、このサービスは最初に、提供された EK_pub を、登録リストに格納されている EK_pub と照合します。 EK_pub が一致しない場合、このデバイスのプロビジョニングは許可されません。 EK_pub が一致した場合、サービスは nonce チャレンジを介して EK の秘密部分の所有権を証明することをデバイスに要求します (nonce チャレンジ とは、ID を証明するために使用されるセキュリティで保護されたチャレンジのことです)。 Device Provisioning Service は nonce を生成し、SRK とその後に EK_pub を使用して暗号化します。これらは両方とも、初期登録呼び出し中に、デバイスから提供されます。 TPM は常に EK の秘密部分をセキュリティで保護します。 これによって偽造が防止され、SAS トークンが承認されたデバイスに安全にプロビジョニングされます。

構成証明プロセスを詳しく確認しましょう。

デバイスが IoT Hub の割り当てを要求する

まず、デバイスから Device Provisioning Service に接続して、プロビジョニングを要求します。 デバイスはこのとき、サービスに対して登録 ID、ID スコープ、TPM の EK_pub および SRK_pub を提供します。 サービスは暗号化された nonce をデバイスに返します。また、nonce を復号化し、これを使用して SAS トークンに署名して再接続し、プロビジョニングを完了するようデバイスに要求します。

デバイスがプロビジョニングを要求する

nonce チャレンジ

デバイスは nonce を受け取り、EK と SRK の秘密部分を使用して nonce を TPM に復号化します。nonce の暗号化の順序によって、EK (変更不可能) から SRK (新しい所有者が TPM の所有権を取得した場合に変更可能) へと信頼が委任されます。

nonce の復号化

nonce を検証して資格情報を受け取る

デバイスは、復号化された nonce を使用して SAS トークンに署名し、この署名付きの SAS トークンを使用して Device Provisioning Service への接続を再確立できます。 Nonce チャレンジを完了すると、このサービスは、デバイスのプロビジョニングを許可します。

デバイスが Device Provisioning Service との接続を再確立して EK の所有権を検証する