特許第6492944号(P6492944)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社バッファローの特許一覧

特許6492944情報処理システム、情報処理装置、及びファームウェアプログラム
<>
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000002
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000003
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000004
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000005
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000006
  • 特許6492944-情報処理システム、情報処理装置、及びファームウェアプログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6492944
(24)【登録日】2019年3月15日
(45)【発行日】2019年4月3日
(54)【発明の名称】情報処理システム、情報処理装置、及びファームウェアプログラム
(51)【国際特許分類】
   G06F 21/44 20130101AFI20190325BHJP
【FI】
   G06F21/44
【請求項の数】6
【全頁数】17
(21)【出願番号】特願2015-95044(P2015-95044)
(22)【出願日】2015年5月7日
(65)【公開番号】特開2016-212591(P2016-212591A)
(43)【公開日】2016年12月15日
【審査請求日】2018年1月24日
(73)【特許権者】
【識別番号】390040187
【氏名又は名称】株式会社バッファロー
(74)【代理人】
【識別番号】100122275
【弁理士】
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】石井 俊
(72)【発明者】
【氏名】伊藤 司
【審査官】 上島 拓也
(56)【参考文献】
【文献】 特開2003−271254(JP,A)
【文献】 特開2011−004317(JP,A)
【文献】 特開2009−075693(JP,A)
【文献】 特開2012−014594(JP,A)
【文献】 特開2010−238216(JP,A)
【文献】 特開2012−048608(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/44
(57)【特許請求の範囲】
【請求項1】
第1デバイスと、ファームウェアを保持し、当該ファームウェアに基づく処理を行う第2デバイスとを含む情報処理システムであって、
前記第2デバイスは、
前記第1デバイスからコマンドを受信する手段と、
前記受信したコマンドが所定の認証コマンドである場合に、前記ファームウェアの処理として、予め定められた応答を送出する手段と、
を有し、
前記第1デバイスは、
前記第2デバイスに対して所定の認証コマンドを送出する手段と、
前記第2デバイスから前記所定の認証コマンドに対する応答を受け入れる手段と、
前記第2デバイスから受け入れた応答が、前記予め定められた応答であるか否かにより、前記第2デバイスのファームウェア改竄の有無を判断し、当該判断の結果を出力する手段と、
を備え
前記第1デバイスはUSBホストであり、前記第2デバイスはUSBデバイスであって、
前記所定の認証コマンドは、SCSIのベンダーユニークコマンドである情報処理システム。
【請求項2】
ファームウェアを保持し、当該ファームウェアに基づく処理を行う情報処理装置であって、
外部の機器からコマンドを受信する手段と、
前記受信したコマンドが所定の認証コマンドである場合に、前記ファームウェアの処理として、予め定められた応答を前記外部の機器へ送出する手段と、
を有し、
前記外部の機器はUSBホストであり、前記情報処理装置はUSBデバイスであって、
前記所定の認証コマンドは、SCSIのベンダーユニークコマンドである情報処理装置。
【請求項3】
請求項2記載の情報処理装置であって、
前記外部の機器から、所定のコマンドを単位時間あたり所定の回数だけ受信したときに、前記ファームウェアの処理として、当該受信したコマンドが前記所定の認証コマンドであると判断して、前記予め定められた応答を前記外部の機器へ送出する情報処理装置。
【請求項4】
請求項2または3に記載の情報処理装置であって、
前記予め定められた応答には、前記外部の機器から受信した前記所定の認証コマンド内の情報を符号化した情報を含む情報処理装置。
【請求項5】
請求項記載の情報処理装置であって、
前記符号化は、予め定められた暗号鍵による暗号化により行われる情報処理装置。
【請求項6】
情報処理装置であるUSBデバイスを、
外部の機器であるUSBホストからコマンドを受信する手段と、
前記受信したコマンドが所定の認証コマンドであるSCSIのベンダーユニークコマンドである場合に、ファームウェアの処理として、予め定められた応答を前記外部の機器へ送出する手段と、
として機能させるファームウェアプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理装置、及びファームウェアプログラムに関する。
【背景技術】
【0002】
近年では、パーソナルコンピュータやその周辺機器(USBデバイスや、無線LANアクセスポイント等を含む)、携帯電話機、家電製品等、多くの機器が予め設定されたプログラムに従ってコンピュータ制御されている。こうしたコンピュータ制御される種々の機器において、そのプログラムは、ファームウェアとしてフラッシュメモリ等に書き込まれて、機器に内蔵される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2014−509421号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
こうした機器において、ファームウェアが不正に書き換えられると、当該機器そのものの動作だけでなく、当該機器が接続される他の機器(例えばファームウェアが不正に書き換えられた周辺機器に接続されるパーソナルコンピュータ等)の動作にも影響があるので、ファームウェアの不正な書き換えを検知したい要望がある。
【0005】
特許文献1には、疑わしいUSBデバイスとホストとの通信を遮断する目的で、デバイスクラス等の情報から疑わしいパターンを検索する等の処理を行う技術が開示されている。
【0006】
本発明は上記実情に鑑みて為されたもので、機器のファームウェアの不正な書き換えを検出できる情報処理システム、情報処理装置、及びファームウェアプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【0007】
上記従来例の問題点を解決するための本発明は、情報処理システムであって、第1デバイスと、ファームウェアを保持し、当該ファームウェアに基づく処理を行う第2デバイスとを含む情報処理システムであって、前記第2デバイスは、前記第1デバイスからコマンドを受信する手段と、前記受信したコマンドが所定の認証コマンドである場合に、前記ファームウェアの処理として、予め定められた応答を送出する手段と、を有し、前記第1デバイスは、前記第2デバイスに対して所定の認証コマンドを送出する手段と、前記第2デバイスから前記所定の認証コマンドに対する応答を受け入れる手段と、前記第2デバイスから受け入れた応答が、前記予め定められた応答であるか否かにより、前記第2デバイスのファームウェア改竄の有無を判断し、当該判断の結果を出力する手段と、を備えることとしたものである。本発明によると、第2デバイスにおけるファームウェアの不正な書き換えを検出できる。
【0008】
また、本発明の一態様に係る情報処理装置は、ファームウェアを保持し、当該ファームウェアに基づく処理を行う情報処理装置であって、外部の機器からコマンドを受信する手段と、前記受信したコマンドが所定の認証コマンドである場合に、前記ファームウェアの処理として、前記予め定められた応答を前記外部の機器へ送出する手段と、を有することとしたものである。本発明によると、情報処理装置におけるファームウェアの不正な書き換えを検出できる。
【0009】
またここで、前記外部の機器から、所定のコマンドを単位時間あたり所定の回数だけ受信したときに、前記ファームウェアの処理として、当該受信したコマンドが前記所定の認証コマンドであると判断して、前記予め定められた応答を前記外部の機器へ送出することとしてもよい。これによると、新たなコマンドを定義することなく、認証の動作を行わせることが可能となる。
【0010】
さらに前記外部の機器はUSBホストであり、前記情報処理装置はUSBデバイスであって、前記所定の認証コマンドは、SCSIのベンダーユニークコマンドであってもよい。
【0011】
また前記応答は、前記外部の機器から認証コマンドとして受信した情報を符号化した情報としてもよい。このとき、前記符号化は、予め定めた暗号鍵による暗号化により行われるようにしてもよい。
【0012】
また本発明の一態様は、ファームウェアプログラムであって、情報処理装置を、外部の機器からコマンドを受信する手段と、前記受信したコマンドが所定の認証コマンドである場合に、前記ファームウェアの処理として、前記予め定められた応答を前記外部の機器へ送出する手段と、として機能させることとしたものである。
【発明の効果】
【0013】
本発明によれば、機器のファームウェアの不正な書き換えを検出できる。
【図面の簡単な説明】
【0014】
図1】本発明の実施の形態に係る情報処理システムの構成例を表すブロック図である。
図2】本発明の実施の形態に係る情報処理装置の例を表す機能ブロック図である。
図3】本発明の実施の形態に係る第1デバイスの動作例を表すフローチャート図である。
図4】本発明の実施の形態に係る第1デバイスの別の動作例を表すフローチャート図である。
図5】本発明の実施の形態に係る情報処理システムの別の例を表す構成ブロック図である。
図6】本発明の実施の形態に係る第2デバイスのファームウェアアップデート時の動作例を表すフローチャート図である。
【発明を実施するための形態】
【0015】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る情報処理システムは、図1に例示するように、第1デバイスとしてのパーソナルコンピュータ(PC)1と、第2デバイスとしてのUSBデバイス2とを備えて構成される。本実施の形態の例では、この第2デバイスが、本発明の情報処理装置に相当する。
【0016】
ここでPC1は、図1に例示するように、制御部11、記憶部12、操作部13、表示部14、通信部15及びインタフェース部16を備えている。またUSBデバイス2は、制御部21と、記憶部22と、インタフェース部23とを具備している。
【0017】
PC1の制御部11はCPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作している。この制御部11は、一般的なPCとしての動作を行うほか、第2デバイスであるUSBデバイス2を認証する認証プログラムとしての動作を行い、USBデバイス2に対して所定の認証コマンドを送出し、USBデバイス2から当該所定の認証コマンドに対する応答を受け入れる。またこの制御部11は、USBデバイス2から受け入れた当該応答が、予め定められた応答であるか否かにより、USBデバイス2におけるファームウェア改竄の有無を判断し、その結果を出力する。この制御部11の詳しい動作については後に述べる。
【0018】
記憶部12は、制御部11によって実行されるプログラムを保持する。この記憶部12が保持するプログラムには、USBデバイス2を認証する認証プログラムが含まれる。これらのプログラムは、コンピュータ可読かつ非一時的な記憶媒体に格納されて提供され、この記憶部12に格納されたものであってもよいし、ネットワーク等の通信手段を介して提供され、この記憶部12に格納されたものであってもよい。また、認証プログラムはUSBデバイス2とともに提供されたものであってもよい。具体的に、本実施形態のある例では、認証プログラムを格納したコンピュータ可読な記録媒体が、USBデバイス2とともに提供される。利用者はUSBデバイス2を利用するために、この記録媒体に格納された認証プログラムを記憶部12にインストールする。
【0019】
本実施の形態においてこの記憶部12はまた、制御部11のワークメモリとしても動作する。操作部13は、例えばマウスやキーボード等であり、利用者からの操作を受け入れて、当該操作の内容を制御部11に出力する。表示部14は、ディスプレイ等であり、制御部11から入力される指示に従って情報を表示出力する。通信部15は、ネットワークインタフェースであり、制御部11から入力される指示に従い、ネットワークを介して外部の機器との間で情報を送受する。インタフェース部16は、USBポート等であり、本実施の形態の例では、USBデバイス2に接続されるUSBホストとして機能する。このインタフェース部16は、制御部11から入力される指示に従って、USBデバイス2に対してコマンド等の情報を送出する。また、このインタフェース部16は、USBデバイス2が出力する情報を受け入れて制御部11に出力する。
【0020】
USBデバイス2の制御部21は、マイクロコンピュータ等の制御ICであり、記憶部22に格納されたプログラム(ファームウェア)に従って動作する。本実施の形態の制御部21は、記憶部22に格納されたファームウェアに従って、USBデバイス2の機能を実現する処理を行う。例えばこのUSBデバイス2がUSBメモリであれば、制御部21は、ホストであるPC1から入力される指示に従って、記憶部22に情報を格納する。また、この制御部21は、PC1から入力される指示に従って、記憶部22に格納された情報を読み出してPC1へ出力する。
【0021】
また本実施の形態では、制御部21はさらに、第1デバイスであるPC1からコマンドを受信し、当該受信したコマンドが所定の認証コマンドである場合に、ファームウェアに従って実行される処理、すなわちファームウェアの処理として、予め定められた応答を送出する。この制御部21の動作についても後に述べる。
【0022】
記憶部22は、例えばフラッシュメモリ等の不揮発性(給電がない状態で記憶内容を保持可能)かつ、書き換え可能なメモリデバイスであり、本実施の形態では、制御部21によって実行されるファームウェアプログラムを保持する。このファームウェアプログラムは、コンピュータ可読かつ非一時的な記憶媒体に格納されて提供され、この記憶部22に格納されたものであってもよいし、ネットワーク等の通信手段を介して提供され、この記憶部22に格納されたものであってもよい。
【0023】
インタフェース部23は、USBポート等であり、本実施の形態の例ではPC1のインタフェース部16に対して接続されている。このインタフェース部23は、PC1が出力するコマンド等の情報を受け入れて制御部21に出力する。またこのインタフェース部23は、制御部21から入力される指示に従って、PC1に対してコマンドに対する応答等の情報を送出する。
【0024】
本実施の形態に係るUSBデバイス2の制御部21は、記憶部22に格納されたファームウェアを実行することにより、機能的には図2に例示するように、コマンド受信部31と、認証コマンド判断部32と、応答部33とを備えている。本実施の形態の一例では、コマンド受信部31は、インタフェース部23を介してPC1からコマンドを受け入れて認証コマンド判断部32に出力する。
【0025】
認証コマンド判断部32は、コマンド受信部31が受け入れたコマンドが所定の認証コマンドであるか否かを判断する。具体的にこのコマンド受信部31がPC1側から受信するコマンドはSCSI(Small Computer System Interface)コマンドであり、所定の認証コマンドは、SCSIのベンダーユニークコマンド(ベンダが任意に定め得るコマンド)であってもよい。そして認証コマンド判断部32が、PC1側から受信したコマンドが所定の認証コマンドであると判断したときには、認証コマンド判断部32は応答部33に対して所定の応答を行うよう指示する。
【0026】
応答部33は、認証コマンド判断部32から指示を受けると、予め定められた応答をPC1へ送出する。具体的にこの応答は、予め定められた文字列等の情報としてもよい。この場合、当該文字列の情報は、ファームウェア内にハードコードされていてもよい。この予め定めた文字列等を秘匿しておくことにより、ファームウェアの改竄者が当該予め定めた文字列等を応答するプログラムモジュールを作成できなくなるので、所定の認証コマンドを受信したときに予め定められた応答を行うことができず、ファームウェアの改竄が検知可能となる。
【0027】
この例のUSBデバイス2が接続されたPC1の制御部11は、例えばUSBデバイス2が接続された時点等の所定のタイミングで、認証プログラムの実行を開始し、図3に例示するように、USBデバイス2に対して所定の認証コマンドとしてSCSIのベンダーユニークコマンドを送出する(S11)。そして制御部11は、USBデバイス2から当該所定の認証コマンドに対する応答を受け入れるまで待機する(S12)。またこの制御部11は、USBデバイス2から応答を受け入れると、当該受け入れた応答が、予め定められた応答であるか否かを判断する。上述のように、この応答が予め定められた文字列等の情報であるときには、PC1の記憶部12にはUSBデバイス2が応答として送出するべき当該予め定められた文字列等の情報が(例えば認証プログラムの一部としてハードコードされて)格納されているものとする。
【0028】
すなわち制御部11は、USBデバイス2から応答を受け入れると、記憶部12に格納されている文字列等の情報と、当該応答とを比較し(S13)、これらが互いに一致していればUSBデバイス2におけるファームウェア改竄はないものと判断し、その結果を出力する(S14)。また、制御部11は、処理S13において、記憶部12に格納されている文字列等の情報と、USBデバイス2から受け入れた応答とを比較したときに、これらが互いに一致していなければUSBデバイス2におけるファームウェア改竄がされているものと判断して、その結果を出力する(S15)。
【0029】
本実施の形態のこのような例(応答となるべき文字列等の情報がファームウェアや、記憶部12に格納された認証プログラムにハードコードされている例)では、ベンダ側においてファームウェア等のソースコードがオープンソース化されるなどして外部に露出された場合に、当該応答となるべき文字列等の情報も公開されることとなる。
【0030】
そこで本実施形態のこのような例を採用する場合は、ファームウェア等のプログラムのコンパイラにおいて、応答の文字列等として指定された文字列を、コンパイル後にソースコードから削除する処理を行うことが好ましい。本実施の形態の一例では、認証プログラムと対応するファームウェアとが一度に生成されてコンパイルされる。すなわちこの認証プログラムとファームウェアとを生成する情報処理装置では、認証プログラムとファームウェアとのソースコードをロードし、ロードした各ソースコード内の予め定められた位置に、応答となるべき文字列等を挿入する。なお、この挿入位置は各ソースコードの先頭からのオフセットで定めてもよいし、コンパイラへの所定指示文字列(プラグマ等)のある位置に挿入することとしてもよい。この場合、コンパイラのプリプロセッサにより挿入が行われてもよい。また、この応答となるべき文字列は、コンパイラ(プリプロセッサを含む)がここでランダムに発行することとしても構わない。
【0031】
そして当該文字列挿入後の認証プログラム、及びファームウェアをコンパイルしてそれぞれの実行モジュールを生成する。認証プログラムの実行モジュールは、例えばコンピュータ可読な記録媒体に格納される。またファームウェアの実行モジュールは、USBデバイス2の記憶部22に書き込まれる。
【0032】
また認証プログラムとファームウェアとを生成する情報処理装置は、コンパイルが完了すると、認証プログラムとファームウェアとのソースコード内の予め定められた位置に挿入した応答となるべき文字列等を削除する。
【0033】
これにより、本実施の形態では、仮にソースコードが外部に露出した場合であっても、応答となるべき文字列等が同時に公開されることがなくなる。
【0034】
[認証コマンドの別の例]
またここまでの説明において、PC1の制御部11が送出する認証コマンドはSCSIのベンダーユニークコマンド等、認証コマンドとして特に定められたものであるとしていたが本実施の形態はこれに限られない。具体的に本実施の形態において認証コマンドは、任意のコマンドを所定の態様で送出したものとすることとしてもよい。ここで任意のコマンドはベンダーユニークコマンドであってもよいし、既存のコマンドであっても構わない。また所定の態様とは、具体的には、単位時間あたり所定の回数だけ送信する態様などとすればよい。例えばSCSIのGetDescripterコマンドを1秒あたり10回送出する等の態様でよい。なお、ここで所定コマンドは続けて送信される必要はなく、単位時間あたりに所定数送信されれば、所定コマンド以外の他のコマンドがその間に送信されてもよい。またこのほかにも、コマンドA,B,Cを所定の順序で、例えばA,B,Cの順に1秒以内に送出する、といった態様でも構わない。
【0035】
この例では、第2デバイスであるUSBデバイス2の制御部21が、認証コマンド判断部32としての動作において、上記所定の態様でコマンド受信部31がコマンドを受信したと判断したときに、所定の認証コマンドを受信したものとして、応答部33に対して所定の応答を行うよう指示する。
【0036】
またこの例では、認証コマンド判断部32としての動作において、上記所定の態様以外の態様で、コマンド受信部31がコマンドを受信したと判断したときには、当該コマンドに関わる処理を実行するよう指示を出力する。例えば、上記所定の態様が上述の通り、SCSIのGetDescripterコマンドを1秒あたり10回送出することであれば、USBデバイス2の制御部21は、PC1からSCSIのGetDescripterコマンドを1秒あたり10回受信したときに、PC1に対して所定の応答を行う。このときには、受信したコマンド(GetDescripterコマンド)に対する通常の処理は行う必要はない。
【0037】
またUSBデバイス2の制御部21は、PC1からSCSIのGetDescripterコマンドを1秒以内に一度だけ受信するなど、1秒あたり10回受信する以外の態様で受信したときには、GetDescripterコマンドを受信したときに通常行う処理を実行する。このように、単位時間あたり所定のコマンドを受信する回数を測定することにより、ファームウェア改竄の有無を判断することができる。なお、ここで所定コマンドは連続的に受信されなくても、単位時間あたりに所定数受信されればよく、所定コマンド以外の他のコマンドがその間に受信されてもよい。
【0038】
[応答の別の例]
また応答は、予め定められた文字列等を送出する例だけに限られない。例えば本実施の形態のPC1の制御部11は、文字列等の暗号対象情報をランダムに生成し、このランダムに生成した暗号対象情報を暗号化して、認証コマンドに含めて送出してもよい。
【0039】
この例では、当該認証コマンドに対して応答を行うUSBデバイス2の制御部21は、応答部33としての処理を行う際に、PC1から受信した認証コマンドに含まれる、PC1側で暗号化された情報を、所定の方法で復号し、当該復号の結果を応答としてPC1へ送出することとしてもよい。
【0040】
ここで符号化の方法は、例えば予め定めた暗号鍵により暗号化する方法である。またUSBデバイス2の制御部21において行う復号は、当該予め定めた暗号鍵に対応する復号鍵を用いて行われる。この例では暗号鍵に対応する復号鍵を秘匿しておく。これによりファームウェアの改竄者が当該符号化を行った応答をするためのプログラムモジュール(暗号化された情報を復号するプログラムモジュール)を作成できなくなるので、上記所定の認証コマンドを受信したときに予め定められた応答を行うことができず、ファームウェアの改竄が検知可能となる。本実施の形態のこの例では、PC1の制御部11及びUSBデバイス2の制御部21は、それぞれ次のように動作する。
【0041】
すなわち制御部11は、例えばUSBデバイス2が接続された時点等の所定のタイミングで、認証プログラムの実行を開始し、図4に例示するように、暗号対象情報となる認証用の文字列を例えばランダムに発行する(S21)。また制御部11は、この発行した文字列を、予め定めた暗号鍵を用いて暗号化し、暗号化文字列を得る(S22)。そして制御部11は、第2デバイスであるUSBデバイス2に対し、所定の認証コマンドとして上記暗号化した暗号化文字列を含むコマンドを送出する(S23)。
【0042】
USBデバイス2の制御部21では、上記所定の認証コマンドを受信し、当該認証コマンドに含まれる暗号化文字列を取り出して、予め定められた復号鍵を用いて、当該暗号化文字列を復号する(S31)。そして制御部21は、当該復号の結果をPC1に対して認証コマンドに対する応答として送出する(S32)。
【0043】
PC1の制御部11は、予め定めたタイムアウト時間以内に、USBデバイス2から上記所定の認証コマンドに対する応答を受け入れたか否かを判断し(S24)、受け入れたならば(S24:Yes)、当該受け入れた応答が、処理S21で発行した認証用文字列に一致しているか否かを判断する(S25)。
【0044】
ここで制御部11は、USBデバイス2から得られた応答が、処理S21で発行した認証用文字列に一致していれば(S25:Yes)、USBデバイス2におけるファームウェア改竄はないものと判断して、その結果を出力する(S26)。また、処理S25において、USBデバイス2から得られた応答が、処理S21で発行した認証用文字列に一致していないと判断すると(S25:No)、制御部11は、USBデバイス2におけるファームウェア改竄がされているものと判断して、その結果を出力する(S27)。
【0045】
なお、制御部11は処理S24において、予め定めたタイムアウト時間以内に、USBデバイス2から上記所定の認証コマンドに対する応答を受け入れなかった場合は(S24:No)、処理S27に移行して処理を続ける。
【0046】
またここでの例でも暗号鍵等や対応する復号鍵を、PC1の認証プログラムやUSBデバイス2のファームウェアにハードコードしておいてもよい。
【0047】
そしてこの場合も、ファームウェア等のプログラムのコンパイラにおいて、暗号鍵や復号鍵等を、コンパイル後にソースコードから削除する処理を行うことが好ましい。本実施の形態の一例では、認証プログラムと対応するファームウェアとが一度に生成されてコンパイルされる。すなわちこの認証プログラムとファームウェアとを生成する情報処理装置では、認証プログラムとファームウェアとのソースコードをロードし、ロードした各ソースコード内の予め定められた位置に、暗号鍵等を挿入する(復号鍵を用いる場合は認証プログラムには復号鍵を挿入し、ファームウェアには対応する暗号鍵を挿入する)。なお、この挿入位置は各ソースコードの先頭からのオフセットで定めてもよいし、コンパイラへの所定指示文字列(プラグマ等)のある位置に挿入することとしてもよい。この場合、コンパイラのプリプロセッサにより挿入が行われてもよい。また、この暗号鍵等は、コンパイラ(プリプロセッサを含む)がここで発行することとしても構わない。
【0048】
そして当該暗号鍵等を挿入した後の認証プログラム、及びファームウェアをコンパイルしてそれぞれの実行モジュールを生成する。認証プログラムの実行モジュールは、例えばコンピュータ可読な記録媒体に格納される。またファームウェアの実行モジュールは、USBデバイス2の記憶部22に書き込まれる。
【0049】
また認証プログラムとファームウェアとを生成する情報処理装置は、コンパイルが完了すると、認証プログラムとファームウェアとのソースコード内の予め定められた位置に挿入した暗号鍵等を削除する。
【0050】
これにより、本実施の形態では、仮にソースコードが外部に露出した場合であっても、暗号鍵等が同時に公開されることがなくなる。
【0051】
[第1、第2デバイスの別の例]
また、ここまでの例では第1デバイスがPCであり、第2デバイスがそれに接続されるUSBデバイスであるものとしたが、本実施の形態はこれに限られるものではない。
【0052】
例えば本実施の形態のある例では、図5に例示するように、第1デバイスが無線または有線LANインタフェースを備えたPC1であり、第2デバイスが無線LANアクセスポイント装置4a,b,…であってもよい。本実施形態のこの例においてPC1は、複数の無線LANアクセスポイント装置4a,b,…(以下、各無線LANアクセスポイント装置4a,b,…をそれぞれ区別する必要がない場合は、単に無線LANアクセスポイント装置4と表記する)の管理装置として動作し、無線LANアクセスポイント装置4の設定を管理する。
【0053】
本実施形態のこの例では、無線LANアクセスポイント装置4がPC1に対して無線または有線LANを介して接続され、無線または有線にてPC1からコマンドを受け入れる。またこの無線LANアクセスポイント装置4にはファームウェアがインストールされ、その制御部としてのCPUが当該ファームウェアに従って、次のように動作する。
【0054】
すなわち無線LANアクセスポイント装置4は、管理装置として動作するPC1から受け入れたコマンドが所定の認証コマンドであるか否かを判断する。ここで、PC1側から受信したコマンドが所定の認証コマンドであると判断したときには、無線LANアクセスポイント装置4は予め定められた応答をPC1へ送出する。この応答は、USBデバイス2の例において述べたものと同様、予め無線LANアクセスポイント装置4にインストールされたファームウェア内に予め設定された文字列等の情報であってもよいし、PC1側から受信したコマンドに含まれる文字列等を所定の方法で符号化したものであってもよい。
【0055】
PC1は、図3に例示した例と同様に、所定のタイミング(例えば起動時や、予め定められた時刻ごとのタイミング)で、認証プログラムを実行し、所定の認証コマンドを第2デバイスとしての無線LANアクセスポイント装置4a,b,…にそれぞれ送出する(S11)。
【0056】
そしてPC1は、各無線LANアクセスポイント装置4a,b,…から当該所定の認証コマンドに対する応答を受け入れるまで待機し(S12:No)、無線LANアクセスポイント装置4a,b,…から応答を受け入れるごとに(S12:Yes)、当該応答を送出した無線LANアクセスポイント装置4について、当該無線LANアクセスポイント装置4から受け入れた応答が、予め定められた応答であるか否かを判断する(S13)。
【0057】
PC1は、ある無線LANアクセスポイント装置4から受け入れた応答が、予め定められた応答であれば(S13:Yes)、当該無線LANアクセスポイント装置4におけるファームウェア改竄はないものと判断し、その結果を出力する(S14)。また制御部11は、ある無線LANアクセスポイント装置4から受け入れた応答が、予め定められた応答でない場合は(S13:No)、当該無線LANアクセスポイント装置4においてはファームウェア改竄がされているものと判断して、その結果を出力する(S15)。
【0058】
またこのように無線LANアクセスポイント装置4を第2デバイスとする場合、認証コマンドは、無線LANアクセスポイント装置4の装置種別や、MACアドレス、備えている機能等を問い合わせるコマンドであってもよい。この場合、PC1には予め上記問い合せに対する各無線LANアクセスポイント装置4からの応答を保持させておく。例えば、無線LANアクセスポイント装置4を特定する情報として、各無線LANアクセスポイント装置4のMACアドレスに関連付けて、対応する無線LANアクセスポイント装置4の装置種別を表す情報等を保持させておく。
【0059】
そしてPC1は、上記認証コマンドとしての問い合せ(S11)に対して各無線LANアクセスポイント装置4が送出する応答を受信し(S12:Yes)、当該応答の送出元であるMACアドレスに関連付けて記憶している装置種別を表す情報等と、応答とが一致しているか否かを調べる(S13)。そしてこれらが一致していれば(S13:Yes)、当該無線LANアクセスポイント装置4におけるファームウェア改竄はないものと判断し、その結果を出力する(S14)。また、応答の送出元であるMACアドレスに関連付けて記憶している装置種別を表す情報等と、当該送出元から受信した応答とが一致していなければ(S13:No)、当該無線LANアクセスポイント装置4においてはファームウェア改竄がされているものと判断して、その結果を出力する(S15)。
【0060】
また第2デバイスが外部から設定変更が可能である場合は、第1デバイスは、次のようにして認証コマンドを送出することとしてもよい。すなわち本実施の形態のある例では、第2デバイスである無線LANアクセスポイント装置4は、ウェブサーバとして機能し、自己の動作設定変更を、当該ウェブサーバが配信するウェブページを介して受け入れる機能を有する。
【0061】
この場合、第1デバイスであるPC1は、当該無線LANアクセスポイント装置4が配信するウェブページへアクセスして、予め定めた設定変更を行う。具体的には、PC1は、文字列の書き込みや、動作モードの切り替え等、予め定めた設定変更を試みる。この例では、当該設定変更の指示が、図3に示した処理S11の動作における認証コマンドに相当する。つまりPC1は、認証コマンドとして設定変更の指示を送出する(S11)。
【0062】
そしてPC1は、当該設定変更後、再度当該無線LANアクセスポイント装置4が配信するウェブページへアクセスする。PC1は、当該アクセスに対し、無線LANアクセスポイント装置4が応答するまで待機し(S12:No)、設定変更が正常に行われたか否かを表す情報を、認証コマンドに対する応答として受け入れると、処理S13に進む(S12:Yes)。処理S13においてPC1は設定変更が正常に行われた旨を表す情報が受け入れられた場合(この例では正常に行われた旨を表す情報が、予め定められた応答に相当する)は(S13:Yes)、PC1は当該無線LANアクセスポイント装置4におけるファームウェア改竄はないものと判断し、その結果を出力する(S14)。
【0063】
また、ここで設定変更が正常に行われていない旨を表す情報が受け入れられた場合(設定変更がされていないなどの場合)は(S13:No)、PC1は当該無線LANアクセスポイント装置4においてはファームウェア改竄がされているものと判断して、その結果を出力する(S15)。
【0064】
[応答の送出方法の別の例]
またここまでの例では、第2デバイスである無線LANアクセスポイント装置4は、第1デバイスに対して直接的に応答を送出するものとしていたが、予め設定されたURLで特定されるサーバにアクセスし、当該サーバに応答を送出することで応答の送出を行うこととしてもよい。このサーバは、例えばsyslogサーバ等のログサーバであり、第1デバイスは、当該ログサーバに記録された無線LANアクセスポイント装置4からの応答を参照して、当該応答が所定の応答であるか否かを調べることで、無線LANアクセスポイント装置4のファームウェアの改竄の有無を検出する。
【0065】
[相互に応答を確認する例]
また本実施の形態のこの例では、第1デバイスは、無線LANアクセスポイント装置4自身であってもよい。例えば本実施の形態のある例では、各無線LANアクセスポイント装置4が第1デバイスとしても、第2デバイスとしても機能する。そして、無線LANアクセスポイント装置4aが第1デバイスとして機能するときには、他の無線LANアクセスポイント装置4bを第2デバイスとして、この無線LANアクセスポイント装置4bに対して、無線または有線LAN経由で所定の認証コマンドを送出する。そしてこの無線LANアクセスポイント装置4bが所定の応答を無線または有線LAN経由で返答し、当該応答が予め定めた応答であるか否かにより、無線LANアクセスポイント装置4aが無線LANアクセスポイント装置4bにおけるファームウェアの改竄の有無を検出する。
【0066】
この認証コマンドの送出は、例えば所定のタイミングごと(例えば定時ごとなど予め定めた時刻が到来するごと)としておく。この場合、各無線LANアクセスポイント装置4はそれぞれネットワークを介してアクセス可能なNTP(Network Time Protocol)サーバ等を用いて、内部で計時する時刻を合わせておき、予め定めた時刻が到来するごとに、いずれかの無線LANアクセスポイント装置4aが第1デバイスとしての動作を開始して、第2デバイスとして動作する他の無線LANアクセスポイント装置4b,c…に対して認証コマンドを送出するようにしておく。
【0067】
このとき無線LANアクセスポイント装置4aは、いずれかの無線LANアクセスポイント装置4b,c…から予め定めた応答がない場合、あるいは応答そのものがない場合には、当該無線LANアクセスポイント装置4については、そのファームウェアの改竄があったものとして、その旨を表す情報を出力する(例えばsyslogサーバに書き込むなどして、管理者がPC等から参照可能な状態とする)。
【0068】
また、第2デバイスとして動作する他の無線LANアクセスポイント装置4b,c…は、第1デバイスとして動作する無線LANアクセスポイント装置4aから、上記予め定めた時刻が到来した後、所定の時間(例えば1分)が経過しても認証コマンドの送出がない場合、無線LANアクセスポイント装置4aのファームウェアの改竄があったものとして、その旨を表す情報を出力する(例えばsyslogサーバに書き込むなどして、管理者がPC等から参照可能な状態とする)こととしてもよい。このように本実施の形態のある例では、相互に検証を行うことが可能となる。
【0069】
[ビーコンを用いる例]
またここまでの例で、第1デバイスとして機能する無線LANアクセスポイント装置4は、IEEE802.11規格に定められる管理パケットの一種であるビーコン(ESSIDのブロードキャスト)パケットの一部(例えばInformation Element等の領域)に認証コマンドを含めて送出してもよい。
【0070】
本実施形態のここでの例における第2デバイス(無線LANアクセスポイント装置4)は、いわゆる無線LAN中継装置であり、第1デバイスである無線LANアクセスポイント装置と、無線LAN端末装置である無線LANステーション装置間の無線LAN通信を中継する。つまり、ここでの例において、第2デバイスは第1デバイスである無線LANアクセスポイントに対しては無線LANステーション装置として機能し、無線LAN端末装置に対しては無線LANアクセスポイント装置として機能する。
【0071】
この場合第2デバイスとして機能する無線LANアクセスポイント装置4は、無線LANステーション機能を備え、この無線LANステーション機能により、第1デバイスとして機能する無線LANアクセスポイント装置4がブロードキャストしたビーコンパケットを受信する。無線LANアクセスポイント装置4は、ここで受信したビーコンパケット内に認証コマンドが含まれているか否かを調べ、認証コマンドが含まれていれば、上述の予め定めた応答を第1デバイスへ送出することとする。
【0072】
なお、この場合、第2デバイスとして機能する無線LANアクセスポイント装置4は、無線LANステーション機能としての動作において、当該応答を送出するにあたり、IEEE802.11に定められる管理パケットの一種である無線LANのプローブ要求パケットの一部(例えばInformation Element等の領域)に応答を含めて、第1デバイスへ送出することとしてもよい。
【0073】
第1デバイスとして機能する無線LANアクセスポイント装置4は、認証コマンド(認証コマンドを含むビーコンパケット)を送出した後、当該ビーコンパケットを受信した第2デバイスとして機能する他の無線LANアクセスポイント装置4からの応答であるプローブ要求パケットを受信して、当該プローブ要求パケットに応答が含まれているか否かを調べる。そして第1デバイスとして機能する無線LANアクセスポイント装置4は、認証コマンドを送出した後、予め定めた回数あるいは時間が経過するまでの間に第2デバイスとして機能する他の無線LANアクセスポイント装置4から受信するプローブ要求パケットに応答が含まれない場合は、当該第2デバイスとして機能する無線LANアクセスポイント装置4のファームウェアの改竄があったものとして、その旨を表す情報を出力する。
【0074】
また、第1デバイスとして機能する無線LANアクセスポイント装置4は、認証コマンドを送出した後、第2デバイスとして機能する無線LANアクセスポイント装置4から受信したプローブ要求パケットに応答が含まれていれば、当該応答が予め定めた応答に一致しているか否かを調べ、一致していれば、当該応答を行った第2デバイスとして機能する無線LANアクセスポイント装置4のファームウェアに改竄がなかったものとして、その旨を表す情報を出力する。またここで、第1デバイスとして機能する無線LANアクセスポイント装置4は、認証コマンドを送出した後、第2デバイスとして機能する無線LANアクセスポイント装置4から受信したプローブ要求パケットに予め定められた応答が含まれない場合、あるいは含まれる応答が予め定めたられ応答に一致していなければ、当該応答を行った他の無線LANアクセスポイント装置4のファームウェアに改竄があったものとして、その旨を表す情報を出力する。
【0075】
[ドングルを用いる例]
また本実施の形態のある例では、認証プログラムがUSBメモリデバイス等の外部記憶デバイスに格納されて提供されてもよい。この例においては、第2のデバイスとして機能し得る(つまり改竄のない状態のファームウェアに第2デバイスとして動作するためのプログラムモジュールが含まれる)無線LANアクセスポイント装置4等が、この外部記憶デバイスを受け入れるインタフェースを備える。
【0076】
そして当該無線LANアクセスポイント装置4は、このインタフェースに、上記認証プログラムを格納した外部記憶デバイスが接続されると、当該認証プログラムの実行を開始し、自己宛に認証コマンドを送出する。この送出は例えばローカルループバックアドレス宛に行えばよい。
【0077】
この無線LANアクセスポイント装置4は、自己宛に送出された認証コマンドを受けて、ファームウェアの処理として予め定めた応答を生成して返信(この場合は同じく自己宛、つまりローカルループバックアドレス宛に送出)する。
【0078】
無線LANアクセスポイント装置4は、認証プログラムとしての動作において、自己から返信された応答が、予め定められた応答に一致するか否かを調べ、一致していれば当該無線LANアクセスポイント装置4のファームウェアに改竄がなかったものとして、その旨を表す情報を出力する。また、当該自己から返信された応答が予め定めた応答に一致していなければ、当該無線LANアクセスポイント装置4のファームウェアに改竄があったものとして、その旨を表す情報を出力する。
【0079】
[第1、第2デバイスのさらに他の例]
さらに第1デバイスや第2デバイスは、無線LANアクセスポイント装置4に限られず、他のネットワーク機器、例えばNAS(Network Attached Storage)や、ルータ、その他のデバイスであっても構わない。本実施の形態によれば、種々の機器のファームウェアの不正な書き換えを検出できる。
【0080】
[ファームウェアのアップデートの例]
また本実施の形態のある例では、第1デバイスであるPC1が、例えばUSBデバイス2等の第2デバイスのファームウェアをアップデートする際に、第2デバイスが第1デバイスを認証してから、アップデートを受け入れるようにしてもよい。この例では、PC1の制御部11が、第2デバイス(以下では、USBデバイス2である場合を例として説明する)のファームウェアアップデートの指示(ファームウェアアップデート用プログラムの実行指示)を、利用者から受け入れて次の処理を実行する。
【0081】
すなわち図6に例示するように、制御部11は、認証用情報の発行をUSBデバイス2に対して要求する(S41)。USBデバイス2の制御部21では、認証用情報の発行要求を受けて、認証用情報である文字列を例えばランダムに発行する(S42)。またこの制御部21は、当該発行した認証用情報となる文字列を、予め定めた暗号鍵を用いて暗号化し、暗号化文字列を得る(S43)。そして制御部21は、PC1に対し、上記暗号化した暗号化文字列を送出する(S44)。
【0082】
PC1の制御部11は、USBデバイス2が送出した暗号化文字列を受け入れて、予め定められた復号鍵を用いて、当該暗号化文字列を復号する(S45)。そして制御部11は、当該復号の結果と、アップデート用のファームウェアのデータとをUSBデバイス2に対して送出する(S46)。ここで処理S45での復号が正しく行われていれば、USBデバイス2が受け入れる復号の結果は認証用情報に一致することとなる。
【0083】
USBデバイス2の制御部21は、予め定めたタイムアウト時間以内に、PC1から復号の結果を含む応答を受け入れたか否かを判断し(S47)、受け入れたならば(S47:Yes)、当該受け入れた復号の結果が、処理S42で発行した認証用情報である文字列に一致しているか否かを判断する(S48)。
【0084】
ここで制御部21は、PC1から得られた復号の結果が、処理S42で発行した認証用情報である文字列に一致していれば(S48:Yes)、当該復号の結果とともに受け入れたアップデート用のファームウェアのデータを用いて、記憶部22に格納されたファームウェアのアップデートの処理を実行して(S49)、処理を終了する。
【0085】
また、処理S48において、PC1から得られた復号の結果が、処理S42で発行した認証用情報である文字列に一致していないと判断すると(S48:No)、制御部21は、PC1から受け入れた情報を破棄して処理を終了する。
【0086】
またここでの例でも暗号鍵等や対応する復号鍵を、USBデバイス2のファームウェアやPC1のファームウェアアップデート用プログラムにハードコードしておいてもよい。
【0087】
そしてこの場合も、ファームウェア等のプログラムのコンパイラにおいて、暗号鍵や復号鍵等を、コンパイル後にソースコードから削除する処理を行うことが好ましい。本実施の形態の一例では、ファームウェアアップデート用プログラムと対応するファームウェア(当該ファームウェアアップデート用プログラムがアップデートの対象とするファームウェア)とが一度に生成されてコンパイルされる。すなわちこのファームウェアアップデート用プログラムとファームウェアとを生成する情報処理装置では、ファームウェアアップデート用プログラムとファームウェアとのソースコードをロードし、ロードした各ソースコード内の予め定められた位置に、暗号鍵等を挿入する(復号鍵を用いる場合は認証プログラムには復号鍵を挿入し、ファームウェアには対応する暗号鍵を挿入する)。なお、この挿入位置は各ソースコードの先頭からのオフセットで定めてもよいし、コンパイラへの所定指示文字列(プラグマ等)のある位置に挿入することとしてもよい。この場合、コンパイラのプリプロセッサにより挿入が行われてもよい。また、この暗号鍵等は、コンパイラ(プリプロセッサを含む)がここで発行することとしても構わない。
【0088】
そして当該暗号鍵等を挿入した後のファームウェアをコンパイルして実行モジュールを生成する。また復号鍵を挿入した後のファームウェアアップデート用プログラムについては、アップデート用のプログラムができた時点で、コンパイルされ、実行モジュールが生成される。ファームウェアアップデート用プログラムの実行モジュールは、例えばコンピュータ可読な記録媒体に格納され、またはネットワーク等を介して配信される。またファームウェアの実行モジュールは、USBデバイス2の記憶部22に書き込まれる。
【0089】
また認証プログラムとファームウェアとを生成する情報処理装置は、コンパイルが完了すると、認証プログラムとファームウェアとのソースコード内の予め定められた位置に挿入した暗号鍵等を削除する。
【0090】
本実施の形態のこの例によると、ファームウェアアップデート用プログラムが不正に作成されて、USBデバイス2等第2デバイスのファームウェアが不正に書き換えられることを防止できる。
すなわち本実施の形態では、第2デバイスは、次のことも特徴としている。認証用情報の要求を受けて、認証用情報を発行し、所定の暗号鍵で暗号化して認証用情報の要求元へ送出する手段と、この認証情報の要求元から暗号化した情報を復号した復号結果と、ファームウェアのアップデート用情報とを受け入れて、当該復号結果が、先に発行した認証用情報に一致していれば、当該復号結果とともに受け入れたアップデート用情報を用いて、保持しているファームウェアをアップデートする手段と、を含む。
また、第1デバイスはファームウェアアップデート用プログラムの起動時に、既に述べた、図3または図4等で例示した方法により、第2デバイスのファームウェアが改竄されているか否かを調べ、改竄されていないと判断した場合に、第2デバイスに対して認証用情報の要求を送出することとしてもよい。この例では、第2デバイスのファームウェアが改竄されていると判断したときには、第1デバイスは、その後の処理(図6に例示した処理)を実行せずに処理を終了する。
【符号の説明】
【0091】
1 PC、2 USBデバイス、4 無線LANアクセスポイント装置、11 制御部、12 記憶部、13 操作部、14 表示部、15 通信部、16 インタフェース部、21 制御部、22 記憶部、23 インタフェース部、31 コマンド受信部、32 認証コマンド判断部、33 応答部。
図1
図2
図3
図4
図5
図6