(57)【特許請求の範囲】
【請求項１】
組み込み機器と、前記組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を含み、
前記組み込み機器制御装置は、
前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、
ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、
前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、
前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、
作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御システム。
【請求項２】
前記計算部は、前記ファームウェアの分割数に前記複数のランダム値のそれぞれを乗算して前記複数のダミーデータを生成する、ことを特徴とする請求項１に記載の組み込み機器制御システム。
【請求項３】
前記組み込み機器は、
前記ファームウェアを格納するための不揮発性記憶部と、
前記組み込み機器制御装置から配信されたバイナリイメージを一時的に格納するための一時記憶部と、
前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を含む、ことを特徴とする請求項１又は２に記載の組み込み機器制御システム。
【請求項４】
前記制御部は、
前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得し、
取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータそれぞれの大きさを算出し、
前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出し、
算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出し、
前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する、ことを特徴とする請求項３に記載の組み込み機器制御システム。
【請求項５】
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置であって、
前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、
ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、
前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、
前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、
作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御装置。
【請求項６】
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置の制御方法であって、
前記ファームウェアを複数の分割ファームウェアに等分割し、
ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成し、
前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置し、
前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成し、
作成されたバイナリイメージを前記組み込み機器に配信する、ことを特徴とする組み込み機器制御装置の制御方法。
【請求項７】
書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する機能を持つ組み込み機器であって、
配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、
該組み込み機器は、
前記ファームウェアを格納するための不揮発性記憶部と、
前記配信されたバイナリイメージを一時的に格納するための一時記憶部と、
前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を含む、ことを特徴とする組み込み機器。
【請求項８】
書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する組み込み機器の制御方法であって、
配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、
前記制御動作として、
前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う、ことを特徴とする組み込み機器の制御方法。
【請求項９】
組み込み機器に書き換え対象のファームウェアを配信する、コンピュータで実現される組み込み機器制御装置に、
前記ファームウェアを複数の分割ファームウェアに等分割する手順と、
ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する手順と、
前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する手順と、
前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する手順と、
作成されたバイナリイメージを前記組み込み機器に配信する手順と、を実行させる、組み込み機器制御装置の制御プログラム。
【請求項１０】
コンピュータで実現される組み込み機器に、書き換え対象となるファームウェアの配信を受けて該ファームウェアのアップデートを行う際に、該ファームウェアの正当性を確認する制御動作を実行させる、組み込み機器の制御プログラムであって、
配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、
前記制御動作として、
前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得する手順と、
取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータのそれぞれの大きさを算出する手順と、
前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出する手順と、
算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出する手順と、
前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する手順と、を実行させる、組み込み機器の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込み機器制御システム、組み込み機器制御装置及び組み込み機器制御装置の制御方法、組み込み機器及び組み込み機器の制御方法、並びに制御プログラムに関する。
【背景技術】
【０００２】
家電製品などの電子機器に代表される組み込み機器は、通常、ファームウェアと呼ばれるプログラムに基づいて制御される。
【０００３】
最近の組み込み機器は、フラッシュメモリなどの不揮発性でかつ書き換え可能な記憶部にファームウェアを書き込む構成となっているので、ファームウェアに修正もしくは機能追加などのアップデートの必要性が生じた場合には、比較的簡単に書き換えを行うことができる。
【０００４】
ただし、組み込み機器は、改竄されたファームウェアを記憶部に書き込んでしまうと、制御不能になるなどの問題が生じるため、書き換え（更新）を行う前にファームウェアの正当性を判断することが必要である。
【０００５】
ファームウェア更新時に、ファームウェアの正当性を確認する一般的な方法としては、ファームウェアのデータ部先頭から末尾までのSUM値を算出し、ファームウェアのヘッダ部に示すSUM値と比較する方法が知られている。しかし、この方法では、他人によりSUM値が容易に特定され、ファームウェアを改竄されるおそれがある。
【０００６】
このようなファームウェアの改竄防止に関連する手法を開示した特許文献として、以下の特許文献１、２を例示することができる。
【０００７】
特許文献１には、CS(Check Sum)データ（検査データ）の読み取りを困難にして記憶データの改ざんを防止することを目的とした、記憶装置の検査データ改竄防止装置に関することが記載されている。この装置では、システムマイコンが、記憶装置にデータを記録し、記録したデータのCSデータを計算する。このCSデータの記憶場所をランダム化するために、システムマイコンは、CSデータを記憶する場所を複数設け、複数の場所を指定するアドレスの中で乱数を発生させて、発生させた乱数をCSアドレスとする。システムマイコンは、このCSアドレスを指定してCSデータを記憶する。記憶装置に記憶したデータを読み出す場合、システムマイコンは、全データの加算値を計算し、記憶装置からCSアドレスデータを読み出し、CSアドレスを指定してCSデータを取り出し、計算した加算値と照合する。
【０００８】
特許文献２には、ファームウェアが改竄されるおそれを低減することを目的とした組み込み機器制御システムが記載されている。このシステムは、組み込み機器と、組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を有する。組み込み機器制御装置は、ファームウェアのチェックサムを計算する計算部と、計算されたチェックサムを分割する分割部と、分割されたチェックサムを、ファームウェアに分散して挿入する挿入部と、分割されたチェックサムが挿入されたファームウェアを、組み込み機器に配信する通信部と、を有する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−０１６７２７号公報
【特許文献２】特開２００９−１９３４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
引用文献１の発明は、電子機器のなかでも、特に、DVDプレーヤにおける記憶装置、例えばEEPROM(Electrically Erasable Programmable Read-Only Memory)を対象としており、EEPROMから読み出したデータについて改竄の有無を判別するものである。つまり、引用文献１の発明は、ファームウェアの改竄防止というよりも改竄の有無の判別であり、DVDプレーヤ以外の電子機器についての検討はなされていない。
【００１１】
引用文献２の発明は、ファームウェアの改竄の可能性の低減を実現しているものの、更なる改良が望まれている。
【００１２】
そこで、本発明の企図するところは、ファームウェアが改竄される可能性をより低減できようにすることにある。
【００１３】
具体的には、本発明は、上記企図の実現に適した組み込み機器制御システム、組み込み機器制御装置及び組み込み機器制御装置の制御方法、組み込み機器及び組み込み機器の制御方法、並びに制御プログラムを提供しようとするものである。
【課題を解決するための手段】
【００１４】
本発明の第１の態様によれば、組み込み機器と、前記組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を含み、前記組み込み機器制御装置は、前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御システムが提供される。
【００１５】
本発明の第２の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置であって、前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御装置が提供される。
【００１６】
本発明の第３の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置の制御方法であって、前記ファームウェアを複数の分割ファームウェアに等分割し、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成し、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置し、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成し、作成されたバイナリイメージを前記組み込み機器に配信する、ことを特徴とする組み込み機器制御装置の制御方法が提供される。
【００１７】
本発明の第４の態様によれば、書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する機能を持つ組み込み機器であって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、該組み込み機器は、前記ファームウェアを格納するための不揮発性記憶部と、前記配信されたバイナリイメージを一時的に格納するための一時記憶部と、前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を含む、ことを特徴とする組み込み機器が提供される。
【００１８】
本発明の第５の態様によれば、書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する組み込み機器の制御方法であって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、前記制御動作として、前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う、ことを特徴とする組み込み機器の制御方法が提供される。
【００１９】
本発明の第６の態様によれば、組み込み機器に書き換え対象のファームウェアを配信する、コンピュータで実現される組み込み機器制御装置に、前記ファームウェアを複数の分割ファームウェアに等分割する手順と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する手順と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する手順と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する手順と、作成されたバイナリイメージを前記組み込み機器に配信する手順と、を実行させる、組み込み機器制御装置の制御プログラムが提供される。
【００２０】
本発明の第７の態様によれば、コンピュータで実現される組み込み機器に、書き換え対象となるファームウェアの配信を受けて該ファームウェアのアップデートを行う際に、該ファームウェアの正当性を確認する制御動作を実行させる、組み込み機器の制御プログラムであって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、前記制御動作として、前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得する手順と、取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータのそれぞれの大きさを算出する手順と、前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出する手順と、算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出する手順と、前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する手順と、を実行させる、組み込み機器の制御プログラムが提供される。
【発明の効果】
【００２１】
本発明によれば、組み込み機器のファームウェアが改竄されるおそれを低減することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明に係る組み込み機器制御システムの一実施形態の構成を示すブロック図である。
【図２】通常のファームウェアのバイナリイメージ構成を示した図である。
【図３】図１に示したホストコンピュータによって作成されるバイナリイメージの構造を説明するための図である。
【図４】図１に示したバイナリイメージ作成部におけるダミーデータの生成方法について説明するための図である。
【図５】図１に示したホストコンピュータの制御動作を説明するためのフローチャートである。
【図６】図１に示した組み込み機器の制御動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００２３】
本発明は、組み込み機器にファームウェアを配信するに際し、ファームウェアを複数に等分割すると共に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成して、ファームウェア内部に組み込むことで、ファームウェア全体のSUM値の特定を困難にし、他人から容易にファームウェアの改竄を行えないようにすることを特徴としている。
【００２４】
（実施形態の構成）
図１は、本発明の一実施形態による組み込み機器制御システムの構成を示している。
【００２５】
図１に示すように、本実施形態の組み込み機器制御システムは、家電製品などの電子機器に代表される組み込み機器１００と、組み込み機器制御装置としての機能を持つホストコンピュータ２００とを有している。
【００２６】
ホストコンピュータ２００は、本実施形態に関連する要素としてバイナリイメージ作成部２１０と通信部２２０とを備える。ホストコンピュータ２００は、その動作に際しては、図示しない記憶部に格納されている制御プログラムを読み出し、読み出した制御プログラムに基づいて制御動作を実行し、組み込み機器１００に書き換え対象となるファームウェアを配信する。
【００２７】
バイナリイメージ作成部２１０は、分割部２１１と、計算部２１２と、挿入部２１３と、作成部２１４と、を有し、ファームウェアのバイナリイメージを作成する。
【００２８】
分割部２１１は、図示しない記憶部から読み出され、組み込み機器１００に配信しようとするファームウェアを、複数の分割ファームウェアに等分割する。分割数Dは任意の数とする。
【００２９】
計算部２１２は、ファームウェア全体のSUM値Cを算出する。計算部２１２はまた、分割された複数の分割ファームウェア毎に、ランダム値（乱数）を用いてランダムな大きさのダミーデータを生成する。
【００３０】
挿入部２１３は、分割された複数の分割ファームウェア毎に生成されたランダムな大きさのダミーデータを、隣り合う分割ファームウェア間と最後の分割ファームウェアの後に配置する。
【００３１】
作成部２１４は、後で説明するように、複数の分割ファームウェアの間と最後の分割ファームウェアの後に、ランダムな大きさのダミーデータが組み込まれたファームウェアを、ファームウェア全体のSUM値C、ファームウェアの分割数D、各ダミーデータの生成に用いられたランダム値と共にバイナリイメージとして作成する。
【００３２】
通信部２２０は、作成部２１４で作成されたバイナリイメージを有線又は無線によって組み込み機器１００に配信する。
【００３３】
組み込み機器１００は、本組込み機器を制御する制御部１１０と、ホストコンピュータ２００とデータを送受信する通信部１２０と、SDRAM(Synchronous Random Access Memory)（一時記憶部）１３０と、FROM(Flash Read Only Memory)（不揮発性記憶部）１４０と、を有し、ホストコンピュータ２００から配信されたバイナリイメージを取得し、そのバイナリイメージによるファームウェアへの書き換えを行う。つまり、組み込み機器１００は、ファームウェアのアップデート装置として作用する。
【００３４】
通信部１２０は、ホストコンピュータ２００から配信されたバイナリイメージを取得する。SDRAM１３０は、制御部１１０の制御により、ホストコンピュータ２００から配信されたバイナリイメージを一時的に格納する。FROM１４０は、ファームウェアを格納する。
【００３５】
制御部１１０もまた、その動作に際しては、FROM１４０に格納されている制御プログラムを読み出し、読み出した制御プログラムに基づいて制御動作を実行する。すなわち、制御部１１０は、後で説明する制御動作を実行して、ホストコンピュータ２００から配信されたファームウェアの正当性を判別し、配信されたファームウェアが正当であると判別した場合にFROM１４０に格納されているファームウェアを、配信されたファームウェアに書き換える。
【００３６】
なお、図１では、組み込み機器１００、ホストコンピュータ２００のいずれも、本発明の実施形態を説明するために必要な最小限の構成要素のみを示している。
【００３７】
図２は、通常のファームウェアのバイナリイメージ構成を示す。バイナリイメージにはヘッダ部（B1）とデータ部（B2）がある。ヘッダ部（B1）にはファームウェア全体のSUM値（C1）や、プログラムバージョン等を配置している。データ部（B2）には大きさ（L1）のファームウェアを配置している。
【００３８】
次に、ホストコンピュータ２００において作成し、組み込み機器１００に配信するバイナリイメージについて、図３を参照して説明する。
【００３９】
図３は、本発明の実施形態に適用される、ファームウェアのバイナリイメージの構成を示す。このバイナリイメージは、図２の通常のファームウェアのバイナリイメージのヘッダ部(B1)にファームウェアの正当性判別に必要な関連情報を組み込み、データ部(B2)にはダミーデータを組み込んでなる。
【００４０】
ヘッダ部（B1）には、ファームウェア全体のSUM値（C1）、ファームウェア分割数（D1）、ランダムな大きさのダミーデータを生成するために用いたファームウェア分割数分のランダム値（E1〜E5）のほか、プログラムバージョン等を配置している。
【００４１】
データ部（B2）には、等分割された分割ファームウェア（F1〜F5）の間と最後のファームウェア（F5）の後にランダムな大きさのダミーデータ（G1〜G5）を含んだ、大きさ（L2）のデータを配置している。
【００４２】
なお、ダミーデータ（G1〜G5）の大きさ（H1〜H5）は、図４に示すように、ファームウェアの分割数（D1）と、乱数を用いて生成したファームウェア分割数分のランダム値（E1〜E5）のそれぞれとを乗算した大きさとする。
【００４３】
（実施形態の動作説明）
図５を参照して、本発明の実施形態に係る組み込み機器制御システムのうちのホストコンピュータ（組み込み機器制御装置）２００における制御動作の一部であるバイナリイメージ作成動作について説明する。
【００４４】
まず、分割部２１１は、組み込み機器１００に配信しようとするファームウェアを、複数の分割ファームウェアに等分割する（ステップS11）。
【００４５】
次に、計算部２１２は、ファームウェア全体のSUM値Cを算出（ステップS12）し、続いて、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさのダミーデータを生成する（ステップS13）。
【００４６】
次に、挿入部２１３は、複数の分割ファームウェア毎に生成されたランダムな大きさのダミーデータを、隣り合う分割ファームウェア間と最後の分割ファームウェアの後に配置する（ステップS14）。
【００４７】
作成部２１４は、複数の分割ファームウェアの間と最後の分割ファームウェアの後に、ランダムな大きさのダミーデータが組み込まれたファームウェアを、ファームウェア全体のSUM値C、ファームウェアの分割数D、各ダミーデータの生成に用いられたランダム値と共にバイナリイメージ（図３）として作成する（ステップS15）。
【００４８】
次に、通信部２２０は、作成部２１４で作成されたバイナリイメージを組み込み機器１００に配信する（ステップS16）。
【００４９】
本発明の実施形態に係る組み込み機器制御システムのうちの組み込み機器１００における制御動作の一部であるファームウェアアップデート動作について、図６のフローチャートを用いて説明する。本フローチャートで用いるファームウェアの分割数、ランダム値、ダミーデータの大きさ等の定義は下記の通りとする。
【００５０】
・ファームウェアの分割数をDとする。 
・ヘッダ部に配置するファームウェア分割数分のランダム値をEn〜Emaxとする。 
・ダミーデータGn〜Gmaxの大きさをHn〜Hmaxとする。 
・ダミーデータを除くファームウェア全体の大きさをLとする。 
・ファームウェアアップデート動作において等分割したファームウェアFn〜Fmaxそれぞれの大きさをJとする。 
なお、n〜maxは、１〜分割数Dまでのインデックス値である。
【００５１】
以下の動作は、組み込み機器１００の制御部１１０により実行される。
【００５２】
まず、制御部１１０は、ホストコンピュータ２１０から配信された、図３に示したようなファームウェアのバイナリイメージを、通信部１２０を通して受信し、SDRAM１３０に格納する（ステップS1）。
【００５３】
制御部１１０は次に、SDRAM１３０に格納したバイナリイメージのヘッダ部(B1)からファームウェアの分割数Dとランダム値En〜Emaxを取得（ステップS2）し、分割数Dとランダム値En〜Emaxのそれぞれを乗算してダミーデータGn〜Gmaxの大きさHn〜Hmaxを取得する（ステップS3）。
【００５４】
続いて制御部１１０は、バイナリイメージのデータ部(B2)の大きさからダミーデータの大きさHn〜Hmaxを減算して、ダミーデータを除くファームウェア全体の大きさLを取得（ステップS4）し、大きさLを分割数Dで除算することで、等分割したファームウェアFn〜Fmaxの大きさJを取得する（ステップS5）。
【００５５】
制御部１００は次に、等分割したファームウェアFnの大きさJ分のSUM値を算出（ステップS6）し、ダミーデータについてはSUM値の算出をせずに、ダミーデータGnの大きさHn分だけファームウェアのアドレスを進めた（ステップS7）後、インデックス値nをインクリメントする（ステップS8）。
【００５６】
制御部１１０は、インクリメントしたnの値がファームウェアの分割数Dを超えたかどうか確認し（ステップS9）、nの値が分割数Dを超えていなければ、nの値がファームウェアの分割数Dを超えるまで、分割したファームウェアFnのSUM値の算出とダミーデータGnの大きさHn分だけファームウェアのアドレスを進める処理(ステップS6,S7,S8)を繰り返す。
【００５７】
ステップS9において、インデックス値nがファームウェアの分割数Dを超えた場合、制御部１１０は、分割したファームウェアFn〜FmaxのSUM値を合計してファームウェア全体のSUM値を算出し（ステップS10）、算出したSUM値がヘッダ部(B1)にあるSUM値Cと等しいかどうか比較する（ステップS11）。
【００５８】
算出したSUM値とヘッダ部(B1)のSUM値Cが等しい場合、制御部１１０は、分割したファームウェアFn〜FmaxをFROM１４０に書き込み（ステップS12）、組込み機器１００を再起動後（ステップS13）、ホストコンピュータ２００へ更新成功を通知する（ステップS14）。
【００５９】
算出したSUM値とヘッダ部(B1)のSUM値Cが等しくない場合、制御部１１０は、ホストコンピュータ２００へ更新失敗を通知する(ステップS15)。
【００６０】
以上のようにして、組み込み機器１００において、配信されたファームウェアの正当性の判別を行うことができる。
【００６１】
以上説明した本発明の実施形態によれば、以下に記載するような効果を奏する。
【００６２】
ファームウェアの分割数と乱数を用いて決定したランダム値とを使用して生成した大きさの異なるダミーデータをファームウェア内部に組み込むようにしたことにより、ファームウェア全体のSUM値の特定を困難にし、ファームウェア改竄の可能性を低減することに寄与せしめることができる。
【００６３】
（発明の他の実施形態）
本発明の他の実施形態として、その基本的構成は上記の通りであるが、ファームウェアの分割数Dを大きくする、または分割したファームウェア毎のSUM値を用意して比較するようにすることで、よりファームウェアの改竄防止効果を向上させることができる。
【００６４】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６５】
（付記１）
組み込み機器と、前記組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置と、を含み、前記組み込み機器制御装置は、前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御システム。
【００６６】
（付記２）
前記計算部は、前記ファームウェアの分割数に前記複数のランダム値のそれぞれを乗算して前記複数のダミーデータを生成する、ことを特徴とする付記１に記載の組み込み機器制御システム。
【００６７】
（付記３）
前記組み込み機器は、前記ファームウェアを格納するための不揮発性記憶部と、前記組み込み機器制御装置から配信されたバイナリイメージを一時的に格納するための一時記憶部と、前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を含む、ことを特徴とする付記１又は２に記載の組み込み機器制御システム。
【００６８】
（付記４）
前記制御部は、前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得し、取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータそれぞれの大きさを算出し、前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出し、算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出し、前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する、ことを特徴とする付記３に記載の組み込み機器制御システム。
【００６９】
（付記５）
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置であって、前記ファームウェアを複数の分割ファームウェアに等分割する分割部と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、作成されたバイナリイメージを前記組み込み機器に配信する通信部と、を含む、ことを特徴とする組み込み機器制御装置。
【００７０】
（付記６）
前記計算部は、前記ファームウェアの分割数に前記複数のランダム値のそれぞれを乗算して前記複数のダミーデータを生成する、ことを特徴とする付記５に記載の組み込み機器制御装置。
【００７１】
（付記７）
組み込み機器に書き換え対象のファームウェアを配信する組み込み機器制御装置の制御方法であって、前記ファームウェアを複数の分割ファームウェアに等分割し、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成し、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置し、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成し、作成されたバイナリイメージを前記組み込み機器に配信する、ことを特徴とする組み込み機器制御装置の制御方法。
【００７２】
（付記８）
前記複数のダミーデータの生成に際しては、前記ファームウェアの分割数に前記複数のランダム値のそれぞれを乗算して前記複数のダミーデータを生成する、ことを特徴とする付記７に記載の組み込み機器制御装置の制御方法。
【００７３】
（付記９）
書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する機能を持つ組み込み機器であって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、該組み込み機器は、前記ファームウェアを格納するための不揮発性記憶部と、前記配信されたバイナリイメージを一時的に格納するための一時記憶部と、前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う制御部と、を含む、ことを特徴とする組み込み機器。
【００７４】
（付記１０）
前記制御部は、前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得し、取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータそれぞれの大きさを算出し、前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出し、算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出し、前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する、ことを特徴とする付記９に記載の組み込み機器。
【００７５】
（付記１１）
書き換え対象となるファームウェアの配信を受けて該ファームウェアをアップデートする際に、該ファームウェアの正当性を確認する制御動作を実行する組み込み機器の制御方法であって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、前記制御動作として、前記配信されたバイナリイメージのファームウェアから、前記複数のダミーデータを除いた複数の分割ファームウェア全体のSUM値を算出し、該算出したSUM値と前記配信されたバイナリイメージのヘッダ部に含まれるSUM値とが一致するかどうかを判別して、配信されたファームウェアの正当性を判別し、該配信されたファームウェアが正当であると判別した場合に該配信されたファームウェアへの書き換えを行う、ことを特徴とする組み込み機器の制御方法。
【００７６】
（付記１２）
前記制御動作は、前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得し、取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータのそれぞれの大きさを算出し、前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出し、算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出し、前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する、ことを特徴とする付記１１に記載の組み込み機器の制御方法。
【００７７】
（付記１３）
組み込み機器に書き換え対象のファームウェアを配信する、コンピュータで実現される組み込み機器制御装置に、前記ファームウェアを複数の分割ファームウェアに等分割する手順と、ファームウェア全体のSUM値を計算すると共に、分割された複数の分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する手順と、前記複数のダミーデータをそれぞれ、隣り合う分割ファームウェア間及び最後の分割ファームウェアの後に配置する手順と、前記複数の分割ファームウェアの間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する手順と、作成されたバイナリイメージを前記組み込み機器に配信する手順と、を実行させる、組み込み機器制御装置の制御プログラム。
【００７８】
（付記１４）
コンピュータで実現される組み込み機器に、書き換え対象となるファームウェアの配信を受けて該ファームウェアのアップデートを行う際に、該ファームウェアの正当性を確認する制御動作を実行させる、組み込み機器の制御プログラムであって、配信されるファームウェアとして、該ファームウェアが複数の分割ファームウェアに等分割され、しかも複数の分割ファームウェアの間及び最後の分割ファームウェアの後に、ランダム値を用いて生成されたランダムな大きさの複数のダミーデータのそれぞれが組み込まれてなるデータ部と、ファームウェア全体のSUM値、ファームウェアの分割数、及び前記複数のダミーデータの生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを受け、前記制御動作として、前記配信されたバイナリイメージのヘッダ部から前記ファームウェア全体のSUM値、前記ファームウェアの分割数、前記複数のランダム値を取得する手順と、取得したファームウェアの分割数と前記複数のランダム値のそれぞれを乗算して、前記複数のダミーデータのそれぞれの大きさを算出する手順と、前記配信されたバイナリイメージのデータ部の大きさから前記算出した複数のダミーデータの大きさを減算することにより前記複数のダミーデータを除外して前記配信されたファームウェアの大きさを算出する手順と、算出したファームウェアの大きさを前記分割数で除算して分割したファームウェアのそれぞれの大きさを算出すると共に、前記分割したファームウェアのそれぞれの大きさ分のSUM値を算出する手順と、前記分割したファームウェアのそれぞれの大きさ分のSUM値の算出が、前記分割したファームウェアの最後になるまで繰り返されると、それまでのSUM値を合計して、該合計したSUM値と取得した前記ファームウェア全体のSUM値とが一致するかどうかを判別して前記配信されたファームウェアの正当性を判別する手順と、を実行させる、組み込み機器の制御プログラム。
【符号の説明】
【００７９】
１００    組み込み機器
２００    ホストコンピュータ
【要約】
【課題】ファームウェアが改竄される可能性をより低減する。
【解決手段】本発明の一態様による組み込み機器制御装置は、ファームウェアを複数の分割ファームウェアに等分割する分割部と、ファームウェア全体のSUM値を計算すると共に、分割された分割ファームウェア毎に、ランダム値を用いてランダムな大きさの複数のダミーデータを生成する計算部と、前記複数のダミーデータをそれぞれ、分割ファームウェア間及び最後の分割ファームウェアの後に配置する挿入部と、前記複数の分割ファームウェア間及び最後の分割ファームウェアの後に前記複数のダミーデータのそれぞれが組み込まれてなるデータ部と、前記ファームウェア全体のSUM値、ファームウェアの分割数、及び前記ダミーデータ生成に用いられた複数のランダム値を含むヘッダ部と、を含むバイナリイメージを作成する作成部と、作成されたバイナリイメージを組み込み機器に配信する通信部と、を含む。
【選択図】図３【図１】
0005946155.tif 000002
【図２】
0005946155.tif 000003
【図３】
0005946155.tif 000004
【図４】
0005946155.tif 000005
【図５】
0005946155.tif 000006
【図６】
0005946155.tif 000007