(57)【要約】  組み込み装置（１）は、ファームウェア格納部（８）と、ファームウェア格納部（８）からファームウェア（１５，１７又は１６，１８）を読み込み、実行することで組み込み装置を起動する起動制御部（４）と、ネットワークを通して更新用のファームウェア（２０）を取得する装置制御部（２）と、ファームウェア格納部（８）に格納されているファームウェアの正当性及び更新用のファームウェア（２０）の正当性を検証するファームウェア検証部（６）と、ファームウェア検証部（６）によって正当なプログラムであると判断された更新用のファームウェア（２０）をファームウェア格納部（８）に書き込むファームウェア更新制御部（５）とを備え、起動制御部（４）は、組み込み装置の起動時に、ファームウェア格納部（８）に書き込まれた更新用のファームウェア（２０）を新たなファームウェア（１５，１７又は１６，１８）として読み込み、実行する。
2018138789.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される組み込み装置であって、
ファームウェアを格納するファームウェア格納部と、
前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで前記組み込み装置を起動する起動制御部と、
前記ネットワークを通して更新用のファームウェアを取得する装置制御部と、
前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、
前記ファームウェア検証部によって正当なプログラムであると判断された前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新制御部と
を備え、
前記起動制御部は、前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアを新たなファームウェアとして読み込み、実行する
ことを特徴とする組み込み装置。
【請求項２】
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア格納部から読み込まれた前記ファームウェアの正当性を検証し、
前記ファームウェア検証部によって正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記ファームウェアを実行する
ことを特徴とする請求項１に記載の組み込み装置。
【請求項３】
前記ファームウェアは、ＯＳとアプリケーションとを含み、
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア格納部から読み込まれた前記ＯＳの正当性を検証し、
前記ファームウェア検証部によって前記ＯＳが正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記ＯＳを実行する
ことを特徴とする請求項２に記載の組み込み装置。
【請求項４】
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア検証部によって前記ＯＳが正当なプログラムであると判断されたときに、前記ファームウェア格納部から読み込まれた前記アプリケーションの正当性を検証し、
前記ファームウェア検証部によって前記アプリケーションが正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記アプリケーションを実行する
ことを特徴とする請求項３に記載の組み込み装置。
【請求項５】
前記ファームウェアは、前記起動制御部によって実行されている運用中のファームウェアと、待機中のファームウェアとを含み、
前記ファームウェア更新制御部は、前記待機中のファームウェアを、前記ファームウェア検証部によって正当なプログラムであると判断された前記更新用のファームウェアに置き換える
ことを特徴とする請求項１から４のいずれか１項に記載の組み込み装置。
【請求項６】
前記更新用のファームウェアは、更新用のＯＳと更新用のアプリケーションとを含み、
前記ファームウェア検証部は、前記更新用のファームウェアの正当性の検証時に、前記更新用のＯＳの正当性の検証と、前記更新用のアプリケーションの正当性の検証とを行う
ことを特徴とする請求項１から５のいずれか１項に記載の組み込み装置。
【請求項７】
前記更新用のファームウェアは、更新用のＯＳと更新用のアプリケーションとを含み、
前記ファームウェア検証部は、前記更新用のファームウェアの正当性の検証時に、前記更新用のＯＳの正当性の検証を行い、前記更新用のアプリケーションの正当性の検証を行わない
ことを特徴とする請求項１から５のいずれか１項に記載の組み込み装置。
【請求項８】
ネットワークに接続され、ファームウェア格納部に格納されているファームウェアを読み込み、実行することで起動する組み込み装置おけるファームウェア更新方法であって、
前記ネットワークを通して更新用のファームウェアを取得する取得ステップと、
前記更新用のファームウェアの正当性を検証する検証ステップと、
前記検証ステップにおいて正当なプログラムであると判断された前記更新用のファームウェアをファームウェア格納部に書き込む更新ステップと、
前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアが新たなファームウェアを新たなファームウェアとして読み込み、実行する起動ステップと
を有することを特徴とするファームウェア更新方法。
【請求項９】
前記起動ステップにおいて、前記ファームウェア格納部から読み込まれた前記ファームウェアの正当性を検証し、前記ファームウェアが正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記ファームウェアを実行する
ことを特徴とする請求項８に記載のファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアに従って動作する組み込み装置及び組み込み装置におけるファームウェア更新方法に関する。
【背景技術】
【０００２】
近年、インターネットなどのネットワークに接続された組み込み装置（例えば、特定の機能を実現するために家電製品、機械又は設備等に組み込まれるコンピュータ）によって、音楽コンテンツ又は映像コンテンツなどの著作物の配信、公共機関又は企業が保有する情報の閲覧サービスの提供、及びオンラインバンキング又は電子マネーなどの金融サービスの提供などが行われている。また、ネットワークを通して通信機能及び制御機能を持つ「もの」に接続することで、計測データ、センサデータ、制御データなどの通信を行う仕組みであるＩｏＴ（「もののインターネット」：Ｉｎｔｅｒｎｅｔ  Ｏｆ  Ｔｈｉｎｇｓ）も普及しつつある。【０００３】
しかし、ネットワークに接続された組み込み装置では、ファームウェアが悪意ある第三者によって改ざんされ、改ざんされたファームウェア（不正プログラム）が予期しない動作を実行して、予期しない事態を引き起こす危険性がある。【０００４】
このような課題に対して、特許文献１は、組み込み装置のＯＳの一部分（すなわち、部分プログラム）に対して正当性の検証を実施することで、安全に組み込み装置の起動を行うセキュアブート方法を提案している。【０００５】
また、特許文献２は、起動プログラムデータ、バックアッププログラムデータ、及びバックアッププログラムデータと同一内容の修正用データを記憶する不揮発性メモリと、起動プログラムデータの起動と並行して、起動プログラムデータの異常を検出する異常検出部と、起動プログラムデータによってシステムの起動が行われる場合に、バックアッププログラムデータに対してビットエラーの検出を行い、ビットエラーが検出されたときに当該ビットエラーを修正用データにより修正するエラー修正部と、異常検出部により起動プログラムデータの異常が検出された場合に、バックアッププログラムデータによりシステムの再起動を行う再起動部とを備える装置を提案している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−０２２５２１号公報（例えば、要約、図４）
【特許文献２】欧州特許出願公開第２７３３６１２号明細書（例えば、要約、図２）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載のセキュアブート方法では、組み込み装置の起動時にファームウェアの正当性を検証し、ファームウェアが不正プログラムであると判断された場合に、ファームウェアの起動を中止して、組み込み装置の動作を停止する。しかし、組み込み装置の動作が停止されると、組み込み装置が組み込まれている設備からのサービスの提供が停止し、サービスを継続的に提供することができないという問題がある。特に、組み込み装置を搭載した設備が遠隔地に設置されている場合には、復旧のために作業者が遠隔地に赴く必要があった。【０００８】
また、特許文献２に記載の装置は、起動プログラムデータの起動と並行して、起動プログラムデータの異常の有無を検出し、起動プログラムデータの異常が検出された場合に、バックアッププログラムデータによりシステムの再起動を行うので、サービスの継続性を確保することは可能である。しかし、起動プログラムデータの異常の有無の検出は、起動プログラムの起動時に行われるので、起動時にシステムの再起動が発生することがある。【０００９】
本発明は、上記課題を解決するためになされたものであり、その目的は、正当性が確認されたファームウェアによって安全に起動することができ、改ざんされたファームウェアによる動作の停止を回避することができる組み込み装置及びファームウェア更新方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一態様に係る組み込み装置は、ネットワークに接続される組み込み装置であって、ファームウェアを格納するファームウェア格納部と、前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで前記組み込み装置を起動する起動制御部と、前記ネットワークを通して更新用のファームウェアを取得する装置制御部と、前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、前記ファームウェア検証部によって正当なプログラムであると判断された前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新制御部とを備え、前記起動制御部は、前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアを新たなファームウェアとして読み込み、実行することを特徴としている。【００１１】
本発明の他の態様に係るファームウェア更新方法は、ネットワークに接続され、ファームウェア格納部に格納されているファームウェアを読み込み、実行することで起動する組み込み装置におけるファームウェア更新方法であって、前記ネットワークを通して更新用のファームウェアを取得する取得ステップと、前記更新用のファームウェアの正当性を検証する検証ステップと、前記検証ステップにおいて正当なプログラムであると判断された前記更新用のファームウェアをファームウェア格納部に書き込む更新ステップと、前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアが新たなファームウェアを新たなファームウェアとして読み込み、実行する起動ステップとを有することを特徴としている。
【発明の効果】
【００１２】
本発明によれば、組み込み装置を正当性が確認されたファームウェアによって安全に起動することができ、また、改ざんされたファームウェアによる動作の停止を回避することができ、組み込み装置によるサービスの提供の継続性を確保することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１に係る組み込み装置の構成を概略的に示すブロック図である。
【図２】実施の形態１に係る組み込み装置が取得する更新用のファームウェアのファイル構成の例を示す図である。
【図３】実施の形態１に係る組み込み装置が更新用のファームウェアのファイルを取得し、ファームウェア格納部に格納されているファームウェアを更新用のファームウェアに置き替える更新時の動作例を示すフローチャートである。
【図４】実施の形態１に係る組み込み装置の起動処理の例を示す図である。
【図５】実施の形態１に係る組み込み装置の起動処理の例を示すフローチャートである。
【図６】本発明の実施の形態２に係る組み込み装置が更新用のファームウェアのファイルを取得し、ファームウェア格納部に格納されているファームウェアを更新用のファームウェアに置き替える更新時の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、本発明の実施の形態に係る組み込み装置及びファームウェア更新方法を、添付図面を参照しながら説明する。本出願において、組み込み装置（「組み込み機器」とも言う）は、特定の機能を実現するために家電機器、工場設備などの産業用機器、通信機器、自動車などの輸送用機器などに組み込まれるコンピュータである。なお、以下の実施の形態は、例にすぎず、本発明の範囲内で種々の変更が可能である。
【００１５】
《１》実施の形態１．
《１−１》組み込み装置１
図１は、実施の形態１に係る組み込み装置１の構成を概略的に示すブロック図である。組み込み装置１は、実施の形態１に係るファームウェア更新方法を実施することができる装置である。図１に示されるように、組み込み装置１は、組み込み装置１の全体の動作を制御する装置制御部２と、イーサネット（登録商標）接続などによりネットワークと通信可能に接続される通信インタフェース部３と、ブートプログラム及びファームウェアに従う組み込み装置１の動作の制御を行う起動制御部４と、ファームウェアの更新を行うためのファームウェア更新制御部５と、ファームウェアの検証を行うためのファームウェア検証部６と、ファームウェア検証部６に備えられ、ファームウェアに検証に用いる証明書情報を格納するための証明書情報格納部６１とを備えている。また、組み込み装置１は、不揮発性の半導体メモリなどで構成された記憶装置であるブートプログラム７ａの格納部としてのブートＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）７と、半導体メモリ又はハードディスクドライブなどで構成された記憶装置であるファームウェア格納部８とを備えている。
【００１６】
ファームウェア格納部８は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を格納するためのＯＳ格納部９と、アプリケーションプログラム（「アプリケーション」とも言う）を格納するためのアプリケーション格納部１０とを有している。本願では、ファームウェアは、ＯＳとアプリケーションとを含む。ＯＳ格納部９とアプリケーション格納部１０とは、互いに異なる記憶装置に備えられてもよいが、同じ記憶装置の異なる記憶領域であってもよい。
【００１７】
ＯＳ格納部９は、２重化された格納領域であるＯＳ格納領域（Ａ）１１とＯＳ格納領域（Ｂ）１２とを有している。ＯＳ格納領域（Ａ）１１には、ＯＳ（Ａ）１５が格納されている。ＯＳ（Ａ）１５は、ＯＳ（Ａ）１５の正当性を証明するためのＯＳ署名情報（Ａ）１５ａを含んでいる。ＯＳ格納領域（Ｂ）１２には、ＯＳ（Ｂ）１６が格納されている。ＯＳ（Ｂ）１６は、ＯＳ（Ｂ）１６の正当性を証明するためのＯＳ署名情報（Ｂ）１６ａを含んでいる。なお、（Ａ）と（Ｂ）とは、ＯＳ格納領域（Ａ）１１とＯＳ格納領域（Ｂ）１２との区別を容易にするために付与された記号である。例えば、（Ａ）が現在運用されている運用中のＯＳ格納領域又はＯＳを示している場合には、（Ｂ）は以前に運用されていた待機中のＯＳ格納領域又は待機中のファームウェアであるＯＳを示す。（Ａ）と（Ｂ）とが逆の場合もある。
【００１８】
アプリケーション格納部１０は、２重化された格納領域であるアプリケーション格納領域（Ａ）１３とアプリケーション格納領域（Ｂ）１４とを有している。アプリケーション格納領域（Ａ）１３には、アプリケーション（Ａ）１７が格納されている。アプリケーション（Ａ）１７は、アプリケーション（Ａ）１７の正当性を証明するためのアプリケーション署名情報（Ａ）１７ａを含んでいる。アプリケーション格納領域（Ｂ）１４には、アプリケーション（Ｂ）１８が格納されている。アプリケーション（Ｂ）１８は、アプリケーション（Ｂ）１８の正当性を証明するためのアプリケーション署名情報（Ｂ）１８ａを含んでいる。例えば、（Ａ）が現在運用されている運用中のアプリケーション格納領域又はアプリケーションを示している場合には、（Ｂ）は以前に運用されていた待機中のアプリケーション格納領域又は待機中のファームウェアであるアプリケーションを示す。（Ａ）と（Ｂ）とが逆の場合もある。
【００１９】
《１−２》更新用のファームウェア２０
図２は、実施の形態１に係る組み込み装置１が取得する更新用のファームウェア２０のファイル構成の例を示す図である。図２に示されるように、ネットワークから通信インタフェース部３を通して取得される更新用のファームウェア２０のファイルは、更新用のＯＳ２１と更新用のアプリケーション２２とを有している。更新用のＯＳ２１は、ＯＳ署名情報２１ａを含み、更新用のアプリケーション２２は、アプリケーション署名情報２２ａを含んでいる。
【００２０】
《１−３》ファームウェア更新
図３は、実施の形態１に係る組み込み装置１が更新用のファームウェア２０のファイルを取得し、ファームウェア格納部８に格納されているファームウェアを更新用のファームウェア２０に置き替える更新時の動作例を示すフローチャートである。
【００２１】
先ず、ステップＳ１０１において、装置制御部２は、ネットワークから通信インタフェース部３を通して更新用のファームウェア２０のファイルを取得し、ファームウェア更新制御部５にファームウェア更新指示を行う。更新用のファームウェア２０には、ＯＳ更新情報２１ａを持つ更新用のＯＳ２１とアプリケーション署名情報２２ａを持つ更新用のアプリケーション２２とが含まれている。
【００２２】
次のステップＳ１０２において、ファームウェア更新制御部５は、更新用のファームウェア２０のファイルから更新用のＯＳ２１と更新用のアプリケーション２２とを分離して取り出す。
【００２３】
次のステップＳ１０３において、ファームウェア検証部６は、更新用のＯＳ２１のＯＳ署名情報２１ａが正当なものであるか否かを検証する（すなわち、正当性を確認する）。検証方法としては、ＯＳオブジェクトコードに対するチェックサム（又はハッシュ値）を求め、これを正当なチェックサム（又は正当なハッシュ値）として予め証明書情報格納部６１に記憶し、取得した更新用のファームウェア２０に対して求められたチェックサム（又はハッシュ値）を、記憶されている正当なチェックサム（又は正当なハッシュ値）と照合し、一致する場合に正当であると判断する方法がある。また、他の検証方法としては、ＯＳ署名情報２１ａ及びアプリケーション署名情報２２ａを利用して改ざんの有無を検査する方法がある。ハッシュ値を求めるアルゴリズムとしては、例えば、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２、ＳＨＡ−２２４、Ｗｉｒｌｐｏｏｌ、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）、ＳＨＡ−３がある。なお、ハッシュ値の長さは、ハッシュ値を求めるアルゴリズムによって異なるが、例えば、１２８ｂｉｔ、１６０ｂｉｔ、２２４ｂｉｔ、２５６ｂｉｔ、３８４ｂｉｔ、５１２ｂｉｔ、１０２４ｂｉｔなどである。
【００２４】
ステップＳ１０３の検証において、ファームウェア検証部６が更新用のＯＳ２１のプログラムは改ざんされていると判断した場合（ステップＳ１０３においてＮＯ）、処理はステップＳ１１０に進み、ファームウェア更新制御部５は、検証対象のファームウェア２０によって、ファームウェア格納部８におけるファームウェアを置き換えるための更新処理を停止する。
【００２５】
ステップＳ１０３の検証において、ファームウェア検証部６が更新用のＯＳ２１のプログラムは正当であると判断した場合（ステップＳ１０３においてＹＥＳ）、処理はステップＳ１０４に進む。
【００２６】
ステップＳ１０４において、ファームウェア更新制御部５は、現在運用しているＯＳ格納領域とは別のＯＳ格納領域に、取得された更新用のファームウェア２０の更新用のＯＳ２１を格納する（書き込む）。具体的に言えば、現在、ＯＳ格納領域（Ａ）１１に格納されているＯＳ（Ａ）１５で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のＯＳ２１を、現在運用されていないＯＳ格納領域（Ｂ）１２に格納する。逆に、ＯＳ格納領域（Ｂ）１２に格納されているＯＳ（Ｂ）１６で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のＯＳ２１を、現在運用されていないＯＳ格納領域（Ａ）１１に格納する。
【００２７】
ステップＳ１０５において、ファームウェア更新制御部５は、今回更新したＯＳ格納領域（例えば、ＯＳ格納領域（Ｂ）１２）を、次の組み込み装置１の起動時に実行するプログラムとして設定する。
【００２８】
次のステップＳ１０６において、ファームウェア検証部６は、更新用のＯＳ２０に含まれる更新用のアプリケーション２２のアプリケーション署名情報２２ａが正当なものであるか否かを検証する（すなわち、正当性を確認する）。検証は、ステップＳ１０３における検証方法と同様の方法で実行される。
【００２９】
ステップＳ１０６の検証において、ファームウェア検証部６が更新用のアプリケーション２２のプログラムは正当であると判断した場合（ステップＳ１０６においてＹＥＳ）、処理はステップＳ１０７に進む。
【００３０】
ステップＳ１０７において、ファームウェア更新制御部５は、現在運用しているアプリケーション格納領域とは別のアプリケーション格納領域に、取得された更新用のアプリケーション２２を格納する（書き込む）。具体的に言えば、現在、アプリケーション格納領域（Ａ）１３に格納されているアプリケーション（Ａ）１７で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のアプリケーション２２を、現在運用されていないアプリケーション格納領域（Ｂ）１４に格納する。逆に、アプリケーション格納領域（Ｂ）１４に格納されているアプリケーション（Ｂ）１８で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のアプリケーション２２を、現在運用されていないアプリケーション格納領域（Ａ）１３に格納する。
【００３１】
ステップＳ１０８において、ファームウェア更新制御部５は、ステップＳ１０７でアプリケーション格納部１０のアプリケーション格納部（Ａ）１３又は（Ｂ）１４に格納されたアプリケーション（Ａ）１７又は（Ｂ）１８を次の起動時に実行するプログラムとして設定する。
【００３２】
ステップＳ１０６の検証において、ファームウェア検証部６が更新用のアプリケーション２２のプログラムは改ざんされていると判断した場合（ステップＳ１０６においてＮＯ）、アプリケーションの更新処理であるステップＳ１０７及びＳ１０８をスキップし、今回更新したＯＳを有効とするために、処理はステップＳ１０９に進む。また、ステップＳ１０８の処理が実行された後、処理はステップＳ１０９に進む。
【００３３】
ステップＳ１０９において、組み込み装置１の再起動処理を行い、更新処理は終了する。再起動は、今回、ファームウェア格納部８に記憶された更新用のファームウェアによって実行される。
【００３４】
《１−４》組み込み装置１の起動
次に、組み込み装置１の起動処理について、図を参照して説明する。図４は、実施の形態１に係る組み込み装置１の起動処理の例を示す図である。一般的に、組み込み装置１では、図４に示されるように、ブートＲＯＭ７から読み出されたブートプログラム３１を最初に起動し、順次ブートプログラム３１がファームウェア格納部８から読み出されたＯＳ３２を起動し、ＯＳ３２がアプリケーション３３を起動する。
【００３５】
図５は、実施の形態１に係る組み込み装置１の起動処理の例を示すフローチャートである。図５は、直前のファームウェア更新において、ＯＳ格納領域（Ｂ）１２及びアプリケーション格納領域（Ｂ）１４に更新用のＯＳ２１と更新用のアプリケーション２２がそれぞれ書き込まれた場合を示す。
【００３６】
ステップＳ２０１において、起動制御部４は、組み込み装置１の起動時に、書き換えできない記憶領域であるブートＲＯＭ７から、組み込み装置１を起動するためのブートプログラム３１を読み込み、読み出されたブートプログラムを実行する。
【００３７】
次のステップＳ２０２において、ファームウェア検証部６は、現在実行しようとしているＯＳ格納領域（Ｂ）１２に格納されているＯＳ（Ｂ）１６のＯＳ署名情報（Ｂ）１６ａ（すなわち、直前のファームウェア更新によって書き込まれた更新用のＯＳ２１のＯＳ署名情報２１ａ）の検証を行う。
【００３８】
ステップＳ２０２のＯＳの検証の結果、ＯＳ（Ｂ）１６は改ざんされていないと判断した場合（ステップＳ２０２においてＹＥＳ）、ステップＳ２０３において、起動制御部４は、ＯＳ格納領域（Ｂ）１２のＯＳ（Ｂ）１６の読み込み、実行を行い、その後、処理はステップＳ２０７に進む。
【００３９】
ステップＳ２０２のＯＳ（Ｂ）１６の検証の結果、ＯＳ（Ｂ）１６は改ざんされていると判断した場合（ステップＳ２０２においてＮＯ）、処理はステップＳ２０４に進む。
【００４０】
ステップＳ２０４において、使用するＯＳ格納領域を、現在運用しているＯＳ格納領域（Ｂ）１２とは別のＯＳ格納領域（Ａ）１１に切り替える。
【００４１】
次のステップＳ２０５において、格納されているＯＳ署名情報（Ａ）１５が正当であるか否かを検証する。
【００４２】
ステップＳ２０５の検証の結果、ＯＳ署名情報（Ａ）１５が正当である（改ざんされていない）と判断した場合（ステップＳ２０５においてＹＥＳ）、ステップＳ２０６において、起動制御部４は、ＯＳ格納領域（Ａ）１１のＯＳ（Ａ）１５の読み込み、実行を行い、その後、処理はステップＳ２０７に進む。
【００４３】
ステップＳ２０５の検証の結果、ＯＳ格納領域（Ａ）１１が正当ではない（改ざんされている）と判断した場合（ステップＳ２０５においてＮＯ）、格納されているＯＳ格納領域（Ｂ）１２及びＯＳ格納領域（Ａ）１１のいずれのＯＳも信頼することができないと判断し、起動失敗として起動動作を終了する。
【００４４】
ステップＳ２０７において、ファームウェア検証部６は、現在実行しようとしているアプリケーション格納領域（Ｂ）１４に格納されているアプリケーション（Ｂ）１８のアプリケーション署名情報（Ｂ）１８ａ（すなわち、直前のファームウェア更新によって書き込まれたアプリケーション２２のアプリケーション署名情報２２ａ）の検証を行う。
【００４５】
ステップＳ２０７のアプリケーションの検証の結果、アプリケーション（Ｂ）１８は改ざんされていないと判断した場合（ステップＳ２０７においてＹＥＳ）、ステップＳ２０８において、起動制御部４は、アプリケーション格納領域（Ｂ）１４のアプリケーション（Ｂ）１８の読み込み、実行を行い、検証されたＯＳ及びアプリケーションの起動に成功し、起動処理を終了する。
【００４６】
ステップＳ２０７のアプリケーションの検証の結果、アプリケーション（Ｂ）１８は改ざんされていると判断した場合（ステップＳ２０７においてＮＯ）、処理はステップＳ２０９に進む。
【００４７】
ステップＳ２０９において、起動制御部４は、使用するアプリケーション格納領域を、現在使用しているアプリケーション格納領域（Ｂ）１４とは別のアプリケーション格納領域（Ａ）１３に切り替える。
【００４８】
次のステップＳ２１０において、ファームウェア検証部６は、アプリケーション格納領域（Ａ）１３に格納されているアプリケーション署名情報（Ａ）１７ａの検証を行う。
【００４９】
ステップＳ２１０のアプリケーションの検証の結果、アプリケーション（Ａ）１７は改ざんされていないと判断した場合（ステップＳ２１０においてＹＥＳ）、ステップＳ２１１において、起動制御部４は、アプリケーション格納領域（Ａ）１３のアプリケーション（Ａ）１７の読み込み、実行を行う。
【００５０】
ステップＳ２１０のアプリケーションの検証の結果、アプリケーション（Ａ）１７は改ざんされていると判断した場合（ステップＳ２１０においてＮＯ）、アプリケーション格納領域（Ａ）１３に格納されているアプリケーション（Ａ）１７及びアプリケーション格納領域（Ｂ）１４に格納されているアプリケーション（Ｂ）１８のいずれも信頼することができないと判断し、アプリケーションの読み込み、実行をスキップし、ＯＳのみ起動した状態で起動処理を終了する。この場合、組み込み装置１として、ＯＳが提供するサービスは提供できるが、アプリケーションが提供するサービスは提供できない。しかし、信頼することができないアプリケーションの動作が抑制されるため、よりセキュアである。
【００５１】
《１−５》効果
以上に説明したように、実施の形態１に係る組み込み装置１及びファームウェア更新方法によれば、更新用のファームウェア２０を取得した後、ファームウェア格納部８に格納する前に、ファームウェア検証部６によって更新用のファームウェア２０の正当性の検証を行う（図３におけるステップＳ１０３，Ｓ１０６）。このため、更新用のファームウェア２０が正当なプログラムでない場合には、ファームウェア２０がファームウェア格納部８に格納されることはなく（図３におけるステップＳ１１０）、サービスの継続性を考慮しつつ、不正なファームウェアプログラムを動作させない制御が可能となる。
【００５２】
また、実施の形態１に係る組み込み装置１及びファームウェア更新方法によれば、起動制御部４による組み込み装置１の起動時に、ファームウェア格納部８から読み込まれたＯＳ（Ｂ）１６及びアプリケーション（Ｂ）１８（又は、ＯＳ（Ａ）１５及びアプリケーション（Ａ）１７）の正当性の検証を行う（図５におけるステップＳ２０２，Ｓ２０７）。このため、実行しようとしたＯＳ又はアプリケーションが正当なプログラムでない場合には、別のＯＳ格納領域に格納されている以前に使用していたＯＳ及び別のアプリケーション格納領域に格納されている以前に使用していたアプリケーションを読み込んで、実行する（図５におけるステップＳ２０４，Ｓ２０６，Ｓ２０９，Ｓ２１１）。このため、組み込み装置１の動作は中止することなく、組み込み装置１が提供するサービスの継続性を確保することが可能となる。
【００５３】
さらに、別のＯＳ格納領域に格納されている以前に使用していたＯＳ及び別のアプリケーション格納領域に格納されている以前に使用していたアプリケーションを読み込んで、実行する前に、正当性の検証を行うので（図５におけるステップＳ２０５，Ｓ２１０）、よりセキュアなプログラム実行環境を提供することができる。
【００５４】
《２》実施の形態２．
上記実施の形態１に係る組み込み装置１及びファームウェア更新方法では、図３に示されるように、更新用のファームウェア２０のファイルを取得したときに行う正当性の確認処理において、ＯＳ署名情報２１ａの正当性の確認（ステップＳ１０３）とアプリケーション署名情報２２ａの正当性の確認（ステップＳ１０６）の両方を行う。しかし、一般に、アプリケーションのファイルサイズは、ＯＳのファイルサイズより大きく、アプリケーションの正当性の確認処理に要する演算量は比較的大きく、処理時間は比較的長い。
【００５５】
そこで、本発明の実施の形態２に係る組み込み装置及びファームウェア更新方法においては、更新用のファームウェア２０のファイルを取得したときに行う正当性の確認処理において、ＯＳ署名情報２１ａの正当性の確認を行うが、アプリケーション認証情報２２ａの正当性の確認を行わない。この点以外に関しては、実施の形態２は、実施の形態１とほぼ同じである。したがって、実施の形態２の説明に際しては、組み込み装置の構成を示す図１、更新用のファームウェア２０のファイルを示す図２、及び起動時の動作を示す図５をも参照する。
【００５６】
図６は、実施の形態２に係る組み込み装置が更新用のファームウェア２０のファイルを取得し、ファームウェア格納部８に格納されているファームウェアを更新用のファームウェア２０に置き替える更新時の動作例を示すフローチャートである。
【００５７】
先ず、ステップＳ３０１において、装置制御部２は、ネットワークから通信インタフェース部３を通して更新用のファームウェア２０のファイルを取得し、ファームウェア更新制御部５にファームウェア更新指示を行う。ファームウェア２０には、ＯＳ署名情報２１ａを持つ更新用のＯＳ２１とアプリケーション署名情報２２ａを持つ更新用のアプリケーション２２とが含まれている。
【００５８】
次のステップＳ３０２において、ファームウェア更新制御部５は、更新用のファームウェア２０のファイルから更新用のＯＳ２１と更新用のアプリケーション２２とを分離して取り出す。
【００５９】
次のステップＳ３０３において、ファームウェア検証部６は、更新用のＯＳ２１のＯＳ署名情報２１ａが正当なものであるか否かを検証する（すなわち、正当性を確認する）。
【００６０】
ステップＳ３０３の検証において、ファームウェア検証部６が更新用のＯＳ２１のプログラムは改ざんされていると判断した場合（ステップＳ３０３においてＮＯ）、処理はステップＳ３０７に進み、ファームウェア更新制御部５は、検証対象のファームウェアによって、ファームウェア格納部８におけるファームウェアを書き換える更新処理を停止する。
【００６１】
ステップＳ３０３の検証において、ファームウェア検証部６が更新用のＯＳ２１のプログラムは正当であると判断した場合（ステップＳ３０３においてＹＥＳ）、処理はステップＳ３０４に進む。
【００６２】
ステップＳ３０４において、ファームウェア更新制御部５は、現在運用しているＯＳ格納領域とは別のＯＳ格納領域に、取得された更新用のファームウェア２０の更新用のＯＳ２１を格納し（書き込み）、現在運用しているアプリケーション格納領域とは別のアプリケーション格納領域に、取得された更新用のファームウェア２０の更新用のアプリケーション２２を格納する（書き込む）。具体的に言えば、現在、ＯＳ格納領域（Ａ）１１に格納されているＯＳ（Ａ）１５で組み込み装置が動作している場合、ファームウェア更新制御部５は、更新用のＯＳ２１を、現在運用されていないＯＳ格納領域（Ｂ）１２に格納し、現在、アプリケーション格納領域（Ａ）１３に格納されているアプリケーション（Ａ）１７で組み込み装置が動作している場合、ファームウェア更新制御部５は、更新用のアプリケーション２２を、現在運用されていないアプリケーション格納領域（Ｂ）１４に格納する。なお、現在、ＯＳ格納領域（Ｂ）１２に格納されているＯＳ（Ｂ）１６で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のＯＳ２１を、現在運用されていないＯＳ格納領域（Ａ）１１に格納し、現在、アプリケーション格納領域（Ｂ）１４に格納されているアプリケーション（Ｂ）１８で組み込み装置１が動作している場合、ファームウェア更新制御部５は、更新用のアプリケーション２２を、現在運用されていないアプリケーション格納領域（Ａ）１３に格納する。
【００６３】
ステップＳ３０５において、ファームウェア更新制御部５は、今回更新したＯＳ格納領域（例えば、ＯＳ格納領域（Ｂ）１２）を、次の組み込み装置の起動時に実行するプログラムとして設定する。
【００６４】
ステップＳ１０９において、組み込み装置の再起動処理を行い、更新処理は終了する。再起動は、今回、ファームウェア格納部８に記憶された更新用のファームウェアによって実行される。
【００６５】
アプリケーションは、一般的には、サイズ的に大きなものであるため、組み込み装置の処理能力が小さい場合、アプリケーションからチェックサム又はハッシュ値を求める行為そのものに時間がかかる可能性ある。一方、この段階では、改ざん有無をいち早く検知することが第一の目的である。このため、更新用のファームウェア２０の検証は更新用のＯＳ２１の検証のみを実施することとし、アプリケーションの検証は、組み込み装置の起動時に行う。
【００６６】
以上により、実施の形態２に係る組み込み装置及びファームウェア更新方法においては、実施の形態１において説明した効果に加えて、更新用のＯＳ２１の検証のみを行い、更新用のアプリケーション２２の検証をスキップすることで、処理時間の短縮を図ることができる。
【符号の説明】
【００６７】
１  組み込み装置、  ２  装置制御部、  ３  通信インタフェース部、  ４  起動制御部、  ５  ファームウェア更新制御部、  ６  ファームウェア検証部、  ６ａ  証明書情報格納部、  ７  ブートＲＯＭ、  ８  ファームウェア格納部、  ９  ＯＳ格納部、  １０  アプリケーション格納部、  １１  ＯＳ格納領域（Ａ）、  １２  ＯＳ格納領域（Ｂ）、  １３  アプリケーション格納領域（Ａ）、  １４  アプリケーション格納領域（Ｂ）、  １５  ＯＳ（Ａ）、  １５ａ  ＯＳ署名情報（Ａ）、  １６  ＯＳ（Ｂ）、  １６ａ  ＯＳ署名情報（Ｂ）、  １７  アプリケーション（Ａ）、  １７ａ  アプリケーション署名情報（Ａ）、  １８  アプリケーション（Ｂ）、  １８ａ  アプリケーション署名情報（Ｂ）、  ２０  更新用のファームウェア、  ２１  更新用のＯＳ、  ２１ａ  ＯＳ署名情報、  ２２  更新用のアプリケーション、  ２２ａ  アプリケーション署名情報、  ３１  ブートプログラム、  ３２  ＯＳ、  ３３  アプリケーション、  ６１  証明書情報格納部。
【図１】
2018138789.tif 000003
【図２】
2018138789.tif 000004
【図３】
2018138789.tif 000005
【図４】
2018138789.tif 000006
【図５】
2018138789.tif 000007
【図６】
2018138789.tif 000008
【手続補正書】
【提出日】平成30年12月13日(2018.12.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークに接続される組み込み装置であって、
ファームウェアを格納するファームウェア格納部と、
前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで前記組み込み装置を起動する起動制御部と、
前記ネットワークを通して更新用のファームウェアを取得する装置制御部と、
前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、
前記ファームウェア検証部によって正当なプログラムであると判断された前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新制御部と
を備え、
前記起動制御部は、前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアを新たなファームウェアとして読み込み、実行する
ことを特徴とする組み込み装置。
【請求項２】
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア格納部から読み込まれた前記ファームウェアの正当性を検証し、
前記ファームウェア検証部によって正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記ファームウェアを実行する
ことを特徴とする請求項１に記載の組み込み装置。
【請求項３】
前記ファームウェアは、ＯＳとアプリケーションとを含み、
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア格納部から読み込まれた前記ＯＳの正当性を検証し、
前記ファームウェア検証部によって前記ＯＳが正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記ＯＳを実行する
ことを特徴とする請求項２に記載の組み込み装置。
【請求項４】
前記ファームウェア検証部は、前記起動制御部による前記組み込み装置の起動時に、前記ファームウェア検証部によって前記ＯＳが正当なプログラムであると判断されたときに、前記ファームウェア格納部から読み込まれた前記アプリケーションの正当性を検証し、
前記ファームウェア検証部によって前記アプリケーションが正当なプログラムであると判断されたときに、前記起動制御部は、正当なプログラムであると判断された前記アプリケーションを実行する
ことを特徴とする請求項３に記載の組み込み装置。
【請求項５】
前記ファームウェアは、前記起動制御部によって実行されている運用中のファームウェアと、待機中のファームウェアとを含み、
前記ファームウェア更新制御部は、前記待機中のファームウェアを、前記ファームウェア検証部によって正当なプログラムであると判断された前記更新用のファームウェアに置き換える
ことを特徴とする請求項１から４のいずれか１項に記載の組み込み装置。
【請求項６】
前記更新用のファームウェアは、更新用のＯＳと更新用のアプリケーションとを含み、
前記ファームウェア検証部は、前記更新用のファームウェアの正当性の検証時に、前記更新用のＯＳの正当性の検証と、前記更新用のアプリケーションの正当性の検証とを行う
ことを特徴とする請求項１から５のいずれか１項に記載の組み込み装置。
【請求項７】
前記更新用のファームウェアは、更新用のＯＳと更新用のアプリケーションとを含み、
前記ファームウェア検証部は、前記更新用のファームウェアの正当性の検証時に、前記更新用のＯＳの正当性の検証を行い、前記更新用のアプリケーションの正当性の検証を行わない
ことを特徴とする請求項１から５のいずれか１項に記載の組み込み装置。
【請求項８】
ネットワークに接続され、ファームウェア格納部に格納されているファームウェアを読み込み、実行することで起動する組み込み装置おけるファームウェア更新方法であって、
前記ネットワークを通して更新用のファームウェアを取得する取得ステップと、
前記更新用のファームウェアの正当性を検証する検証ステップと、
前記検証ステップにおいて正当なプログラムであると判断された前記更新用のファームウェアをファームウェア格納部に書き込む更新ステップと、
前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア格納部に書き込まれた前記更新用のファームウェアが新たなファームウェアを新たなファームウェアとして読み込み、実行する起動ステップと
を有することを特徴とするファームウェア更新方法。
【請求項９】
前記起動ステップにおいて、前記ファームウェア格納部から読み込まれた前記ファームウェアの正当性を検証し、前記ファームウェアが正当なプログラムであると判断されたときに、正当なプログラムであると判断された前記ファームウェアを実行する
ことを特徴とする請求項８に記載のファームウェア更新方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
先ず、ステップＳ１０１において、装置制御部２は、ネットワークから通信インタフェース部３を通して更新用のファームウェア２０のファイルを取得し、ファームウェア更新制御部５にファームウェア更新指示を行う。更新用のファームウェア２０には、ＯＳ署名情報２１ａを持つ更新用のＯＳ２１とアプリケーション署名情報２２ａを持つ更新用のアプリケーション２２とが含まれている。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
そこで、本発明の実施の形態２に係る組み込み装置及びファームウェア更新方法においては、更新用のファームウェア２０のファイルを取得したときに行う正当性の確認処理において、ＯＳ署名情報２１ａの正当性の確認を行うが、アプリケーション署名情報２２ａの正当性の確認を行わない。この点以外に関しては、実施の形態２は、実施の形態１とほぼ同じである。したがって、実施の形態２の説明に際しては、組み込み装置の構成を示す図１、更新用のファームウェア２０のファイルを示す図２、及び起動時の動作を示す図５をも参照する。
【国際調査報告】
2018138789.tif 000009
2018138789.tif 000010
2018138789.tif 000011
2018138789.tif 000012