IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士電機株式会社の特許一覧

<>
  • 特開-プロセッサシステム 図1
  • 特開-プロセッサシステム 図2
  • 特開-プロセッサシステム 図3
  • 特開-プロセッサシステム 図4
  • 特開-プロセッサシステム 図5
  • 特開-プロセッサシステム 図6
  • 特開-プロセッサシステム 図7
  • 特開-プロセッサシステム 図8
  • 特開-プロセッサシステム 図9
  • 特開-プロセッサシステム 図10
  • 特開-プロセッサシステム 図11
  • 特開-プロセッサシステム 図12
  • 特開-プロセッサシステム 図13
  • 特開-プロセッサシステム 図14
  • 特開-プロセッサシステム 図15
  • 特開-プロセッサシステム 図16
  • 特開-プロセッサシステム 図17
  • 特開-プロセッサシステム 図18
  • 特開-プロセッサシステム 図19
  • 特開-プロセッサシステム 図20
  • 特開-プロセッサシステム 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024069147
(43)【公開日】2024-05-21
(54)【発明の名称】プロセッサシステム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20240514BHJP
   G06F 21/64 20130101ALI20240514BHJP
   G06F 9/54 20060101ALI20240514BHJP
【FI】
G06F21/57 320
G06F21/64
G06F9/54 A
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023176455
(22)【出願日】2023-10-12
(31)【優先権主張番号】P 2022179526
(32)【優先日】2022-11-09
(33)【優先権主張国・地域又は機関】JP
(31)【優先権主張番号】P 2023046187
(32)【優先日】2023-03-23
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】高務 健二
(72)【発明者】
【氏名】佐田 康文
(57)【要約】
【課題】複数のプロセッサを備えるプロセッサシステムにおいて、いずれかのプロセッサに不正なファームウェアが書き込まれたときに、その影響を回避または緩和する。
【解決手段】プロセッサシステムは、複数のプロセッサおよび複数のプロセッサの通信を制御するマスタプロセッサを備える。複数のプロセッサの通信がマスタプロセッサを介して行われる。マスタプロセッサは、同時に複数の通信セッションを設定しない単一セッション方式で複数のプロセッサの通信を制御する。複数のプロセッサの中の第1のプロセッサに係わる通信セッションが終了したときに、マスタプロセッサは、第1のプロセッサに係わる通信セッションが終了したことを、複数のプロセッサの中の第2のプロセッサに通知する。第2のプロセッサは、第1のプロセッサのファームウェアが正規のファームウェアであるか否かを検証する。
【選択図】図5

