特集
» 2015年11月24日 18時00分 公開

“印刷”のCortex-M0から64bit化を推進するCortex-A35、mbed OSまで、ARMの示す未来像ARM TechCon 2015基調講演リポート(3/4 ページ)

[大原 雄介,MONOist]

ARM v8-Mで実現するセキュリティ

 ここから話はセキュリティに切り替わった。

 冒頭の30年の間に何が変わったか?といえば、あらゆるところに攻撃が仕掛けられるようになったことである(Photo19)。これに対してどう対応するか? デバイスに証明書をつける、という方式は既に破られている(Photo20)。ではアプリケーション側に鍵を持たせれば?というと、これも難しい(Photo21)。これはIoTでは大きな問題である。また、特に低コストのMCUでこれをいかに実現するかも鍵である(Photo22)。

攻撃される場所は増えた証明書の偽造も珍しくない手段 Photo19:もう一つ言えば、常時接続がごく当たり前になった事もやはり大きく変わったことで、これにより更に攻撃される箇所が増えた(写真=左)、Photo20:証明書を偽造し、途中にSSL intercepterを挟む事で通信の秘匿性が破られてしまう(写真=右)
アプリにカギを持たせる方法も安全とは言いにくいセキュアブロックの搭載はMCUのクラスによっては非現実的( Photo21:この方式も脆弱性が幾つもあるため、実際には安全とは言いがたい(写真=左)、Photo22:1ドル未満のMCUだから、従来のTrustZoneの様にSecureブロックを別に搭載する、といった対処だとコストが上がりすぎてしまいうまくいかない(写真=右)

 これに向けてARMが新しく提供するのがARM v8-Mである。ただし現状はまだアーキテクチャのレベルの話で、具体的な製品(というか、IP)が現時点であるわけではない(Photo23)。

MCUが2つ Photo23 MCUが2つあるのは、例えば機器制御は従来のMCUを使いコミュニケーション部にARM v8-MベースMCUを使うといったやり方もありえるからという話で1つにまとめても問題はない

 このARM v8-M、命令そのものも若干増加しているが、基本は32bitのThumb2ベースのままである。最大の違いはTrustZoneに対応したということだが、その実装は従来のCortex-A向けとはちょっと異なる(Photo24)。ARM v8-MでのTrustZoneの実装は、Cortex-Aの様な「Secureな回路ブロックが用意される」のではなく、「SecureなモードとNormalモードの2種類の動作モードをサポートする」形でものとなった(Photo25)。

最大の相違点はTrustZone「モード」を搭載したことARM v8-Mではセキュア/ノンセキュアのNormal/ISRルーチンは相互に行き来ができる様になっており、しかもそのオーバーヘッドは非常に低い Photo24 最大の相違点はTrustZone「モード」を搭載したことである(写真=左)、Photo25 この図だと分かりにくいが、ARM v8-Mではセキュア/ノンセキュアのNormal/ISRルーチンは相互に行き来ができる様になっており、しかもそのオーバーヘッドは非常に低いものになっている(写真=右)

 この「TrustZoneモード」のメリットを示すとこんな形である(Photo26)。とにかくオーバーヘッドが少ない(公式な数字ではないが、Function Callでの遷移の場合10cycle未満で切り替えできるとされる)のが特徴で、またアプリケーションから見ると単にSecureなルーチンを呼ぶだけということで、高級言語を使ってのプログラミングも容易だし、Hypervisorが(原理上は)不要というのも大きい。

ハイパーバイザーに関しては「mbed 3.0」で Photo26 ハイパーバイザーに関しては「mbed 3.0」にて

 ただし、セキュアな通信を行う場合、鍵生成のためのTRNG(True Random Number Generator)や公開鍵暗号や共通鍵暗号に対応した暗号/復号処理が必須であり、これをCPUにやらせるのは負荷が大きい。このために新しく提供されるのがCryptoCellで、こちらはCortex-A用とCortex-M用の両方に提供される(Photo27)。

photo Photo27 要するにセキュリティ向けの新しいIPの提供である。ちなみにCryptoCell-300はARM v8-M専用ではなく、既存のCortex-Mにも利用できるとのこと

Copyright © ITmedia, Inc. All Rights Reserved.