マイコンはフラッシュメモリ以外にRAMやEEPROMなどのメモリを内蔵している。また、最近のマイコンはメモリマップドIO方式が多いので、周辺機能のレジスタもメモリにアクセスするのと同じ方法でアクセスする。
これらのメモリやレジスタの値を読み出されたり、改ざんされたりしても大きな問題になる。STM32は、ファイアウォール(Firewall:防火壁)という機能があり、アクセスされたくないメモリ空間を前もって設定しておくと、プログラムコード実行の読み出し以外の対象アドレスのアクセスで、マイコンがリセットされるという機能だ。
WRPやPCROPのページやセクターごとの設定ではなく、アドレス単位で設定可能なので、小刻みな設定が可能だ。もちろん、この機能はフラッシュメモリにも適用される。フラッシュメモリに関しては、独自コード読み出し保護(PCROP)と似た機能なのだが、もっと小刻みな保護が可能な機能だ。
また、CPUがデータにアクセスしてもリセットがかかるため、トロイの木馬のような攻撃からもマイコンを守ることができる。Arm Cortex-Mのオプション機能のMPU(Memory Protect Unit)を使えば、同じようにアドレス単位で、保護をかけることは可能だが、MPUは特権モードの時のみ設定が可能である。
もともと、タンパ(Tamper)とは「不法に手を加えて変える」「改ざんする」という意味である。さまざまなデータが電子化されて、保存されている場合に、保存データを改ざんしようとして、電子システムを改造したり破壊しようとする攻撃のことを指す。例えば、電子化された電力メーター(スマートメーター)では、測定したデータをいったんマイコンの内蔵メモリに保存し、その後、集中管理センターに送る。これらのデータを改ざんして、電力料金をごまかそうとするハッカーが、電力メーターの筐体を改造しようと試みた際に、タンパ信号が生成されてマイコンに送られる。マイコンは、緊急事態の動作として割り込み処理や保存しているデータの消去などを行い、さらにその後、集中管理のセンターに緊急信号を送る。
STM32では、これら一連の動作をハードウェアが担っており、全て自動で行われる。これをタンパ検出機能と呼んでいる。
JTAGなどのデバッガー(Arm Cortex-Mの場合はSW[Serial Wire])は、マイコンの内部状態を知り、変更を加えることができる。さらに、フラッシュメモリのプログラム書き込み、読み出し、消去ができ、RAMなどの内蔵メモリのデータも変更できる。非常に便利な機能であるが、これはハッカーにとっても都合のよい機能である。
また、デバッガーの機能を遮断することも、有効なセキュリティ機能の1つである。STM32では、前述したRDP2がこれに当たる。RDP2が有効になると、フラッシュメモリの内容を読めなくなると同時に、デバッグ機能が一切使えなくなる。ハードウェアのオプションを設定するレジスタのオプションバイトもアクセスができなくなる。
Copyright © ITmedia, Inc. All Rights Reserved.