連載
» 2017年01月13日 11時00分 公開

ARMv8-Mアーキテクチャ解説:ARMの最新アーキテクチャ「ARMv8-M」が目指す「セキュアMCU」とは (3/3)

[大原雄介,MONOist]
前のページへ 1|2|3       

「世の中のMCUをセキュアなものに変えていこう」

 またインターコネクトについては、Cortex-M23/33には対策が含まれていない。ただしCortex-M23/33と同時に発表されたSIE-200(図4)は、通信を全て暗号化するという形でこれに対応している。周辺回路がセキュアかノンセキュアかとは無関係に、「AHB5」の手前に置かれた「TrustZone Controller」でデータの暗号化を自動的に行うので、仮にインターコネクトをJTAGなど経由で盗聴したり、データを改ざんしたりしても不可能になっている。当然ながら、JTAGポートもこの暗号化に対応しており、正しいキーを持っていない場合は内部アクセスが一切不可能だ。これらの周辺回路による防御が第3段である。

図4 図4 「SIE-200」の内部構造(クリックで拡大) 出典:ARM
図5 図5 「Cryptocell-312」の主要な特徴(クリックで拡大) 出典:ARM

 さて、これら3段構えの防御で、MCU内部への侵入や盗難、改ざんは非常に難しくなっている。しかし、ここまでで唯一手付かずなのが外部との通信である。これは物理的な防御が難しいので、データ的な防御となる。要するに通信の暗号化である。

 ただし、強度の高い暗号を利用する場合、通信量が多くなると暗号化/復号に要する処理が増大することになる。このために通常セキュアMCUでは、AESやDES、Hashなどに対応した暗号化アクセラレータを搭載することが多い。Cryptocell-312はこうした暗号化アクセラレータや真乱数発生器などをまとめたIPである(図5)。これによって、消費電力の増大や処理能力の低下を最小に抑えつつ、暗号化による安全な通信を行えるようにしよう、というわけだ。

 この通信周りに関して助けとなるのが「mbed OS」(図6)である。最新バージョンの「mbed OS 5」では、TrustZoneにも対応しており、暗号化処理を含むセキュア領域のハンドリングをOSレベルで行ってくれるので、アプリケーション開発者がいちいちセキュア、ノンセキュアを意識しなくても安全なアプリケーションが開発できる。加えて外部の通信は、無条件で「mbed TLS」を利用してトランスポート層(Transport Layer)で通信の暗号化を行ってくれる。

図6 図6 「mbed OS 5」の概要(クリックで拡大) 出典:ARM

 必要ならこの上にアプリケーションレベルの暗号化を掛けることも可能で、暗号の多重化により傍受による解読を難しくさせる。ちなみにmbed TLSを利用する場合、通信相手も当然これに対応している必要があるが、やはりARMが提供する「mbed Device Server」とか「mbed Cloud」は、デフォルトでTLSによる通信に対応しているので、安全にクラウドまでの通信が保証される。

 「どんなものにも必ず穴がありえる」という前提のもと、セキュアMCUの場合は多段防御が基本になっている。ARMv8-Mというか、Cortex-M23/33やSIE-200、Cryptocell-312も、こうした多段防御を前提にした構造になっており、これをARMが標準のものとしてリリースすることで、世の中のMCUをセキュアなものに変えていこう、という取り組みと考えればよいだろう。

関連キーワード

マイコン 関連 | ARM | 暗号化 | mbed OS | IoT | mbed Cloud


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.