筆者が初めて「タンパ検知機能」を知ったのは、今から十数年前に、電力メーター向けマイコンに対する要求仕様を聞き取るために、欧州の電力メーターのメーカーを訪問した時です。昔の電力メーターは消費した電力によってアラゴの円盤を回して、電力量を測定する誘電形でした。近年の電力メーターはマイコンに内蔵された(または外付け)A-Dコンバーターを使って、電圧と電流を測定し、電力を算出する方式に変わってきています。それらのデータをマイコン内蔵の通信機能を使い、各家庭や各工場から電力会社の集中処理装置(コンピュータ/サーバ)に送ることが可能です。測定されたデータはいったんマイコンの内蔵メモリに蓄えられるため、クラッカーがそのデータを改ざんしてしまうと、正確な電力量が集中処理装置に送られなくなります。このような外部攻撃への対策として、「電力メーターを分解しようとして筐体(シールド)を外した時に、異常を知らせる信号を発生させて、マイコンに入力し、マイコンで緊急処理を行うという仕組みを入れたい」と欧州の電力メーターのメーカーに求められました。した要求に応えるべく、マイコンの新機能として「タンパ検知機能」が搭載されました。具体的なタンパ検知/耐タンパ機能はマイコンによって異なりますので、ここではSTマイクロエレクトロニクスのSTM32F103シリーズを例にして「タンパ検知機能」を説明します。図2にSTM32F103シリーズの「タンパ検知機能」を示します。図2:タンパ検知機能例(STM32F103の場合)製品の筐体やシールドなどが外された時に、ANTI_TAMP端子に信号が入るようにしておきます。この信号が立ち上がったり、もしくは立ち下がったりすると、マイコンの「タンパ検知機能」が起動します。信号発生の仕組みは、ユーザーが作らなければなりません。タンパ信号がノイズなどにより、不用意に発生または検知されないようにANTI_TANPピンは外部でプルアップするなどの誤動作対策が必要です。タンパ信号が故意または事故で切断された場合でも、ANTI_TAMP端子に信号が入力されようにする必要があります。1.どのような状況でも動作していなければならない外部攻撃は、いつ、どんな状況で起きるかが分からないので、「タンパ検知機能」は常に動作しなければなりません。主電源が供給されていない場合でも、動作しなければなりません。そのため、「タンパ検知機能」はバックアップドメイン(「ドメイン」は領域の意味)に組み込まれています。これは主電源ドメインから電源系統を分離した領域で、バックアップ電池やスーパーキャパシター(充電された大容量のコンデンサー)を特定の電源端子Vbatにつないでおくことで、メイン電源がなくても、動作可能な領域です。Clock)や「タンパ検知機能」など、停電の際にも動作を続けなければならない機能をバックアップドメインに配置します。主電源のVDDがオフの時にバックアップドメインの電源は自動的にVDDからVbatに切り替わり、動作を継続します。これにより、主電源のない場合でも「タンパ検知機能」は、外部からの攻撃を監視できます(図3参照)図3:バックアップ・ドメイン(STM32F103の場合)マイコンが起動したばかりで、ソフトウェアでタンパピンや「タンパ検知機能」が有効化されていない場合でも、タンパ信号の見落としを防ぐため、外部攻撃が発生したことを示す信号は、ハードウェアでラッチ(保持)されていて、タンパ信号が発生した場合は、「タンパ検知機能」が有効化されると同時に検出できます。これにより、タンパピンや「タンパ検知機能」が有効化される前に発生したタンパ信号も検出することができます。LLC.ITmediaはアイティメディア株式会社の登録商標です。