TrustZone 、 Android 端末で大事な鍵を守る方法
夏休みで南仏バスクのビアリッツに泳ぎに来ているのですが、今年はクラゲの当たり年で初日に刺されて後は海辺お散歩ばっかりしています。ちなみにクラゲはフランス語でメドゥーサといいます。
さて、鍵を流出させてしまったときの罰金8億円が明記されている DTCPIP, CPRM HDCP といった情報家電に必須な仕様を Android に実装しようとすると厄介です。安全な鍵の置き場所がないからです。native code 上に鍵を隠すような方法をかんがえる方もいらっしゃるかもしれませんが、IDA PRO のようなたった20万円で買えてしまう Dis Compiler を使うと素人でも簡単に見えてしまいます。
Android 上で鍵を隠す手段としては、ARM Cortex A-9 以降のアーキテクチャが標準でそなえる TrustZone が有効です。TrustZone の仕組みを一言でいうと、CPU にセキュアモードとノンセキュアモードの二つの動作モードを用意し、さらにメモリ等のリソースにセキュアモード専用属性をもたせることでノンセキュアモードでの動作時のセキュアメモリへのアクセスに例外を発生させる仕組みです。もっとばっさりいうと、仮想セキュアチップという感じでしょうか。
言及した商品へのリンクは以下です。
- IDA PRO: Hex-Ray社のサイト
http://www.hex-rays.com/idapro/
- TrustZone: ARM社のサイト
http://www.arm.com/ja/products/processors/technologies/trustzone.php