(57)【特許請求の範囲】
【請求項１】
バージョンの更新時に保持する暗号鍵が変更されるファームウェアが組み込まれたデバイスを内蔵または外部接続する情報処理装置において、
前記ファームウェアのバージョンを取得するバーション取得手段と、
前記バーション取得手段により取得されたバージョンのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを所定のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを前記所定のバージョンに更新させる第１のバージョン更新手段と、
前記所定のバーションのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを最新のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを最新のバージョンに更新させる第２のバージョン更新手段と
を具備することを特徴とする情報処理装置。
【請求項２】
通信手段と、
前記通信手段を介して他の情報処理装置から前記更新ファイルを取得するダウンロード手段と、
をさらに具備することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記所定のバージョンは、初期バージョンであることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記所定のバーションは、前記ファームウェアを最新のバージョンに更新するための更新ファイルに施された暗号化を復号可能な暗号鍵を保持する状態に前記ファームウェアを一時的に移行させるために設けられるものであることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記バージョン取得手段により取得されたバージョンが最新または前記所定のバージョンか否かを判定する判定手段をさらに具備し、
前記第１のバージョン更新手段は、前記判定手段により最新または前記所定のバージョンでないと判定された場合に、前記ファームウェアの前記所定のバージョンへの更新を前記デバイスに実行させ、
前記第２のバージョン更新手段は、前記判定手段により最新のバージョンでないと判定された場合に、前記ファームウェアの前記所定のバージョンからの最新のバージョンへの更新を前記デバイスに実行させる
ことを特徴とする請求項１記載の情報処理装置。
【請求項６】
バージョンの更新時に保持する暗号鍵が変更されるファームウェアが組み込まれたデバイスを内蔵または外部接続する情報処理装置のファームウェア更新方法であって、
前記ファームウェアのバージョンを取得し、
前記取得したバーションが最新または所定のバージョンでない場合、前記取得したバージョンのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを所定のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを前記所定のバージョンに更新させ、
前記取得したバーションが最新のバージョンでない場合、前記所定のバーションのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを最新のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを最新のバージョンに更新させる
ことを特徴とするファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばパーソナルコンピュータなどの情報処理装置に適用して好適なファームウェア更新技術に関する。
【背景技術】
【０００２】
近年、ノートブックタイプやデスクトップタイプ等、様々なタイプのパーソナルコンピュータが広く普及している。この種のパーソナルコンピュータには、数多くのデバイスが内蔵され、また、必要に応じて接続される。ハードウェアであるデバイスの多くは、ソフトウェアであるファームウェアによって動作が制御され、機能改良等を行えるようにするために、当該ファームウェアをフラッシュメモリ等に格納する。
【０００３】
また、最近では、通信環境が整備されてきたことに伴い、デバイス提供元が更新情報をインターネット上で公開し、必要であれば、ファームウェア更新用の更新ファイルをユーザにダウンロードさせるといったことも一般的になりつつある。このようなことから、ファームウェア等の更新を効率的に行うための提案が種々なされている（例えば特許文献１等参照）。
【特許文献１】特開２００３−１７３２６０公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、最近では、例えば著作権保護のために暗号化されて放送されるデジタルテレビジョン放送番組データを受信・復号するデジタルチューナ等も、パーソナルコンピュータに内蔵または接続されるデバイスとして製造されている。これにより、バッテリ駆動可能なノートブックタイプのパーソナルコンピュータ等を携行すれば、外出先や移動中にもデジタルテレビジョン放送番組データを視聴することが可能になっている。
【０００５】
このデジタルチューナのような重要データを取り扱うデバイスのファームウェアを更新するにあたっては、悪意あるユーザによる不正な解析を防ぐために、第１に、ファームウェア内に暗号化された情報を復号する機能を持たせ、当該ファームウェアに供給すべき情報を暗号化した上で頒布するといったことが行われる。また、第２に、さらなる情報漏洩を期するために、この暗号化のための暗号鍵、即ちファームウェアに保持させる暗号鍵をバージョンアップ毎に変更するといったことが併せて行われる場合もある。
【０００６】
しかしながら、この場合、例えばバージョンＡ→バージョンＢ→バージョンＣとバージョンアップした後、さらにバーションＤへとバージョンアップする際、次のような問題が発生する。
【０００７】
つまり、ユーザＸはその都度バージョンアップして現在バージョンＣであるが、ユーザＹはバージョンＡのままであるような場合、ユーザＹも直接的にバーションＤにバージョンアップできるようにするためには、バージョンＡ，Ｂ，Ｃのそれぞれからバージョンアップするための更新ファイルを各々用意しておかなくてはならなくなる。なぜなら、この更新ファイルはファームウェアが保持する暗号鍵で復号可能に暗号化された状態で用意されるものだからである。
【０００８】
また、最新バージョンへの更新ファイルを既存バージョン数分その都度用意するのはコスト的にも管理上も問題があるとして、各バージョンへの更新ファイルを直前のバージョンからのものを１つずつ用意するようにすると、バージョンＢ→バージョンＣ→バージョンＤと順を追って何度もバージョンアップ作業をユーザＹに強いてしまう（この順を追ったバージョンアップが１回のバージョンアップ作業で自動的に行われる場合も、一般にバージョンアップがＮ回発生したときにはＮ倍の作業時間がかかってしまう）。
【０００９】
この発明は、このような事情を考慮してなされたものであり、ファームウェアの任意のバージョンから最新のバージョンへの更新を効率的に行うことを可能とした情報処理装置およびファームウェア更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
前述した目的を達成するために、この発明の情報処理装置は、バージョンの更新時に保持する暗号鍵が変更されるファームウェアが組み込まれたデバイスを内蔵または外部接続する情報処理装置において、前記ファームウェアのバージョンを取得するバーション取得手段と、前記バーション取得手段により取得されたバージョンのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを所定のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを前記所定のバージョンに更新させる第１のバージョン更新手段と、前記所定のバーションのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを最新のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを最新のバージョンに更新させる第２のバージョン更新手段とを具備することを特徴とする。
【００１１】
また、この発明のファームウェア更新方法は、バージョンの更新時に保持する暗号鍵が変更されるファームウェアが組み込まれたデバイスを内蔵または外部接続する情報処理装置のファームウェア更新方法であって、前記ファームウェアのバージョンを取得し、前記取得したバーションが最新または所定のバージョンでない場合、前記取得したバージョンのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを所定のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを前記所定のバージョンに更新させ、前記取得したバーションが最新のバージョンでない場合、前記所定のバーションのファームウェアが保持する暗号鍵で復号可能に暗号化された、前記ファームウェアを最新のバージョンに更新するための更新ファイルを前記デバイスに転送して、前記デバイスのファームウェアのバージョンを最新のバージョンに更新させることを特徴とする。
【発明の効果】
【００１２】
この発明によれば、ファームウェアの任意のバージョンから最新のバージョンへの更新を効率的に行うことを可能とした情報処理装置およびファームウェア更新方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、この発明の一実施形態を説明する。
【００１４】
本実施形態に係る情報処理装置は、例えばバッテリ駆動可能なノートブック型パーソナルコンピュータ（ＰＣ）等として実現されている。図１は、本ＰＣ１の一動作環境例を示す図であり、図１に示すように、本ＰＣ１は、例えばＵＳＢ（Universal Serial Bus）等の汎用バスＡを介して周辺デバイス２を必要に応じて接続することができる。また、本ＰＣ１は、インターネットやＬＡＮ（Local Area Network）等の通信ネットワークＢを介してサーバ３とも接続することができる。そして、本ＰＣ１は、周辺デバイス２に組み込まれたファームウェアをバージョンアップする際に、バージョンアップ用の更新ファイルをサーバ３から取得し、この取得した更新ファイルを周辺デバイス２に転送する。
【００１５】
図２は、本ＰＣ１の一概略構成例を示す図である。図１に示すように、このコンピュータは、ＣＰＵ１１、主メモリ１２、磁気ディスク駆動装置（ＨＤＤ）１３、ディスプレイコントローラ１４、キーボードコントローラ１５、Ｉ／Ｏコントローラ１６およびネットワークコントローラ１７を備えている。
【００１６】
ＣＰＵ１１は、本ＰＣ１全体の動作制御を司るプロセッサである。ＣＰＵ１１は、ＨＤＤ１３から主メモリ１２にロードされるオペレーティングシステムや、ユーティリティを含む各種アプリケーションプログラムを実行する。本ＰＣ１では、各種アプリケーションプログラムの１つとして、後述するファームウェア更新ユーティリティ１００が存在している。主メモリ１２は、本ＰＣ１の主記憶となる記憶媒体であり、ＣＰＵ１１が実行する各種プログラムおよび当該各種プログラムにより入出力される各種データを格納する。一方、ＨＤＤ１３は、本ＰＣ２の外部記憶となる記憶媒体であり、主メモリ１２の補助装置として、各種プログラムおよび各種データを大量に格納する。
【００１７】
ディスプレイコントローラ１４は、本ＰＣ１が提供するユーザインタフェースのアウトプット側を司る装置であり、ＣＰＵ１１が作成した画像データをＬＣＤ等のディスプレイ装置に表示する。一方、キーボードコントローラ１５は、本ＰＣ１が提供するユーザインタフェースのインプット側を司る装置であり、キーボードやマウスの操作内容をＣＰＵ１１に伝達する。
【００１８】
そして、Ｉ／Ｏコントローラ１６は、汎用バスＡを介した周辺デバイス２等とのデータ授受を制御し、ネットワークコントローラ１７は、通信ネットワークＢを介したサーバ３等とのデータ授受を制御する。
【００１９】
次に、図３および図４を参照しながら、このような構成を持つ本ＰＣ１において実施される、周辺デバイス２に組み込まれたファームウェアのバージョンアップの基本原理を説明する。まず、本ＰＣ１におけるファームウェア更新手順の理解を助けるために、図３を参照して、これまでのファームウェア更新手順を説明する。
【００２０】
いま、図３（Ａ）に示すように、周辺デバイス２に組み込まれるファームウェアのバージョンが、初期バージョンである基本バージョンＡを筆頭に、バージョンＢ→バージョンＣ→…→バージョンＭとバージョンアップを重ね、さらに、最新バージョンであるバージョンＮへとバージョンアップされる場合を想定する。また、各バージョンのファームウェアは、暗号鍵（例えば、基本バージョンＡであれば暗号鍵Ａ，バージョンＢであれば暗号鍵Ｂ，等）を保持するものとする。暗号鍵は、他のいずれのバージョンとも異なるものであってもよいし、同じであってもよい。
【００２１】
ファームウェアのバージョンアップの実施有無は、多くの場合、ユーザの判断に委ねられるので、最新バージョンＮへのバージョンアップ時、あるユーザの周辺デバイス２に組み込まれたファームウェアはバージョンＭであるが、あるユーザの周辺デバイス２に組み込まれたファームウェアはバージョンＣである、といったことも考えられる。
【００２２】
このような状況を考慮し、既存のいずれのバージョンからも最新バージョンＮにバージョンアップ可能とするために、１つは、図３（Ｂ）に示すように、最新バージョンＮにファームウェアをバージョンアップするための更新ファイルを既存のバージョン数分用意する。周辺デバイス２が例えば重要データを取り扱う場合には、その取り扱いを制御するファームウェアの処理手順を含む更新ファイルが不正に解析されることを防ぐため、ファームウェアに暗号化を復号する機能を持たせ、ファームウェア外、例えばＰＣ１上では暗号化された状態でのみ存在するようにする。よって、既存のいずれのバージョンからも直接的に最新バージョンＮにバージョンアップ可能とするためには、（各々の暗号鍵で暗号化された）既存のバージョン数分の更新ファイルを用意する必要がある。しかしながら、最新バージョンへの更新ファイルを既存バージョン数分その都度用意するのはコスト的にも管理上も問題がある。
【００２３】
また、２つめは、図３（Ｃ）に示すように、各バージョンへの更新ファイルを直前のバージョンからのものを１つずつ用意する。この場合、最新バージョンへの更新ファイルをその都度１つずつ追加していくだけで済む。しかしながら、現在バージョンＣであるユーザには、バージョンＤ→バージョンＥ→…→最新バージョンＮと順を追って何度もバージョンアップ作業を強いてしまうことになる（この順を追ったバージョンアップを１回のバージョンアップ作業で自動的に行う場合も、一般にバージョンアップがＮ回発生したときにはＮ倍の作業時間がかかってしまう）。
【００２４】
そこで、本ＰＣ１は、バージョンアップ毎の用意に費やされるコストを抑え、かつ、ユーザには最大２回のバージョンアップ作業を行う（または２回分の作業時間）だけで、既存のいずれのバージョンからも最新バージョンにバージョンアップできるようにする仕組みを提供する。
【００２５】
より具体的には、図４（Ａ）に示すように、図３で示した場合と同様のバージョンアップが重ねられたとすると、図４（Ｂ）に示すように、バージョンアップ毎に、（最新バーションの直前のバーションから）基本バージョンＡにバージョンダウンさせるための更新ファイルを１つ追加すると共に、この基本バージョンＡのファームウェアが保持する暗号鍵Ａで暗号化された、最新バージョンへの更新ファイルを１つ再作成する。
【００２６】
即ち、基本バージョンＡであれば、最新バージョンへの更新ファイルを使って１回のバージョンアップ作業で最新バージョンＮにバージョンアップでき、それ以外のバージョンであれば、基本バージョンＡへの更新ファイルを使って一旦基本バージョンＡにバージョンダウンした後、最新バージョンへの更新ファイルを使ってバージョンＡから最新バージョンＮにバージョンアップするという２回のバージョンアップ作業で済む。このファームウェア更新手順を実現するのが、ファームウェア更新ユーティリティ１００である。図５は、ファームウェア更新ユーティリティ１００の機能ブロックを示す図である。
【００２７】
図５に示すように、ファームウェア更新ユーティリティ１００は、現バージョン判定モジュール１０１、基本バージョン・ダウングレードモジュール１０２および最新バージョン・アップグレードモジュール１０３を有している。
【００２８】
現バージョン判定モジュール１０１は、汎用バスを介して接続される周辺デバイス２に組み込まれたファームウェア２０のバージョンを判定するモジュールである。基本バージョン・ダウングレードモジュール１０２は、任意のバージョンから基本バージョンＡへとバージョンダウン（ダウングレード）するための更新ファイルをサーバ３から取得すると共に、その取得した更新ファイルを周辺デバイス２に転送し、当該更新ファイルを用いたファームウェアの更新を周辺デバイス２に実行させるモジュールである。そして、最新バージョン・アップグレードモジュール１０３は、基本バージョンＡから最新バージョンへとバージョンアップ（アップグレード）するための更新ファイルをサーバ３から取得すると共に、その取得した更新ファイルを周辺デバイス２に転送し、当該更新ファイルを用いたファームウェアの更新を周辺デバイス２に実行させるモジュールである。
【００２９】
なお、周辺デバイス２に組み込まれたファームウェア２０の機能についても簡単に説明しておくと、ファームウェア２０は、デバイス制御モジュール２１、データ暗号／復号モジュール２２およびセキュリティデータ保持部２３を備えている。
【００３０】
デバイス制御モジュール２１は、周辺デバイス２の動作制御を司る基本モジュールであって、バージョンアップ時の更新対象となるモジュールである。データ暗号／復号モジュール２２は、セキュリティデータ保持部２３に保持された暗号鍵を使って、ＰＣ１から転送されて同じくセキュリティデータ保持部２３に保持される更新ファイルの暗号化を解読する。セキュリティデータ保持部２３は、外部からの不正な解析が行えないようにデータを保持するセキュアな記憶装置である。データ暗号／復号モジュール２２による更新ファイルの復号が行われると、復号された新たなモジュールにデバイス制御モジュール２１が書き換えられ、同時に、セキュリティデータ保持部２３に保持される暗号鍵も変更されることになる。
【００３１】
本ＰＣ１上にて、周辺デバイス２に組み込まれたファームウェア２０に関するバージョンアップ指示の操作がなされると、まず、現バージョン判定モジュール１０１によるバージョン判定が行われる。もし、最新バージョンであれば、バージョンアップは不要であるので、当該指示操作に基づくバージョンアップ処理を終了する。
【００３２】
また、基本バージョン以外であれば、基本バージョン・ダウングレードモジュール１０２による一時的な基本バージョンへのバージョンダウンが行われる。そして、現バージョン判定モジュール１０１により基本バージョンとして判定された場合または基本バージョン・ダウングレードモジュール１０２により基本バージョンへのバージョンダウンが行われた後、最新バージョン・アップグレードモジュール１０３による最新バージョンへのバージョンアップが行われる。
【００３３】
これにより、既存のバージョン数分の更新ファイルが用意されていなくとも、任意のバージョン→基本バージョン→最新バージョンの最大２回で、いずれのバージョンからも最新バージョンへのバージョンアップが可能となる。
【００３４】
図６は、本ＰＣ１によって実行されるファームウェア更新の動作手順を示すフローチャートである。
【００３５】
周辺デバイス２に組み込まれたファームウェア２０のバージョンアップ時、まず、当該ファームウェア２０のバージョンを調べる（ステップＡ１）。もし、最新バージョンであったならば（ステップＡ２のＹＥＳ）、バージョンアップ処理をその時点で終了する。
【００３６】
一方、最新バージョンでなければ（ステップＡ２のＮＯ）、続いて、基本バージョンかどうかを調べる（ステップＡ３）。そして、基本バージョンでなければ（ステップＡ３のＮＯ）、一旦、基本バージョンへのバージョンダウンを実行する（ステップＡ４）。
【００３７】
そして、基本バージョンから最新バージョンへのバージョンアップを実行し（ステップＡ５）、そのバージョンアップ処理を終了する。
【００３８】
ところで、ここでは、任意のバージョンから最新バージョンへとバージョンアップさせるにあたって、（既存のバージョン中の１つである）初期バージョンである基本バージョンＡに一旦バージョンダウンさせる例を説明したが、基本バージョンＡに代えて、例えばファームウェア２０を最新バージョンに更新するためだけの機能を持ち、周辺デバイス２を動作制御するための実体的な機能を持たない中間のバージョンに一時的に更新するようにしても良い。図７を参照して、この場合の基本原理を説明する。
【００３９】
まず、更新ファイルを使った更新処理を実行する更新専用プログラムのみをファームウェア２０に保有させる中間バージョンを定義する（図７（Ｂ）のバージョンＺ）。このバージョンＺに更新された場合、ファームウェア２０は、暗号鍵Ｚを保持することになるものとする。
【００４０】
そして、バージョンアップが発生すると、その度に、最新の直前のバージョンから当該バージョンＺに更新するための更新ファイルを追加すると共に（図７（Ａ））、バージョンＺから最新バージョンに更新するための更新ファイルを再作成する（図７（Ｃ））。バージョンＺから最新バージョンに更新するための更新ファイルとは、暗号鍵Ｚで暗号化された、最新バージョンに更新するための更新ファイルである。この場合のファームウェア更新の動作手順を図８に示す。
【００４１】
周辺デバイス２に組み込まれたファームウェア２０のバージョンアップ時、まず、当該ファームウェア２０のバージョンを調べる（ステップＢ１）。もし、最新バージョンであったならば（ステップＢ２のＹＥＳ）、バージョンアップ処理をその時点で終了する。
【００４２】
一方、最新バージョンでなければ（ステップＢ２のＮＯ）、中間バージョンへのバージョンアップを実行し（ステップＢ３）、続いて、当該中間バージョンから最新バージョンへのバージョンアップを実行する（ステップＢ４）。
【００４３】
この手順によっても、任意のバージョン→中間バージョン→最新バージョンの２回で、いずれのバージョンからも最新バージョンへのバージョンアップが可能となる。
【００４４】
以上のように、本ＰＣ１によれば、ファームウェアの任意のバージョンから最新のバージョンへの更新を効率的に行うことが可能となる。
【００４５】
なお、以上の実施形態では、更新ファイルを通信ネットワークＢ経由でサーバ３から取得する例を説明したが、例えば種々の（暗号化された）更新ファイルを格納する記録メディアの頒布を受け、この記録メディアから目的の更新ファイルを読み出して周辺デバイス２に組み込まれたファームウェア２０をバージョンアップするようにしても良い。
【００４６】
つまり、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００４７】
【図１】この発明の実施形態に係る情報処理装置（パーソナルコンピュータ）の一動作環境例を示す図
【図２】同実施形態の情報処理装置の一概略構成例を示す図
【図３】従来のファームウェア更新手順を説明するための概念図
【図４】同実施形態の情報処理装置におけるファームウェア更新手順を説明するための概念図
【図５】同実施形態の情報処理装置上で動作するファームウェア更新ユーティリティの機能ブロックを示す図
【図６】同実施形態の情報処理装置によって実行されるファームウェア更新の動作手順を示すフローチャート
【図７】同実施形態の情報処理装置におけるファームウェア更新手順（変形例）を説明するための概念図
【図８】同実施形態の情報処理装置によって実行されるファームウェア更新の動作手順（変形例）を示すフローチャート
【符号の説明】
【００４８】
１…情報処理装置（ＰＣ）、２…周辺デバイス、３…サーバ、１１…ＣＰＵ、１２…主メモリ、１３…磁気ディスク駆動装置（ＨＤＤ）、１４…ディスプレイコントローラ、１５…キーボードコントローラ、１６…Ｉ／Ｏコントローラ、１７…ネットワークコントローラ、２０…ファームウェア、２１…デバイス制御モジュール、２２…復号モジュール、２３…セキュリティデータ保持部、１００…ファームウェア更新ユーティリティ、１０１…現バージョン判定モジュール、１０２…基本バージョン・ダウングレードモジュール、１０３…最新バージョン・アップグレードモジュール。
【図１】
0004940031.tif 000002
【図２】
0004940031.tif 000003
【図３】
0004940031.tif 000004
【図４】
0004940031.tif 000005
【図５】
0004940031.tif 000006
【図６】
0004940031.tif 000007
【図７】
0004940031.tif 000008
【図８】
0004940031.tif 000009