トラストゾーンとは
1つのCPUで2つの世界を実現します。
ARMプロセッサが提供するトラストゾーン(TrustZone)は、システム全体をセキュアワールドとノーマルワールドに分けるセキュリティ技術です。
AndroidやLinuxなどRich OSで動くノーマルワールド、指紋認証や暗号鍵の管理などを行うセキュアワールドです。
セキュリティが必要な処理をセキュアワールドで行い、一般的な処理をノーマルワールドで行うことができます。
トラストゾーンは身近にある
トラストゾーンは具体的には以下のような機能で利用されています。
身近なところで使われていることが分かります。
- 機能: 指紋データやパスワードなどのユーザー認証情報の保護と認証処理。
利用シーン: スマートフォンでの生体認証に利用される。認証情報をセキュアな領域に保存、認証処理をセキュアに実行することで不正アクセスを防ぐ。 - 機能: デジタルコンテンツの復号化と再生をセキュアな環境で行う。
利用シーン: NetflixやAmazon Prime Videoなどの動画ストリーミングサービスで、コンテンツの復号化と再生をセキュアに行い不正コピーを防止する。 - 機能: クレジットカード情報や個人情報などの機密データのセキュアな保存とアクセス制御。
利用シーン: モバイルペイメントアプリで、クレジットカード情報や取引情報をセキュアな領域に保存し不正なアクセスや改ざんを防ぐ。
トラストゾーンの構成

- Client Apps (CA): ノーマルワールドで動作するアプリケーション。セキュアAPIを呼び出してセキュアワールドの機能を利用する。
- Trusted Apps (TA): セキュアワールドで動作するアプリケーション。セキュアAPIを通じてCAからのリクエストを受け、セキュアな処理を行う。
- Trusted OS: セキュアワールドで動作するオペレーティングシステム。TAを管理しセキュアな環境を提供する。
AndroidアプリケーションでARMトラストゾーンを利用するためには、セキュアAPIを使用してノーマルワールドからセキュアワールドにアクセスする必要があります。
セキュアAPIの初期化、呼び出し、終了の手順を正しく実装し、セキュリティ対策を講じることで、安全なアプリケーションを開発します。
まとめ
トラストゾーンは悪意ある攻撃の表面積を最小限にするための強固な盾です。
AndroidなどのRich OSが攻撃にさらされても、ノーマルワールドとセキュアワールドの切り替えを司るNSビットをハードウェアが守る限りセキュアなデータは守られます。
エンジニアはトラストゾーンがセキュアだと信じるだけではなく、ここでは説明しませんがEL3のモニターコードやTZASC(TrustZone Address Space Controller)の設定がいかに重要かを考え設計しましょう。

