マイコンの基礎 - タンパ
概要
タンパ(Tamper)を辞書で調べると、"(機械などを)不法に手を加えて変える(壊す)"、"改竄する"と記述されている。
すなわち、(マイコンが使用されている)製品を改造・改竄することを意味する。
最近の電気製品(生活家電や産業機器など)のほとんどにマイコンが使用されている。
これらの電気製品を、悪意を持った人が改造・改竄しようとした時、マイコンが改造・改竄を検知して緊急的な処理を行うことをタンパ検知または耐タンパと呼び、
こうした処理を自動的に行うハードウェアを、タンパ検知機能または耐タンパ機能と呼ぶ。
実際の処理としては、緊急用の割り込みを発生させたり、重要なデータを格納しているメモリの内容を即座に消去したりする他、
緊急信号を外部に発するといったものがある。
さらに、タンパ検知機能は監視機能であるので、常に動作する必要がある。そのため、低消費電力モード等の待機時でも動作を継続する。
具体的な機能はマイコンによって異なるので、各製品のマニュアルを確認すること。
タンパ検知機能が使用される用途として、電力メータ(電力量計)、水道メータ、ガスメータ等が挙げられる。
メータが測定した料金データを改竄しようとして、メータの筐体を分解しようとした時に、この仕組みが動作するようになっている。
下図に電力メータのタンパ検知機能の例を示す。
タンパ検知機能の仕様
具体的なタンパ検知機能・耐タンパ機能はマイコンによって異なるので、ここでは、STマイクロエレクトロニクスのSTM32F103シリーズのタンパ検知機能を記載する。
下図に、STM32F103シリーズのタンパ検知機能を示す。
製品の筐体やシールド等が外された時に、ANTI_TAMP端子に信号が入るようにする。
この信号の立ち上がりまたは立ち下がりにより、マイコンのタンパ検知機能が起動する。
信号発生の仕組みは、ユーザが作らなければならない。
また、タンパ信号がノイズ等により、不用意に発生または検知されないように、ANTI_TANPピンは外部でプルアップする等の誤動作対策が必要である。
さらに、タンパ信号が故意または事故で切断された場合でも、ANTI_TAMP端子に信号が入力されるようにする必要がある。
1. どのような状況でも動作していなければならない
外部攻撃は、いつ、どんな状況で起きるか分からないので、タンパ検知機能は常に動作しなければならない。
電源が供給されていない場合でも動作しなければならないため、タンパ検知機能はバックアップドメイン(領域)に組み込まれている。
これは、電源ドメインから電源系統を分離した領域において、バックアップ電池やスーパーキャパシタ(充電された大容量のコンデンサ)を特定の電源端子Vbatに接続することで、
主電源が無くても動作できるようにする。
RTCやタンパ検知機能等、停電の際にも動作を続けなければならない機能をバックアップドメインに配置する。
主電源VDDがオフの時、バックアップドメインの電源は自動的にVDDからVbatに切り替わり、動作を継続する。
これにより、主電源が無い場合でも、タンパ検知機能は外部からの攻撃を監視できる。(下図を参照する)
マイコンの起動直後において、ソフトウェアでタンパピンやタンパ検知機能が有効化されていない場合でも、タンパ信号の見落としを防ぐため、
外部攻撃が発生したことを示す信号はハードウェアでラッチ(保持)されて、タンパ信号が発生した場合は、タンパ検知機能が有効化されると同時に検出できる。
これにより、タンパピンやタンパ検知機能が有効化される前に発生したタンパ信号も検出することができる。
2. 外部攻撃が発生すると、緊急対応処理を開始しなければならない
外部攻撃を検知すると、タンパ検知機能はマイコンに対して割り込み要求を発生させて、緊急処置の割り込みサービスルーチンを実行する。
この時、マイコンが別の割り込みを処理している場合でも、タンパ検知機能の割り込みが保留されてはいけないので、
優先順位が最も高く必ず受け付けられるNMIに割り当てられる。
電源がオフの時はマイコンは動作できないが、前述したタンパ信号をラッチする機能はバックアップ電源で動作するので、
電源が回復すると同時にマイコンはNMI処理を開始することができる。
3. 緊急事態を通報しなければならない
NMIのサービスルーチンの中で、緊急事態の通報を行う。
例えば、電力メータの場合、各家庭や各工場等の電力メータの集中処理を行っている電力会社のコンピュータに、通信機能を用いて緊急通報を行う。
4. 最重要データを盗まれないようにしなければならない
電源VDDの電源供給が停止してもデータを保持できるように、バックアップドメインにバックアップデータレジスタが搭載されている。
ユーザは、電源の供給停止の際でも保持しなければならない最重要データを入れておくことができる。
しかし、タンパ信号の検出時には最重要データを盗まれたり、改竄されたりすることを防ぐ必要がある。
そこで、バックアップデータレジスタの内容はハードウェアで自動的に消去される。