(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06F 9/48 20060101AFI20231113BHJP
G06F 21/12 20130101ALI20231113BHJP
【FI】
G06F9/48 120
G06F21/12 310
(21)【出願番号】P 2020158163
(22)【出願日】2020-09-23
【審査請求日】2022-06-23
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】橋本 幹生
(72)【発明者】
【氏名】相沢 雅己
(72)【発明者】
【氏名】鈴木 悟
(72)【発明者】
【氏名】佐々木 常喜
【審査官】坂東 博司
(56)【参考文献】
【文献】国際公開第2012/053053(WO,A1)
【文献】特開2001-175606(JP,A)
【文献】特開2006-309778(JP,A)
【文献】実開平05-075845(JP,U)
【文献】国際公開第2012/086106(WO,A1)
【文献】国際公開第2009/096566(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 21/12
(57)【特許請求の範囲】
【請求項1】
プロセッサと、
複数の割り込み要求に関するベクタアドレスを記憶し、前記プロセッサがバスを介して前記複数の割り込み要求に関するベクタアドレスをフェッチすることができ、前記複数の割り込み要求はプロセッサがスリープ状態であることを条件に実行する第1割り込み要求に関するベクタアドレスを含む、第1記憶部と、
前記第1割り込み要求に関する
第1ベクタアドレスを記憶する
第2記憶部と、
前記
第1割り込み要求が入力され、前記プロセッサがスリープ状態になったことを検知するスリープ検知部と、
前記プロセッサのスリープ状態が検知された後に、
前記第1記憶部からの前記
第1割り込み要求のベクタアドレスのフェッチを
バス監視により検知するフェッチ検知部と、
前記
第1割り込み要求のベクタアドレスのフェッチが検知された場合、前記
第2記憶部に記憶している前記
第1ベクタアドレスを前記プロセッサに入力するアドレス入力部と、
を備え、
前記第1ベクタアドレスは、起動時に前記第2記憶部に記憶され、
ランダムアクセスメモリおよびフラッシュメモリをさらに備え、
前記第1記憶部は、前記ランダムアクセスメモリおよび前記フラッシュメモリの両方に配置され、
前記フラッシュメモリは、前記第1記憶部に加えてプログラムが格納される第3記憶部がさらに配置され、
前記プロセッサは、XIP機能(eXecute In Place)機能により、前記プログラムの実行時に、前記フラッシュメモリに配置された前記第1記憶部および前記第3記憶部を直接参照する、
情報処理装置。
【請求項2】
前記
第1割り込み要求は、タイマにより要求される、請求項1に記載の情報処理装置。
【請求項3】
前記
第1割り込み
要求の処理は、バスマスタの停止を更なる条件とする、請求項1に記載の情報処理装置。
【請求項4】
前記スリープ検知部は、前記
第1割り込み要求を受け付けた後、所定期間、前記プロセッサがスリープ状態に遷移しない場合、強制終了処理をする、請求項1に記載の情報処理装置。
【請求項5】
前記アドレス入力部により入力された、前記
第1ベクタアドレスに基づいて、所定の割り込み処理を実行した結果を出力する割り込み処理部をさらに備える、請求項1に記載の情報処理装置。
【請求項6】
外部装置からチャレンジ値を取得するチャレンジ値取得部と、
前記割り込み処理部により出力された実行結果と、前記チャレンジ値とに対する署名を生成する署名生成部と、
前記生成された署名と、前記チャレンジ値と、前記実行結果と、を前記外部装置へ送信する送信部と、をさらに備える、請求項
5に記載の情報処理装置。
【請求項7】
前記第1割り込み要求と異なる第2割り込み要求が入力されたとき、前記プロセッサは、前記第1記憶部に記憶している前記複数の割り込み要求に関するベクタアドレスのうちの前記第2割り込み要求に関するベクタアドレスを使用する、
請求項1に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【0002】
従来、割り込み処理のアドレス情報を1回のみ書き込み可能なロジック回路に記憶させる技術がある。
【0003】
しかしながら、全ての割り込み処理のアドレスを1回のみ書き込み可能な回路に記憶させてしまうと、割り込み処理のアドレスを修正することができない。また、全ての割り込み処理のアドレスを記憶してしまうと、ある特定の割り込み処理のアドレスが改ざんされてしまうリスクがある。よって、ある特定の割り込み処理を確実に実行させつつ、他の割り込み処理のアドレスを変更可能とすることが望まれる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
一つの実施形態は、ある特定の割り込み処理を確実に実行させつつ、他の割り込み処理のアドレスを変更可能とする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
一つの実施形態によれば、情報処理装置は、プロセッサと、第1記憶部と、第2記憶部と、スリープ検知部と、フェッチ検知部と、アドレス入力部とを、備える。第1記憶部は、複数の割り込み要求に関するベクタアドレスを記憶する。プロセッサがバスを介して複数の割り込み要求に関するベクタアドレスをフェッチすることができる。複数の割り込み要求はプロセッサがスリープ状態であることを条件に実行する第1割り込み要求に関するベクタアドレスを含む。第2記憶部は、第1割り込みに関する第1ベクタアドレスを記憶する。スリープ検知部は、第1割り込み要求が入力された後、プロセッサがスリープ状態になったことを検知する。フェッチ検知部は、プロセッサのスリープ状態が検知された後に、第1記憶部からの第1割り込み要求のベクタアドレスのフェッチをバス監視により検知する。アドレス入力部は、第1割り込みのベクタアドレスのフェッチが検知された場合、第2記憶部で記憶している第1ベクタアドレスをプロセッサに入力する。第1ベクタアドレスは、起動時に第2記憶部に記憶される。情報処理装置は、ランダムアクセスメモリおよびフラッシュメモリをさらに備える。第1記憶部は、ランダムアクセスメモリおよびフラッシュメモリの両方に配置される。フラッシュメモリは、第1記憶部に加えてプログラムが格納される第3記憶部がさらに配置される。プロセッサは、XIP機能(eXecute In Place)機能により、プログラムの実行時に、フラッシュメモリに配置された第1記憶部および第3記憶部を直接参照する。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態にかかる情報処理装置が適用されたマイクロコンピュータのハードウェア構成の一例を示す模式的な図である。
【
図2】
図2は、実施形態にかかるマイクロコンピュータの機能構成の一例を示すブロック図である。
【
図3】
図3は、実施形態にかかるマイクロコンピュータのセキュア割り込み処理の動作を示すシーケンス図である。
【
図4】
図4は、実施形態にかかるマイクロコンピュータのセキュア割り込み処理の動作タイミングおよび制御信号の流れの一例を示す図である。
【
図5】
図5は、実施形態にかかるリモートアテステーションを実行するシステム構成図である。
【
図6】
図6は、実施形態にかかるリモートアテステーションの動作を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかる情報処理装置が適用されたマイクロコンピュータについて説明する。なお、実施形態にかかる情報処理装置を適用できる装置はマイクロコンピュータだけに限定されない。実施形態にかかる情報処理装置は、コンピュータプログラムが格納されるメモリと、当該コンピュータプログラムを実行するプロセッサと、を備えた任意の装置に適用され得る。なお、この実施形態により本発明が限定されるものではない。
【0009】
(実施形態)
図1は、実施形態にかかる情報処理装置が適用されたマイクロコンピュータのハードウェア構成の一例を示す模式的な図である。マイクロコンピュータ1は、例えば、通信I/F(Interface)10を介してサーバ装置と接続されている。マイクロコンピュータ1は、センサ装置等に組み込まれる。センサ装置は、例えば、3分に1回数秒かけて非検体の濃度値を測定する。マイクロコンピュータ1は、1日に1回プログラム改ざんされていないか否かを検証する。仮にマイクロコンピュータ1が実行するアプリケーションが、不正プログラムによって乗っ取られた場合でも上記検証が行われる必要がある。
【0010】
以下の説明においては、アプリケーションを主機能、アプリケーションが不正プログラムにより乗っ取りを受けていないかを判定する検証機能を補助機能とする。補助機能により不正プログラムの兆候を検出した場合は、主機能の誤動作を防止するため完全停止もしくは再起動等の処置をとる。不正プログラムの兆候が検出されない場合、主機能は所定の期間、計測もしくは制御処理を継続して実行する。処理が終了するとスリープ状態に入り、不要な電力消費を抑制する。主機能動作中の計測・制御処理の品質低下を抑えるため、検証機能は主機能がスリープ状態にあるときを優先して実行されることを目標とする。計測・制御処理の実行の都度、初期化処理を実行することを抑制するため、不正プログラムが検知されない場合、電池寿命の期間リセットは行わない。
【0011】
マイクロコンピュータ1は、CPU2、マスクROM3、セキュアタイマ4、状態管理コントローラ5、バス監視コントローラ6、SRAM7、命令フラッシュメモリ8、MAC生成管理コントローラ9、通信I/F10、アンテナ11、および内部バス12を備えている。
【0012】
なお、CPU2、マスクROM3、状態管理コントローラ5、バス監視コントローラ6、SRAM7、命令フラッシュメモリ8、MAC生成管理コントローラ9、および通信I/F10は、内部バス12に接続されている。通信I/F10の内部にデータ受信時に自動メモリ転送を行うため、CPUもしくはDMAC(Direct Memory Access Controller)によるバスマスタ13を備える。
【0013】
CPU2は、種々のプログラムを実行することができるプロセッサであり、いわゆるコアプロセッサである。CPU2は、プログラムに応じた機能を実現する。
【0014】
マスクROM3は、書き換え不可能な不揮発性メモリである。マスクROM3の内容は、工場においてマイクロコンピュータ1のハードウェアを製造する際に固定される。
【0015】
セキュアタイマ4は、時間を計測し、所定の時間が経過したときにセキュア割り込み要求を状態管理コントローラ5へ出力する。すなわち、セキュア割り込み要求は、セキュアタイマ4により要求される。なお、セキュアタイマ4以外に、外部装置等が、セキュア割り込み要求をしてもよい。
【0016】
状態管理コントローラ5は、セキュア割り込み要求が入力されると、CPU2のスリープ状態を検知することで、CPU2が実行するセキュア割り込みの処理状態を管理する。
【0017】
バス監視コントローラ6は、CPU2のスリープ状態が検知されると、バスを監視することで、CPU2からのセキュア割り込みのベクタアドレスのフェッチを検知する。バス監視コントローラ6は、セキュア割り込みのベクタアドレスを記憶するための記憶手段を有している。
【0018】
SRAM7は、揮発性メモリである。SRAM7は、汎用RAM71とセキュア割り込み専用RAM72を有する。汎用RAM71は、各種プログラムがロードされる領域として機能する。また、汎用RAM71は、外部装置とマイクロコンピュータ1との間で転送されるユーザデータのバッファとしても機能するほか、スタックなど主機能、補助機能が使用する汎用データを格納する。また、汎用RAM71は、割り込みベクタを保持する。この割り込みベクタは、各割り込み処理の実行プログラムの割り込みベクタアドレスを保持するテーブル情報である。
【0019】
セキュア割り込み専用RAM72は、セキュア割り込み処理がロードされる領域として機能する。また、セキュア割り込み専用RAM72は、セキュア割り込みの処理結果を保持する領域としても機能する。
【0020】
命令フラッシュメモリ8は、不揮発性メモリであり、各種機能を実現するプログラムを記憶する。具体的に、命令フラッシュメモリ8は、セキュア割り込み用プログラム81およびRTOS82を記憶する。セキュア割り込み用プログラム81は、セキュア割り込み処理をするためのプログラムである。RTOS82は、リアルタイムOSである。なお、命令フラッシュメモリ8は、他の各種プログラムを記憶するようにしてもよい。また、組込CPUにおいては、フラッシュメモリに格納されたプログラムを直接実行する機能(XIP機能(eXecute In Place))を持つものがある。この場合は汎用RAM71、セキュア割り込み専用RAM72へのプログラムロードは不要となる。
【0021】
MAC生成管理コントローラ9は、署名生成処理をする。MAC生成管理コントローラ9は、秘密鍵を記憶しておくための記憶手段を有している。
【0022】
アンテナ11は、通信I/F10と電気的に接続されている。通信I/F10は、アンテナ11を介して無線信号を送受信する。
【0023】
通信I/F10は、外部装置との通信を行うインタフェース装置である。また、通信I/F10は、外部装置から受信した要求をCPU2に転送することができる。通信I/F10は、外部装置から送られてきたデータを、バスマスタ13によりSRAM7にバッファすることができる。
【0024】
図2は、実施形態にかかるマイクロコンピュータ1の機能の一例を示すブロック図である。マイクロコンピュータ1は、割り込み処理部21と、チャレンジ値取得部22と、送信部23とを有する。CPU2が、RTOS82や当該RTOS82上で稼働するプログラムを実行することで、割り込み処理部21と、チャレンジ値取得部22と、送信部23とを実現する。
【0025】
また、マイクロコンピュータ1は、スリープ検知部51を有する。状態管理コントローラ5の論理回路が、スリープ信号検知を含む予め設定されたセキュア割り込み条件を検出することで、スリープ検知部51を実現する。
【0026】
また、マイクロコンピュータ1は、ベクタアドレス記憶部61と、フェッチ検知部62と、アドレス入力部63とを有する。バス監視コントローラ6が有する所定の記憶手段によりベクタアドレス記憶部61を実現する。また、バス監視コントローラ6の論理回路がフェッチ検知部62およびアドレス入力部63を実現する。
【0027】
また、マイクロコンピュータ1は、MAC生成機能有効化管理部91と、秘密鍵記憶部92と、MAC生成部93とを有する。MAC生成管理コントローラ9の論理回路が、MAC生成機能有効化管理部91およびMAC生成部93を実現する。また、MAC生成管理コントローラ9が有する所定の記憶手段により秘密鍵記憶部92を実現する。MAC(Message Authentication Code)はハッシュもしくは対称鍵暗号による改ざん検証タグを表し、署名と書かれた場合は一般には非対称鍵署名に限定して用いられる。以下においてMAC生成機能と書かれた箇所は、非対称鍵署名に置き換えても本実施形態の実施上差し支えない。具体的には、秘密鍵に基づくMAC生成機能を非対称鍵署名機能、生成されたMACを署名と、それぞれ読み替えて適用することができる。
【0028】
割り込み処理部21は、スリープ時にセキュア割り込み要求を受け付けると、SRAM7から当該セキュア割り込み用のプログラムの割り込みベクタアドレスを取得する。割り込みベクタアドレスとは、割り込みのプログラムが保持されているアドレスを示す情報、いわゆるエントリポイントである。例えば、割り込みベクタアドレスは、セキュア割り込み用プログラム81のアドレスを示す。
【0029】
また、割り込み処理部21は、入力された割り込みベクタアドレスに基づいて、セキュア割り込み処理を実行し、実行結果を出力する。セキュア割り込みとは、RTOS82がセキュアな状態であるかどうかを判断する割り込み処理である。RTOS82がセキュアな状態とは、例えば、プログラム改ざんされていない状態をいい、スタックデータの破壊がなされていないことなどをいう。
【0030】
CPU2は、いわゆるセキュアモードで起動した後に、非セキュアモードに遷移すると、起動時のセキュアモードに遷移しないようにしてもよい。この場合、起動時のセキュアモードのセキュアファームウェアに脆弱性があっても攻撃を受けないという利点がある。この場合、CPU2は、セキュア割り込み処理をすることで、通信経由により不正ソフトウェアが侵入した兆候の有無を判断する。当該侵入の兆候の例として、スタックデータの破壊などがある。
【0031】
チャレンジ値取得部22は、外部装置からチャレンジ値を取得する。チャレンジ値取得部22は、RTOS82を動作させている際、通信I/F10を介して、外部装置であるサーバ装置等からランダムチャレンジ値を取得する。
【0032】
送信部23は、ランダムチャレンジ値と、セキュア割り込み処理結果と、署名とを外部装置へ通信I/F10を介して、送信制御する。
【0033】
スリープ検知部51は、セキュア割り込み要求が入力されると、CPU2がスリープ状態になったか否かを判断する。例えば、スリープ検知部51は、CPU2からスリープ状態であることを示す信号を受信することで、CPU2がスリープ状態になったと判断する。
【0034】
スリープ検知部51は、CPU2がスリープ状態になったことを検知すると、バス監視コントローラ6へスリープ状態になったことを示す信号を出力する。このスリープ状態になったことを示す信号は、バス監視コントローラ6に対してデータすり替え要求を示す信号である。また、状態管理コントローラ5は、CPU2に対してセキュア割り込み要求を通知する。
【0035】
ベクタアドレス記憶部61は、セキュア割り込みのベクタアドレスを記憶している。例えば、バス監視コントローラ6は、マイクロコンピュータ1の起動時に、セキュア割り込みのベクタアドレスを記憶する。なお、ベクタアドレス記憶部61は、予めセキュア割り込みのベクタアドレスを記憶していてもよい。
【0036】
フェッチ検知部62は、CPU2のスリープ状態が検知された後に、セキュア割り込みのベクタアドレスのフェッチを検知する。
【0037】
アドレス入力部63は、セキュア割り込みのベクタアドレスのフェッチを検知すると、ベクタアドレス記憶部61からセキュア割り込みのベクタアドレスをCPU2へ入力する。
【0038】
MAC生成機能有効化管理部91は、MAC生成機能を有効化するか否かを管理する。MAC生成機能有効化管理部91は、セキュア割り込み処理時のみMAC生成機能を有効化するように制御する。
【0039】
秘密鍵記憶部92は、MAC生成用の秘密鍵(以下MAC鍵)を記憶する。MAC生成管理コントローラ9が、MAC鍵を保持することで、セキュア割り込み処理およびRTOS82により、MAC鍵を直接アクセスすることを防止する。これにより、マイクロコンピュータ1は、MAC鍵の隔離を強固にすることができる。MAC生成部93は、MAC生成する。
【0040】
続いて、セキュア割り込み処理について説明する。
図3は、実施形態にかかるマイクロコンピュータ1のセキュア割り込み処理を示すシーケンス図である。
【0041】
まず、状態管理コントローラ5は、セキュア割り込み要求を受け付ける(S1)。そして、状態管理コントローラ5は、CPU2がスリープ状態になるまで待つ。そして、CPU2がスリープ状態となり(S2)、CPU2が、スリープ状態であることを示す信号を状態管理コントローラ5へ送出する(S3)。状態管理コントローラ5は、当該スリープ状態であることを示す信号を取得することで、CPU2がスリープ状態であることを検知する(S4)。
【0042】
続いて、状態管理コントローラ5は、データすり替え要求が有効である旨の信号をバス監視コントローラ6へ送出する(S5)。また、状態管理コントローラ5は、CPU2へセキュア割り込み処理を指示する信号を送出する(S6)。
【0043】
バス監視コントローラ6は、データすり替え要求が有効である旨の信号を取得すると、内部バス12の監視を開始する(S7)。また、CPU2は、セキュア割り込み処理を指示する信号に応じて、SRAM7へセキュア割り込みのベクタアドレスの取得要求をする(S8)。
【0044】
バス監視コントローラ6は、当該ベクタアドレスの取得要求を検知することで、セキュア割り込みのベクタアドレスのフェッチを検知する(S9)。
【0045】
バス監視コントローラ6は、セキュア割り込みのベクタアドレスをCPU2へ入力する(S10)。CPU2は、ベクタアドレスを取得し(S11)、当該ベクタアドレスに基づいてセキュア割り込み処理を実行する(S12)。
【0046】
バス監視コントローラ6は、メモリアクセスを検知した旨の信号を状態管理コントローラ5へ送出し(S13)、バス監視を終了する(S14)。
【0047】
続いて、セキュア割り込み処理の動作タイミングおよび制御信号の流れについて説明する。
図4は、実施形態にかかるマイクロコンピュータ1のセキュア割り込み処理の動作タイミングおよび制御信号の流れの一例を示す図である。
【0048】
まず、セキュアタイマ4は、時間を計測し、セキュア割り込み要求のタイミングt1となると、セキュア割り込み要求を示す信号C1を状態管理コントローラ5へ出力する。状態管理コントローラ5は、セキュア割り込み要求が入力された後、CPU2がスリープ状態になるまで待つ(S1に対応)。状態管理コントローラ5は、セキュア割り込み処理を実行するための条件(待ち合わせ条件)に合致するまで待つ。
【0049】
t2において、CPU2がスリープ状態に遷移し(S2に対応)、CPU2が、スリープ状態であることを示す信号C2を状態管理コントローラ5へ送出する(S3に対応)。
【0050】
t3において、状態管理コントローラ5は、スリープ状態であることを示す信号C2を取得することで、CPU2がスリープ状態となったことを検知する(S4に対応)。これにより、状態管理コントローラ5は、バス監視コントローラ6に対してデータすり替え要求が有効である旨の信号C4を出力する(S5に対応)。データすり替えとは、ベクタアドレスのフェッチをインタセプトする処理をいう。バス監視コントローラ6は、状態管理コントローラ5によるデータすり替え要求を受信すると、内部バス12を監視する(S7に対応)。
【0051】
また、t3において、状態管理コントローラ5は、CPU2に対して、セキュア割り込み処理を指示する信号C3を送出する(S6に対応)。
【0052】
t4において、CPU2は、当該信号C3を受信すると、SRAM7へセキュア割り込みのベクタアドレスの取得要求をする(S8に対応)。
【0053】
t5において、バス監視コントローラ6は、CPU2からのセキュア割り込みのベクタアドレスのフェッチを検知する(S9に対応)。例えば、バス監視コントローラ6は、フェッチ先の下位アドレスとセキュア割り込み番号の一致を確認し、セキュア割り込みのベクタアドレスをCPU2へ入力する(S10、S11に対応)。
【0054】
CPU2は、当該ベクタアドレスに基づいて、セキュア割り込み処理をする(S12に対応)。このように、バス監視コントローラ6は、セキュア割り込みのベクタアドレスをすり替える。また、CPU2は、すり替えられたベクタアドレスを用いてセキュア割り込み処理をする。これにより、マイクロコンピュータ1は、仮にSRAM7で保存しているセキュア割り込みのベクタアドレスが改ざんされていたとしても、適切にセキュア割り込みを実行させることができる。
【0055】
バス監視コントローラ6は、CPU2からのセキュア割り込みのベクタアドレスのフェッチを検知したことを示す信号である、初回メモリアクセスを示す信号C5を出力し(S13に対応)、バス監視を終了する(S14に対応)。また、t6において、状態管理コントローラ5は、データすり替え要求を無効とする。また、セキュアタイマ4は、セキュア割り込み要求が終了したことを示す信号C6をCPU2へ送出する。
【0056】
続いて、セキュア割り込み処理を用いたリモートアテステーション技術の連携について説明する。
図5は、実施形態にかかるリモートアテステーションを実行するシステム構成図である。管理サーバ100とマイクロコンピュータ1とが安全ではない通信路を介して情報を送受信するものとする。管理サーバ100は、マイクロコンピュータ1のプログラムが改ざんされているなど、マイクロコンピュータ1が異常な状態であるか否かを判断するサーバ装置である。
【0057】
図6は、実施形態にかかるリモートアテステーションの動作を示すフローチャートである。前提として、管理サーバ100は、マイクロコンピュータ1に対して、所定のタイミングで状態確認要求をする。管理サーバ100は、当該状態確認要求時にマイクロコンピュータ1に対してランダムチャレンジ値を送信する。
【0058】
マイクロコンピュータ1のCPU2がRTOS82を動作させている際、CPU2は、通信I/F10を介してランダムチャレンジ値を取得すると共に、状態確認要求を受け付ける(S21)。CPU2が、このランダムチャレンジ値を保持してもよいし、SRAM7にランダムチャレンジ値を登録してもよい。
【0059】
CPU2は、ランダムチャレンジ値を取得した後に、セキュアタイマ4によるセキュア割り込み要求を状態管理コントローラ5から受け付けると、セキュア割り込み処理を実行する(S22)。状態管理コントローラ5は、セキュア割り込み処理を実行中の期間、MAC生成管理コントローラ9に対して、セキュア割り込み処理を実行していることを示す信号を送出する。
【0060】
MAC生成管理コントローラ9は、当該セキュア割り込み処理を実行していることを示す信号を取得すると、MAC生成機能を有効化する。CPU2は、セキュア割り込み処理結果をセキュア割り込み専用RAM72へ登録して(S23)、MAC生成管理コントローラ9にMAC生成を指示する。また、MAC生成管理コントローラ9は、記憶されている秘密鍵を用いて、セキュア割り込み処理結果と、ランダムチャレンジ値とに対するMACを生成する(S24)。MAC生成管理コントローラ9によるMAC生成の完了を確認すると、CPU2はセキュア割り込み終了命令(割り込み復帰命令)を発行し、セキュア割り込み処理を終了して、RTOSに制御を移行する。MAC生成管理コントローラ9によるMAC生成は、状態管理コントローラ5による信号に基づきセキュア割り込み処理中に限定される。したがって、セキュア割り込み終了後のRTOS実行中にはMAC生成は行われず、不正プログラムによるMAC偽造が防止される。
【0061】
セキュア割り込みの終了後、RTOSの一部として実行される送信部23は、通信I/F10を介して、ランダムチャレンジ値と、セキュア割り込み処理結果と、MACとを管理サーバ100へ送信する(S25)。
【0062】
管理サーバ100は、MAC検証およびランダムチャレンジ値が合致するか否かを確認すると共に、セキュア割り込み処理結果が正常であるか否かを判断する。MACを使用する場合、管理サーバ100は事前にMAC用秘密鍵を装置と共有しているものとする。
【0063】
管理サーバ100は、MACを検証した結果、MACが合致しており、セキュア割り込み処理結果が正常であることを示す場合、マイクロコンピュータ1で異常が発生していないと判断する。一方、管理サーバ100は、マイクロコンピュータ1からセキュア割り込み処理結果等が受信できない場合、ならびにランダムチャレンジ値が不一致している場合は、マイクロコンピュータ1で異常が発生していると判断する。また、管理サーバ100は、MACを検証した結果、MACが一致しない場合やセキュア割り込み処理結果が異常を示すものである場合も、マイクロコンピュータ1で異常が発生していると判断する。
【0064】
上述の実施形態では、CPU2がスリープ状態になることをセキュア割り込み処理の実行条件とする場合について述べたが、さらに他の条件を付加するようにしてもよい。例えば、バスマスタの停止を更なる条件とするようにしてもよい。また、サブCPUやDMAコントローラの停止を更なる条件とするようにしてもよい。これにより、CPU2は、セキュア割り込み処理実行中の干渉を排除することができる。
【0065】
例えば、通信の受信データを、通信I/F10に内蔵されたサブCPUもしくはDMAコントローラがバスマスタ13となって、SRAM7に自動転送する機能が備えられている場合がありうる。この機能はセキュア割り込み処理に対してデータ競合を引き起こすことで、動作に干渉する可能性がある。このとき、セキュア割り込み処理の停止をセキュア割り込み処理のさらなる開始条件として、セキュア割り込み処理実行中はバスマスタの動作を停止させることで干渉を排除できる。
【0066】
また、状態管理コントローラ5は、セキュア割り込み要求が入力された後、所定の期間中にCPU2がスリープ状態に遷移しない場合、所定の強制終了処理をするようにしてもよい。また、状態管理コントローラ5は、強制終了したことを示す情報をセキュア割り込み専用RAM72等に記憶するようにしてもよい。
【0067】
CPU2は、セキュア割り込み実行中に、致命的な障害が発生した場合のノンマスカブル割り込みが発生した場合、所定のレジスタに中断を示す情報を記録するようにしてもよい。例えば、割り込み処理部21は、ノンマスカブル割り込みの入力ラインをモニタしておく。割り込み処理部21は、セキュア割り込み実行中にノンマスカブル割り込みがアサートされた場合、ノンマスカブル割り込み処理の起動に関わらずセキュア割り込み処理を中断するようにしてもよい。
【0068】
上述の実施形態では、マイクロコンピュータ1は、状態管理コントローラ5と、バス監視コントローラ6とを有する場合について述べたが、状態管理コントローラ5と、バス監視コントローラ6とを一体としたコントローラを有するようにしてもよい。
【0069】
上述の実施形態では、マイクロコンピュータ1は、セキュア割り込み処理として、プログラムの改ざんに関する判断をする場合について述べたが、モータ異常を検出するようにしてもよい。
【0070】
上述の実施形態によれば、バス監視コントローラ6は、CPU2がスリープ状態になった後に、セキュア割り込みのベクタアドレスのフェッチを検知し、セキュア割り込みのベクタアドレスをCPU2へ入力する。これによって、マイクロコンピュータ1は、セキュア割り込み等の重要な処理については、バス監視コントローラ6がセキュア割り込みのベクタアドレスをCPU2に入力することで確実に実行させることができる。また、マイクロコンピュータ1は、他の割り込み処理のアドレスについては、SRAM7に保存されているアドレスをそのまま使用することで、ユーザによるアドレス変更に応じたアドレスで割り込み処理をすることもできる。
【0071】
CPU2のアーキテクチャによっては、CPU2内のVTORレジスタが割り込みベクタテーブルの上位アドレスを保持している。CPU2の外からでは、VTORが変更されたことは検出できない。上述の実施形態では、バス監視コントローラ6が、フェッチ先の下位アドレスとセキュア割り込み番号の一致を確認し、予め記憶しているセキュア割り込みのベクタアドレスをCPU2へ入力する。よって、上述の実施形態では、VTORの変更に関わらず、適切に割り込み種別を判定することができる。また、CPU2は、VTORの設定の影響を受けることなく、入力されたアドレスを用いて適切にセキュア割り込み処理をすることができる。
【0072】
本実施形態は、RTOSおよびRTOS上で実行される主機能に脆弱性があり、異常動作の脅威が想定される場合において、異常動作を確実に検出することを目的として、主機能と分離して実行される補助機能を確実に実行するための機能を提供するものである。主機能と補助機能の分離について補足する。主機能の通信処理にソフトウェア脆弱性が含まれている場合、外部から通信経由で不正動作が引き起こされる。一例として、スタック上の関数戻りアドレスの不正書き換えがある。プログラム本来の実行フローに代えて、本来プログラムとして実行されるべきではないメモリ領域のデータが実行され、不正動作を行う脅威がある。このような脅威は、スタック領域のデータ構造の確認機能により検出できるが、主機能プログラムの一部として確認機能が実現されている場合、不正プログラムの実行により確認機能の実行が迂回され無効化されてしまう懸念がある。何らかの原因により主機能のプログラムが書き換えられてしまった場合に不正動作が発生するのは当然だが、主機能のプログラムが書き換えられていない状態でも不正動作は起こりうる。このような不正動作の兆候は装置によってさまざまであり、本実施形態では、検出処理を補助機能プログラムとすることでそれぞれの装置に適した不正動作の検出処理を確実に行うことができる。
【0073】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0074】
1 マイクロコンピュータ、2 CPU、3 マスクROM、4 セキュアタイマ、5 状態管理コントローラ、6 バス監視コントローラ、7 SRAM、8 命令フラッシュメモリ、9 MAC生成管理コントローラ、10 通信I/F、11 アンテナ、12 内部バス、13 バスマスタ、71 汎用RAM、72 セキュア割り込み専用RAM、81 セキュア割り込み用プログラム、82 RTOS、100 管理サーバ。