JP6861739B2 - 組み込み装置及びファームウェア更新方法 - Google Patents

組み込み装置及びファームウェア更新方法 Download PDF

Info

Publication number
JP6861739B2
JP6861739B2 JP2018563980A JP2018563980A JP6861739B2 JP 6861739 B2 JP6861739 B2 JP 6861739B2 JP 2018563980 A JP2018563980 A JP 2018563980A JP 2018563980 A JP2018563980 A JP 2018563980A JP 6861739 B2 JP6861739 B2 JP 6861739B2
Authority
JP
Japan
Prior art keywords
update
firmware
application
control unit
tampered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018563980A
Other languages
English (en)
Other versions
JPWO2018138789A1 (ja
Inventor
俊介 西尾
俊介 西尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018138789A1 publication Critical patent/JPWO2018138789A1/ja
Application granted granted Critical
Publication of JP6861739B2 publication Critical patent/JP6861739B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Description

本発明は、ファームウェアに従って動作する組み込み装置及び組み込み装置におけるファームウェア更新方法に関する。
近年、インターネットなどのネットワークに接続された組み込み装置(例えば、特定の機能を実現するために家電製品、機械又は設備等に組み込まれるコンピュータ)によって、音楽コンテンツ又は映像コンテンツなどの著作物の配信、公共機関又は企業が保有する情報の閲覧サービスの提供、及びオンラインバンキング又は電子マネーなどの金融サービスの提供などが行われている。また、ネットワークを通して通信機能及び制御機能を持つ「もの」に接続することで、計測データ、センサデータ、制御データなどの通信を行う仕組みであるIoT(「もののインターネット」:Internet Of Things)も普及しつつある。
しかし、ネットワークに接続された組み込み装置では、ファームウェアが悪意ある第三者によって改ざんされ、改ざんされたファームウェア(不正プログラム)が予期しない動作を実行して、予期しない事態を引き起こす危険性がある。
このような課題に対して、特許文献1は、組み込み装置のOSの一部分(すなわち、部分プログラム)に対して正当性の検証を実施することで、安全に組み込み装置の起動を行うセキュアブート方法を提案している。
また、特許文献2は、起動プログラムデータ、バックアッププログラムデータ、及びバックアッププログラムデータと同一内容の修正用データを記憶する不揮発性メモリと、起動プログラムデータの起動と並行して、起動プログラムデータの異常を検出する異常検出部と、起動プログラムデータによってシステムの起動が行われる場合に、バックアッププログラムデータに対してビットエラーの検出を行い、ビットエラーが検出されたときに当該ビットエラーを修正用データにより修正するエラー修正部と、異常検出部により起動プログラムデータの異常が検出された場合に、バックアッププログラムデータによりシステムの再起動を行う再起動部とを備える装置を提案している。
特開2015−022521号公報(例えば、要約、図4) 欧州特許出願公開第2733612号明細書(例えば、要約、図2)
特許文献1に記載のセキュアブート方法では、組み込み装置の起動時にファームウェアの正当性を検証し、ファームウェアが不正プログラムであると判断された場合に、ファームウェアの起動を中止して、組み込み装置の動作を停止する。しかし、組み込み装置の動作が停止されると、組み込み装置が組み込まれている設備からのサービスの提供が停止し、サービスを継続的に提供することができないという問題がある。特に、組み込み装置を搭載した設備が遠隔地に設置されている場合には、復旧のために作業者が遠隔地に赴く必要があった。
また、特許文献2に記載の装置は、起動プログラムデータの起動と並行して、起動プログラムデータの異常の有無を検出し、起動プログラムデータの異常が検出された場合に、バックアッププログラムデータによりシステムの再起動を行うので、サービスの継続性を確保することは可能である。しかし、起動プログラムデータの異常の有無の検出は、起動プログラムの起動時に行われるので、起動時にシステムの再起動が発生することがある。
本発明は、上記課題を解決するためになされたものであり、その目的は、正当性が確認されたファームウェアによって安全に起動することができ、改ざんされたファームウェアによる動作の停止を回避することができる組み込み装置及びファームウェア更新方法を提供することである。
本発明の一態様に係る組み込み装置は、OSとアプリケーションとを含むファームウェアを格納するファームウェア格納部と、前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで組み込み装置を起動する起動制御部と、ネットワークを通して更新用のOSと更新用のアプリケーションとを含む更新用のファームウェアを取得する装置制御部と、前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新を行うファームウェア更新制御部とを備え、
前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア検証部は、前記ファームウェア更新によって取得された前記更新用のOSのOS署名情報の検証を行い、
前記更新用のOSが改ざんされていないと判断された場合、前記起動制御部は前記更新用のOSを実行し、
前記更新用のOSが改ざんされていると判断された場合、前記起動制御部は使用するOSを前記ファームウェア更新の前に使用していた更新前のOSに切り替え、前記ファームウェア検証部は前記更新前のOSのOS署名情報の検証を行い、
前記更新前のOSのOS署名情報が改ざんされていないと判断された場合、前記起動制御部は前記更新前のOSを実行し、
前記更新前のOSのOS署名情報が改ざんされていると判断された場合、前記起動制御部は前記組み込み装置の起動動作を終了し、
前記起動制御部が前記更新用のOS又は前記更新前のOSを実行したときに、前記ファームウェア検証部は、前記更新用のアプリケーションのアプリケーション署名情報の検証を行い、
前記更新用のアプリケーションは改ざんされていないと判断された場合、前記起動制御部は前記更新用のアプリケーションを実行し、
前記更新用のアプリケーションは改ざんされていると判断された場合、前記起動制御部は使用するアプリケーションを前記更新前のアプリケーションに切り替え、前記ファームウェア検証部は前記更新前のアプリケーションのアプリケーション署名情報の検証を行い、
前記更新前のアプリケーションが改ざんされていないと判断された場合、前記起動制御部は前記更新前のアプリケーションを実行し、
前記更新前のアプリケーションが改ざんされていると判断された場合、前記更新用のアプリケーション及び前記更新前のアプリケーションを実行しないことを特徴としている。
本発明の他の態様に係るファームウェア更新方法は、OSとアプリケーションとを含むファームウェアを格納するファームウェア格納部と、前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで組み込み装置を起動する起動制御部と、ネットワークを通して更新用のOSと更新用のアプリケーションとを含む更新用のファームウェアを取得する装置制御部と、前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新を行うファームウェア更新制御部とを備えた組み込み装置によって実行される、ファームウェア更新方法であって、
前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア検証部は、前記ファームウェア更新によって取得された前記更新用のOSのOS署名情報の検証を行い、
前記更新用のOSが改ざんされていないと判断された場合、前記起動制御部は前記更新用のOSを実行し、
前記更新用のOSが改ざんされていると判断された場合、前記起動制御部は使用するOSを前記ファームウェア更新の前に使用していた更新前のOSに切り替え、前記ファームウェア検証部は前記更新前のOSのOS署名情報の検証を行い、
前記更新前のOSのOS署名情報が改ざんされていないと判断された場合、前記起動制御部は前記更新前のOSを実行し、
前記更新前のOSのOS署名情報が改ざんされていると判断された場合、前記起動制御部は前記組み込み装置の起動動作を終了し、
前記起動制御部が前記更新用のOS又は前記更新前のOSを実行したときに、前記ファームウェア検証部は、前記更新用のアプリケーションのアプリケーション署名情報の検証を行い、
前記更新用のアプリケーションは改ざんされていないと判断された場合、前記起動制御部は前記更新用のアプリケーションを実行し、
前記更新用のアプリケーションは改ざんされていると判断された場合、前記起動制御部は使用するアプリケーションを前記更新前のアプリケーションに切り替え、前記ファームウェア検証部は前記更新前のアプリケーションのアプリケーション署名情報の検証を行い、
前記更新前のアプリケーションが改ざんされていないと判断された場合、前記起動制御部は前記更新前のアプリケーションを実行し、
前記更新前のアプリケーションが改ざんされていると判断された場合、前記更新用のアプリケーション及び前記更新前のアプリケーションを実行しないことを特徴としている。
本発明によれば、組み込み装置を正当性が確認されたファームウェアによって安全に起動することができ、また、改ざんされたファームウェアによる動作の停止を回避することができ、組み込み装置によるサービスの提供の継続性を確保することができる。
本発明の実施の形態1に係る組み込み装置の構成を概略的に示すブロック図である。 実施の形態1に係る組み込み装置が取得する更新用のファームウェアのファイル構成の例を示す図である。 実施の形態1に係る組み込み装置が更新用のファームウェアのファイルを取得し、ファームウェア格納部に格納されているファームウェアを更新用のファームウェアに置き替える更新時の動作例を示すフローチャートである。 実施の形態1に係る組み込み装置の起動処理の例を示す図である。 実施の形態1に係る組み込み装置の起動処理の例を示すフローチャートである。 本発明の実施の形態2に係る組み込み装置が更新用のファームウェアのファイルを取得し、ファームウェア格納部に格納されているファームウェアを更新用のファームウェアに置き替える更新時の動作例を示すフローチャートである。
以下に、本発明の実施の形態に係る組み込み装置及びファームウェア更新方法を、添付図面を参照しながら説明する。本出願において、組み込み装置(「組み込み機器」とも言う)は、特定の機能を実現するために家電機器、工場設備などの産業用機器、通信機器、自動車などの輸送用機器などに組み込まれるコンピュータである。なお、以下の実施の形態は、例にすぎず、本発明の範囲内で種々の変更が可能である。
《1》実施の形態1.
《1−1》組み込み装置1
図1は、実施の形態1に係る組み込み装置1の構成を概略的に示すブロック図である。組み込み装置1は、実施の形態1に係るファームウェア更新方法を実施することができる装置である。図1に示されるように、組み込み装置1は、組み込み装置1の全体の動作を制御する装置制御部2と、イーサネット(登録商標)接続などによりネットワークと通信可能に接続される通信インタフェース部3と、ブートプログラム及びファームウェアに従う組み込み装置1の動作の制御を行う起動制御部4と、ファームウェアの更新を行うためのファームウェア更新制御部5と、ファームウェアの検証を行うためのファームウェア検証部6と、ファームウェア検証部6に備えられ、ファームウェアに検証に用いる証明書情報を格納するための証明書情報格納部61とを備えている。また、組み込み装置1は、不揮発性の半導体メモリなどで構成された記憶装置であるブートプログラム7aの格納部としてのブートROM(Read Only Memory)7と、半導体メモリ又はハードディスクドライブなどで構成された記憶装置であるファームウェア格納部8とを備えている。
ファームウェア格納部8は、OS(Operating System)を格納するためのOS格納部9と、アプリケーションプログラム(「アプリケーション」とも言う)を格納するためのアプリケーション格納部10とを有している。本願では、ファームウェアは、OSとアプリケーションとを含む。OS格納部9とアプリケーション格納部10とは、互いに異なる記憶装置に備えられてもよいが、同じ記憶装置の異なる記憶領域であってもよい。
OS格納部9は、2重化された格納領域であるOS格納領域(A)11とOS格納領域(B)12とを有している。OS格納領域(A)11には、OS(A)15が格納されている。OS(A)15は、OS(A)15の正当性を証明するためのOS署名情報(A)15aを含んでいる。OS格納領域(B)12には、OS(B)16が格納されている。OS(B)16は、OS(B)16の正当性を証明するためのOS署名情報(B)16aを含んでいる。なお、(A)と(B)とは、OS格納領域(A)11とOS格納領域(B)12との区別を容易にするために付与された記号である。例えば、(A)が現在運用されている運用中のOS格納領域又はOSを示している場合には、(B)は以前に運用されていた待機中のOS格納領域又は待機中のファームウェアであるOSを示す。(A)と(B)とが逆の場合もある。
アプリケーション格納部10は、2重化された格納領域であるアプリケーション格納領域(A)13とアプリケーション格納領域(B)14とを有している。アプリケーション格納領域(A)13には、アプリケーション(A)17が格納されている。アプリケーション(A)17は、アプリケーション(A)17の正当性を証明するためのアプリケーション署名情報(A)17aを含んでいる。アプリケーション格納領域(B)14には、アプリケーション(B)18が格納されている。アプリケーション(B)18は、アプリケーション(B)18の正当性を証明するためのアプリケーション署名情報(B)18aを含んでいる。例えば、(A)が現在運用されている運用中のアプリケーション格納領域又はアプリケーションを示している場合には、(B)は以前に運用されていた待機中のアプリケーション格納領域又は待機中のファームウェアであるアプリケーションを示す。(A)と(B)とが逆の場合もある。
《1−2》更新用のファームウェア20
図2は、実施の形態1に係る組み込み装置1が取得する更新用のファームウェア20のファイル構成の例を示す図である。図2に示されるように、ネットワークから通信インタフェース部3を通して取得される更新用のファームウェア20のファイルは、更新用のOS21と更新用のアプリケーション22とを有している。更新用のOS21は、OS署名情報21aを含み、更新用のアプリケーション22は、アプリケーション署名情報22aを含んでいる。
《1−3》ファームウェア更新
図3は、実施の形態1に係る組み込み装置1が更新用のファームウェア20のファイルを取得し、ファームウェア格納部8に格納されているファームウェアを更新用のファームウェア20に置き替える更新時の動作例を示すフローチャートである。
先ず、ステップS101において、装置制御部2は、ネットワークから通信インタフェース部3を通して更新用のファームウェア20のファイルを取得し、ファームウェア更新制御部5にファームウェア更新指示を行う。更新用のファームウェア20には、OS署名情報21aを持つ更新用のOS21とアプリケーション署名情報22aを持つ更新用のアプリケーション22とが含まれている。
次のステップS102において、ファームウェア更新制御部5は、更新用のファームウェア20のファイルから更新用のOS21と更新用のアプリケーション22とを分離して取り出す。
次のステップS103において、ファームウェア検証部6は、更新用のOS21のOS署名情報21aが正当なものであるか否かを検証する(すなわち、正当性を確認する)。検証方法としては、OSオブジェクトコードに対するチェックサム(又はハッシュ値)を求め、これを正当なチェックサム(又は正当なハッシュ値)として予め証明書情報格納部61に記憶し、取得した更新用のファームウェア20に対して求められたチェックサム(又はハッシュ値)を、記憶されている正当なチェックサム(又は正当なハッシュ値)と照合し、一致する場合に正当であると判断する方法がある。また、他の検証方法としては、OS署名情報21a及びアプリケーション署名情報22aを利用して改ざんの有無を検査する方法がある。ハッシュ値を求めるアルゴリズムとしては、例えば、SHA(Secure Hash Algorithm)−1、SHA−256、SHA−384、SHA−512、SHA−224、Wirlpool、MD5(Message Digest 5)、SHA−3がある。なお、ハッシュ値の長さは、ハッシュ値を求めるアルゴリズムによって異なるが、例えば、128bit、160bit、224bit、256bit、384bit、512bit、1024bitなどである。
ステップS103の検証において、ファームウェア検証部6が更新用のOS21のプログラムは改ざんされていると判断した場合(ステップS103においてNO)、処理はステップS110に進み、ファームウェア更新制御部5は、検証対象のファームウェア20によって、ファームウェア格納部8におけるファームウェアを置き換えるための更新処理を停止する。
ステップS103の検証において、ファームウェア検証部6が更新用のOS21のプログラムは正当であると判断した場合(ステップS103においてYES)、処理はステップS104に進む。
ステップS104において、ファームウェア更新制御部5は、現在運用しているOS格納領域とは別のOS格納領域に、取得された更新用のファームウェア20の更新用のOS21を格納する(書き込む)。具体的に言えば、現在、OS格納領域(A)11に格納されているOS(A)15で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のOS21を、現在運用されていないOS格納領域(B)12に格納する。逆に、OS格納領域(B)12に格納されているOS(B)16で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のOS21を、現在運用されていないOS格納領域(A)11に格納する。
ステップS105において、ファームウェア更新制御部5は、今回更新したOS格納領域(例えば、OS格納領域(B)12)を、次の組み込み装置1の起動時に実行するプログラムとして設定する。
次のステップS106において、ファームウェア検証部6は、更新用のOS20に含まれる更新用のアプリケーション22のアプリケーション署名情報22aが正当なものであるか否かを検証する(すなわち、正当性を確認する)。検証は、ステップS103における検証方法と同様の方法で実行される。
ステップS106の検証において、ファームウェア検証部6が更新用のアプリケーション22のプログラムは正当であると判断した場合(ステップS106においてYES)、処理はステップS107に進む。
ステップS107において、ファームウェア更新制御部5は、現在運用しているアプリケーション格納領域とは別のアプリケーション格納領域に、取得された更新用のアプリケーション22を格納する(書き込む)。具体的に言えば、現在、アプリケーション格納領域(A)13に格納されているアプリケーション(A)17で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のアプリケーション22を、現在運用されていないアプリケーション格納領域(B)14に格納する。逆に、アプリケーション格納領域(B)14に格納されているアプリケーション(B)18で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のアプリケーション22を、現在運用されていないアプリケーション格納領域(A)13に格納する。
ステップS108において、ファームウェア更新制御部5は、ステップS107でアプリケーション格納部10のアプリケーション格納部(A)13又は(B)14に格納されたアプリケーション(A)17又は(B)18を次の起動時に実行するプログラムとして設定する。
ステップS106の検証において、ファームウェア検証部6が更新用のアプリケーション22のプログラムは改ざんされていると判断した場合(ステップS106においてNO)、アプリケーションの更新処理であるステップS107及びS108をスキップし、今回更新したOSを有効とするために、処理はステップS109に進む。また、ステップS108の処理が実行された後、処理はステップS109に進む。
ステップS109において、組み込み装置1の再起動処理を行い、更新処理は終了する。再起動は、今回、ファームウェア格納部8に記憶された更新用のファームウェアによって実行される。
《1−4》組み込み装置1の起動
次に、組み込み装置1の起動処理について、図を参照して説明する。図4は、実施の形態1に係る組み込み装置1の起動処理の例を示す図である。一般的に、組み込み装置1では、図4に示されるように、ブートROM7から読み出されたブートプログラム31を最初に起動し、順次ブートプログラム31がファームウェア格納部8から読み出されたOS32を起動し、OS32がアプリケーション33を起動する。
図5は、実施の形態1に係る組み込み装置1の起動処理の例を示すフローチャートである。図5は、直前のファームウェア更新において、OS格納領域(B)12及びアプリケーション格納領域(B)14に更新用のOS21と更新用のアプリケーション22がそれぞれ書き込まれた場合を示す。
ステップS201において、起動制御部4は、組み込み装置1の起動時に、書き換えできない記憶領域であるブートROM7から、組み込み装置1を起動するためのブートプログラム31を読み込み、読み出されたブートプログラムを実行する。
次のステップS202において、ファームウェア検証部6は、現在実行しようとしているOS格納領域(B)12に格納されているOS(B)16のOS署名情報(B)16a(すなわち、直前のファームウェア更新によって書き込まれた更新用のOS21のOS署名情報21a)の検証を行う。
ステップS202のOSの検証の結果、OS(B)16は改ざんされていないと判断した場合(ステップS202においてYES)、ステップS203において、起動制御部4は、OS格納領域(B)12のOS(B)16の読み込み、実行を行い、その後、処理はステップS207に進む。
ステップS202のOS(B)16の検証の結果、OS(B)16は改ざんされていると判断した場合(ステップS202においてNO)、処理はステップS204に進む。
ステップS204において、使用するOS格納領域を、現在運用しているOS格納領域(B)12とは別のOS格納領域(A)11に切り替える。
次のステップS205において、格納されているOS署名情報(A)15が正当であるか否かを検証する。
ステップS205の検証の結果、OS署名情報(A)15が正当である(改ざんされていない)と判断した場合(ステップS205においてYES)、ステップS206において、起動制御部4は、OS格納領域(A)11のOS(A)15の読み込み、実行を行い、その後、処理はステップS207に進む。
ステップS205の検証の結果、OS格納領域(A)11が正当ではない(改ざんされている)と判断した場合(ステップS205においてNO)、格納されているOS格納領域(B)12及びOS格納領域(A)11のいずれのOSも信頼することができないと判断し、起動失敗として起動動作を終了する。
ステップS207において、ファームウェア検証部6は、現在実行しようとしているアプリケーション格納領域(B)14に格納されているアプリケーション(B)18のアプリケーション署名情報(B)18a(すなわち、直前のファームウェア更新によって書き込まれたアプリケーション22のアプリケーション署名情報22a)の検証を行う。
ステップS207のアプリケーションの検証の結果、アプリケーション(B)18は改ざんされていないと判断した場合(ステップS207においてYES)、ステップS208において、起動制御部4は、アプリケーション格納領域(B)14のアプリケーション(B)18の読み込み、実行を行い、検証されたOS及びアプリケーションの起動に成功し、起動処理を終了する。
ステップS207のアプリケーションの検証の結果、アプリケーション(B)18は改ざんされていると判断した場合(ステップS207においてNO)、処理はステップS209に進む。
ステップS209において、起動制御部4は、使用するアプリケーション格納領域を、現在使用しているアプリケーション格納領域(B)14とは別のアプリケーション格納領域(A)13に切り替える。
次のステップS210において、ファームウェア検証部6は、アプリケーション格納領域(A)13に格納されているアプリケーション署名情報(A)17aの検証を行う。
ステップS210のアプリケーションの検証の結果、アプリケーション(A)17は改ざんされていないと判断した場合(ステップS210においてYES)、ステップS211において、起動制御部4は、アプリケーション格納領域(A)13のアプリケーション(A)17の読み込み、実行を行う。
ステップS210のアプリケーションの検証の結果、アプリケーション(A)17は改ざんされていると判断した場合(ステップS210においてNO)、アプリケーション格納領域(A)13に格納されているアプリケーション(A)17及びアプリケーション格納領域(B)14に格納されているアプリケーション(B)18のいずれも信頼することができないと判断し、アプリケーションの読み込み、実行をスキップし、OSのみ起動した状態で起動処理を終了する。この場合、組み込み装置1として、OSが提供するサービスは提供できるが、アプリケーションが提供するサービスは提供できない。しかし、信頼することができないアプリケーションの動作が抑制されるため、よりセキュアである。
《1−5》効果
以上に説明したように、実施の形態1に係る組み込み装置1及びファームウェア更新方法によれば、更新用のファームウェア20を取得した後、ファームウェア格納部8に格納する前に、ファームウェア検証部6によって更新用のファームウェア20の正当性の検証を行う(図3におけるステップS103,S106)。このため、更新用のファームウェア20が正当なプログラムでない場合には、ファームウェア20がファームウェア格納部8に格納されることはなく(図3におけるステップS110)、サービスの継続性を考慮しつつ、不正なファームウェアプログラムを動作させない制御が可能となる。
また、実施の形態1に係る組み込み装置1及びファームウェア更新方法によれば、起動制御部4による組み込み装置1の起動時に、ファームウェア格納部8から読み込まれたOS(B)16及びアプリケーション(B)18(又は、OS(A)15及びアプリケーション(A)17)の正当性の検証を行う(図5におけるステップS202,S207)。このため、実行しようとしたOS又はアプリケーションが正当なプログラムでない場合には、別のOS格納領域に格納されている以前に使用していたOS及び別のアプリケーション格納領域に格納されている以前に使用していたアプリケーションを読み込んで、実行する(図5におけるステップS204,S206,S209,S211)。このため、組み込み装置1の動作は中止することなく、組み込み装置1が提供するサービスの継続性を確保することが可能となる。
さらに、別のOS格納領域に格納されている以前に使用していたOS及び別のアプリケーション格納領域に格納されている以前に使用していたアプリケーションを読み込んで、実行する前に、正当性の検証を行うので(図5におけるステップS205,S210)、よりセキュアなプログラム実行環境を提供することができる。
《2》実施の形態2.
上記実施の形態1に係る組み込み装置1及びファームウェア更新方法では、図3に示されるように、更新用のファームウェア20のファイルを取得したときに行う正当性の確認処理において、OS署名情報21aの正当性の確認(ステップS103)とアプリケーション署名情報22aの正当性の確認(ステップS106)の両方を行う。しかし、一般に、アプリケーションのファイルサイズは、OSのファイルサイズより大きく、アプリケーションの正当性の確認処理に要する演算量は比較的大きく、処理時間は比較的長い。
そこで、本発明の実施の形態2に係る組み込み装置及びファームウェア更新方法においては、更新用のファームウェア20のファイルを取得したときに行う正当性の確認処理において、OS署名情報21aの正当性の確認を行うが、アプリケーション署名情報22aの正当性の確認を行わない。この点以外に関しては、実施の形態2は、実施の形態1とほぼ同じである。したがって、実施の形態2の説明に際しては、組み込み装置の構成を示す図1、更新用のファームウェア20のファイルを示す図2、及び起動時の動作を示す図5をも参照する。
図6は、実施の形態2に係る組み込み装置が更新用のファームウェア20のファイルを取得し、ファームウェア格納部8に格納されているファームウェアを更新用のファームウェア20に置き替える更新時の動作例を示すフローチャートである。
先ず、ステップS301において、装置制御部2は、ネットワークから通信インタフェース部3を通して更新用のファームウェア20のファイルを取得し、ファームウェア更新制御部5にファームウェア更新指示を行う。ファームウェア20には、OS署名情報21aを持つ更新用のOS21とアプリケーション署名情報22aを持つ更新用のアプリケーション22とが含まれている。
次のステップS302において、ファームウェア更新制御部5は、更新用のファームウェア20のファイルから更新用のOS21と更新用のアプリケーション22とを分離して取り出す。
次のステップS303において、ファームウェア検証部6は、更新用のOS21のOS署名情報21aが正当なものであるか否かを検証する(すなわち、正当性を確認する)。
ステップS303の検証において、ファームウェア検証部6が更新用のOS21のプログラムは改ざんされていると判断した場合(ステップS303においてNO)、処理はステップS307に進み、ファームウェア更新制御部5は、検証対象のファームウェアによって、ファームウェア格納部8におけるファームウェアを書き換える更新処理を停止する。
ステップS303の検証において、ファームウェア検証部6が更新用のOS21のプログラムは正当であると判断した場合(ステップS303においてYES)、処理はステップS304に進む。
ステップS304において、ファームウェア更新制御部5は、現在運用しているOS格納領域とは別のOS格納領域に、取得された更新用のファームウェア20の更新用のOS21を格納し(書き込み)、現在運用しているアプリケーション格納領域とは別のアプリケーション格納領域に、取得された更新用のファームウェア20の更新用のアプリケーション22を格納する(書き込む)。具体的に言えば、現在、OS格納領域(A)11に格納されているOS(A)15で組み込み装置が動作している場合、ファームウェア更新制御部5は、更新用のOS21を、現在運用されていないOS格納領域(B)12に格納し、現在、アプリケーション格納領域(A)13に格納されているアプリケーション(A)17で組み込み装置が動作している場合、ファームウェア更新制御部5は、更新用のアプリケーション22を、現在運用されていないアプリケーション格納領域(B)14に格納する。なお、現在、OS格納領域(B)12に格納されているOS(B)16で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のOS21を、現在運用されていないOS格納領域(A)11に格納し、現在、アプリケーション格納領域(B)14に格納されているアプリケーション(B)18で組み込み装置1が動作している場合、ファームウェア更新制御部5は、更新用のアプリケーション22を、現在運用されていないアプリケーション格納領域(A)13に格納する。
ステップS305において、ファームウェア更新制御部5は、今回更新したOS格納領域(例えば、OS格納領域(B)12)を、次の組み込み装置の起動時に実行するプログラムとして設定する。
ステップS109において、組み込み装置の再起動処理を行い、更新処理は終了する。再起動は、今回、ファームウェア格納部8に記憶された更新用のファームウェアによって実行される。
アプリケーションは、一般的には、サイズ的に大きなものであるため、組み込み装置の処理能力が小さい場合、アプリケーションからチェックサム又はハッシュ値を求める行為そのものに時間がかかる可能性ある。一方、この段階では、改ざん有無をいち早く検知することが第一の目的である。このため、更新用のファームウェア20の検証は更新用のOS21の検証のみを実施することとし、アプリケーションの検証は、組み込み装置の起動時に行う。
以上により、実施の形態2に係る組み込み装置及びファームウェア更新方法においては、実施の形態1において説明した効果に加えて、更新用のOS21の検証のみを行い、更新用のアプリケーション22の検証をスキップすることで、処理時間の短縮を図ることができる。
1 組み込み装置、 2 装置制御部、 3 通信インタフェース部、 4 起動制御部、 5 ファームウェア更新制御部、 6 ファームウェア検証部、 6a 証明書情報格納部、 7 ブートROM、 8 ファームウェア格納部、 9 OS格納部、 10 アプリケーション格納部、 11 OS格納領域(A)、 12 OS格納領域(B)、 13 アプリケーション格納領域(A)、 14 アプリケーション格納領域(B)、 15 OS(A)、 15a OS署名情報(A)、 16 OS(B)、 16a OS署名情報(B)、 17 アプリケーション(A)、 17a アプリケーション署名情報(A)、 18 アプリケーション(B)、 18a アプリケーション署名情報(B)、 20 更新用のファームウェア、 21 更新用のOS、 21a OS署名情報、 22 更新用のアプリケーション、 22a アプリケーション署名情報、 31 ブートプログラム、 32 OS、 33 アプリケーション、 61 証明書情報格納部。

Claims (2)

  1. OSとアプリケーションとを含むファームウェアを格納するファームウェア格納部と、
    前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで組み込み装置を起動する起動制御部と、
    ネットワークを通して更新用のOSと更新用のアプリケーションとを含む更新用のファームウェアを取得する装置制御部と、
    前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、
    前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新を行うファームウェア更新制御部と
    を備え、
    前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア検証部は、前記ファームウェア更新によって取得された前記更新用のOSのOS署名情報の検証を行い、
    前記更新用のOSが改ざんされていないと判断された場合、前記起動制御部は前記更新用のOSを実行し、
    前記更新用のOSが改ざんされていると判断された場合、前記起動制御部は使用するOSを前記ファームウェア更新の前に使用していた更新前のOSに切り替え、前記ファームウェア検証部は前記更新前のOSのOS署名情報の検証を行い、
    前記更新前のOSのOS署名情報が改ざんされていないと判断された場合、前記起動制御部は前記更新前のOSを実行し、
    前記更新前のOSのOS署名情報が改ざんされていると判断された場合、前記起動制御部は前記組み込み装置の起動動作を終了し、
    前記起動制御部が前記更新用のOS又は前記更新前のOSを実行したときに、前記ファームウェア検証部は、前記更新用のアプリケーションのアプリケーション署名情報の検証を行い、
    前記更新用のアプリケーションは改ざんされていないと判断された場合、前記起動制御部は前記更新用のアプリケーションを実行し、
    前記更新用のアプリケーションは改ざんされていると判断された場合、前記起動制御部は使用するアプリケーションを前記更新前のアプリケーションに切り替え、前記ファームウェア検証部は前記更新前のアプリケーションのアプリケーション署名情報の検証を行い、
    前記更新前のアプリケーションが改ざんされていないと判断された場合、前記起動制御部は前記更新前のアプリケーションを実行し、
    前記更新前のアプリケーションが改ざんされていると判断された場合、前記更新用のアプリケーション及び前記更新前のアプリケーションを実行しない
    ことを特徴とする組み込み装置。
  2. OSとアプリケーションとを含むファームウェアを格納するファームウェア格納部と、
    前記ファームウェア格納部から前記ファームウェアを読み込み、実行することで組み込み装置を起動する起動制御部と、
    ネットワークを通して更新用のOSと更新用のアプリケーションとを含む更新用のファームウェアを取得する装置制御部と、
    前記ファームウェア格納部に格納されている前記ファームウェアの正当性及び前記更新用のファームウェアの正当性を検証するファームウェア検証部と、
    前記更新用のファームウェアを前記ファームウェア格納部に書き込むファームウェア更新を行うファームウェア更新制御部と
    を備えた組み込み装置によって実行される、ファームウェア更新方法であって、
    前記更新用のファームウェアが前記ファームウェア格納部に書き込まれた後の前記組み込み装置の起動時に、前記ファームウェア検証部は、前記ファームウェア更新によって取得された前記更新用のOSのOS署名情報の検証を行い、
    前記更新用のOSが改ざんされていないと判断された場合、前記起動制御部は前記更新用のOSを実行し、
    前記更新用のOSが改ざんされていると判断された場合、前記起動制御部は使用するOSを前記ファームウェア更新の前に使用していた更新前のOSに切り替え、前記ファームウェア検証部は前記更新前のOSのOS署名情報の検証を行い、
    前記更新前のOSのOS署名情報が改ざんされていないと判断された場合、前記起動制御部は前記更新前のOSを実行し、
    前記更新前のOSのOS署名情報が改ざんされていると判断された場合、前記起動制御部は前記組み込み装置の起動動作を終了し、
    前記起動制御部が前記更新用のOS又は前記更新前のOSを実行したときに、前記ファームウェア検証部は、前記更新用のアプリケーションのアプリケーション署名情報の検証を行い、
    前記更新用のアプリケーションは改ざんされていないと判断された場合、前記起動制御部は前記更新用のアプリケーションを実行し、
    前記更新用のアプリケーションは改ざんされていると判断された場合、前記起動制御部は使用するアプリケーションを前記更新前のアプリケーションに切り替え、前記ファームウェア検証部は前記更新前のアプリケーションのアプリケーション署名情報の検証を行い、
    前記更新前のアプリケーションが改ざんされていないと判断された場合、前記起動制御部は前記更新前のアプリケーションを実行し、
    前記更新前のアプリケーションが改ざんされていると判断された場合、前記更新用のアプリケーション及び前記更新前のアプリケーションを実行しない
    ことを特徴とするファームウェア更新方法。
JP2018563980A 2017-01-25 2017-01-25 組み込み装置及びファームウェア更新方法 Active JP6861739B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/002442 WO2018138789A1 (ja) 2017-01-25 2017-01-25 組み込み装置及びファームウェア更新方法

Publications (2)

Publication Number Publication Date
JPWO2018138789A1 JPWO2018138789A1 (ja) 2019-04-11
JP6861739B2 true JP6861739B2 (ja) 2021-04-21

Family

ID=62977942

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018563980A Active JP6861739B2 (ja) 2017-01-25 2017-01-25 組み込み装置及びファームウェア更新方法

Country Status (2)

Country Link
JP (1) JP6861739B2 (ja)
WO (1) WO2018138789A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110737448B (zh) * 2018-09-05 2023-08-11 杭州瑞彼加医疗科技有限公司 一种包含有微控制器的固件加密系统及其固件保护和升级方法
JP7367471B2 (ja) 2019-11-07 2023-10-24 株式会社リコー 情報処理装置、ファイル保証方法、及びファイル保証プログラム
US20220405087A1 (en) * 2020-03-10 2022-12-22 Hitachi Astemo, Ltd. Vehicle control device and vehicle control system
CN111831308A (zh) * 2020-04-15 2020-10-27 腾讯科技(深圳)有限公司 快充设备的固件更新方法、程序、快充设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089547B2 (en) * 2002-09-13 2006-08-08 International Business Machines Corporation Firmware updating
JP5116325B2 (ja) * 2007-03-15 2013-01-09 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
JP2015022521A (ja) * 2013-07-19 2015-02-02 スパンション エルエルシー セキュアブート方法、組み込み機器、セキュアブート装置およびセキュアブートプログラム
JP6244759B2 (ja) * 2013-09-10 2017-12-13 株式会社ソシオネクスト セキュアブート方法、半導体装置、及び、セキュアブートプログラム

Also Published As

Publication number Publication date
JPWO2018138789A1 (ja) 2019-04-11
WO2018138789A1 (ja) 2018-08-02

Similar Documents

Publication Publication Date Title
JP6861739B2 (ja) 組み込み装置及びファームウェア更新方法
US8296579B2 (en) System and method for updating a basic input/output system (BIOS)
US9864599B2 (en) Firmware update method in two-chip solution for secure terminal
US8560823B1 (en) Trusted modular firmware update using digital certificate
CN103718165B (zh) Bios闪存攻击保护和通知
KR101066779B1 (ko) 컴퓨팅 장치의 보안 부팅
JP5014726B2 (ja) 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
JP5740646B2 (ja) ソフトウェアのダウンロード方法
US20080168275A1 (en) Securely Recovering a Computing Device
CN106775610B (zh) 一种电子设备启动方法及一种电子设备
US20160267273A1 (en) Software update apparatus and computer-readable storage medium storing software update program
JP2015036847A (ja) 半導体装置
TWI706274B (zh) 容許透過復原代理器進行作業系統修復的運算裝置與非暫態電腦可讀儲存媒體
TWI570591B (zh) 允許測試金鑰用於bios安裝之技術
WO2020037613A1 (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
CN113127011A (zh) 电子设备及电子设备的操作方法
JP2016099837A (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
JP2020160747A (ja) 情報処理装置、その制御方法、及びプログラム
WO2019233022A1 (zh) 防回滚方法及系统
TW202001651A (zh) 自動驗證方法與系統
CN112148314A (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
CN109375953B (zh) 一种操作系统启动方法及装置
WO2020233044A1 (zh) 一种插件校验方法、设备、服务器及计算机可读存储介质
JP5465738B2 (ja) システム・ファームウェアの更新方法およびコンピュータ
JP2011053984A (ja) ファームウェア保護装置、そのプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201016

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210302

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210330

R150 Certificate of patent or registration of utility model

Ref document number: 6861739

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250