(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-09
(45)【発行日】2023-02-17
(54)【発明の名称】ゲートウェイを用いてTrusted Execution Environment(TEE)におけるリモート認証を実行するための方法及びシステム
(51)【国際特許分類】
G06F 21/57 20130101AFI20230210BHJP
G06F 21/74 20130101ALI20230210BHJP
【FI】
G06F21/57
G06F21/74
(21)【出願番号】P 2021552628
(86)(22)【出願日】2019-04-30
(86)【国際出願番号】 EP2019061076
(87)【国際公開番号】W WO2020177879
(87)【国際公開日】2020-09-10
【審査請求日】2021-09-16
(32)【優先日】2019-03-06
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】517451940
【氏名又は名称】エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー
(74)【代理人】
【識別番号】100124811
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】カラメ ガッサン
(72)【発明者】
【氏名】ソリエンテ クラウディオ
【審査官】小林 秀和
(56)【参考文献】
【文献】特表2013-501300(JP,A)
【文献】米国特許出願公開第2019/0044939(US,A1)
【文献】米国特許出願公開第2018/0150411(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/44
G06F 21/74
(57)【特許請求の範囲】
【請求項1】
リモート認証を実行する方法であって、
検証者(10)と、認証対象であるアプリケーション(24)が実行されるtrusted execution environment,TEE(22)を含むリモートホスト(20)と、の間のゲートウェイ(30)を使用し、
前記ゲートウェイ(30)が、前記検証者(10)からの
、認証対象である前記アプリケーション(24)のコードおよび前記リモートホスト(20)のエンドポイントの情報を含む認証要求を受信し、
前記ゲートウェイ(30)が、前記リモートホスト(20)のTEE(22)のタイプと、認証対象である前記アプリケーション(24)の予期される識別情報と、を特定し、前記リモートホスト(20)の特定されたTEE(22)のタイプに基づいて認証プロトコルを選択し、
前記ゲートウェイ(30)が、前記リモートホスト(20)と共に選択された認証プロトコルを実行することによって、認証対象であるアプリケーション(24)の前記予期される識別情報を検証し、認証結果を前記検証者(10)に送信する、
ことを特徴とする方法。
【請求項2】
前記ゲートウェイ(30)のプラットフォーム識別モジュール(32)が、前記リモートホスト(20)を調べて、前記リモートホスト(20)上で実行されているTEE(22)のタイプを特定する、
ことをさらに含む請求項
1に記載の方法。
【請求項3】
前記ゲートウェイ(30)のコンパイルモジュール(34)が、前記リモートホスト(20)のTEE(22)の特定されたタイプに応じて、複数のアーキテクチャ依存コンパイラ(35)から所定のコンパイラを選択して適用することによって、認証対象である前記アプリケーション(24)のコードをコンパイルする、
ことをさらに含む請求項
1又は2に記載の方法。
【請求項4】
前記ゲートウェイ(30)の識別情報計算モジュール(36)が、前記アプリケーション(24)のコンパイルされたコードと、前記リモートホスト(20)のTEE(22)の特定されたタイプと、に基づいて、認証対象である前記アプリケーション(24)の前記予期される識別情報を計算する、
ことをさらに含む請求項1乃至
3のいずれかに記載の方法。
【請求項5】
前記ゲートウェイ(30)のリモート認証モジュール(38)が、
前記リモートホスト(20)から認証対象である前記アプリケーション(24)の識別情報に付された署名を取得して、当該署名を検証し、
前記リモートホスト(20)から受信した署名付きの識別情報が、前記アプリケーション(24)の計算された前記予期される識別情報と一致するかどうかの有効性をチェックする、
ことを含む請求項1乃至
4のいずれかに記載の方法。
【請求項6】
前記検証者(10)に認証結果を送信する際に、
署名の検証と有効性のチェックが成功した場合に、認証が成功したことを示す肯定的なメッセージを検証者(10)に送信する、
又は、署名の検証及び/又は有効性のチェックが失敗した場合に、認証が失敗したことを示す否定的なメッセージを検証者(10)に送信する、
ことをさらに含む請求項
5に記載の方法。
【請求項7】
リモート認証を実行するためのシステムであり、請求項1乃至
6のいずれかに記載の方法を実行するためのシステムであって、
検証者(10)と、認証対象であるアプリケーション(24)が実行されるtrusted execution environment,TEE(22)を含むリモートホスト(20)と、の間のゲートウェイ(30)を備え、
前記ゲートウェイ(30)が、
前記検証者(10)からの
、認証対象である前記アプリケーション(24)のコードおよび前記リモートホスト(20)のエンドポイントの情報を含む認証要求を受信し、
前記リモートホスト(20)のTEE(22)のタイプと、認証対象である前記アプリケーション(24)の予期される識別情報と、を特定し、前記リモートホスト(20)の特定されたTEE(22)のタイプに基づいて認証プロトコルを選択し、
前記リモートホスト(20)と共に選択された認証プロトコルを実行することによって、認証対象であるアプリケーション(24)の前記予期される識別情報を検証し、認証結果を前記検証者(10)に送信する、
処理を実行するよう構成されていることを特徴とするシステム。
【請求項8】
前記ゲートウェイ(30)は、前記リモートホスト(20)を調べて、前記リモートホスト(20)上で実行されているTEE(22)のタイプを特定するよう構成されたプラットフォーム識別モジュール(32)を備える、
請求項
7に記載のシステム。
【請求項9】
前記ゲートウェイ(30)は、複数の異なるアーキテクチャ依存コンパイラ(35)を含むコンパイルモジュール(34)を備え、
前記コンパイルモジュール(34)は、前記リモートホスト(20)のTEE(22)の特定されたタイプに応じて、複数のアーキテクチャ依存コンパイラ(35)から所定のコンパイラを選択して適用することによって、認証対象である前記アプリケーション(24)のコードをコンパイルするよう構成されている、
請求項
7又は8に記載のシステム。
【請求項10】
前記ゲートウェイ(30)は、前記アプリケーション(24)のコンパイルされたコードと、前記リモートホスト(20)のTEE(22)の特定されたタイプと、に基づいて、認証対象である前記アプリケーション(24)の前記予期される識別情報を計算するよう構成された識別情報計算モジュール(36)を備える、
請求項
7乃至9のいずれかに記載のシステム。
【請求項11】
前記ゲートウェイ(30)は、異なるリモート認証プロトコルのための複数の異なる検証ロジックを含むリモート認証モジュール(38)を備える、
請求項
7乃至10のいずれかに記載のシステム。
【請求項12】
前記リモート認証モジュール(38)は、
前記リモートホスト(20)のTEE(22)の特定されたタイプに応じて、前記複数の異なる検証ロジックから所定の検証ロジックを選択し、選択された検証ロジックに対応する前記リモートホスト(20)と共にリモート認証プロトコルを実行する、ように構成されている、
請求項
11に記載のシステム。
【請求項13】
前記リモート認証モジュール(38)は、
前記リモートホスト(20)から認証対象である前記アプリケーション(24)の識別情報に付された署名を取得して、当該署名を検証し、
前記リモートホスト(20)から受信した署名付きの識別情報が、前記アプリケーション(24)の計算された前記予期される識別情報と一致するかどうかの有効性をチェックする、
ように構成されている、
請求項
11又は12に記載のシステム。
【請求項14】
前記リモート認証モジュール(38)は、さらに認証結果を提供するよう構成されており、認証結果を提供する際に、
署名の検証と有効性のチェックが成功した場合に、認証が成功したことを示す肯定的なメッセージを検証者(10)に送信する、
又は、署名の検証及び/又は有効性のチェックが失敗した場合に、認証が失敗したことを示す否定的なメッセージを検証者(10)に送信する、
ように構成されている、
請求項
13に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Trusted Execution Environments(TEE)、特に、リモートホストのTEEで実行されるアプリケーションの認証を実行するための方法およびシステムに関する。
【背景技術】
【0002】
Trusted Execution Environments(TEE)では、リモート認証により、検証者は、特定のアプリケーションがリモートホストマシンのTEEで改ざんされずに実行されているという証拠を収集することができる。例えば、ブロックチェーンネットワークにおいて、全てのブロックチェーンノードがTEEを実装し(例えば、セキュアエンクレーブの形式で)、軽量ブロックチェーンクライアントの要求に対して、未使用トランザクション出力、UTXO、情報を取得し、この情報を軽量クライアントに提供する。このような場合に、軽量ブロックチェーンクライアントは、TEEに要求を送信する前に、真正なTEEの実行を確認するために、例えば、あるエンクレーブコードが適切に初期化されていることを確認することによって、TEEで認証を実行できる。
【0003】
認証は、通常、デジタル署名スキームとホストマシン上の信頼できるコンポーネントによって実現される。ホストマシンは、ローカルTEEで実行されているアプリケーションの「識別情報」を計算し、計算された識別情報に秘密鍵で署名する。対応する公開鍵は、信頼できる認証機関によって証明される。認証対象であるアプリケーションの識別情報は、通常、適切なハッシュ関数をアプリケーションバイナリに適用することによって計算される。ホストマシンの構成に関連する追加のデータも、ハッシュ関数への追加入力として使用されうる。識別情報に対する署名は、認証機関によって発行された公開鍵の証明書とともに、検証者に送信される。
【0004】
従って、上記スキームでは、検証者は、1)証明書の有効性を検証し、2)署名を検証し、3)リモートホストによって署名された識別情報が認証対象であるアプリケーションの参照識別情報と一致することを確認する、こととなる。検証者は、アプリケーションが実行されているホストの詳細と、適切な認証スキームの詳細とを、十分に認識している必要がある。特に、検証者は、ホストマシンの署名を検証するために、ホストマシンで使用される署名スキームを認識している必要がある。さらに、検証者は、認証されるアプリケーションの予期される識別情報を認識している必要がある。この予期される識別情報は、ホストマシンのアーキテクチャと使用されている認証プロトコルによって決まりうる。実際、アプリケーションバイナリはアーキテクチャに依存する場合があり、使用される認証スキームは、認証されるアプリケーションの識別情報を計算するときに、他のホスト関連情報を追加する場合もある。さらに悪いことに、ホストマシンによって出力された署名は公的に検証できない場合がある。このようなシナリオでは、指定された認証サーバーが、署名を検証して検証者に(バイナリ)応答を提供することに関与する場合があり、時には、認証サーバーは登録済みの検証者のみに行いうる。
【0005】
その結果、さまざまなTEEと認証メカニズムの現在の状況を考えると、検証者が所定のアプリケーションに対してリモート認証プロトコルを実行することは容易ではなく、ときには不可能な場合もある。例えば、検証者が所定のホストアーキテクチャの予期されるアプリケーション識別情報を計算できない場合や、単に検証者がプロトコルに含まれる認証サーバーに登録されていない場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記を考慮して、本発明の目的は、TEEのタイプやリモートホストによって使用される認証メカニズムには関係なく、検証者がリモートホストのTEEで実行されているアプリケーションを認証できるように、リモート認証を実行するための方法およびシステムを改善してさらに開発することである。
【課題を解決するための手段】
【0007】
本発明によれば、上述した目的は、リモート認証を実行するための方法によって達成され、この方法は、以下のステップを含む。
検証者と、認証対象であるアプリケーションが実行されるtrusted execution environment(TEE)を含むリモートホストと、の間のゲートウェイを使用し、
ゲートウェイが、検証者からの認証要求を受信し、
ゲートウェイが、リモートホストのTEEのタイプと、認証対象であるアプリケーションの予期される識別情報と、を特定し、リモートホストの特定されたTEEのタイプに基づいて認証プロトコルを選択し、
ゲートウェイが、リモートホストと共に選択された認証プロトコルを実行することによって、認証対象であるアプリケーションの予期される識別情報を検証し、認証結果を検証者に送信する。
【0008】
さらに、上記目的は、リモート認証を実行するためのシステムによって達成され、このシステムは、検証者と、認証対象であるアプリケーションが実行されるtrusted execution environment(TEE)を含むリモートホストと、の間に配置されたゲートウェイを備え、ゲートウェイが以下のステップを実行するよう構成されている。
検証者からの認証要求を受信し、
リモートホストのTEEのタイプと、認証対象であるアプリケーションの予期される識別情報と、を特定し、リモートホストの特定されたTEEのタイプに基づいて認証プロトコルを選択し、
リモートホストと共に選択された認証プロトコルを実行することによって、認証対象であるアプリケーションの予期された識別情報を検証し、認証結果を検証者に送信する。
【0009】
本発明によれば、上記目的は、検証者とTEEアプリケーションが実行されているホストとの間に認証ゲートウェイを導入することによって達成されうる。認証ゲートウェイは、自身が検証者として、又はより具体的には検証者に代わって、認証処理を実行するよう構成されている。ここで重要なことは、ゲートウェイが、検証者と、リモートマシンの安全な環境で実行されている認証対象であるアプリケーションと、の間を仲介していることである。このようにして、検証者は、多くの計算タスクから解放される。特に、検証者がすべてのタイプのTEEに対応して異なる認証サービスを実行する必要はなく、検証者が単一の認証実行ステップを認識する必要はない。実際に、検証者は、いくつかの最小パラメータを含む認証要求を発行し、TEE認証ゲートウェイを介して対応する認証結果を受信するだけでよく、認証手順自体はゲートウェイによって実行される。
【0010】
結果として、本発明の実施形態では、かなり限定された計算能力を有するデバイスであっても、異機種環境にあるデバイスの多様なセットに対してリモート認証を実行することが可能である。このような状況において、本発明は、異機種環境にあるTEEを利用可能であり、アプリケーションがそれらのいずれかに展開されうるシナリオにおいて、リモートアプリケーションを認証することの課題を解決することができる。
【0011】
本発明の実施形態によれば、認証ゲートウェイは、リモートホストによって使用されうるリモート認証プロトコルのいずれかを実行するための計算手段を含む。
【0012】
本発明の実施形態によれば、認証ゲートウェイは、互いに通信するように構成されたいくつかのモジュールを含み、各モジュールは、リモート認証手順の専用サブタスクを実行するように構成される。具体的に、ゲートウェイは、プラットフォーム識別モジュール、コンパイルモジュール、識別情報計算モジュール、およびリモート認証モジュールの4つのモジュールで構成される。プラットフォーム識別モジュールは、ホストマシンを調べて、そのマシンで実行されているTEEのタイプを特定する。コンパイルモジュールは、プラットフォーム識別モジュールによって検出されたアプリケーションが実行されているTEEのタイプに従って、検証者によって提供されたアプリケーションコードをコンパイルするように構成されている。
【0013】
識別情報計算モジュールは、コンパイルモジュールによって提供されるコンパイルされたアプリケーションと、プラットフォーム識別モジュールによって検出されたTEEのタイプと、に基づいて、アプリケーションの予期される識別情報を計算することができる。最後に、リモート認証モジュールは、複数のリモート認証プロトコルのための検証ロジックを保持しており、ホストマシンで実行されるTEEのタイプに基づいて適切な1つを選択し、ホストマシンと共にリモート認証プロトコルを実行する。当業者によって理解されるように、認証ゲートウェイの個々のモジュールに対するリモート認証手順のサブタスクの割り当ては、上述した割り当てとは異なり、代替の実装も同様に可能である。
【0014】
実施形態によれば、ホストは、ローカルTEE内にアプリケーションAを展開し、識別情報計算モジュールは、アプリケーションAのコンパイルされたコードおよびホストで実行されるTEEのタイプに基づいて、アプリケーションAの予期される識別情報IdAを計算することができる。認証ゲートウェイによって実行される認証手順においては、認証ゲートウェイは、ホストからアプリケーション識別情報Id’Aに付された署名を受け取る。認証ゲートウェイは、予期される識別情報IdAがId’Aと一致することを検証し、検証の結果をリモート検証者に転送するように構成される。
【0015】
実施形態によれば、認証ゲートウェイは、ホストマシンとの通信においてデジタル署名スキームを使用することができる。このような状況で、ホストマシンが認証対象であるアプリケーションの識別情報を計算し(例えば、適切なハッシュ関数をアプリケーションバイナリに適用することによって)、秘密鍵を用いて計算された識別情報に署名したときに、識別情報の署名が認証機関によって発行された対応する公開鍵の証明書と共に認証ゲートウェイに送信される。次に、認証ゲートウェイは、公開鍵を使用して、証明書の有効性を検証し、署名を検証し、リモートホストによって署名された識別情報が認証対象であるアプリケーションの予期される(参照)識別情報と一致することを確認する。
【0016】
指定された認証サーバーを含む適切な認証プロトコルが設定された実施形態によれば、認証ゲートウェイ、特に、認証ゲートウェイのリモート認証モジュールは、認証プロキシ、特に、Claudio Soriente, Ghassan Karame, Wenting Li, Sergey Fedorov: “ReplicaTEE: Enabling Seamless Replication of SGX Enclaves in the Cloud”, CoRR.abs/1809.05027,によって定義されたような認証プロキシを利用することができる。これは参照により本明細書に組み込まる。
【0017】
実施形態によれば、すべての専用モジュールは、同じ処理システム上で実行することができ、同じ電子コンポーネント上に実装することができる。あるいは、モジュールは、異なるエンティティ上に実装することもでき、モジュール間の通信および相互作用は、有線または無線の通信技術によって達成されうる。
【0018】
実施形態によれば、検証者とゲートウェイとの間の通信、ならびにゲートウェイとリモートホストとの間の通信は、オープンプロトコルを使用することによって実装されうる。
【0019】
本発明における教示内容を設計し、さらに発展させる好適な方法はいくつかある。このため、一方では、従属請求項を参照し、他方では、図面によって示されるような例示の方法による本発明の実施形態の説明を参照する必要がある。図面を用いた本発明の好ましい実施形態の説明に関連して、一般的に好ましい実施形態と教示内容のさらなる改良が説明されうる。
【図面の簡単な説明】
【0020】
【
図1】本発明の実施形態におけるTEE認証ゲートウェイを含むリモート認証を実行するためのシステムを示す概略図である。
【
図2】本発明の実施形態におけるリモート認証の実行の概略を示す高レベルフローチャートである。
【発明を実施するための形態】
【0021】
リモート認証は、Trusted Execution Environments(TEE)を利用する分散アプリケーションに必要な機能である。検証者は、リモート認証を介して、参照アプリケーションがリモートマシンのTEE内で改ざんされていない状態で実行されているという証拠を取得する。現在では、複数のTEEが利用可能であり(例えば、Intel SGX : V. Costan, et al., “Intel SGX explained.”, Cryptology ePrint Archive (2016), 又は、ARM TrustZone : https://www.arm.com/products/silicon-ip-security)、所定のTEEの様々なバージョンが様々なベンダーから提供されている(たとえば、QualcommとTrustonicは、それぞれTrustZoneの異なるバージョンのを提供している)。
【0022】
TEEのこのような異種状況を考えると、アプリケーションは異なるシステムに配置され、それぞれが独自の認証メカニズムを実装する場合がある。従って、検証者は、アプリケーションをホストしているマシンと、そのホストマシンによって実装されている認証メカニズムを認識している必要がある。
【0023】
本発明の実施形態は、
図1に例示的に示すように、認証ゲートウェイ30によって上記の問題を解決する。ゲートウェイ30は、検証者10と、TEE対応プラットフォームであるリモートホスト20と、の間に配置される。具体的には、ゲートウェイ30は、検証者10と、認証対象となるアプリケーション24と、の間を仲介し、アプリケーション24は、リモートホスト20上のTEE22で実行される。実施形態で示すように、ゲートウェイ30は、認証対象となるアプリケーション24のコードを検証者10から入力として取得し、アプリケーション24が配置されているリモートホストマシン20のエンドポイントを取得する。
【0024】
実施形態で示すように、ゲートウェイ30は、プラットフォーム識別モジュール32、コンパイルモジュール34、識別情報計算モジュール36、リモート認証モジュール38、といった4つのモジュールで構成されている。
【0025】
図1に示すように、プラットフォーム識別モジュール32は、検証者10によって提供されるリモートホスト20のエンドポイントの情報を受信し、ホストマシン20を調べ、ホストマシン20上で実行されているTEE22のタイプを特定するように構成されている。TEE22のタイプの情報は、ゲートウェイ30の他のすべてのモジュール34,36,38に転送される。
【0026】
コンパイルモジュール34は、検証者10によって提供されるアプリケーション24のコードの情報を受け取り、プラットフォーム識別モジュール32によって検出されるアプリケーション24が実行されているTEE22のタイプに基づいて、アプリケーションコードをコンパイルするよう構成されている。
【0027】
アプリケーション24の識別情報IDは、ハッシュ関数H、アプリケーションバイナリBを選択し、識別情報ID=H(B)と計算することによって算出される。使用されるハッシュ関数は、設定されている認証スキームによって異なる。例えば、ハッシュ関数は、SHA256あるいは使用されている認証スキームによって定義されたその他の関数でありうる。実施形態において、識別情報は、いくつかのプラットフォーム属性、例えば、CPUモデルを含みうる。後者の場合、含まれるプラットフォームパラメータをPとすると、IDは、ID=H(P||B)として計算される。ここで||は連結を示す。アプリケーションの識別情報を計算するために使用されるプラットフォーム属性(使用される場合)は、使用されている認証スキームによって異なることに注意すべきである。
【0028】
識別情報計算モジュール36は、コンパイルモジュール34によって提供されるコンパイルされたアプリケーションコードおよびプラットフォーム識別モジュール32によって検出されるTEE22のタイプに基づいて、設定されているそれぞれの識別情報計算スキームを適用することによってアプリケーション24の識別情報を計算するよう構成されている。例えば、上記の例のようにID=H(B)を計算する。アプリケーション24の識別情報は、識別情報計算モジュール36が、コンパイルモジュール34から受信した情報(すなわち、コンパイルされたアプリケーションコード)およびプラットフォーム識別モジュール32から受信した情報(すなわち、TEE22のタイプ)が正しいと仮定して、予期される識別情報として計算される。
【0029】
最後に、リモート認証モジュール38は、いくつかのリモート認証プロトコルの検証ロジックを保持し、ホストマシン20上で実行されているTEE22のタイプに基づいて適切なものを選択し、選択されたリモート認証プロトコルを使用して、ホストマシン20と共にリモート認証プロトコルを実行するよう構成される。
【0030】
ホストマシン20が、認証対象であるアプリケーション24の識別情報に署名を付けて応答すると、リモート認証モジュール38は、署名の有効性を確認し、署名された識別情報が識別情報計算モジュール36によって計算されたものと一致することを確認する。両方の確認が成功した場合、リモート認証モジュール38は、検証者10に肯定的な回答を通知する。そうでなければ、リモート認証モジュール38は、検証者10に否定的な回答を通知する。
【0031】
図2は、例えば
図1のシナリオにおいて、検証者10の代わりにリモートホスト20のTEE22で実行されているアプリケーション24の認証を実行するために、認証ゲートウェイ30のモジュールの実行がどのように行われるかを示す高レベルフローチャートを示す。ホスト20は、いくつかのタイプのTEE22のうちの1つを提供することができる。例えば、ホスト20は、SGX対応プラットフォームまたはTrustZoneプラットフォームでありうる。
【0032】
フローはステップ201から始まり、リモート検証者10がアプリケーション24のリモート認証の要求を発行すると、ステップ202で、この要求がゲートウェイ30で受信される。最小要件として、要求は、少なくとも、検証者10が、認証を要求するアプリケーション24のコードのみならず、ローカルTEE22内でアプリケーション24を実行または展開するリモートホスト20のエンドポイントに関する情報を含む。例えば、エンドポイント情報は、ホスト20のIPアドレスを含むことができる。
【0033】
図1に示されるような認証ゲートウェイ30の内部アーキテクチャを考慮すると、検証者10によって提供されるホスト20のエンドポイントに関する情報は、プラットフォーム識別モジュール32に転送される。ステップ203で、プラットフォーム識別モジュール32は、ホスト20上のTEE22のタイプ(たとえば、SGXエンクレーブ、Trustzoneなど)と、適切な認証メカニズムを推測する。このことは、プラットフォーム識別モジュール32が、ホスト20に連絡し、ホスト20に特定の要求を送信して当該ホスト20から必要な情報の応答を受けることによって実行されうる。あるいは、プラットフォーム識別モジュール32は、ホスト20上の特定の開いているポートを検出することによって、ホスト20上のTEE22のタイプを推測することができる。プラットフォーム識別モジュール32によって検出されたTEE22のタイプは、認証ゲートウェイ30の他のモジュール、すなわち、具体的にはコンパイルモジュール34、識別情報計算モジュール36、およびリモート認証モジュール38に、内部で通知される。
【0034】
ステップ204で、コンパイルモジュール34は、プラットフォーム識別モジュール32によって識別され通信されるよう、信頼性のあるプラットフォームのために、検証者10によって提供されるアプリケーション24のコードをコンパイルする。このタスクを達成するために、実施形態では、コンパイルモジュール34には、いくつかのアーキテクチャ依存コンパイラ35が予め構成されている。コンパイラ35は、
図1に例示的に示されるように、コンパイルモジュール34上に直接常駐することができる。あるいは、コンパイラ35は、コンパイルモジュール34がアクセスできる別のエンティティ上に実装されうる。
【0035】
コンパイルモジュール34は、いくつかのアーキテクチャ依存コンパイラ35の中から、ホスト20のアーキテクチャに一致するもの、具体的には、プラットフォーム識別モジュール32から受信したTEE22のタイプに一致するもの、を選択するように構成される。例えば、コンパイルモジュール34は、ホスト20のTEE22がSGXエンクレーブの形式で実装される場合には、x86アーキテクチャを使用し、あるいは、ホスト20のTEE22がTrustZoneプラットフォームとして実装される場合には、ARMアーキテクチャを使用しうる。当業者によって理解されるように、上記TEEタイプと適切なコンパイラのリストは、単なる例示であり、網羅的ではなく、さらなる実装が同様に実現され得る。タスクが首尾よく達成されると、コンパイルモジュール34は、コンパイルされたコードを識別情報計算モジュール36に送信する。
【0036】
ステップ205で、識別情報計算モジュール36は、コンパイルモジュール34によって提供されたコンパイルされたコードと、プラットフォーム識別モジュール32によって検出されたホスト20のTEE22タイプと、を使用して、アプリケーション24の予期される識別情報を計算する。算出された識別情報は、ゲートウェイ30のリモート認証モジュール38に送信される。
【0037】
ステップ206で、リモート認証モジュール38は、検証者として、あるいはより正確には検証者10に代わって、ホスト20上で実行されているアプリケーション24に対するリモート認証プロトコルを開始する。使用されるリモート認証プロトコルは、ホスト20によって使用されているリモート認証プロトコルに従って、リモート認証モジュール38によって選択される。このとき、プラットフォーム認証モジュール32から通知されるホスト20上で実行されるTEE22のタイプに基づいて、リモート認証プロトコルの選択が行われる。
【0038】
リモート認証モジュール38は、選択されたリモート認証プロトコルを使用して、アプリケーション24のリモート認証の要求をホスト20に発行する。認証要求に応答して、ホスト20上のTEEサブシステム22は、ホスト20のローカルTEE22で実行されているアプリケーション24の識別情報に署名を発行する。リモート認証モジュール38は、署名を受信すると、ステップ207で、まず受信した署名を検証する。ステップ208で、署名の検証が有効である場合には、リモート認証モジュール38は、ステップ209で第2のチェックを行う。この第2のチェックは、署名された識別情報が、識別情報計算モジュール36から受信された予期される識別情報と一致することを検証することを目的とする。ステップ210で、このチェックも成功したことが判明した場合、リモート認証モジュール38は、ステップ211で検証者10に肯定的な認証結果を提供する。ステップ208またはステップ210のいずれかで2つのチェックのいずれかが失敗したことが判明した場合、リモート認証モジュール38は、ステップ213を終了する前に、ステップ212で検証者10に否定的な認証結果を提供する。
【0039】
別の実施形態よれば、最終的な認証結果(すなわち、肯定的または否定的)だけを検証者10に通知する代わりに、それぞれステップ207およびステップ209で実行された両方の検証の結果を、検証者10に直接転送することができる。オプションとして、リモート認証モジュール38は、ホスト20から受信した署名を検証者10に転送することができる。
【0040】
本発明の多くの変形例および実施形態は、上述した説明および関連する図面に記載された説明により、本発明が関係する当業者には実施可能であろう。従って、本発明は、開示された特定の実施形態に限定されるものではなく、変形例および実施形態は添付の特許請求の範囲内に含まれることが意図されていることを理解されたい。本明細書では特定の用語が使用されているが、それらは一般的かつ説明的な意味でのみ使用されており、限定の目的では使用されていない。