この記事では、Trusted Execution Environment(TEE)の概要とOP-TEEによる実現方法、ARM Trust-Zoneの仕組み、OP-TEEを使用したi.MX 8のブートフロー、OP-TEEに関するiWaveの専門知識について説明します。
OP-TEEは、Android/Linux向けにTrusted Execution Environment(TEE)を提供するセキュアなオペレーティングシステム(OS)です。TEEは、セキュアなアプリケーションの開発と実行のために、アプリケーションプロセッサ内に安全な環境を提供します。アプリケーションプロセッサ上で動作するAndroid/Linuxは、リッチOSと呼ばれます。OP-TEEは、Android/Linuxが動作するのと同じプロセッサ上で動作しますが、OP-TEEは、ハードウェアとソフトウェアの両方によって、システムの他の部分から分離されています。OP-TEEは、デバイスのメインプロセッサとメモリのフルパワーにアクセスできますが、完全に分離されています。OP-TEE OSの分離により、ユーザーによってインストールされた悪意のあるアプリケーションや、Android/Linuxで発見される可能性のある潜在的な脅威から保護されます。
トラストゾーンは、ほとんどのARM Cortex A/Mプロセッサで利用可能なシステムオンチップ・セキュリティ機能である。これは、セキュアな世界(TEE)と通常の世界(REE/Rich Execution Environment)の間の厳格なハードウェア分離を提供します。この技術により、各物理プロセッサ・コアは、通常の世界とセキュアな世界の2つの仮想コアを提供することができます。
OP-TEEは、Trusted Execution Environmentのオープンソーススタックです。このスタックはARM-v7とARM-v8アーキテクチャをサポートしています。このオープンソースプロジェクトには以下が含まれます:
OP-TEEの主な設計目標は以下の通り:
OP-TEEアーキテクチャ:
In a system with a TEE, untrusted applications run on a Rich Execution Environment (REE) and trusted applications (TAs) runs on a Trusted Execution Environment (TEE).
Only trusted applications running on a TEE (Secure World) have complete access to the main processor, peripherals, and memory, while hardware isolation protects these from untrusted applications running on the main operating system (Non-Secure World).
TEEでは、すべての信頼されたアプリケーション(TA)と関連するデータは、通常の(信頼されていない)オペレーティングシステムとそのアプリケーションから完全に分離されます。また、信頼されたアプリケーションは、他の信頼されたアプリケーションや TEE 自体から分離された状態で実行されなければなりません。
ARMのTrustZoneの仕組みは?
ハードウェアは、TrustZoneテクノロジーのもと、セキュアワールドとノン・セキュアワールドに分かれている。
システム・オン・チップのセキュアな状態を実現するために、保護された資産/データを利用する信頼されたソフトウェア(信頼されたOS)を開発する必要がある。トラステッド・ブート、セキュア・ワールド・スイッチ・モニタ、小型トラステッド・OS、トラステッド・アプリは、トラステッド・ソフトウェアとして実装される。
ARMのTrustZoneはセキュア・モニター・モードを導入している。
セキュア・モニター・コール(SMC)は、セキュア・ワールドからノン・セキュア・ワールドへ移行するための専用命令である。SMC 命令が実行されると、CPU はセキュアモニタモードに入り、保護されたペリフェラルやメモリ領域を含むすべてのハードウェアにアクセスできるようになる。この時、TEE ファームウェア/オペレーティングシステムを実行することができます。信頼されたアプリケーションは、セキュアワールドの TEE 上で実行される。
例として、Linux 上で動作する通常の世界(信頼されない)アプリケーションが、TEE OS 上で動作する信頼されたアプリケーションからサービスを受けたいとします。信頼されないアプリケーションは、グローバルプラットフォーム API 仕様に基づく API を使用して、TEE サプリカントの助けを借りて Linux カーネル(Linux TEE ドライバ)に要求を送信し、TEE カーネルは TrustZone ドライバを使用して SMC 命令を介して TEE OS に要求を送信します。
下図は、主要なOP-TEE組み込みコンポーネント、すなわち、セキュア側のOP-TEE OS、OP-TEEクライアント、Trustedアプリケーション、および非セキュア側のOP-TEE Linuxカーネルドライバを示しています。
(参考リンクはこちら)
i.MX 8(ARM V8)上でのOP-TEEとAndroid/Linuxのブートフロー:
The below section describes how OP-TEE boots on i.MX 8 platform along with Linux/Android.
Files and binaries required in the boot partition:
ARM V8では、ARMはARMトラステッド・ファームウェア(ATF)を使用してセキュア・コンポーネントをブートする優先方法を指定しています。ATF は最初に OP-TEE OS をロードします。OP-TEE OSは、セキュアワールドを初期化します。次に、ATF は U-Boot をロードし、DTB をオンザフライで変更し、Linux TEE ドライバをロードする特定のノードを追加します。その後、Linux OS が起動する。ソフトウェアの詳細なフローを下図に示す:
ARMv8-A comes with ARM Trusted Firmware (ATF).
ATF runs at EL3 (Exception Level 3) and is responsible for
OP-TEE OS は、セキュア EL1(S-EL1:Secure Exception Level 1)で動作し、ATF と協調する必要がある。セキュアモニタ関連の実装は、ATF 内にある。ATF 内のセキュアモニタは、Dispatcher と呼ばれる。Dispatcher は、セキュアモニタとして動作し、ARMv8 プラットフォームの OP-TEE OS とのインタフェースを担当します。OP-TEE OSとのインタフェースに必要なOP-TEE Dispatcher(OP-TEED)。
iWave OP-TEEの専門知識:
iWave is having rich experience in providing secure software solutions for embedded products.
Below diagram shows a sample of what is implemented by iWave:
iWaveは、OP-TEEに取り組み、組み込み製品にセキュリティ層を提供した経験があります。以下は、OP-TEEに関してiWaveが提供するサポートです:
iWaveは、i.MX 6ULプラットフォーム上でOP-TEEを使用したセキュアBSPを提供しています。
概要
OP-TEEは、エッジIoTデバイスのセキュリティ層として使用されます。OP-TEEはオープンソースであるため、OP-TEE OSとTrustedアプリケーションの導入が容易です。iWaveは、最新のOP-TEEの異なるプラットフォームへの移植、OP-TEEへのドライバの移植、およびTrustedアプリケーションの記述の経験があります。
また、iWaveは接続されたデバイスを保護するセキュリティ・スイートを提供し、暗号化、ストレージ、データ伝送、証明書管理などのセキュリティ機能を可能にする。統合が容易なこのソリューションは、安全でセキュアな環境を構築するためのセキュリティ上の課題に対処するのに役立ちます。セキュリティ・スイートには、セキュア・ブート、Wi-Fiセキュリティ、イベント・ロギング、OSハードニング、アクセス・コントロール、ソフトウェア・ファイアウォール、セキュア・ファームウェア・アップデートなどが含まれる。
セキュリティ・スイートの詳細については、こちらをご覧ください。
詳しい情報やお問い合わせは、mktg@iwavesystems.com、または地域パートナーまでご連絡ください。