【特許請求の範囲】
【請求項1】
複数のプロセッサおよび前記複数のプロセッサの通信を制御するマスタプロセッサを備えるプロセッサシステムであって、
前記複数のプロセッサの通信が前記マスタプロセッサを介して行われる構成であり、
前記マスタプロセッサは、同時に複数の通信セッションを設定しない単一セッション方式で前記複数のプロセッサの通信を制御する構成であり、
前記複数のプロセッサの中の第1のプロセッサに係わる通信セッションが終了したときに、前記マスタプロセッサは、前記第1のプロセッサに係わる通信セッションが終了したことを、前記複数のプロセッサの中の第2のプロセッサに通知し、
前記第2のプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアであるか否かを検証する
ことを特徴とするプロセッサシステム。
【請求項2】
前記第2のプロセッサが前記第1のプロセッサのファームウェアを検証するときは、前記マスタプロセッサは、前記第1のプロセッサと前記第2のプロセッサとの間に通信セッションを設定する
ことを特徴とする請求項1に記載のプロセッサシステム。
【請求項3】
前記第2のプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアであると判定したときは、前記第1のプロセッサのファームウェアが正規のファームウェアであることを表す検証結果を前記第1のプロセッサに通知し、
前記第1のプロセッサは、前記検証結果に応じて、自分のファームウェアのバックアップを、前記複数のプロセッサにより共用されるストレージに保存する
ことを特徴とする請求項1に記載のプロセッサシステム。
【請求項4】
前記第2のプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアであるか否かを表す検証結果を前記マスタプロセッサに通知する
ことを特徴とする請求項1に記載のプロセッサシステム。
【請求項5】
前記複数のプロセッサにそれぞれ実装されるファームウェアのバックアップが当該プロセッサシステム内に保存されており、
前記第1のプロセッサのファームウェアが正規のファームウェアでないと判定されたときに、前記第2のプロセッサまたは前記検証結果に応じて前記マスタプロセッサにより指定される第3のプロセッサは、当該プロセッサシステム内に保存されている前記第1のプロセッサのファームウェアのバックアップを、前記第1のプロセッサに実装されているファームウェアに対して上書きする
ことを特徴とする請求項4に記載のプロセッサシステム。
【請求項6】
前記マスタプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアでないことを表す検証結果を前記第2のプロセッサから受信すると、前記第2のプロセッサまたは前記第3のプロセッサから前記第1のプロセッサに信号を送信するための通信セッションを設定する
ことを特徴とする請求項5に記載のプロセッサシステム。
【請求項7】
前記複数のプロセッサにそれぞれ実装されるファームウェアのバックアップが当該プロセッサシステム内に保存されており、
前記マスタプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアでないことを表す検証結果を受け取ると、当該プロセッサシステム内に保存されている前記第1のプロセッサのファームウェアのバックアップを、前記第1のプロセッサに実装されているファームウェアに対して上書きする
ことを特徴とする請求項4に記載のプロセッサシステム。
【請求項8】
前記第1のプロセッサのファームウェアが正規のファームウェアでないと判定されたときに、前記第2のプロセッサまたは前記検証結果に応じて前記マスタプロセッサにより指定される第3のプロセッサは、正規のファームウェアでないと判定された前記ファームウェアを前記複数のプロセッサから隔離された状態で保存する
ことを特徴とする請求項4に記載のプロセッサシステム。
【請求項9】
前記マスタプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアでないことを表す検証結果を受け取ると、正規のファームウェアでないと判定された前記ファームウェアを前記複数のプロセッサから隔離された状態で保存する
ことを特徴とする請求項4に記載のプロセッサシステム。
【請求項10】
複数のプロセッサおよび前記複数のプロセッサの通信を制御するマスタプロセッサを備えるプロセッサシステムであって、
当該プロセッサシステムの外部に設けられる情報処理装置により、前記複数のプロセッサの中の第1のプロセッサの内部データが変更されたときに、前記マスタプロセッサは、前記情報処理装置と前記複数のプロセッサの中の第2のプロセッサとの間に通信コネクションを確立し、
前記第2のプロセッサは、前記第1のプロセッサの内部データの変更内容を表す変更履歴および前記変更履歴に対する署名を前記情報処理装置から受信し、
前記第2のプロセッサは、前記署名を検証することで、前記第1のプロセッサの内部データが正規の変更要求者により変更されたか否かを判定する
ことを特徴とするプロセッサシステム。
【請求項11】
前記複数のプロセッサそれぞれの内部データのバックアップを保存する共通ストレージをさらに備え、
前記署名の検証が成功したときに、前記第2のプロセッサは、前記共通ストレージに保存されている前記第1のプロセッサの内部データのバックアップを前記変更履歴に基づいて更新する
ことを特徴とする請求項10に記載のプロセッサシステム。
【請求項12】
前記署名の検証が成功したときに、前記第2のプロセッサは、前記第1のプロセッサの内部データと前記第1のプロセッサの内部データのバックアップとを比較する
ことを特徴とする請求項11に記載のプロセッサシステム。
【請求項13】
前記第1のプロセッサの内部データと前記第1のプロセッサの内部データのバックアップとが異なるときは、前記第2のプロセッサは、前記第1のプロセッサの内部データのバックアップを、前記第1のプロセッサの内部データに対して上書きする
ことを特徴とする請求項12に記載のプロセッサシステム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、各プロセッサにファームウェアが実装されるプロセッサシステムに係わる。
【背景技術】
【0002】
従来から、複数のプロセッサが連携して処理を実行するプロセッサシステムにおいて、各プロセッサにファームウェアを実装する構成が実用化されている。この場合、プロセッサシステムは、各プロセッサのファームウェアを更新できるように構成されていることが好ましい。
【0003】
ただし、各プロセッサのファームウェアを更新可能な構成においては、攻撃者により、1または複数のプロセッサに対して不正なファームウェアが書き込まれるおそれがある。このため、不正なファームウェアの書込みに対する対策が提案されている。
【0004】
例えば、特許文献1に記載される機器は、複数の制御部と、外部の管理装置から複数の制御部にファームウェアをダウンロードするための通信部を備える。複数の制御部のうちの第1の制御部は、他の制御部に対して所定の通信を行うことにより、所定の通信に対する応答の有無によって他の制御部の異常を判定する異常判定部を備える。そして、この異常判定部は、他の制御部がファームウェアを更新しているファームウェア更新期間において、他の制御部に対する異常判定を無効とする。この構成により、適切な異常判定が可能になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2020-133958号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したように、複数のプロセッサにそれぞれファームウェアが実装される構成において、不正なファームウェアの書込みを監視する方法が提案されている。ただし、従来技術では、不正なファームウェアが書き込まれてしまうと、相互監視による異常判定を行う時点で不正なファームウェアが動作してしまうことがある。そして、この場合、相互監視による異常判定が機能しないことがある。
【0007】
本発明の1つの側面に係わる目的は、複数のプロセッサを備えるプロセッサシステムにおいて、いずれかのプロセッサに不正なファームウェアが書き込まれたときに、その影響を回避または緩和することである。
【課題を解決するための手段】
【0008】
本発明の1つの態様のプロセッサシステムは、複数のプロセッサおよび前記複数のプロセッサの通信を制御するマスタプロセッサを備える。このプロセッサシステムは、前記複数のプロセッサの通信が前記マスタプロセッサを介して行われる構成であり、また、前記マスタプロセッサは、同時に複数の通信セッションを設定しない単一セッション方式で前記複数のプロセッサの通信を制御する構成である。前記複数のプロセッサの中の第1のプロセッサに係わる通信セッションが終了したときに、前記マスタプロセッサは、前記第1のプロセッサに係わる通信セッションが終了したことを、前記複数のプロセッサの中の第2のプロセッサに通知する。前記第2のプロセッサは、前記第1のプロセッサのファームウェアが正規のファームウェアであるか否かを検証する。
【0009】
また、本発明の他の態様のプロセッサシステムは、複数のプロセッサおよび前記複数のプロセッサの通信を制御するマスタプロセッサを備える。このプロセッサシステムは、当該プロセッサシステムの外部に設けられる情報処理装置により、前記複数のプロセッサの中の第1のプロセッサの内部データが変更されたときに、前記マスタプロセッサは、前記情報処理装置と前記複数のプロセッサの中の第2のプロセッサとの間に通信コネクションを確立し、前記第2のプロセッサは、前記第1のプロセッサの内部データの変更内容を表す変更履歴および前記変更履歴に対する署名を前記情報処理装置から受信し、前記第2のプロセッサは、前記署名を検証することで、前記第1のプロセッサの内部データが正規の変更要求者により変更されたか否かを判定する。
【発明の効果】
【0010】
上述の態様によれば、複数のプロセッサを備えるプロセッサシステムにおいて、いずれかのプロセッサに不正なファームウェアが書き込まれたときに、その影響を回避または緩和できる。
【図面の簡単な説明】
【0011】
図1】本発明の実施形態に係わるプロセッサシステムの一例を示す図である。
図2】CPUに実装されているファームウェアの更新の一例を示す図である。
図3】ファームウェアを更新するシーケンスの一例を示す図である。
図4】不正なファームウェアが書き込まれるケースの一例を示す図である。
図5】不正なファームウェアを検出するシーケンスの一例を示す図である。
図6】不正なファームウェアの検出時に行われるロールバック処理の一例を示す図である。
図7図6に示すロールバック処理に対応するシーケンスを示す図である。
図8】不正なファームウェアの検出時に行われるロールバック処理の他の例を示す図である。
図9図8に示すロールバック処理に対応するシーケンスを示す図である。
図10】検疫機能を提供するプロセッサシステムの一例を示す図である。
図11】不正なファームウェアの検出時に行われる検疫処理の一例を示す図である。
図12図11に示す検疫処理に対応するシーケンスを示す図である。
図13】不正なファームウェアの検出時に行われる検疫処理の他の例を示す図である。
図14図13に示す検疫処理に対応するシーケンスを示す図である。
図15】本発明の実施形態のバリエーションに係わるプロセッサシステムの一例を示す図である。
図16】正規の変更要求者がCPUの内部データを変更するときのプロセッサシステムのシーケンスの一例を示す図である。
図17】CPUの内部データの変更を検証する手順の一例を示す図である。
図18】変更履歴の作成後に内部データがさらに変更されるケースでのプロセッサシステムのシーケンスの一例を示す図である。
図19】検証CPUが変更履歴の署名および変更された内部データを検証しているときに内部データがさらに変更されるケースでのプロセッサシステムのシーケンスの一例を示す図である。
図20】不正な変更要求者がCPUの内部データを変更するときのプロセッサシステムのシーケンスの一例を示す図である。
図21】攻撃者によりCPUの内部データが不正に変更されるケースの一例を示す図である。
【発明を実施するための形態】
【0012】
図1は、本発明の実施形態に係わるプロセッサシステムの一例を示す。本発明の実施形態に係わるプロセッサシステム10は、複数のCPU1(1a~1n)、マスタCPU2、および共通ストレージ3を備える。ただし、プロセッサシステム10は、図1に示していない他の機能、回路、またはデバイスを備えてもよい。なお、複数のCPU1a~1nは、プロセッサシステム10を構成する「複数のプロセッサ」に相当する。また、マスタCPU2は、複数のプロセッサの通信を制御する「マスタプロセッサ」に相当する。
【0013】
各CPU1は、プロセッサ素子およびメモリを備える。メモリには、ファームウェアが実装される。この実施例では、CPU1a~1nに対してそれぞれファームウェアFWa~FWnが実装されている。そして、各CPU1は、実装されているファームウェアを実行することで対応する機能を提供する。なお、CPU1a~1nは、同一の装置内に設けられてもよいし、異なる装置に設けられてもよい。
【0014】
マスタCPU2は、CPU1a~1nの通信を制御する。具体的には、マスタCPU2は、プロセッサシステム10内でCPU1a~1n間の通信を制御する。このとき、CPU1a~1nの通信は、マスタCPU2を介して行われる。なお、図1に示す例では、マスタCPU2と各CPU1a~1nとが直接的に接続されているが、本発明の実施形態はこの構成に限定されるものではない。例えば、マスタCPU2および各CPU1a~1nがバスまたはネットワークに接続される構成であってもよい。ただし、このような構成であっても、CPU1から送信されるパケットは、マスタCPU2によって宛先に転送される。
【0015】
また、マスタCPU2は、プロセッサシステム10の外部に設けられる通信機器とCPU1a~1nとの間の通信を制御する。すなわち、マスタCPU2は、ネットワーク20に接続するためのインタフェースを備える。
【0016】
さらに、マスタCPU2は、同時に複数の通信セッションを設定しない単一セッション方式で、CPU1a~1nの通信を制御する。すなわち、プロセッサシステム10においては、同時に複数の通信セッションが設定されることはない。したがって、例えば、外部の通信機器とCPU1nとの間で通信が行われているときは、マスタCPU2は、他のCPU(即ち、CPU1a、1b等)の通信を許可しない。或いは、CPU1a、1b間で通信が行われているときは、マスタCPU2は、他のCPU(即ち、CPU1n等)の通信を許可しない。
【0017】
なお、「通信セッション」は、この実施例では、通信ノード間で信号を伝送可能な状態を表す。すなわち、「ノードXとノードYとの間に通信セッションを設定する」は、ノードXとノードYとの間で信号を伝送できる状態を構成することを意味し、この場合、ノードX、Y間でネゴシエーション等が行われる必要はない。例えば、「CPU1aとCPU1nとの間に通信セッションを設定する」は、マスタCPU2が、CPU1aとCPU1nとの間で信号を伝送できる状態を構成することを意味する。
【0018】
共通ストレージ3には、CPU1a~1nに実装されるファームウェアのバックアップが保存される。よって、この実施例では、共通ストレージ3にファームウェアFWa~FWnのバックアップが保存されている。なお、各CPU1a~1nは、マスタCPU2を介して共通ストレージ3にアクセスできる。すなわち、各CPU1a~1nは、マスタCPU2により許可されたときは、共通ストレージ3から所望のファームウェアFWa~FWnのバックアップを取得できる。
【0019】
このように、プロセッサシステム10は、CPU1a~1nおよびマスタCPU2を備え、CPU1a~1nがそれぞれ対応するファームウェアFWa~FWnを実行する。このとき、マスタCPU2がCPU1a~1nの通信を制御する。
【0020】
<不正なファームウェアの検出>
図2は、CPU1に実装されているファームウェアの更新の一例を示す。この実施例では、情報処理装置30が、CPU1nに実装されているファームウェアFWnをファームウェアFWn2に更新する。このとき、マスタCPU2は、情報処理装置30からの要求に応じて、情報処理装置30とCPU1nとの間に通信セッションを設定する。即ち、マスタCPU2は、情報処理装置30からCPU1nへのファームウェアの書込みを許可する。また、情報処理装置30とCPU1nとの間に通信セッションが設定されている期間は、マスタCPU2は、CPU1n以外のCPU1(1a、1b、・・・)の通信を禁止する。即ち、情報処理装置30は、CPU1nにファームウェアを書き込むときに、CPU1n以外のCPU1(1a、1b、・・・)にファームウェアを書き込むことはできない。
【0021】
なお、CPU1a~1nに実装されているファームウェアは、更新可能に構成されている。すなわち、各CPU1a~1nにおいて、ファームウェアを保存するメモリ領域は、常時、書込み可能な状態になっている。よって、各CPU1a~1nに実装されているファームウェアは、外部装置(図2では、情報処理装置30)または他のCPU1からの書込みにより更新されることになる。
【0022】
図3は、ファームウェアを更新するシーケンスの一例を示す。尚、このシーケンスは、図2に示す実施例に対応する。また、情報処理装置30からの要求に応じて、マスタCPU2により、情報処理装置30とCPU1nとの間に通信セッションが設定されるものとする。
【0023】
情報処理装置30は、CPU1nに実装すべき新たなファームウェア(ここでは、ファームウェアFWn2)をCPU1nに送信する。このとき、情報処理装置30は、ファームウェアFWn2と共に書込み命令または更新命令を送信してもよい。そうすると、CPU1nのファームウェアは、ファームウェアFWnからファームウェアFWn2に更新される。この後、マスタCPU2は、情報処理装置30とCPU1nとの間の通信セッションを終了させる。
【0024】
マスタCPU2は、情報処理装置30とCPU1nとの間の通信セッションを終了させると、検証部4を備えるCPU1に検証依頼を送信する。この実施例では、図2に示すように、CPU1aが検証部4を備えている。よって、マスタCPU2は、CPU1aに検証依頼を送信する。
【0025】
検証依頼は、検証部4に対して、完了した通信セッションに係わるCPU1に実装されているファームウェアが正規のファームウェアであるか否かを判定する検証処理を依頼する。よって、検証依頼は、完了した通信セッションに係わるCPU1を識別する情報を含む。図2図3に示す例では、検証依頼は、CPU1nを識別する情報を含む。
【0026】
検証部4は、検証依頼により指定されたCPU1に実装されているファームウェアが正規のファームウェアであるか否かを判定する。このとき、検証部4は、例えば、ファームウェアに付与されている署名を利用して検証を行ってもよい。そして、検証が成功したときには、検証部4は、検証対象のファームウェアが正規のファームウェアであると判定する。一方、検証が失敗したときには、検証部4は、検証対象のファームウェアが不正なファームウェア(または、改ざんされたファームウェア)であると判定する。
【0027】
なお、署名を利用してファームウェアの検証を行う場合には、情報処理装置30は署名鍵および検証鍵のペアを生成し、検証部4はこのペアの検証鍵を取得して保持する。そして、情報処理装置30は、署名鍵を用いてファームウェアに署名を付与し、検証部4は、検証鍵を用いて検証を行う。
【0028】
CPU1aは、マスタCPU2から、CPU1nを識別する情報を含む検証依頼を受信する。そうすると、CPU1aは、CPU1nに実装されているファームウェアが正規のファームウェアであるか否かを検証する。この実施例では、CPU1nのファームウェアは情報処理装置30によりファームウェアFWn2に更新されている。したがって、検証部4は、ファームウェアFWn2が正規のファームウェアであるか否かを判定する。このとき、マスタCPU2は、検証処理を行うCPU1と完了した通信セッションに係わるCPU1との間に通信セッションを設定する。すなわち、検証部4を備えるCPU1aとファームウェアがFWnからFWn2に更新されたCPU1nとの間に通信セッションが設定される。
【0029】
CPU1aは、CPU1nにファームウェアの提供を要求する。これにより、CPU1aは、CPU1nからファームウェアFWn2およびファームウェアFWn2に付与されている署名を取得する。そして、CPU1aは、検証部4を用いて、ファームウェアFWn2が正規のファームウェアであるか不正なファームウェアであるかを検証する。この実施例では、署名の検証が成功し、ファームウェアFWn2が正規のファームウェアであると判定されるものとする。この場合、CPU1aは、ファームウェアFWn2が正規のファームウェアであることを表すOKメッセージを、マスタCPU2およびCPU1nに送信する。そして、マスタCPU2は、CPU1aとCPU1nとの間の通信セッションを終了させる。なお、マスタCPU2は、検証部4に検証依頼を送信したときから検証部4が検証結果を出力するまでの期間、他の通信セッションを設定することはない。
【0030】
CPU1nは、CPU1aから上述のOKメッセージを受信すると、更新後のファームウェア(即ち、ファームウェアFWn2)が正規のファームウェアであると認識する。そうすると、CPU1nは、更新後のファームウェアを共通ストレージ3に書き込む。これにより、共通ストレージ3において、CPU1nファームウェアのバックアップも更新される。
【0031】
このように、本発明の実施形態に係わるプロセッサシステム10においては、CPU1のファームウェアが更新されると、その直後に、新たなファームウェアが正規のファームウェアであるか検証される。そして、検証が成功したときは、プロセッサシステム10の安全な動作が保証される。また、検証が成功したときに限って、新たなファームウェアのバックアップが共通ストレージ3に保存される。
【0032】
図4は、不正なファームウェアが書き込まれるケースの一例を示す。この例では、攻撃者は、情報処理装置30Xを用いてプロセッサシステム10を攻撃する。具体的には、情報処理装置30Xは、CPU1nにファームウェアFWnが実装されているときに、不正なファームウェアFWn3で上書きする。これにより、CPU1nにおいて、ファームウェアFWnが不正なファームウェアFWn3に更新されてしまう。
【0033】
図5は、不正なファームウェアを検出するシーケンスの一例を示す。なお、このシーケンスは、図4に示す実施例に対応する。また、CPU1nに新たなファームウェアが書き込まれたときからCPU1aが検証依頼を受信するまでのシーケンスは、図3および図5において実質的に同じである。ただし、図5に示す例では、情報処理装置30Xからの書込みにより、CPU1nのファームウェアが不正なファームウェアFWn3に更新されている。
【0034】
マスタCPU2は、情報処理装置30XとCPU1nとの間の通信セッションを終了させると、CPU1aに検証依頼を送信する。この検証依頼は、CPU1nを識別する情報を含む。よって、CPU1aは、CPU1nに新たに実装されたファームウェア(即ち、ファームウェアFWn3)を検証する。検証方法は、図3および図5において実質的に同じであり、例えば署名の検証が行われる。
【0035】
ここで、情報処理装置30Xは、正規の署名鍵を有していないので、検証部4によるファームウェアFWn3の署名に対する検証は失敗する。この場合、CPU1aは、CPU1nに新たに実装されたファームウェアFWn3が不正なファームウェアであることを表すNGメッセージをマスタCPU2に送信する。そうすると、マスタCPU2は、CPU1aとCPU1nとの間の通信セッションを終了させる。その後、マスタCPU2は、プロセッサシステム10への攻撃に対応する処理を実行する。
【0036】
たとえば、マスタCPU2は、CPU1nに不正なファームウェアが書き込まれたことを、プロセッサシステム10を管理する不図示の上位システムに通知してもよい。この場合、上位システムは、CPU1nに不正なファームウェアが書き込まれたことをプロセッサシステム10のユーザまたは管理者に報告してもよいし、プロセッサシステム10の動作を停止してもよい。また、マスタCPU2は、不正なファームウェアが書き込まれたCPU1(図4図5に示す例では、CPU1n)の通信を遮断してもよい。この場合、プロセッサシステム10内での不正なファームウェアによる影響が抑制される。さらに、攻撃者からの追加攻撃を防ぐために、マスタCPU2は、プロセッサシステム10と外部の機器との通信を遮断してもよい。ただし、この場合であっても、プロセッサシステム10から上位システムへの通知は許可されることが好ましい。
【0037】
このように、本発明の実施形態に係わるプロセッサシステム10においては、CPU1のファームウェアが更新されると、その直後に、その新たなファームウェアが正規のファームウェアであるか不正なファームウェアであるかが検証される。ここで、マスタCPU2は、1つの通信セッションのみを許可しながら、CPU1a~1nの通信を制御する。このため、複数のCPU1に同時に不正なファームウェアが書き込まれることはない。また、不正なファームウェアが書き込まれたときには、新たな通信セッションが設定される前にその不正なファームウェアが検出される。したがって、いずれかのCPU1に不正なファームウェアが書き込まれたとしても、その不正なファームウェアによる被害の拡散は抑制される。
【0038】
なお、図1図2、または図4に示す実施例では、CPU1aに検証部4が実装されているが、実際には、複数のCPU1に検証部4が実装される。すなわち、CPU1a~1nのうちの1つのみに検証部4が実装される構成では、そのCPU1のファームウェアが更新されたときにそのファームウェアを検証できないので、2以上のCPU1に検証部4を実装する必要がある。よって、例えば、すべてのCPU1a~1nにそれぞれ検証部4を実装してもよい。ただし、プロセッサシステム10の製造コストまたは管理コストを考慮すると、CPU1a~1nのうちの一部のCPU1に検証部4を実装する構成が好ましい。また、検証処理を実行するCPU1は、例えば、マスタCPU2により指定される。
【0039】
<ファームウェアのロールバック>
上述のように、プロセッサシステム10は、CPU1a~1nのうちのいずれか1つに不正なファームウェアが書き込まれたときには、その不正なファームウェアを即座に検出することができる。これに加えて、プロセッサシステム10は、不正なファームウェアに更新されたCPU1を、更新前の状態に戻す機能を備える。すなわち、プロセッサシステム10は、ファームウェアのロールバック機能を備える。
【0040】
以下の記載では、図1に示すように、CPU1a~1nにそれぞれファームウェアFWa~FWnが実装されており、共通ストレージ3にファームウェアFWa~FWnのバックアップが保存されているものとする。また、この状態において、図4に示すように、攻撃者によりCPU1nに不正なファームウェアWFn3が書き込まれるものとする。このとき、共通ストレージ3には、CPU1nのファームウェアのバックアップとして、ファームウェアFWnが保存されているものとする。
【0041】
図6は、不正なファームウェアの検出時に行われるロールバック処理の一例を示す。なお、CPU1nに不正なファームウェアFWn3が書き込まれ、CPU1aに実装されている検証部4がその不正なファームウェアを検出するものとする。すなわち、図4図5に示す手順により、不正なファームウェアが検出されている。
【0042】
図6において、CPU1aは、上述した検証部4に加えて、ロールバック処理部5を備える。ロールバック処理部5は、検証部4が不正なファームウェアを検出したときに、その不正なファームウェアに更新されてしまったCPU1を更新前の状態に戻す。この実施例では、CPU1nにファームウェアFWn3が書き込まれる前は、図1に示すように、ファームウェアFWnが実装されていた。よって、この場合、ロールバック処理部5は、図6に示すように、共通ストレージ3からファームウェアFWnを取得する。そして、ロールバック処理部5は、取得したファームウェアFWnをCPU1nに送信する。これにより、CPU1nにおいて、ファームウェアFWn3がファームウェアFWnにより上書きされる。すなわち、CPU1nのファームウェアは、ファームウェアFWn3からファームウェアFWnに更新される。このように、不正なファームウェアから正規のファームウェアへのロールバックが実現される。
【0043】
なお、上述したように、各CPU1a~1nにおいて、ファームウェアを保存するメモリ領域は、常時、読み書き可能なハードウェア構成となっている。したがって、各CPU1a~1nに実装されているファームウェアは、他のCPU1からの書込みにより更新されることになる。ただし、マスタCPU2のファームウェアは、更新できないように構成されていることが好ましい。
【0044】
図7は、図6に示すロールバック処理に対応するシーケンスを示す。すなわち、このシーケンスは、CPU1aがCPU1nに不正なファームウェアが書き込まれたことを検出した後の手順を表す。よって、CPU1aは、CPU1nに不正なファームウェアが書き込まれたことを表すNGメッセージをマスタCPU2に送信する。
【0045】
マスタCPU2は、上述のNGメッセージを受信すると、NGメッセージの送信元であるCPU1aが共通ストレージ3にアクセスできるようにポートを制御する。このとき、マスタCPU2は、CPU1aと共通ストレージ3との間に通信セッションを設定してもよい。
【0046】
CPU1aは、不正なファームウェアが書き込まれたCPU1nに対応するファームウェアを共通ストレージ3から読み出す。ここで、共通ストレージ3には、各CPU1a~1nが使用しているファームウェアのバックアップが保存されている。また、CPU1nのファームウェアが攻撃者によって更新された後、共通ストレージ3は更新されてない。よって、共通ストレージ3には、CPU1nに対応するファームウェアとして、CPU1nのファームウェアが攻撃者により更新される直前にCPU1nに実装されていたファームウェア(即ち、ファームウェアFWn)が保存されている。そして、CPU1aは、共通ストレージ3からファームウェアFWnを取得する。
【0047】
CPU1aがファームウェアFWnを取得すると、マスタCPU2は、共通ストレージ3へのアクセスが制限されるようにポートを制御する。CPU1aと共通ストレージ3との間に通信セッションが設定されているときは、マスタCPU2は、その通信セッションを終了させる。
【0048】
続いて、マスタCPU2は、CPU1aによるCPU1nのファームウェアのロールバックを実現するために、CPU1aとCPU1nとの間に通信セッションを設定する。この通信セッションは、CPU1aからCPU1nへの信号の伝送のみを許可するセッションであることが好ましい。
【0049】
CPU1aは、上述の通信セッションを利用して、CPU1nに実装されているファームウェアに対して、共通ストレージ3から取得したファームウェアFWnを上書きする。すなわち、CPU1nにおいて、ファームウェアFWn3からファームウェアFWnへのロールバックが行われる。
【0050】
ただし、図6図7に示す手順では、ロールバック処理部5を備えるCPU1aがCPU1nのファームウェアを取得して一時的に自分のメモリ内に保存する必要がある。すなわち、CPU1aは、大きなメモリを備える必要がある。したがって、プロセッサシステム10は、図8図9に示す手順でロールバックを実現してもよい。
【0051】
図8図9に示す手順では、CPU1aは、CPU1nに不正なファームウェアが書き込まれたことを検出すると、NGメッセージに続いて書込み要求をマスタCPU2に送信する。書込み要求は、ロールバック処理に係わるコピー元アドレスおよびコピー先アドレスを含む。コピー元アドレスは、CPU1nのファームウェアのバックアップが保存されている共通ストレージ3内のアドレスを表す。コピー先アドレスは、CPU1nにおいてファームウェアが保存される領域のアドレスを表す。なお、書込み要求は、コピーするデータのサイズを表す情報を含んでもよい。
【0052】
マスタCPU2は、NGメッセージに続いて書込み要求を受信すると、指定されたコピー元アドレスからデータを取得してコピー先アドレスに書き込む。すなわち、マスタCPU2は、共通ストレージからCPU1nのファームウェアのバックアップを取得し、CPU1nのメモリ内の指定された領域に書き込む。これにより、不正なファームウェアFWn3は、正規のファームウェアFWnにより上書きされる。この手順によれば、各CPU1のメモリのサイズをロールバック処理のために大きくする必要はない。
【0053】
このように、本発明の実施形態に係わるプロセッサシステム10においては、いずれかのCPU1において不正なファームウェアが検出されると、その直後に、そのファームウェアのロールバックが実行される。ここで、マスタCPU2は、1つの通信セッションのみを許可しながら、CPU1a~1nの通信を制御する。そして、マスタCPU2は、不正なファームウェアが検出されたことを表すNGメッセージを受信すると、他の通信セッションを設定することなく、ロールバックのための通信セッションを設定する。したがって、いずれかのCPU1に不正なファームウェアが書き込まれたときに、その不正なファームウェアが他のCPU1または共通ストレージ3に転送されることはない。また、いずれかのCPU1に不正なファームウェアが書き込まれたとしても、プロセッサシステム10は、即座に、ロールバックにより、正常な動作状態を回復させることができる。
【0054】
なお、上述の実施例では、CPU1aが検証部4およびロールバック処理部5を備えており、ファームウェアを検証するCPU1およびロールバック処理を実行するCPU1が同じであるが、本発明の実施形態はこの構成に限定されるものではない。すなわち、ファームウェアを検証するCPU1とロールバック処理を実行するCPU1とが異なっていてもよい。
【0055】
また、図6に示す実施例では、CPU1aのみにロールバック処理部5が実装されているが、実際には、複数のCPU1にロールバック処理部5が実装される。例えば、すべてのCPU1a~1nにそれぞれロールバック処理部5を実装してもよい。ただし、プロセッサシステム10の製造コストまたは管理コストを考慮すると、CPU1a~1nのうちの一部のCPU1にロールバック処理部5を実装する構成が好ましい。
【0056】
ロールバック処理を実行するCPU1は、例えば、マスタCPU2が指定してもよい。すなわち、マスタCPU2は、NGメッセージを受信したときに、ロールバック処理部5を備えるCPU1の中から、ロールバック処理を実行するCPU1を指定してもよい。この場合、マスタCPU2は、ロールバック処理を実行するCPU1から不正なファームウェアが実装されているCPU1に信号を送信するための通信セッションを設定する。
【0057】
さらに、図1図2図4、または図6に示す実施例では、CPU1a~1nのファームウェアFWa~FWnのバックアップが共通ストレージ3に保存されているが、本発明の実施形態はこの構成に限定されるものではない。すなわち、バックアップ用のファームウェアは、CPU1a~1nのメモリに保存されてもよい。例えば、各CPU1a~1nがそれぞれ他のCPU1のファームウェアのバックアップを保存してもよい。この構成によれば、ロールバック処理の際に共通ストレージ3にアクセスする手順が不要になる。ただし、各CPU1のメモリ使用量が増加することになる。したがって、バックアップ用のファームウェアを保存するための構成は、各ファームウェアのサイズ、プロセッサシステム10が備えるCPU1の個数、各CPU1のメモリ容量などを考慮して決定することが好ましい。
【0058】
<不正なファームウェアの隔離>
上述のように、プロセッサシステム10は、CPU1a~1nのうちのいずれか1つに不正なファームウェアが書き込まれたときには、その不正なファームウェアを即座に検出できる。この場合、不正ファームウェアを隔離して解析できることが好ましい。そこで、プロセッサシステム10は、検疫機能を備える。
【0059】
図10は、検疫機能を提供するプロセッサシステムの一例を示す。この実施例では、プロセッサシステム10は、CPU1(1a~1n)、マスタCPU2、共通ストレージ3、および検疫用ストレージ7を備える。ここで、CPU1a~1n、マスタCPU2、および共通ストレージ3は、図1および図10において実質的に同じである。すなわち、CPU1a~1nにそれぞれファームウェアFWa~FWnが実装されており、共通ストレージ3にファームウェアFWa~FWnのバックアップが保存されている。ただし、CUP1aは、検疫処理部6を備える。検疫処理部6は、検証部4が不正なファームウェアを検出したときに、その不正なファームウェアを検疫用ストレージ7に保存する。
【0060】
検疫用ストレージ7は、プロセッサシステム10に対して着脱可能に構成されており、特に限定されるものではないが、例えば、半導体メモリにより実現される。検疫用ストレージ7には、CPU1a~1nにおいて検出された不正なファームウェアが書き込まれる。ここで、各CPU1a~1nは、マスタCPU2を介して検疫用ストレージ7に書込みアクセスを行うことができる。ただし、検疫用ストレージ7は、マスタCPU2を介してのアクセスとして、書込みアクセスのみを許可する。すなわち、検疫用ストレージ7は、プロセッサシステム10において、読出しアクセスが禁止されている。よって、検疫用ストレージ7に書き込まれた不正なファームウェアは、プロセッサシステム10内で隔離されることになる。そして、ユーザまたは管理者は、検疫用ストレージ7をプロセッサシステム10から取り外してパソコン等に接続した後、検疫用ストレージ7に書き込まれた内容を確認できる。
【0061】
図11は、不正なファームウェアの検出時に行われる検疫処理の一例を示す。なお、CPU1nに不正なファームウェアFWn3が書き込まれ、CPU1aに実装されている検証部4がその不正なファームウェアを検出するものとする。すなわち、図4図5に示す手順により、不正なファームウェアが検出されている。
【0062】
図11において、CPU1aは、検証部4に加えて検疫処理部6を備える。検疫処理部6は、検証部4が不正なファームウェアを検出したときに、その不正なファームウェアを検疫用ストレージ7に保存することで、CPU1a~1nから不正なファームウェアを隔離する。この実施例では、検疫処理部6は、検疫用ストレージ7にファームウェアFWn3を保存する。なお、検疫用ストレージ7は、上述したように、マスタCPU2からの書込みアクセスのみを許可し、読出しアクセス等を禁止したハードウェア構成を有する。
【0063】
図12は、図11に示す検疫処理に対応するシーケンスを示す。このシーケンスは、CPU1aがCPU1nに不正なファームウェアFWn3が書き込まれたことを検出した後の手順を表す。よって、CPU1aは、CPU1nに不正なファームウェアが書き込まれたことを表すNGメッセージをマスタCPU2に送信する。
【0064】
マスタCPU2は、上述のNGメッセージを受信すると、そのNGメッセージの送信元であるCPU1aが検疫用ストレージ7にアクセスできるようにポートを制御する。このとき、マスタCPU2は、CPU1aと検疫用ストレージ7との間に通信セッションを設定してもよい。
【0065】
CPU1aは、不正なファームウェアFWn3を検疫用ストレージ7に書き込む。すなわち、ファームウェアFWn3が検疫用ストレージ7に保存される。なお、検疫用ストレージ7は、各CPU1a~1nの不正ファームウェアを個々に隔離できるように、CPUごとに分かれた領域を有している。
【0066】
不正なファームウェアFWn3が保存および隔離されると、マスタCPU2は、検疫用ストレージ7へのアクセスが制限されるようにポートを制御する。CPU1aと検疫用ストレージ7との間に通信セッションが設定されているときは、マスタCPU2は、その通信セッションを終了させる。
【0067】
なお、マスタCPU2は、CPU1aが所持しているCPU1nの不正なファームウェアを検疫用ストレージ7にコピーする指示を出力するとも可能である。この場合、マスタCPU2は、不正なファームウェアと合わせて検出日時を表す情報をコピーすることが望ましい。
【0068】
図11図12に示す手順においては、検疫処理部6を備えるCPU1aがCPU1nのファームウェアを取得して一時的に自分のメモリ内に保存する必要がある。すなわち、CPU1aは、大きなメモリを備える必要がある。したがって、プロセッサシステム10は、図13図14に示す手順で検疫を実現してもよい。
【0069】
図13図14に示す手順では、CPU1aは、CPU1nに不正なファームウェアが書き込まれたことを検出すると、NGメッセージおよび書込み要求をマスタCPU2に送信する。書込み要求は、検疫処理に係わるコピー元アドレスおよびコピー先アドレスを含む。コピー元アドレスは、CPU1nのファームウェアが保存される領域のアドレスを表す。コピー先アドレスは、CPU1nに書き込まれた不正ファームウェアFWn3を保存すべき検疫用ストレージ7内のアドレスを表す。なお、書込み要求は、コピーするデータのサイズを表す情報を含んでもよい。
【0070】
マスタCPU2は、NGメッセージに続いて書込み要求を受信すると、指定されたコピー元アドレスからデータを取得してコピー先アドレスに書き込む。すなわち、マスタCPU2は、CPU1nから不正ファームウェアFWn3を取得し、検疫用ストレージ7内の指定された領域に書き込む。これにより、不正なファームウェアFWn3は、検疫用ストレージ7にバックアップされる。この手順によれば、各CPU1のメモリのサイズを検疫処理のために大きくする必要はない。
【0071】
このように、本発明の実施形態に係わるプロセッサシステム10においては、いずれかのCPU1において不正なファームウェアが検出されると、その直後に、そのファームウェアの検疫が実行される。ここで、マスタCPU2は、1つの通信セッションのみを許可しながら、CPU1a~1nの通信を制御する。そして、マスタCPU2は、不正なファームウェアが検出されたことを表すNGメッセージを受信すると、他の通信セッションを設定することなく、検疫のための通信セッションを設定する。したがって、いずれかのCPU1に不正なファームウェアが書き込まれたときに、その不正なファームウェアが他のCPU1または共通ストレージ3に転送されることはない。
【0072】
加えて、不正なファームウェアは、プロセッサシステム10内で読出しアクセスが禁止されている検疫用ストレージ7に保存される。すなわち、不正なファームウェアは、CPU1a~1nから隔離された状態で検疫用ストレージ7に保存される。よって、この構成によっても、不正なファームウェアが他のCPU1または共通ストレージ3に転送されることはない。
【0073】
なお、上述の実施例では、CPU1aが検証部4および検疫処理部6を備えており、ファームウェアを検証するCPU1および検疫処理を実行するCPU1が同じであるが、本発明の実施形態はこの構成に限定されるものではない。すなわち、ファームウェアを検証するCPU1と検疫処理を実行するCPU1とが異なっていてもよい。
【0074】
また、図10に示す実施例では、CPU1aのみに検疫処理部6が実装されているが、実際には、複数のCPU1に検疫処理部6が実装される。例えば、すべてのCPU1a~1nにそれぞれ検疫処理部6を実装してもよい。ただし、プロセッサシステム10の製造コストまたは管理コストを考慮すると、CPU1a~1nのうちの一部のCPU1に検疫処理部6を実装する構成が好ましい。
【0075】
検疫処理を実行するCPU1は、例えば、マスタCPU2が指定してもよい。即ち、マスタCPU2は、NGメッセージを受信したときに、検疫処理部6を備えるCPU1の中から、検疫処理を実行するCPU1を指定してもよい。この場合、マスタCPU2は、検疫処理を実行するCPU1から不正なファームウェアが実装されているCPU1に信号を送信するための通信セッションを設定する。
【0076】
上述した検疫処理は、図6図9に示すロールバック処理と共に実行してもよい。すなわち、プロセッサシステム10は、不正なファームウェアを検出すると、検疫処理によりその不正なファームウェアを隔離すると共に、ロールバック処理により、不正なファームウェアを正規のファームウェアに戻すことができる。
【0077】
検疫処理により不正なファームウェアが検疫用ストレージ7内に隔離された後、ユーザまたは管理者は、プロセッサシステム10から検疫用ストレージ7を取り外してパソコン等の情報処理装置に接続する。これにより、プロセッサシステム10の運用に影響を及ぼすことなく、不正なファームウェアを解析できる。なお、検疫用ストレージ7は、プロセッサシステム10内では書込みアクセスのみが許可されているが、パソコン等の情報処理装置は、検疫用ストレージ7からデータを読み出すことができる。
【0078】
<バリエーション>
本発明の実施形態のバリエーションに係わるプロセッサシステムは、図2図14を参照して説明した機能に加えて、CPU1の内部データが変更されたときに、その変更が正規の変更要求者により行われたものか否かを判定できる。なお、正規の変更要求者は、CPU1の内部データを変更する権限を有する者を意味し、例えば、プロセッサシステムの運用管理者である。内部データは、CPU1が使用する各種データを意味し、例えば、CPU1がファームウェアを実行する際に使用するパラメータの値である。或いは、内部データは、CPU1に実装されるファームウェア自体であってもよい。
【0079】
図15は、本発明の実施形態のバリエーションに係わるプロセッサシステムの一例を示す。本発明の実施形態のバリエーションに係わるプロセッサシステム10Bの構成は、図1に示すプロセッサシステム10と実質的に同じである。すなわち、プロセッサシステム10Bは、複数のCPU1(1a~1n)、マスタCPU2、および共通ストレージ3を備える。
【0080】
CPU1a~1nには、それぞれ対応する内部データDa~Dnが設定されている。また、共通ストレージ3には、署名検証鍵、各CPU1a~1nに設定されている内部データの変更履歴、および各CPU1a~1nに設定されている内部データのバックアップが保存されている。
【0081】
署名検証鍵は、変更要求者がCPU1の内部データを変更したときに、その変更の内容を表す変更履歴を検証する際に使用される暗号鍵である。変更履歴は、変更要求者が情報処理装置40を利用してCPU1の内部データを変更するときに、情報処理装置40により作成される。このとき、情報処理装置40は、署名作成鍵を利用して変更履歴に署名を付与する。なお、署名作成鍵は、署名検証鍵に対応する秘密鍵である。また、署名作成鍵を利用して作成された署名は、署名検証鍵により検証され得る。
【0082】
図16は、正規の変更要求者がCPU1の内部データを変更するときのプロセッサシステム10Bのシーケンスの一例を示す。この実施例では、変更要求者が情報処理装置40を利用してCPU1bの内部データDbを変更する。なお、このシーケンスの開始時において、共通ストレージ3に保存されているバックアップDa~Dnは、それぞれCPU1a~1nに設定されている内部データDa~Dnと一致しているものとする。
【0083】
CPU1bの内部データを変更する際には、まず、情報処理装置40は、変更要求者からの指示に応じて、CPU1bの内部データを変更するための接続をマスタCPU2に要求する。そうすると、マスタCPU2は、情報処理装置40とCPU1bとの間に通信コネクション(または、通信セッション)を確立する。そして、情報処理装置40は、CPU1bに新データを送信することにより、CPU1bの内部データを更新する。
【0084】
情報処理装置40は、変更履歴を作成する。変更履歴は、CPU1bの内部データをどのように変更したのかを表す。例えば、変更履歴は、温度パラメータを20℃から25℃に変更した旨を表す。また、変更履歴は、CPU1bの内部データを変更した時刻を含んでもよい。
【0085】
情報処理装置40は、署名作成鍵を用いて、変更履歴の署名を作成する。そして、情報処理装置40は、署名付き変更履歴をCPU1bに送信する。CPU1bは、この署名付き変更履歴をマスタCPU2に転送する。
【0086】
マスタCPU2は、CPU1a~CPU1nの中から、CPU1bの内部データの変更を検証する検証CPUを選択する。この実施例では、検証CPUとして、CPU1aが選択されるものとする。
【0087】
マスタCPU2は、情報処理装置40により作成された署名付き変更履歴を検証CPUに送信する。そうすると、検証CPUは、共通ストレージ3から署名検証鍵を取得する。そして、検証CPUは、この署名検証鍵を用いて、変更履歴に付与されている署名を検証する。この実施例では、署名の検証が成功するものとする。この場合、検証CPUは、CPU1bの内部データが正規の変更要求者により変更されたと判定し、CPU1bの内部データについての変更履歴を共通ストレージ3に追加する。加えて、検証CPUは、その変更履歴に従って、共通ストレージ3に保存されているCPU1bの内部データのバックアップを更新する。これにより、共通ストレージ3に保存されているCPU1bの内部データのバックアップは、CPU1bにおいて実際に更新された内部データと一致することになる。
【0088】
続いて、マスタCPU2は、検証CPUに対して、CPU1bにおいて更新された内部データの確認を依頼する。そうすると、検証CPUは、CPU1bから内部データを取得し、共通ストレージ3に保存されているバックアップと比較する。この実施例では、CPU1bから取得した内部データと共通ストレージ3に保存されているバックアップとが互いに一致する。そして、検証CPUは、この結果をマスタCPU2に通知する。そうすると、マスタCPU2は、情報処理装置40とCPU1bとの間の通信コネクションを切断する。このとき、変更要求者に対して検証結果を通知した後に通信コネクションを切断することが好ましい。
【0089】
この後、マスタCPU2は、検証CPUに対して、CPU1bの内部データの確認を依頼する。すなわち、情報処理装置40とCPU1bとの間の通信コネクションが切断された後に、再度、CPU1bが保持する内部データが検証される。具体的には、検証CPUは、CPU1bから内部データを取得し、共通ストレージ3に保存されているバックアップと比較する。この実施例では、CPU1bから取得した内部データと共通ストレージ3に保存されているバックアップとが互いに一致する。そして、検証CPUは、この結果をマスタCPU2に通知する。
【0090】
図17は、CPUの内部データの変更を検証する手順の一例を示す。この例では、図17(a)に示すように、CPU1bの内部データが「ABCD」であり、共通ストレージ3にそのバックアップが保存されている。
【0091】
正規の変更要求者は、図17(b)に示すように、CPU1bの内部データを「ABCD」から「ABCE」に変更する。このとき、署名付き変更履歴「D→E」が検証CPUに送信される。そうすると、検証CPUは、変更履歴に付与されている署名を検証する。この例では、署名の検証が成功するものとする。この場合、検証CPUは、CPU1bの内部データが正規の変更要求者により変更されたと判定する。そして、署名CPUは、図17(c)に示すように、共通ストレージ3に保存されているバックアップを、受信した変更履歴に従って更新する。これにより、共通ストレージ3に保存されているバックアップが「ABCD」から「ABCE」に更新される。
【0092】
この後、検証CPUは、図17(d)に示すように、CPU1bに設定されている内部データと、共通ストレージ3に保存されている更新後のバックアップとを比較する。この実施例では、内部データおよびバックアップがいずれも「ABCE」であり、互いに一致する。そして、この判定結果は、例えば、マスタCPU2を介して上位システムに通知される。
【0093】
図18は、変更履歴の作成後に内部データがさらに変更されるケースでのプロセッサシステム10Bのシーケンスの一例を示す。この実施例では、署名付き変更履歴が情報処理装置40から検証CPUに送信された後に、CPU1bの内部データがさらに変更されている。具体的には、CPU1bの内部データが「新データ(1)」に変更され、共通ストレージに保存されているバックアップも「新データ(1)」に更新される。その後、CPU1bの内部データがさらに「新データ(2)」に変更される。
【0094】
このケースでは、検証CPUがCPU1bから取得した内部データと共通ストレージ3に保存されているバックアップとを比較すると、それらは互いに一致しない。そして、検証CPUは、この結果をマスタCPU2に通知する。また、マスタCPU2は、情報処理装置40とCPU1bとの間の通信コネクションを切断する。
【0095】
この場合、検証CPUは、CPU1bの内部データのバックアップを共通ストレージ3から取得してCPU1bに送信する。そして、CPU1bの内部データは、このバックアップデータによりロールバックされる。すなわち、CPU1bの内部データは、「新データ(2)」から「新データ(1)」に戻ることになる。
【0096】
続いて、検証CPUは、マスタCPU2からの確認指示に応じて、CPU1bの内部データと共通ストレージ3に保存されているバックアップとを比較する。この場合、これらのデータは互いに一致することになる。すなわち、変更履歴の作成後にさらに内部データが更新されると、CPU1bの内部データは、変更履歴が作成された直前の状態に戻される。したがって、共通ストレージ3に保存されるバックアップは、CPU1bの内部データと一致する。
【0097】
図19は、検証CPUが変更履歴の署名および変更された内部データを検証しているときに内部データがさらに変更されるケースでのプロセッサシステム10Bのシーケンスの一例を示す。この実施例では、検証CPUがCPU1bから内部データを取得した後に、CPU1bの内部データがさらに変更される。このため、検証CPUがCPU1bから取得した内部データと共通ストレージ3に保存されているバックアップとを比較すると、それらのデータは互いに一致する。ところが、情報処理装置40とCPU1bとの間の通信コネクションが切断される前に、CPU1bの内部データが「新データ(1)」から「新データ(2)」にさらに変更される。この結果、CPU1bの内部データと共通ストレージ3に保存されているバックアップとが互いに異なる状態となっている。
【0098】
このような状況を検知するために、検証CPUは、通信コネクションの切断後に、マスタCPU2からの確認指示に応じて、再度、CPU1bの内部データと共通ストレージ3に保存されているバックアップとを比較する。そうすると、これらのデータが互いに一致しないことが検知される。よって、検証CPUは、共通ストレージ3に保存されているバックアップをCPU1bに送信し、CPU1bの内部データがロールバックされる。この結果、共通ストレージ3に保存されるバックアップは、CPU1bが保持する内部データと一致するようになる。
【0099】
図20は、不正な変更要求者(即ち、攻撃者)がCPU1の内部データを変更するときのプロセッサシステム10Bのシーケンスの一例を示す。この実施例では、攻撃者が情報処理装置40Xを利用してCPU1bの内部データDbを変更する。なお、このシーケンスの開始時において、共通ストレージ3に保存されているバックアップDa~Dnは、それぞれCPU1a~1nに設定されている内部データDa~Dnと一致しているものとする。
【0100】
情報処理装置40Xは、攻撃者からの指示に応じて、CPU1bに不正データを送信する。これにより、CPU1bの内部データが不正なデータに更新される。ただし、攻撃者は署名作成鍵を有していないので、情報処理装置40Xは、変更履歴を作成したとしてもその変更履歴に署名を付与できない。或いは、変更履歴に不正な署名が付与される。よって、署名が付与されてない変更履歴(署名なし変更履歴)または不正な署名が付与された変更履歴(不正署名付き変更履歴)が情報処理装置40XからマスタCPU2を経由して検証CPUに送られる。
【0101】
検証CPUは、図16に示すケースと同様に、署名を検証する。しかし、このケースでは、変更履歴に署名が付与されてない、或いは、変更履歴に不正な署名が付与されているので、検証が失敗する。この場合、検証CPUは、共通ストレージ3に変更履歴を追加しない。また、検証CPUは、共通ストレージ3に保存されているCPU1bの内部データのバックアップを更新しない。この結果、共通ストレージ3に保存されているCPU1bの内部データのバックアップは、CPU1bにおいて攻撃者により変更された内部データと異なることになる。この後、検証結果がマスタCPU2に通知される。そして、情報処理装置40XとCPU1cとの間の通信コネクションが切断される。
【0102】
署名の検証が失敗しているので、検証CPUは、CPU1bの内部データが攻撃者により不正なデータに変更された可能性があると判定する。そうすると、検証CPUは、共通ストレージ3に保存されているバックアップでCPU1bの内部データを上書きする。すなわち、CPU1bの内部データは、検証CPUによりロールバックされる。この後、検証CPUは、マスタCPU2からの指示に応じて、CPU1bが保持する内部データと共通ストレージ3に保存されているバックアップとを比較する。この場合、CPU1bの内部データはロールバックされているので、検証が成功する。
【0103】
図21は、攻撃者によりCPUの内部データが不正に変更されるケースの一例を示す。この実施例でも、図21(a)に示すように、CPU1bの内部データが「ABCD」であり、共通ストレージ3にそのバックアップが保存されている。
【0104】
攻撃者は、図21(b)に示すように、CPU1bの内部データを「ABCD」から「ABCF」に変更する。このとき、変更履歴「D→F」が検証CPUに送信される。ただし、攻撃者は、図15に示す署名作成鍵を有していないので、署名を作成できない。すなわち、この変更履歴には署名が付与されていない。或いは、不正な署名が付与された変更履歴が送信される。この結果、検証CPUにおいて、署名の検証が失敗する。この場合、検証CPUは、CPU1bの内部データが攻撃者により不正に変更されたと判定する。したがって、検証CPUは、図21(c)に示すように、共通ストレージ3に保存されているバックアップを更新しない。すなわち、共通ストレージ3に保存されているバックアップは「ABCD」のまま維持される。
【0105】
この後、検証CPUは、図21(d)に示すように、共通ストレージ3に保存されているバックアップを利用してCPU1bの内部データをロールバックする。この結果、CPU1bの内部データは、攻撃を受ける前に状態に復帰する。
【0106】
このように、本発明の実施形態のバリエーションによれば、正規の変更要求者がCPUの内部データを変更するときには、変更内容を表す変更履歴が作成されて署名が付与される。ここで、署名を作成するために使用される署名作成鍵はプロセッサシステム10Bが提供する秘密鍵なので、攻撃者は、CPUの内部データを変更できたとしても、署名付き変更履歴を作成できない。よって、プロセッサシステム10Bは、変更履歴の署名を検証することで、CPUの内部データの変更が、正規の変更要求者により行われたのか、攻撃者により行われたのかを判定できる。したがって、プロセッサシステム10Bの安全性を維持できる。
【0107】
なお、図20図21に示すケースでは、攻撃者が署名なし変更履歴または不正署名付き変更履歴を作成するが、本発明の実施形態のバリエーションはこの手順に限定されるものではない。例えば、攻撃者が変更履歴を作成しない場合も、検証CPUにおいて署名の検証が失敗するので、プロセッサシステム10Bは、CPUの内部データの変更が、正規の変更要求者により行われたのか、攻撃者により行われたのかを判定できる。
【0108】
また、図15図21に示す実施形態において、変更要求者(または、攻撃者)により変更される「内部データ」は、CPU1a~1nが使用するパラメータ等に限定されるものではなく、CPU1a~1nに実装されるファームウェアを含むものとする。即ち、CPU1a~1nに実装されるファームウェアが更新されるケースにおいても、図16および図20に示すシーケンスを適用することで、プロセッサシステム10Bは、ファームウェアの更新が、正規の変更要求者により行われたのか、攻撃者により行われたのかを判定できる。
【符号の説明】
【0109】
1(1a~1n) CPU
2 マスタCPU
3 共通ストレージ
4 検証部
5 ロールバック処理部
6 検疫処理部
7 検疫用ストレージ
10 プロセッサシステム
30、40 情報処理装置
30X、40X 情報処理装置(攻撃者)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21