かれこれ2年以上動画配信サービスのアプリ開発を担当していますが、TrustZoneについて深く理解できていなかったので調べてみました。
はじめに
多くの動画配信サービスでは、配信しているコンテンツの漏洩を防ぐためにDRM技術が利用されています。
自社制作のコンテンツだけであれば簡単なDRMをかけるだけで十分なケースも多いですが、映画会社や配給会社に放映権料を支払って調達したコンテンツを配信する場合は、高いセキュリティレベルが求められます。
そんな映画会社や配給会社からの高いセキュリティ要件を担保するためにTrustZoneの仕組みが必要になってきます。
TrustZoneの仕様
さて本題です。
TrustZoneは、ARMのCortex-Aシリーズに標準搭載されているセキュリティ技術で主な仕様は以下の通りです。
・ARMの実行環境を「Normal World(下記図の青)」と「Secure World(下記図の緑)」に分離する
・Normal Worldには、Android等のRich OSがインストールされ、その上で様々なアプリケーションが動作する
・Secure Worldには、一般的にTEE(Trusted Execution Environment)仕様で標準化された実行環境およびアプリケーションが搭載される
・Secure World側からは、Normal Worldの全ての情報にアクセスできる
・Normal World側から、Secure Worldへの通信は制限がかけられており、一般的にTEE仕様のAPIを経由してアクセスができる
Cortex-A向けのTrustZoneのアーキテクチャ(出典:ARM)
TrustZone+TEEがセキュリティを高める理由
もし、TrustZone+TEEの仕組みがない場合はメインOS上で全ての機能が動作することになります。
DRMを解除するための鍵情報や、DRMを解除した後の生のコンテンツをメインOS上で扱うことになるため、もしメインOSがハッキングを受けた場合には漏洩のリスクがあります。
一方、TrustZone+TEEの仕組みを使えばDRMの解除、鍵の管理、DRMを解除した後の生のコンテンツの管理からプレイヤーへの出力までをセキュア領域内のアプリケーションで実行され、かつそれらの情報にはメインOS側からはアクセス出来ないため、もしメインOSのハッキングを受けたとしてもセキュア領域のデータは守ることが出来ます。
AndroidにおけるTEE
Android KeyStoreでもTEEの技術が使われています
http://dev.fjuts.com:83/android/reference/android/security/keystore/KeyInfo.html#isUserAuthenticationRequirementEnforcedBySecureHardware()
参考にさせて頂いたサイト
IoT時代のセキュリティを守るARMの「TrustZone」とは何か
https://the01.jp/p0002745/
セキュアハードウェアの登場とその分析
http://www.ffri.jp/assets/files/monthly_research/MR201303_TrustZone.pdf