トラステッド実行環境(TEE )は、メインプロセッサのセキュア領域です。TEEは、内部にロードされたコードとデータの機密性と完全性を保護するのに役立ちます。データの機密性とは、TEE外部の権限のないエンティティがデータを読み取ることを防ぎ、コードの完全性とは、TEE内のコードが権限のないエンティティによって置き換えられたり変更されたりすることを防ぐことです。権限のないエンティティには、 Intel SGXで説明されている特定のDRMスキームのように、コンピュータの所有者自身が含まれる場合もあります。
これは、独自の、不変で機密性の高いアーキテクチャ上のセキュリティを実装することによって実現されます。このセキュリティは、メモリ内の特定のアプリケーション コードとデータを分離するハードウェア ベースのメモリ暗号化を提供します。これにより、ユーザー レベルのコードは、より高い特権レベルで実行されるプロセスから保護されるように設計された、エンクレーブと呼ばれるプライベート メモリ領域を割り当てることができます。[ 1 ] [ 2 ] [ 3 ]分離された実行環境としての TEE は、分離された実行、TEE で実行されるアプリケーションの整合性、および資産の機密性などのセキュリティ機能を提供します。一般的に、TEE は、デバイス上で実行される信頼できるアプリケーションに対して、リッチなオペレーティングシステム (OS) よりも高いレベルのセキュリティを提供し、「セキュア エレメント (SE)」よりも多くの機能を提供する実行空間を提供します。
Open Mobile Terminal Platform (OMTP) は、その「Advanced Trusted Environment:OMTP TR1」標準で TEE を初めて定義し、「アプリケーションをサポートするために必要な機能を提供するハードウェアおよびソフトウェア コンポーネントのセット」と定義しました。TEE は、定義された 2 つのセキュリティ レベルのいずれかの要件を満たす必要がありました。最初のセキュリティ レベルであるプロファイル 1 は、ソフトウェア攻撃のみを対象としており、プロファイル 2 は、ソフトウェア攻撃とハードウェア攻撃の両方を対象としていました。[ 4 ]
TR1規格に準拠したARM TrustZoneテクノロジーに基づく商用TEEソリューションが後に発売され、Trusted Logicが開発したTrusted Foundationsなどが挙げられる。 [ 5 ]
OMTP規格に関する作業は、グループが卸売アプリケーションコミュニティ(WAC)に移行した2010年半ばに終了した。[ 6 ]
TEE は通常、ハードウェア分離メカニズムと、その分離メカニズム上で動作するセキュアなオペレーティングシステムで構成されますが、この用語は保護されたソリューションを意味するより一般的な意味でも使用されています。[ 8 ] [ 9 ] [ 10 ] [ 11 ] GlobalPlatform TEE はハードウェア分離を必要としますが、EMVCo などの他の TEE は、ハードウェアとソフトウェアの両方のソリューションを指すために TEE という用語を使用しています。[ 12 ] FIDO は、ハードウェア分離に基づく TEEの制限された動作環境で TEE の概念を使用しています。 [ 13 ] TEE で実行されている信頼できるアプリケーションのみが、デバイスのメインプロセッサ、周辺機器、メモリの全パワーにアクセスできますが、ハードウェア分離により、これらはメインオペレーティングシステムで実行されているユーザーがインストールしたアプリから保護されます。TEE 内のソフトウェアと暗号化により、内部に含まれる信頼できるアプリケーションが互いに保護されます。[ 14 ]
TEEに関する標準化活動に貢献している主な関係者は、サービスプロバイダー、モバイルネットワーク事業者(MNO)、オペレーティングシステム開発者、アプリケーション開発者、デバイスメーカー、プラットフォームプロバイダー、およびシリコンベンダーである。
ユーザーが制御するソフトウェアによるハードウェアのシミュレーションを防ぐため、いわゆる「ハードウェア信頼の基点」が使用されます。これは、製造時にチップに直接埋め込まれる一連の秘密鍵です。モバイルデバイスでは、通常、 eFuseなどのワンタイムプログラマブルメモリが使用されます。これらの秘密鍵は、デバイスをリセットした後でも変更できません。これらの秘密鍵の公開鍵は、製造元のデータベースに格納されており、暗号化処理やアクセス制御を行う回路とともに、信頼できるファームウェアに署名するために使用される、信頼できる当事者(通常はチップベンダー)の公開鍵の非秘密ハッシュも一緒に格納されています。
ハードウェアは、信頼できる当事者の鍵で署名されていないすべてのソフトウェアが特権機能にアクセスできないように設計されています。ベンダーの公開鍵は実行時に提供され、ハッシュ化されます。このハッシュは、チップに埋め込まれたハッシュと比較されます。ハッシュが一致する場合、公開鍵は、信頼できるベンダーが管理するファームウェア(Android デバイスのブートローダーのチェーンや SGX の「アーキテクチャ エンクレーブ」など)のデジタル署名を検証するために使用されます。その後、信頼できるファームウェアを使用してリモート認証が実装されます。[ 15 ]
アプリケーションが認証されると、その信頼されていないコンポーネントは、信頼できるコンポーネントをメモリにロードします。信頼できるアプリケーションは、ハードウェアによって信頼されていないコンポーネントによる変更から保護されます。信頼されていない側は、検証者のサーバーからnonceを要求し、これは暗号認証プロトコルの一部として使用され、信頼できるアプリケーションの完全性を証明します。証明は検証者に渡され、検証者がそれを検証します。有効な証明は、シミュレートされたハードウェア(つまりQEMU)では計算できません。なぜなら、証明を構築するには、ハードウェアに組み込まれた鍵へのアクセスが必要であり、信頼できるファームウェアのみがこれらの鍵、および/またはそれらから派生した鍵、またはそれらを使用して取得した鍵にアクセスできるからです。ファウンドリに記録されたデータにアクセスできるのはプラットフォーム所有者のみであるため、検証側はベンダーによって設定されたサービスとやり取りする必要があります。このスキームが不適切に実装されている場合、チップベンダーはどのアプリケーションがどのチップで使用されているかを追跡し、認証が通過しなかったことを示すメッセージを返すことで、選択的にサービスを拒否することができます。[ 16 ]
攻撃者がリモート認証を通過できる方法でハードウェアをシミュレートするには、ハードウェアから鍵を抽出する必要がありますが、これには実行に必要な機器と技術スキルのためコストがかかります。たとえば、集束イオンビーム、走査型電子顕微鏡、マイクロプロービング、チップのデカプセル化[ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]を使用することは、ハードウェアがリバースエンジニアリングによって鍵が破壊されるように設計されている場合は困難、または不可能です。ほとんどの場合、鍵はハードウェアごとに固有であるため、1 つのチップから抽出された鍵を他のチップで使用することはできません (たとえば、物理的に複製不可能な機能[ 23 ] [ 24 ] )。
TEE の本来の特性は所有権の剥奪ではないものの (デバイスの所有権を最初に取得したユーザーのみが、自身のキーのハッシュを電子ヒューズに書き込むことでシステムを制御できるようにシステムを設計することは可能である)、実際には、コンシューマー エレクトロニクスにおけるこのようなシステムはすべて、チップ メーカーが認証とそのアルゴリズムへのアクセスを制御できるように意図的に設計されている。これにより、メーカーは、ハードウェアのユーザー ベースを収益化するために、メーカーと (通常は商業的な) ビジネス契約を結んでいるソフトウェア開発者にのみ TEE へのアクセスを許可し、ティボライゼーションや DRMなどのユース ケースを可能にし、特定のハードウェア機能をベンダー提供のソフトウェアでのみ使用できるようにして、広告、トラッキング、市場セグメンテーションのためのユース ケースの制限などのアンチフィーチャーにもかかわらず、ユーザーにそのソフトウェアの使用を強制することができる。
注: TEE の文献の多くは、このトピックを「プレミアムコンテンツ保護」という定義で扱っており、これは多くの著作権所有者が好む用語です。プレミアムコンテンツ保護は、デジタル著作権管理(DRM) の特定の使用例であり、フリーソフトウェア財団などの一部のコミュニティの間で議論の的となっています。[ 25 ]これは、エンドユーザーが 4K 高解像度映画などのコンテンツを消費する方法を制限するために、著作権所有者によって広く使用されています。
TEEは、スマートフォン、タブレット、HDテレビなどの接続機器上のデジタルエンコードされた情報(例えば、HD映画や音声)を保護するのに適した環境です。この適性は、TEEが機器の所有者から保存された秘密情報へのアクセスを遮断できること、そしてTEEと機器のディスプレイやサブシステムとの間に保護されたハードウェア経路が存在することが多いという事実に基づいています。
TEEは、コンテンツがデバイス上に保存された後に、そのコンテンツを保護するために使用されます。コンテンツは暗号化によって送信中またはストリーミング中に保護されますが、TEEは、デバイス上で復号化されたコンテンツがアプリ開発者またはプラットフォームベンダーによって承認されていない環境に公開されないようにすることで、コンテンツを保護します。
モバイルウォレット、ピアツーピア決済、非接触決済、モバイルデバイスをPOS端末として使用するなど、モバイルコマースアプリケーションには、明確なセキュリティ要件が求められることがよくあります。TEE(Trusted Element)は、近距離無線通信(NFC)、セキュアエレメント、信頼できるバックエンドシステムと組み合わせて使用されることが多く、金融取引を可能にするために必要なセキュリティを提供します。
場合によっては、エンドユーザーとのやり取りが必要となり、ユーザー認証の手段として、PIN、パスワード、生体認証情報などの機密情報をモバイルOSに開示する必要が生じる場合があります。TEEは、モバイルデバイス上でユーザー認証を構築するために使用できる信頼できるユーザーインターフェースをオプションで提供します。
暗号通貨の台頭に伴い、TEEは暗号通貨ウォレットの実装にますます使用されるようになっている。これは、TEEが通常のオペレーティングシステムよりも安全にトークンを保存する機能を提供し、必要な計算および認証アプリケーションを提供できるためである。[ 26 ]
TEEは、PINやパスワードよりも使いやすく、盗難されにくい生体認証方法(顔認証、指紋センサー、音声認証)をサポートするのに適しています。認証プロセスは一般的に次の3つの主要な段階に分かれています。
TEE(Trusted Encryption Environment)は、モバイルデバイス内でユーザー認証に必要なマッチングエンジンと関連処理を収容するのに適した領域です。この環境は、データを保護し、モバイルOSに存在するセキュリティ対策が施されていないアプリに対する緩衝地帯となるように設計されています。この追加のセキュリティ対策は、サービスプロバイダーのセキュリティニーズを満たすだけでなく、端末開発者のコスト削減にも役立ちます。
TEEは、政府機関、企業、クラウドサービスプロバイダーが、モバイルデバイスおよびサーバーインフラストラクチャ上で機密情報を安全に取り扱うために利用できます。TEEは、モバイルOSで発生するソフトウェア攻撃に対する保護レベルを提供し、アクセス権限の制御を支援します。これは、モバイルOSや存在する可能性のある悪意のあるマルウェアから隔離して保護する必要のある、機密性の高い「信頼できる」アプリケーションを格納することで実現されます。TEEが提供する機能とセキュリティレベルを活用することで、政府機関や企業は、従業員が自身のデバイスを安全かつ信頼できる方法で使用していることを確信できます。同様に、サーバーベースのTEEは、バックエンドインフラストラクチャに対する内部および外部からの攻撃に対する防御にも役立ちます。
ソフトウェア資産の増加と再利用の促進に伴い、モジュール型プログラミングは、機能を小さな独立したモジュールに分割することで、ソフトウェアアーキテクチャを設計する上で最も生産性の高いプロセスとなっています。各モジュールには、目的の機能を実行するために必要なすべてが含まれているため、TEE(Teaching Environment)は、高い信頼性とセキュリティを備えたシステム全体を構築することを可能にし、同時に各モジュールが他のモジュールの脆弱性の影響を受けないようにします。
モジュール間で通信やデータ共有を行うために、TEEはオブジェクトシリアル化などのメカニズムとプロキシを組み合わせることで、モジュール間でペイロードを安全に送受信する手段を提供する。
コンポーネントベースのソフトウェアエンジニアリングを参照してください。
TEEの実装をサポートするために、以下のハードウェア技術を使用できます。