福野泰介の一日一創 - create every day

CPUの安全、Arm Cortex-M0/M0+はセキュア機能が加わりCortex-M23に! Cortex-M3もはじめました

2018/01/07
#IoT #stm32 

PC(WindowsもMacも)、スマホ(iPhoneもAndroidも)、サーバー、これらコンピューターに共通して使われている部品、CPUに問題が見つかり、急ピッチで対策が進んでいます。

見つかったのは、アプリの安全な実行を司る部分のバグ。

CPUには、アプリ毎に実行権限を設定する機能があって、ネットワークからダウンロードしてきたアプリなどにむやみに大事なデータを見せたり、重要な設定を触らせないよう制限をかける機能があります。 その機能に穴があって、パスワードや個人情報など、読めてはいけないデータが読めてしまう可能性があるとのこと。
Googleが発見した「CPUの脆弱性」とは何なのか。ゲーマーに捧ぐ「正しく恐れる」その方法まとめ - 4Gamer.net

原因は、L1キャッシュというコンピューターが実行するプログラムを高速化のために一時的においておく機能。 CPUは、CPUの速度に対して遅いメモリ(RAM)から、使いそうなデータはまとめてとってきて机の上においておく的なことをやっています。 まとめてとってくる際、本来アクセスしちゃいけない領域のデータも含めて机の上におく仕組みが悪用できてしまったようです。

IchigoJamがCPUとして使っているArm Cortex-M0には、そもそもこういう保護機能がないのでバグの影響は受けません!
Why Raspberry Pi isn't vulnerable to Spectre or Meltdown - Raspberry Pi
ラズパイも影響は受けないと創始者、Eben Upton氏、本人によるブログ。

2016年末に発表され、チップの発売が楽しみな、Cortex-M0/M0+の後継、Cortex-M23には、限定的ながらこの種の保護機能が搭載されます。

ネットワークからソフトをダウンロードして実行できることで、より柔軟なIoTを設計できますね!

新アーキテクチャーに対しても開発慣れすべく、マイコン開発はじめに一番最初に買って挫折した、ST32VLDISCOVERYに再挑戦!

データシートとマニュアルをさらっと見て、stm32f0からstm32f1用にメモリマップを少し書き換え、プログラムをUSBシリアルで転送して、動作確認完了!

STM32VLDISCORVERYで使っているCPUは、STM32F100RBT6という、Cortex-M3 / Flash128KB / RAM8KB / 24MHz(!)というもの。 クロックの遅さに時代を感じますが、Flash128KBの大容量と、DAC搭載は魅力的。プログラムは my-first-stm32 on GitHub に置きました。

Cortex-M3/M4/M7を使った高速大容量処理も使えそう感がでてきて、ますますワクワクが広がりました。
Cortex-M3はハードウェアで除算や積和演算ができて、メモリ保護ユニット(MPU)も扱えます!
Armマシン語の入門は、Cortex-M0からどうぞ!

Cortex-M3/M4の後継は、Cortex-M43ならぬ、Cortex-M33とのこと。
Cortex-M7の後継は未発表ですが、Cortex-M73とか??
Cortex-M23搭載チップ、発売楽しみ!

links
- 【後藤弘茂のWeekly海外ニュース】ARMがセキュリティ機能を統合した新プロセッサ「Cortex-M23/M33」を発表 - PC Watch
- Cortex-M23 – Arm Developer

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像