この記事では、Device Provisioning Service (DPS) でトラステッド プラットフォーム モジュール (TPM) 構成証明を使用してデバイスをプロビジョニングするときに必要な概念について説明します。 この記事は、デバイスを展開する準備に関係するすべてのペルソナに関連します。
トラステッド プラットフォーム モジュール (TPM) は、ハードウェア セキュリティ モジュール (HSM) の一種です。 この記事では、個別の TPM、ファームウェア、または統合 TPM を使用していることを前提としています。 ソフトウェアエミュレートされた TPM は、プロトタイプ作成やテストに適していますが、ディスクリート、ファームウェア、または統合 TPM と同じレベルのセキュリティを提供しません。 運用環境でソフトウェア TPM を使用することはお勧めしません。
この記事は、TPM 2.0 とハッシュ ベースのメッセージ認証コード (HMAC) キーのサポートとその保証キーを使用するデバイスにのみ関連します。 TPM は、トラステッド コンピューティング グループの業界全体の ISO 標準であり、 TPM 2.0 仕様 または ISO/IEC 11889 仕様で TPM の詳細を確認できます。また、この記事では、公開キーと秘密キーのペアと、暗号化に使用される方法について理解していることを前提としています。
Device Provisioning Service デバイス SDK は、この記事で説明されているすべてのものを処理します。 デバイスで SDK を使用している場合は、TPM サポートを実装する必要はありません。 この記事は、デバイスのプロビジョニング時に TPM セキュリティ チップで何が起こっているのか、またそれが非常に安全である理由を概念的に理解するのに役立ちます。
概要
TPM は、信頼のセキュリティで保護されたルートとして保証キー (EK) と呼ばれるものを使用します。 EK は TPM に固有であり、これを変更すると、基本的にデバイスが新しいものに変わります。
TPM には、ストレージ ルート キー (SRK) と呼ばれる別の種類のキーがあります。 TPM の所有者は、TPM の所有権を取得した後に SRK を生成できます。 TPM の所有権を取得することは、"誰かが HSM にパスワードを設定する" という TPM 固有の言い方です。TPM デバイスが新しい所有者に販売された場合、新しい所有者は TPM の所有権を取得して新しい SRK を生成できます。 新しい SRK 世代では、前の所有者が TPM を使用できなくなります。 SRK は TPM の所有者に固有であるため、SRK を使用して、その所有者の TPM 自体にデータをシールできます。 SRK は、所有者がキーを格納するためのサンドボックスを提供し、デバイスまたは TPM が販売されている場合にアクセスの取り消しを提供します。 それは新しい家に引っ越すようなものです:所有権を取得することは、ドアのロックを変更し、前の所有者(SRK)が残したすべての家具を破壊することですが、家の住所(EK)を変更することはできません。
デバイスをセットアップすると、EK と SRK の両方を使用できるようになります。
TPM の所有権の取得に関連する具体的な手順は、製造元、使用されている TPM ツールのセット、デバイスのオペレーティング システムによって異なります。
Device Provisioning Service は、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_pubsが一致しない場合、デバイスのプロビジョニングは許可されません。 EK_pubsが一致する場合、サービスはデバイスにEKのプライベート部分の所有権をnonceによるチャレンジで証明することを要求します。このチャレンジは、アイデンティティを証明するためのセキュリティで保護されたものです。 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 を使用して SAS トークンに署名し、署名された SAS トークンを使用して Device Provisioning Service への接続を再確立できます。 Nonce チャレンジが完了すると、サービスによってデバイスがプロビジョニングできるようになります。