(57)【要約】【課題】ファームウェアが改竄される可能性を低減する。【解決手段】組み込み機器を制御するためのファームウェアを配信する組み込み機器制御装置において、ファームウェアを複数の機能モジュールに分割し、分割した複数の機能モジュール毎に算出したＳＵＭ値を他の機能モジュールにランダムに配置することにより、他人から容易にファームウェアの改竄を行えないようにした。【選択図】図２
2014149600.tif 000002
【特許請求の範囲】
【請求項１】
組み込み機器と、前記組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を含む組み込み機器制御システムであって、
前記組み込み機器制御装置は、
前記ファームウェアを複数の機能モジュールに分割する分割部と、
前記複数の機能モジュール毎にチェックサムを計算する計算部と、
ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する挿入部と、
前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成部と、
作成されたバイナリイメージを前記組み込み機器に配信する通信部と、
を有する組み込み機器制御システム。
【請求項２】
前記作成部は、データ部とヘッダ部とからなる前記バイナリイメージを作成し、前記データ部は分割された前記複数の機能モジュールのそれぞれの末尾に、前記複数の機能モジュール毎に計算されたチェックサムがランダムに配置されてなり、前記ヘッダ部は前記複数の機能モジュールのそれぞれについて各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス値を示す、請求項１に記載の組み込み機器制御システム。
【請求項３】
前記組み込み機器は、
前記ファームウェアを格納する不揮発性記憶部と、
前記組み込み機器制御装置から配信されたファームウェアを一時的に格納する一時記憶部と、
前記配信されたファームウェアの正当性を判別して該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を有する請求項２に記載の組み込み機器制御システム。
【請求項４】
前記制御部は、
前記ヘッダ部からある機能モジュールのチェックサムを格納しているインデックス値を取得し、
前記データ部における、取得したインデックス値に対応する機能モジュールの末尾からチェックサムを取得すると共に、当該機能モジュールのチェックサムを算出し、
取得したチェックサムと算出したチェックサムとが等しいかどうかを判別する動作を、複数の機能モジュールのすべてについて行い、
前記制御部は、前記複数の機能モジュールのすべてについて、取得したチェックサムと算出したチェックサムとが等しい場合に前記配信されたファームウェアが正当であると判別する、請求項３に記載の組み込み機器制御システム。
【請求項５】
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置であって、
前記組み込み機器制御装置は、
前記ファームウェアを複数の機能モジュールに分割する分割部と、
前記複数の機能モジュール毎にチェックサムを計算する計算部と、
ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する挿入部と、
前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成部と、
作成されたバイナリイメージを前記組み込み機器に配信する通信部と、
を有する組み込み機器制御装置。
【請求項６】
前記作成部は、データ部とヘッダ部とからなる前記バイナリイメージを作成し、前記データ部は分割された前記複数の機能モジュールのそれぞれの末尾に、前記複数の機能モジュール毎に計算されたチェックサムがランダムに配置されてなり、前記ヘッダ部は前記複数の機能モジュールのそれぞれについて各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス値を示す、請求項５に記載の組み込み機器制御装置。
【請求項７】
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置の制御方法であって、
前記ファームウェアを複数の機能モジュールに分割し、
前記複数の機能モジュール毎にチェックサムを計算し、
ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置し、
前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成し、
作成されたバイナリイメージを前記組み込み機器に配信する、
組み込み機器制御装置の制御方法。
【請求項８】
前記バイナリイメージとして、データ部とヘッダ部とからなるバイナリイメージを作成し、前記データ部は分割された前記複数の機能モジュールのそれぞれの末尾に、前記複数の機能モジュール毎に計算されたチェックサムがランダムに配置されてなり、前記ヘッダ部は前記複数の機能モジュールのそれぞれについて各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス値を示す、請求項７に記載の組み込み機器制御装置の制御方法。
【請求項９】
組み込み機器に書き換え対象のファームウェアを配信する、コンピュータで実現される組み込み機器制御装置に、
前記ファームウェアを複数の機能モジュールに分割する分割手順と、
前記複数の機能モジュール毎にチェックサムを計算する計算手順と、
ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する配置手順と、
前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成手順と、
作成されたバイナリイメージを前記組み込み機器に配信する通信手順と、を実行させる、組み込み機器制御装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み機器制御システム、組み込み機器制御装置、組み込み機器制御装置の制御方法、および組み込み機器制御装置の制御プログラムに関する。
【背景技術】
【０００２】
家電製品などの電子機器に組み込まれて動作する組み込み機器は、通常、ファームウェアと呼ばれるプログラムにより制御される。
【０００３】
最近の組み込み機器は、フラッシュメモリなどの不揮発性でかつ書き換え可能な記憶部にファームウェアを書き込む構成となっているため、ファームウェアに修正もしく機能追加などのアップデートの必要性が生じた場合には、比較的簡単に書き換えを行うことができる。
【０００４】
ただし、組み込み機器は、改竄されたファームウェアを記憶部に書き込んでしまうと、制御不能になるなどの問題が生じるため、書き込み前にファームウェアの正当性を判断することが必要である。
【０００５】
ファームウェアの正当性を判断する方法として、ファームウェアのチェックサム（ＳＵＭ値）を用いる方法が知られている（特許文献１）。この方法では、通常、ファームウェアの先頭もしくは最後に挿入されているチェックサムと、自身がファームウェアから計算したチェックサムとが等しいか否かを判定することで、そのファームウェアの正当性を判断する。
【０００６】
しかし、上記の方法では、上述したように、通常は、チェックサムがファームウェアの先頭もしくは最後に挿入されているため、簡単にチェックサムが取得されてファームウェアが改竄されてしまう可能性がある。
【０００７】
このような問題点を解決するために、本発明者は、ファームウェアが改竄される可能性を低減することのできる技術を提案した（特許文献２）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−２９９２２２号公報
【特許文献２】特開２００９−１９３４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、特許文献２による技術を改良して、ファームウェアが改竄される可能性を更に低減することができるようにしようとするものである。
【課題を解決するための手段】
【００１０】
本発明は、組み込み機器を制御するためのファームウェアを配信する組み込み機器制御装置において、ファームウェアを複数の機能モジュールに分割し、分割した複数の機能モジュール毎に算出したチェックサム（ＳＵＭ値）を他の機能モジュールにランダムに配置することにより、他人から容易にファームウェアの改竄を行えないようにしたことを特徴としている。
【００１１】
本発明の第１の態様によれば、組み込み機器と、前記組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を含む組み込み機器制御システムであって、前記組み込み機器制御装置は、前記ファームウェアを複数の機能モジュールに分割する分割部と、前記複数の機能モジュール毎にチェックサムを計算する計算部と、ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する挿入部と、前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を有する組み込み機器制御システムが提供される。
【００１２】
本発明の第２の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置であって、前記組み込み機器制御装置は、前記ファームウェアを複数の機能モジュールに分割する分割部と、前記複数の機能モジュール毎にチェックサムを計算する計算部と、ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する挿入部と、前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を有する組み込み機器制御装置が提供される。
【００１３】
本発明の第３の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置の制御方法であって、前記ファームウェアを複数の機能モジュールに分割し、前記複数の機能モジュール毎にチェックサムを計算し、ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置し、前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成し、作成されたバイナリイメージを前記組み込み機器に配信する、組み込み機器制御装置の制御方法が提供される。
【００１４】
本発明の第４の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する、コンピュータで実現される組み込み機器制御装置に、前記ファームウェアを複数の機能モジュールに分割する分割手順と、前記複数の機能モジュール毎にチェックサムを計算する計算手順と、ある機能モジュールについて計算したチェックサムを、ランダムに選択した他の機能モジュールに配置する配置手順と、前記複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する作成手順と、作成されたバイナリイメージを前記組み込み機器に配信する通信手順と、を実行させる、組み込み機器制御装置の制御プログラムが提供される。
【発明の効果】
【００１５】
本発明によれば、ファームウェアを分割した複数の機能モジュール毎にＳＵＭ値を用意し、これらのＳＵＭ値をランダムに選択して、ある機能モジュールについて用意したＳＵＭ値を他の機能モジュールに配置、格納することで、機能モジュールに対応したＳＵＭ値の特定を難しくすることにより、ファームウェア改竄の防止効果をより向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明に係る組み込み機器制御システムの一実施形態の構成を示すブロック図である。
【図２】図１に示したホストコンピュータによって作成されるバイナリイメージの構造を説明するための図である。
【図３】図１に示した組み込み機器制御システムの動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
（実施形態の構成）
図１は、本発明の一実施形態による組み込み機器制御システムの構成を示している。
【００１８】
図１に示すように、本実施形態の組み込み機器制御システムは、家電製品などの電子機器に組み込まれて動作する組み込み機器１００と、組み込み機器制御装置としての機能を持つホストコンピュータ２００とを有している。
【００１９】
ホストコンピュータ２００は、本実施形態に関連する要素としてバイナリイメージ作成部２１０と通信部２２０とを備える。ホストコンピュータ２００は、その動作に際しては、図示しない記憶部に格納されている制御プログラムを読み出し、読み出した制御プログラムに基づいて制御動作を実行し、組み込み機器１００に書き換え対象となるファームウェアを配信する。
【００２０】
バイナリイメージ作成部２１０は、計算部２１１と、分割部２１２と、挿入部２１３と、作成部２１４と、を有し、ファームウェアのバイナリイメージを作成する。
【００２１】
分割部２１２は、ファームウェアを複数の機能モジュールに分割する。分割数Ｍは任意の数とする。
【００２２】
計算部２１１は、分割された複数の機能モジュール毎にＳＵＭ値（チェックサム）を計算する。挿入部２１３は、分割した複数の機能モジュール毎に算出したＳＵＭ値を、乱数を用いて他の機能モジュールにランダムに配置する。
【００２３】
作成部２１４は、後で詳しく説明するように、複数の機能モジュールのそれぞれに、計算されたチェックサムがランダムに組み合わされたファームウェアを、各機能モジュールのチェックサムが格納されている他の機能モジュールの番号を示すインデックス情報と共にバイナリイメージとして作成する。
【００２４】
通信部２２０は、作成部２１４で作成されたバイナリイメージを組み込み機器１００に配信する。
【００２５】
組み込み機器１００は、制御部１１０と、通信部１２０と、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）（一時記憶部）１３０と、ＦＲＯＭ（Ｆｌａｓｈ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）（不揮発性記憶部）１４０と、を有し、ホストコンピュータ２００から配信されたバイナリイメージを取得し、そのバイナリイメージに格納されたファームウェアへの書き換えを行う。
【００２６】
通信部１２０は、ホストコンピュータ２００から配信されたバイナリイメージを取得する。ＳＤＲＡＭ１３０は、ホストコンピュータ２００から配信されたバイナリイメージを一時的に格納する。ＦＲＯＭ１４０は、ファームウェアを格納する。
【００２７】
制御部１１０もまた、その動作に際しては、ＦＲＯＭ１４０に格納されている制御プログラムを読み出し、読み出した制御プログラムに基づいて以下に説明する制御動作を実行する。すなわち、制御部１１０は、後で説明するように、配信されたファームウェアの正当性を判別し、配信されたファームウェアが正当であると判別した場合にＦＲＯＭ１４０に格納されているファームウェアを、配信されたファームウェアに書き換える。
【００２８】
次に、ホストコンピュータ２００で作成されるバイナリイメージについて、図２を参照して説明する。
【００２９】
バイナリイメージにはヘッダ部（Ｂ１）とデータ部（Ｂ２）とがある。データ部（Ｂ２）には、本実施形態では、機能毎に分割して番号をふった機能モジュール１（Ｃ１）〜５（Ｃ５）と分割された各機能モジュールのＳＵＭ値（Ｄ１）〜（Ｄ５）があり、これらのＳＵＭ値は乱数を使用して、他の機能モジュールの末尾にランダムに配置される。ここでは、機能モジュール１（Ｃ１）、２（Ｃ２）、３（Ｃ３）、４（Ｃ４）、５（Ｃ５）の末尾にそれぞれ、機能モジュール３、４、１、５、２のＳＵＭ値（Ｄ１）、（Ｄ２）、（Ｄ３）、（Ｄ４）、（Ｄ５）が配置されている。
【００３０】
一方、ヘッダ部Ｂ１には、機能モジュール１〜５のＳＵＭ値が格納されている他の機能モジュールの番号（Ｅ１〜Ｅ５）、つまりインデックス値が配置される。ここでは、機能モジュール１、２、３、４、５のインデックス情報として、他の機能モジュールの番号３（Ｅ１）、４（Ｅ２）、１（Ｅ３）、５（Ｅ４）、２（Ｅ５）（インデックス値）が配置されている。
【００３１】
上記のようなバイナリイメージに対し、制御部１１０は、ヘッダ部（Ｂ１）からある機能モジュールのＳＵＭ値を格納しているインデックス値を取得する。制御部１１０は次に、データ部（Ｂ２）における、取得したインデックス値に対応する機能モジュールの末尾からＳＵＭ値を取得すると共に、当該機能モジュールのＳＵＭ値を算出する。制御部１１０は、取得したＳＵＭ値と算出したＳＵＭ値とが等しいかどうかの判別動作を、複数の機能モジュールのすべてについて行う。制御部１１０は、複数の機能モジュールのすべてについて取得したＳＵＭ値と算出したＳＵＭ値とが等しい場合に配信されたファームウェアが正当であると判別する。
【００３２】
（実施形態の動作）
本実施形態の動作について、図３のフローチャートを用いて説明する。以下の説明では、ファームウェアについて複数に分割した機能モジュールの番号をＭ、分割した機能モジュールの個数をＭｍａｘとし、機能モジュールＭのＳＵＭ値（チェックサム）が格納されている他の機能モジュール番号（インデックス値）をＮとする。
【００３３】
図１〜図３において、制御部１１０は、まず、通信部１２０を経由してホストコンピュータ２００から図２で説明したファームウェアのバイナリイメージを受けてＳＤＲＡＭＡ１３０に格納（ステップＳ１）する。
【００３４】
制御部１１０は次に、ＳＤＲＡＭ１３０に格納したバイナリイメージのヘッダ部（Ｂ１）から機能モジュールＭのＳＵＭ値を格納しているインデックス値Ｎを取得し（ステップＳ２）、このインデックス値に対応している機能モジュールＮの末尾からＳＵＭ値を取得する（ステップＳ３）。
【００３５】
次に、制御部１１０は機能モジュールＭのＳＵＭ値を算出（ステップＳ４）し、ステップＳ３で取得したＳＵＭ値との比較を行う（ステップＳ５）。比較の結果、算出したＳＵＭ値と取得したＳＵＭ値が等しくない場合は、制御部１１０はファームウェア本体をＦＲＯＭ１４０へ書き込まず、ホストコンピュータ２００へアップデートエラーを通知してアップデート処理を終了する（ステップＳ６）。
【００３６】
ステップＳ５での比較の結果、算出したＳＵＭ値と取得したＳＵＭ値が等しい場合、制御部１１０は機能モジュール番号Ｍをインクリメントする（ステップＳ７）。
【００３７】
制御部１１０は、インクリメントした機能モジュール番号Ｍが機能モジュールの個数Ｍｍａｘを超えたか確認し（ステップＳ８）、インクリメントした機能モジュール番号Ｍが機能モジュールの個数Ｍｍａｘを超えるまで、ＳＵＭ値の算出、取得、比較、インクリメントおよび個数Ｍｍａｘの確認（ステップＳ２〜Ｓ８）を繰り返す。
【００３８】
制御部１１０は、ステップＳ８において、インクリメントした機能モジュール番号Ｍが機能モジュールの個数Ｍｍａｘを超えた場合は、全ての機能モジュールのＳＵＭ値が正しいので、ＳＤＲＡＭ１３０に格納したファームウェアが正当であると判断し、ファームウェアをＦＲＯＭ１４０に書き込む（ステップＳ９）。続いて、制御部１１０は組み込み機器１００を再起動（ステップＳ１０）後、ホストコンピュータ２００へアップデート成功を通知する（Ｓ１１）。
【００３９】
（他の実施形態）
本発明の他の実施形態として、その基本的構成は上記の通りであるが、機能モジュールの単位を多くして比較するＳＵＭ値を増すことや、機能モジュール全体のＳＵＭ値を設定して、全体のＳＵＭ値の算出および比較もあわせて行うことで、よりファームウェアの改竄防止効果を向上させることができる。
【００４０】
（実施形態の効果）
以上説明したように、本発明の実施形態によれば、ファームウェアを複数に分割した機能モジュール毎にＳＵＭ値を用意し、これらのＳＵＭ値をランダムに選択して、ある機能モジュールについて用意したＳＵＭ値を他の機能モジュールに配置、格納することで、機能モジュールに対応したＳＵＭ値の特定が難しくなり、ファームウェアの改竄防止効果をより向上させることができる。
【符号の説明】
【００４１】
１００    組み込み機器
２００    ホストコンピュータ
【図１】
2014149600.tif 000003
【図２】
2014149600.tif 000004
【図３】
2014149600.tif 000005